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

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



El día 24 de enero de 2018, 12:48, Cristian Mitchell
<mitchell69uk@gmail.com> escribió:
>
>
> El 24 de enero de 2018, 08:45, Ramses<ramses.sevilla@gmail.com> escribió:
>>
>> 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"?
>
>
>
> totalmente, la idea es montar el directorio  donde se crean el sock al
> chroot
> y si lo que estas buscando es seguridad, es lo que entiendo.
> hace que un usuario con permisos de montado
>
>>
>>
>>
>> Saludos y gracias,
>>
>> 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,
>

Bien, pues solucionado. Muchas gracias.

* Para realizar la conexión por TCP:

Desde una sesión "enjaulada" ejecuto:

     $ /usr/bin/mysql -h 127.0.0.1 -u root -p --protocol=tcp

Y para adentro, sin problemas.


* Para realizar la conexión por socket MySQL (mysql.sock):

En una sesión sin enjaular, como "root" he ejecutado lo siguiente:

     # mkdir -p /home/<chroot-dir>/var/run/mysqld

     # mount -o bind,noexec /var/run/mysqld /home/<chroot-dir>/var/run/mysqld

Y desde la sesión "enjaulada":

     $ /usr/bin/mysql -u root -p

Y para adentro, sin problemas.


Gracias de nuevo y saludos,

Ramses


Reply to: