
Instalé jailkit en mi servidor CentOS 5.8 y lo configuré de acuerdo con las guías en línea que encontré. Estos son los comandos que se ejecutaron como root:
mkdir /var/jail
jk_init -j /var/jail extshellplusnet
jk_init -j /var/jail sftp
adduser testuser; passwd testuser
jk_jailuser -j /var/jail testuser
Luego edité /var/jail/etc/passwd
para cambiar el shell de inicio de sesión para testuser
darles /bin/bash
acceso a un shell bash completo a través de SSH.
Luego edité /var/jail/etc/jailkit/jk_lsh.ini
para que se pareciera a lo siguiente (no estoy seguro si es correcto)
[testuser]
paths= /usr/bin, /usr/lib/
executables= /usr/bin/scp, /usr/lib/openssh/sftp-server, /usr/bin/sftp
El usuario de prueba puede conectarse a través de SSH y está limitado a ver solo el directorio chroot jail, y también puede iniciar sesión a través de SFTP; sin embargo, todo el sistema de archivos es visible y se puede atravesar.
Salida SSH:
> ssh testuser@server
Password:
Last login: Sat Oct 20 03:26:19 2012 from x.x.x.x
bash-3.2$ pwd
/home/testuser
Salida SFTP:
> sftp testuser@server
Password:
Connected to server.
sftp> pwd
Remote working directory: /var/jail/home/testuser
¿Qué se puede hacer para bloquear el acceso SFTP a la cárcel?
Respuesta1
Aunque definitivamente siento el dolor de DoubleSharp (acabo de encontrarme con este problema también), la respuesta de DoubleSharp aquí no debería usarse (no es segura). El problema aquí es que el sftp interno de sshd se ejecuta antes de que se pueda ejecutar /usr/sbin/jk_chrootsh, LO CUAL DEBE EJECUTARSE POR RAZONES DE SEGURIDAD. Entonces, todo lo que necesita hacer para solucionar este problema es asegurarse de que su archivo /etc/ssh/sshd_config tenga esta línea...
Subsystem sftp /usr/lib/openssh/sftp-server
... y NO esta línea ...
Subsystem sftp internal-sftp
Y también asegúrese de no hacer ninguna coincidencia de usuario/grupo en este archivo. La gran idea aquí es que si va a utilizar jailkit para poner en cuarentena a los usuarios en un sistema Linux, entonces debe forzar a todos los usuarios a pasar por /usr/sbin/jk_chrootsh, que puede activar su propia funcionalidad sftp si es necesario.
Después de realizar los cambios en /etc/ssh/sshd_config, asegúrese de reiniciar sshd (el método puede variar según su sistema).
Respuesta2
Me encantaría que lo corrigieran si hay problemas con esto, pero la siguiente configuración parece haber funcionado.
Cambió el usuario en /etc/passwd
(no /var/jail/etc/passwd
) que había sido modificado por jailkit:
Originaltestuser:503:503::/var/jail/./home/testuser:/usr/sbin/jk_chrootsh
Modificadotestuser:503:503::/home/testuser:/bin/bash
Configuración agregada a /etc/ssh/sshd_config
:
Match Group testuser
ChrootDirectory /var/jail/
Ahora, al iniciar sesión a través de SSH
o, SFTP
el usuario está limitado a /var/jail
y debajo y de forma predeterminada el directorio de inicio en/var/jail/home/testuser