Configurar ssh y chroot en debian: makejail
Copyright © 03 de Abril de 2003 Arturo González (Pummel)
Imaginad por un momento que necesitamos que un amigo, compañero, persona-animal-o-cosa, entre en nuestra máquina por ssh (o scp) para copiar archivos o realizar alguna tarea completa, como cambiar el permiso de esos archivos, montar un servicio desde otra ciudad porque no se encuentra aqui, etc...
¿qué podemos hacer? Mira que no es de fiar... ¿y si nos destroza la máquina?. Bueno. Vamos a ver una forma mas o menos rápida, sin comernos la cabeza demasiado, de instalar un chroot automático para el servicio ssh. Se podría hacer para otros servicios como luego veremos.
Lo vamos a ver para Debian, ya que la maravilla makejail está en este sistema; yo concretamente lo he usado en la distribucion sarge, en woody no está (creo), parece que es algo relativamente novedoso.
¿Qué hace makejail?. Pues bien, leo de las páginas "man": El objetivo de makejail es ayudar a un administrador a crear y actualizar una "jaula chroot" con pequeños ficheros de configuración. La utilidad makejail intenta adivinar e instalar en el sistema de ficheros-"jaula" todos los ficheros requeridos para una sesion concreta, binarios, y librerias, asi como ficheros de configuracion que se necesiten (en este caso, una sesion ssh).
Vamos a ver como instalamos makejail rapidamente y como lo configuramos lo más rápido posible:
- Lo primero haremos : apt-get install makejail
- A continuacion copiamos el fichero de configuración que trae de ejemplo para ssh, en /usr/share/doc/makejail/examples/sshd.py, al directorio /etc/makejail.
- Posteriormente a esto, modificaremos el fichero a nuestro gusto y necesidad, siguiendo las instrucciones que vienen dadas en inglés al final del mismo. Tendremos que configurar básicamente que cosas necesitamos copiar en la el sistema de ficheros-"jaula", donde residirá dicha "jaula", que elementos preservar al final de cada sesion dentro de la "jaula", y que usuarios podran acceder a la "jaula-ssh".
- Una vez configurado esto ejecutaremos: makejail /etc/makejail/sshd.py. Esto no funcionará en una primera ocasion,como explica en el fichero de configuracion. Vemos que se ejecuta en un ciclo hasta que termina, y da una serie de errores o "warnings". Una vez hecho este paso, debemos hacer varias cosas:
- añadir al script de arranque /etc/init.d/ssh las modificaciones necesarias: 1) montar el directorio /proc dentro del chroot, con la instruccion "chroot /var/chroot/sshd start-stop-daemon ...". 2) Modificar el script de arranque /etc/init.d/sysklogd con la opcion SYSLOGD="-p /dev/log -p /var/chroot/sshd/dev/log", de modo que analice tambien la salida en ese dispositivo "log", y no tengamos un error al ejecutar makejail.
- Ahora copiamos los ficheros /etc/passwd,/etc/group,/etc/shadow,a su sitio correspondiente dentro del directorio-"jaula" /var/chroot/sshd/etc.
- Ahora podemos añadir al fichero /etc/makejail/sshd.py la opcion "packages=["fileutils"], que nos permitirá meter en la jaula el contenido del paquete debian "fileutils". ¿Es o no es una maravilla esta utilidad? :-). Sigamos.
- Lo último que nos queda por hacer (si no tenemos muchos problemas mas) es volver a ejecutar makejail /etc/makejail/sshd.py, habiendo modificado antes la opcion "preserve" para que no borre los ficheros que ya hemos creado en anteriores ejecuciones de makejail.
A continuacion copio el fichero de configuracion con el que mas o menos esto funciona en mi maquina (aun da algun mensajillo al arrancar, pero bueno..., como estoy en inestable, se me perdona :P).
Aqui dejo el fichero de configuracion final, poca modificacion he hecho sobre el original:
# Makejail configuration file for sshd
#
# Created by Javier Fernandez-sanguino Peña <jfs@computer.org>
# modificado para uso personal por Arturo González <clonebot_EN_eresmas.com>
# Thu, 29 Aug 2002 23:44:51 +0200
#
chroot="/var/chroot/sshd"
forceCopy=["/etc/ssh/ssh_host*","/etc/ssh/sshd*","/etc/ssh/moduli",
"/etc/pam.conf","/etc/security/*","/etc/pam.d/ssh","/etc/pam.d/other",
"/etc/hosts","/etc/nsswitch.conf",
"/var/run/sshd","/lib/security/*",
"/etc/shells", "/etc/nologin","/etc/environment","/etc/motd",
"/etc/shadow","/etc/hosts*",
"/bin/*", "/lib/libnss*",
"/dev/pt*","/dev/ttyp[0-9]*"]
preserve=["/dev/","/home", "/var/chroot/sshd/dev/log"]
# Besides the sshd user (needed after 3.4p1) any user which is going to
# be granted access to the ssh daemon should be added to 'users' and
# 'groups'.
userFiles=["/etc/passwd","/etc/shadow"]
groupFiles=["/etc/group","/etc/gshadow"]
users=["sshd"]
groups=["sshd"]
testCommandsInsideJail=["start-stop-daemon --start --quiet --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd"]
testCommandsOutsideJail=["ssh localhost"]
processNames=["sshd"]
packages=["fileutils"]
#
# WARNING: this configuration file has only been slightly tested.
# It has not been thoroughly tested yet.
Espero que a alguien le sirva la receta para algo, y la mejore todo lo que quiera.Sugerencias a: Arturo González





