Foro de soporte
TemasAlcance Libre (65/0)
Alcance Libre Desktop (231/0)
Anuncios (141/0)
Comunidad (54/0)
Consejos y trucos (90/0)
Editoriales (18/0)
Entretenimiento (80/0)
Equipamiento lógico (Software) (187/0)
Humor (36/0)
Internet (128/0)
Juegos (56/0)
Manuales y documentos (90/0)
Música (13/0)
Negocios y empresas (110/0)
Noticias Generales (707/0)
Nuestro idioma (7/0)
Opiniones (79/0)
Programación y desarrollo (35/0)
Seguridad (93/0)
Sustento Físico (Hardware) (37/0)
Tiras cómicas (15/0)
Ubunteando (25/0)
EventosNo hay eventos próximosParticipan...Noticiasjoelbarrios (1478) bartoloco (119) capotes (87) Koalasoft (80) bakara (59) The One (46) Flaquita (44) domingov (43) gomezbjesus (38) aLb3rT (31) adrianpazr (21) ValeriaBueno (18) yucleto (16) linuxfrog (14) Zilus (14) Comentarios joelbarrios (215) Koalasoft (153) aLb3rT (126) gomezbjesus (79) The One (61) Oscar Hernández (47) juanroberto (38) Jose de Jesus (37) Micaelo (34) bakara (34) manowar (33) julioe (28) bartoloco (28) rlameda (27) scs_calleros (25) |
Cómo configurar OpenSSH con chroot.Autor: Joel Barrios DueñasCorreo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
Introducción.SSH es un protocolo que permite realizar transferencias seguras a través de un túnel seguro donde toda la información trasmitida va cifrada. Sin embargo, SSH potencialmente se puede volver un arma de dos filo si una cuenta de usuario se ve comprometida. Configurar un sistema con OpenSSH con soporte para chroot brinda una mayor seguridad al aislar a los usuarios dentro de un entorno separado del sistema principal con un mínimo de herramientas para trabajar y que disminuye los riesgos potenciales en caso de verse comprometida alguna cuenta. Chroot es una operación que cambia el directorio raíz, afectando solamente al proceso actual y a los procesos derivados de éste (hijos). Específicamente se refiere a la llamada de sistema chroot(2) o al programa ejecutable chroot(8). Este documento considera que el lector utiliza CentOS 4, Red Hat™ Enterprise Linux 4 o White Box Enterprise Linux 4. Equipamiento lógico necesario.Se requiere instalar los paquetes de OpenSSH modificados con el parche disponible a través de http://chrootssh.sourceforge.net/ y que están disponibles a a través de Alcance Libre en el siguiente URL: Utilice el mandato wget, del siguiente modo, para descargar los paquetes correspondientes:
El directorio completo será descargado junto los paquetes RPM necesarios, junto con algo de contenido HTML que pueden eliminarse.
Al terminar, acceda al subdirectorio openssh-chroot que se acaba de crear:
Por motivos de seguridad, los paquetes distribuidos por Alcance Libre están firmados digitalmente con GnuPG. La clave pública está disponible en http://www.alcancelibre.org/al/AL-RPM-KEY. Conviene descargar e importar ésta a fin de verificar la integridad de los paquetes RPM involucrados en este documento.
Una vez importada la llave pública, se verifica la integridad de los paquetes RPM utilizando el mandato rpm, con las opciones -v y -K, que corresponden, respectivamente, a mensajes descriptivos y verificación de firmas.
Lo anterior debe devolver algo similar a lo siguiente:
A fin de satisfacer cualquier otra dependencia que pudiera faltar, utilice el mandato yum para instalar los paquetes RPM en el interior:
Si no se dispone del mandato yum en el sistema, o bien si así se prefiere, se puede utilizar directamente el mandato rpm del siguiente modo:
ProcedimientosSolo el usuario root deberá poder modificar la estructura de la jaula y su contenido. El objeto es poder permitir el acceso por SSH/SFTP a un entorno aislado del sistema principal. Adicionalmente si se configura el servicio de FTP con jaulas, se podrá acceder indistintamente por FTP, SSH o SFTP. Componentes mínimos para la jaula.Los siguientes son los componentes mínimos de la jaula basada sobre un sistema con CentOS 4, Red Hat™ Enterprise Linux 4 o White Box Enterprise Linux 4:
Si se requiere utilizar /bin/sh, y suponiendo se utiliza /chroot/ como directorio raíz para la jaula, se debe copiar dentro de éste como /chroot/bin/sh, si se requiere /lib/libtermcap.so.2 se debe copiar como /chroot/lib/libtermcap.so.2, si se requiere /usr/libexec/openssh/sftp-server se debe copiar como /chroot/usr/libexec/openssh/sftp-server, y así sucesivamente. Cualquier otra herramienta que se quiera agregar, solo requerirá estén presentes, dentro de las rutas relativas de la jaula, las bibliotecas correspondientes. Éstas se determinan a través del mandato ldd aplicado sobre la herramienta que se quiere utilizar. Por ejemplo, si se quiere añadir el binario del mandato more a la jaula, primero se determina que bibliotecas requiere para funcionar:
Lo anterior devuelve algo como lo siguiente:
Lo anterior significa que para poder utilizar el binario del mandato more dentro de la jaula deberán estar presentes dentro de ésta y en el subdirectorio lib/ las bibliotecas libtermcap.so.2, libc.so.6 y ld-linux.so.2. Ficheros /etc/passwd y /etc/group.Los ficheros /etc/group y /etc/passwd solo necesitan contener la información de los usuarios que interese enjaular así como la ruta relativa al directorio donde se encuentra la jaula de sus directorios de inicio (es decir, se define /home/usuario, suponiendo que realmente se localiza en /var/www/sitiocliente/home/usuario). Es indispensable esté presente esta información dentro de la jaula o de otro modo no será posible realizar el ingreso al sistema.
Dispositivos de bloque.Aunque no del todo indispensable para utilizar OpenSSH con Chroot, es buena idea crear los siguiente nodos dentro de la jaula:
Ejemplo práctico.Suponiendo que se tiene un cliente, y éste ha solicitado servicio de hospedaje para su sitio de red a través de HTTP. El cliente quiere dos usuarios diferentes para subir distinto contenido al sitio de red. Los usuarios serán fulano y mengano. El dominio a administrar sera sitio.com, que será administrado exclusivamente por fulano, y se quiere un sub-dominio denominado ventas.sitio.com que será administrado por mengano. Crear las cuentas de los usuariosSe crea el directorio /var/www/sitio.com y se copia la estructura de la jaula antes mencionada dentro de subdirectorios relativos a /var/www/sitio.com, teniendo cuidado de dejar a root como propietario a fin de impedir que los usuarios puedan borrar algún subdirectorio del interior. Se crean las cuentas de los dos usuarios, tomando en cuenta que si se asigna /sbin/nologin o /bin/false como interprete de mandatos, se podrá acceder por FTP pero no se podrá acceder por SSH o SFTP, y si se asigna /usr/libexec/openssh/sftp-server, solo se podrá acceder por SFTP. Si se asigna /bin/sh como interprete de mandatos, se podrá acceder por SSH, SFTP y FTP.
Cabe señalar que los directorios de inicio pertenecen a root, de este modo se impide que el usuario pueda borrar subdirectorio relativos que se utilizarán para guardar las bitácoras de Apache. Suponiendo que el ususario fulano tiene UID 513 y que el usuario mengano tiene UID 514, el fichero /var/www/sitio.com/etc/passwd debería tener el siguiente contenido:
Basado sobre lo anterior, e fichero /var/www/sitio.com/etc/group debería tener el siguiente contenido:
Ejemplo aplicado a sitio de red virtual con Apache.El dominio www.sitio.com se configurará del siguiente modo:
Los directorios necesarios se crearán del siguiente modo con siguientes permisos:
El subdominio ventas.sitio.com se configurará del siguiente modo:
Los directorios necesarios se crearán del siguiente modo, asignando estos con el mandato chown al usuario root, fulano y el grupo apache:
Comprobaciones del ejemplo.Al acceder con el usuario fulano a través de SSH o FTP hacia www.sitio.com se deberá acceder hacia /var/www/sitio.com, el cual será presentado como "/". El usuario publicará el contenido HTML dentro del subdirectorio /html, , podrá guardar contenido fuera del directorio raíz público, del sitio virtual en Apache, en el subdirectorio /configs y podrá acceder hacia las bitácoras generadas por apache en /logs, para ser utilizadas por cualquier herramienta de análisis, como Webalizer. Es importante mencionar que el usuario fulano no podrá borrar contenido, ni deberá tener capacidad tal, del directorio /, como son el subdirectorio de bitácoras /logs y el subdirectorio /html. Éste último se mostrará a través de Apache como http://ventas.sitio.com/. En la ausencia de estos, tras una eliminación accidental de los mismos, Apache no podría iniciar, lo cual afectaría a todos los sitios hospedados en el servidor. Al acceder con el usuario mengano a través de SSH o FTP hacia www.sitio.com se deberá acceder hacia /var/www/sitio.com, el cual será presentado como "/". El usuario publicará el contenido HTML dentro del subdirectorio /ventas/html, podrá guardar contenido fuera del directorio raíz público, del sitio virtual en Apache, en el subdirectorio /ventas/configs y podrá acceder hacia las bitácoras generadas por Apache, en el subdirectorio /ventas/logs, para ser utilizadas por cualquier herramienta de análisis, como Webalizer. Es importante mencionar que el usuario mengano no podrá borrar contenido, ni deberá tener capacidad tal, del directorio /ventas, como serían el subdirectorio de bitácoras (/ventas/logs) y el subdirectorio de contenido HTML (/ventas/html). Éste último se mostrará a través de Apache como http://ventas.sitio.com/. En la ausencia de estos, tras una eliminación accidental de los mismos, Apache no podría iniciar, lo cual afectaría a todos los sitios hospedados en el servidor.
|
Comentarios Recientes