[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Conectar desde clientes "enjaulados" vía SSH a MySQL.



El 24 de enero de 2018 12:18:02 CET, Cristian Mitchell <mitchell69uk@gmail.com> escribió:
>El 24 de enero de 2018, 04:55, Ramses II<ramses.sevilla@gmail.com>
>escribió:
>
>> Cristian, buenos días de nuevo,
>>
>> Bien, por TCP parece que ya funciona:
>>
>> ------------------------------------------------------------
>> ----------------------------------------------------
>> -bash-4.2$ /usr/bin/mysql -h 127.0.0.1 -u root -p --protocol=tcp
>> Enter password:
>> Welcome to the MySQL monitor.  Commands end with ; or \g.
>> Your MySQL connection id is 46
>> Server version: 5.5.59-0+deb7u1 (Debian)
>>
>> Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights
>> reserved.
>>
>> Oracle is a registered trademark of Oracle Corporation and/or its
>> affiliates. Other names may be trademarks of their respective
>> owners.
>>
>> Type 'help;' or '\h' for help. Type '\c' to clear the current input
>> statement.
>>
>> mysql>
>> mysql> quit
>> Bye
>> -bash-4.2$
>> ------------------------------------------------------------
>> ----------------------------------------------------
>>
>> Ahora sólo queda ver si hay forma de hacerlo por socket de MySQL.
>>
>> Si ejecuto en la sesión "enjaulada" el comando que me has comentado:
>>
>> ------------------------------------------------------------
>> ----------------------------------------------------
>> -bash-4.2$ mount -o bind,noexec /var/run/mysqld/mysqld.sock
>> mount: only root can do that
>> -bash-4.2$
>> ------------------------------------------------------------
>> ----------------------------------------------------
>>
>> Lo que te comentaba, que dice que sólo lo puede ejecutar "root".
>>
>> De cualquier forma, si ejecuto sólo "mount", tampoco va:
>>
>> ------------------------------------------------------------
>> ----------------------------------------------------
>> -bash-4.2$ mount
>> warning: failed to read mtab
>> -bash-4.2$
>> ------------------------------------------------------------
>> ----------------------------------------------------
>>
>>
>> Gracias y saludos,
>>
>> Ramses
>>
>> El día 24 de enero de 2018, 0:37, Cristian Mitchell
>> <mitchell69uk@gmail.com> escribió:
>> >
>> >
>> > El 23 de enero de 2018, 20:32, Cristian
>Mitchell<mitchell69uk@gmail.com>
>> > escribió:
>> >>
>> >>
>> >>
>> >> El 23 de enero de 2018, 19:40, Ramses<ramses.sevilla@gmail.com>
>> escribió:
>> >>>
>> >>> El 23 de enero de 2018 23:20:09 CET, Cristian Mitchell
>> >>> <mitchell69uk@gmail.com> escribió:
>> >>> >El 23 de enero de 2018, 15:26, Ramses<ramses.sevilla@gmail.com>
>> >>> >escribió:
>> >>> >
>> >>> >> El 23 de enero de 2018 18:24:23 CET, Matias Mucciolo <
>> >>> >> mmucciolo@suteba.org.ar> escribió:
>> >>> >> >On Tuesday, January 23, 2018 5:29:07 PM -03 Ramses wrote:
>> >>> >> >> Hola a tod@s,
>> >>> >> >>
>> >>> >> >> Tengo instalado MySQL Server con su proceso habitual.
>> >>> >> >>
>> >>> >> >> Ahora quiero dar acceso a Clientes vía SSH, pero no quiero
>que
>> >>> >esos
>> >>> >> >usuarios
>> >>> >> >> puedan ejecutar comandos de la Shell de Linux mediante el
>comando
>> >>> >> >"system"
>> >>> >> >> de MySQL.
>> >>> >> >>
>> >>> >> >> Parece ser que no hay forma de impedir los Usuarios de
>MySQL
>> >>> >puedan
>> >>> >> >ejecutar
>> >>> >> >> el comando "system" y la única forma de limitar el uso de
>los
>> >>> >> >comandos del
>> >>> >> >> Shell de Linux es enjaular (chroot jail) estos Usuarios
>SSH, y
>> >>> >sólo
>> >>> >> >copiar
>> >>> >> >> en la jaula los comandos que les permito y sus librerías
>> >>> >asociadas.
>> >>> >> >>
>> >>> >> >> Bien, tengo ya el entorno "chroot jail" configurado y el
>Usuario
>> >>> >SSH
>> >>> >> >se
>> >>> >> >> conecta.
>> >>> >> >>
>> >>> >> >> He copiado el fichero de arranque "/usr/sbin/mysql" en el
>> >>> >directorio
>> >>> >> >> "enjaulado".
>> >>> >> >>
>> >>> >> >> Con el comando "ldd /usr/sbin/mysql" averiguo las librerías
>> >>> >asociadas
>> >>> >> >y las
>> >>> >> >> he copiado en el directorio "enjaulado".
>> >>> >> >>
>> >>> >> >> Ahora, cuando se conecta un Usuario "enjaulado" vía SSH y
>> ejecuta,
>> >>> >> >por
>> >>> >> >> ejemplo, "/usr/sbin/mysql -u root -p", MySQL pide la
>password,
>> >>> >pero
>> >>> >> >al
>> >>> >> >> introducirla, da un error de socket diciendo que no
>encuentra
>> >>> >> >> "/var/run/mysqld/mysqld.sock", y ahí estoy estancado...
>> >>> >> >>
>> >>> >> >> ¿Hay alguien que haya hecho esto y pueda comentarme qué
>pasos me
>> >>> >> >faltan por
>> >>> >> >> hacer?
>> >>> >> >>
>> >>> >> >>
>> >>> >> >> Gracias y saludos,
>> >>> >> >>
>> >>> >> >> Ramses
>> >>> >> >
>> >>> >> >obviamente se estan tratando de conectar mediante el socket
>> >>> >> >que crea mysql y los clientes enjaulados no pueden acceder.
>> >>> >> >creo que mysql tiene una opcion para que la "conexion"
>> >>> >> >sea por tcp...eso deberia funcionar..
>> >>> >> >
>> >>> >> >saludos
>> >>> >> >Matias
>> >>> >>
>> >>> >> Matías, gracias por contestar.
>> >>> >>
>> >>> >> Pero, ¿sabes si tengo que copiar algún fichero de
>configuración,
>> como
>> >>> >el
>> >>> >> my.cnf a la "jaula"?.
>> >>> >>
>> >>> >> Hasta el momento sólo copiado programas y librerías al entorno
>> >>> >"enjaulado".
>> >>> >>
>> >>> >> Y estoy buscando información tanto en Linux genérico y Debian,
>como
>> >>> >en
>> >>> >> MySQL, y no encuentro lo que me aclare este tema...
>> >>> >>
>> >>> >>
>> >>> >> P.D.: Disculpas Matías, el otro se me fue al personal...
>> >>> >>
>> >>> >>
>> >>> >> Saludos y gracias,
>> >>> >>
>> >>> >> Ramses
>> >>> >>
>> >>> >>
>> >>> >como te estas logueando a mysql?
>> >>>
>> >>> Cristian, ¿te refieres a esto que ponía en mi correo?
>> >>>
>> >>> El cliente se conecta vía SSH a un entorno "enjaulado" y ejecuta:
>> >>>
>> >>> /usr/sbin/mysql -u root -p
>> >>
>> >>
>> >> alguien comentaba esto
>> >>  si haces asi  nada mas te estas conectado por socket el cual
>nesesitas
>> >> acceso
>> >> pero si haces mysql -h localhost -u myname -ppassword mydb
>> >> esto evita tu problema de sock
>> >>
>> >>
>> >>
>> >>>
>> >>>
>> >>>
>> >>> Saludos,
>> >>>
>> >>> Ramses
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> MrIX
>> >> Linux user number 412793.
>> >> http://counter.li.org/
>> >>
>> >> las grandes obras,
>> >> las sueñan los santos locos,
>> >> las realizan los luchadores natos,
>> >> las aprovechan los felices cuerdo,
>> >> y las critican los inútiles crónicos,
>> >>
>> >
>> > si no tu otra opción es
>> >
>> >
>> > mount -o bind,noexec /var/run/mysqld/mysqld.sock (al chroot)
>> >
>> > --
>> > MrIX
>> > Linux user number 412793.
>> > http://counter.li.org/
>> >
>> > las grandes obras,
>> > las sueñan los santos locos,
>> > las realizan los luchadores natos,
>> > las aprovechan los felices cuerdo,
>> > y las critican los inútiles crónicos,
>> >
>>
>>
>buenos dia
>
>cabe aclara que la idea del tcp fue de Matias
>yo solo la aclare y la amplie
>y para montar un cualquier recurso bajo estas circunstancias
>tenes que agregar la linea en fstab y darle permisos de usuario
>pero en tu caso como el chroot lo debe levantar el mysql,
>lo agregas en el inicio del servidor o el inicio del servicio

Cristian, correcto, también le he contestado a Matías.

En cuanto a lo que me comentas:

"pero en tu caso como el chroot lo debe levantar el mysql, lo agregas en el inicio del servidor o el inicio del servicio"

Si ejecuto el comando que me comentaste desde una sesión sin "enjaular", por ejemplo, logado como "root", y con el usuario "mysql" que ejecuta el arranque del MySQL Server, ¿debería de funcionar la conexión desde la sesión "enjaulada"?


Saludos y gracias,

Ramses


Reply to: