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

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



On Wednesday, January 24, 2018 8:18:02 AM -03 Cristian Mitchell wrote:
> 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
> 
> 
> --
> 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,

Buenas 

lo que podes hacer es un alias..estilo:

alias mysql='/usr/bin/mysql -h 127.0.0.1 --protocol=tcp'

asi el usuario cada ves que ejecuta 'mysql' va a ser por tcp,
entonces mysql -p -u root  debería andar por tcp.

ahora..si queres por socket si o si como dijo el usuario Cristian
podes hacer un bind mount de /var en el chroot del usr
mejor aun solo montar /var/run/mysqld/ en el chroot

por ejemplo si el user esta enjaulado en el dir /home/chroot

seria algo como:

mount -o bind,noexec /var/run/mysqld /home/chroot/var/run/mysqld

esto como root obviamente y fuera del chroot..
pero es mejor la primera opción...usar un alias y listo..
daria menos problemas...
también arregla el hosts... ya que el localhost tendría
que resolver a la 127.0.0.1

Saludos
Matias.-




Reply to: