Convert to GutenPalm
or to PalmDoc |
por
Sobre el autor:
Frédéric Raynal prepara su tesis en informática sobre tatuado de imágenes en el INRIA (Instituto Nacional de investigación en Informática y Automatización con sus siglas en francés). Asimismo participa en el desarrollo de la Bastille-Linux.
Contenidos:
|
Bastille-Linux o cómo mejorar la seguridad de nuestro sistema
Resumen:
La versión 1.1 de Bastille-Linux, que apareció a principios de junio, no es una nueva distribución Linux sino un conjunto de guiones para proteger mejor nuestro sistema contra potenciales vulnerabilidades. El enfoque de los autores es muy pedagógico y se puede aprender mucho durante el proceso de su instalación.
Introducción
En cuanto a seguridad se refiere, Linux es mucho mejor que otros sistemas operativos. Sin embargo, no todas las distribuciones son iguales con respecto a este tema. Bastille-Linux propone un conjunto de medidas a tomar para proteger nuestro sistema. Incialmente fue escrito para RedHat pero la última versión funciona también para otras distribuciones.
El proyecto es dirigido por Jon Lasser (coordinador principal) y Jay Beale (desarrollador principal). No obstante, existen numerosos desarrolladores, diseñadores de software y beta-testers involucrados.
Ante todo dejemos bien en claro que Bastille-Linux NO es una nueva distribución de Linux. Es un conjunto de guiones escritos en perl destinados a mejorar la seguridad de Linux.
El término seguridad se limita aquí al aspecto informático: cómo evitar que personas indeseables accedan a nuestra máquina. Bastille-Linux binda parte de la respuesta modificando la instalación inicial de las diferentes distribuciones de Linux.
Una tarea básica de todo administrador es de conocer las necesidades de sus usuarios no sólo para satisfacerlos sino también para evitar que se ejecuten programas en la red que no se usan pero que pueden tener vulnerabilidades peligrosas para ésta. Uno de mis mentores solía decir: cuanto menos puedas hacer, mejor ;-]. Si bien hablaba sobre complejidad algorítmica lo mismo es aplicable a la administración de redes: demasiado privilegios causan daño y crean nuevos ángulos de ataque. Para reducir las vulnerabilidades de un sistema es necesario instalar sólo lo que realmente se necesita.
Bastille-Linux intenta reducir las posibilidades de un ataque a una máquina Linux. Para alcanzar este objetivo, los diseñadores del programa han optado por un enfoque muy pedagógico: sugieren paso a paso qué hacer y explican el por qué.
Presentación
Al momento de escribir este artículo la versión de Bastille-Linux es la 1.1.0 la cual fue liberada en la primera quincena del mes de junio.
Independientemente de su utilidad evidente, Bastille-Linux es estremadamente didáctico. Los guiones funcionan haciendo preguntas precisas. A menudo, en este tipo de enfoque las preguntas son tan incomprensibles como las respuestas y los usuarios no saben qué hacer. Aquí, en cambio, los desarrolladores tratan de educar al usuario. Explican no sólo el contexto de la pregunta, sino también las consecuencias de sus posibles respuestas. Esto hace de Bastille-Linux una herramienta fácil de usar.
Para usuarios más avanzados, el código fuente escrito en perl es un modelo de claridad (sí, es posible ;) : cada comentario describe en forma precisa las acciones que se toman.
A continuación se muestran las características de la versión 1.1.0 :
- Los guiones ahora funcionan en sistemas usados.
-
- Existe una función undo: se hace una copia de respaldo de cada archivo modificado por Bastille-Linux de manera de poder restaurar las configuraciones inciales si fuese necesario
-
- Al principio, Bastille-Linux estaba reservado para RedHat y Mandrake. Esto ya no continua siendo así. Actualmente, un módulo contiene las rutas de los archivos necesarios en función de la distribución sobre la que se ejecutan los guiones.
Bastille-Linux consta de diferentes módulos. Son cuatro módulos de propósito general y otros relacionados con propósitos más específicos (programas como sendmail, FTP, demonios de escaso uso, etc.)
Los módulos generales comprenden:
- Instalación de un cortafuegos (firewall)
- Actualización de los programas del sistema
- Auditoría de los programas SUID-root
- Desactivación y restricción de servicios inútiles
Los otros módulos están vinculados con aspectos más específicos. Algunos se dedican a los agujeros de seguridad creados por programas mal configurados (por ejemplo, sendmail o FTP), otros modifican la configuración de algunos servicios de una manera menos permisiva (PAM, syslog, ...)
Algunas medidas de seguridad se superponen ofreciendo diferentes niveles de protección (esto es contrario a los principios de mi mentor pero alguna vez hay que emanciparse ;-) Hay que proteger cada servicio o cada vulnerabilidad potencial por intermedio de todos los medios posibles. De esta manera, si uno fracasa los restantes siguen protegiendo a nuestro sistema.
Instalación o "juguemos con los guiones mientras el lobo no está"
Las versiones previas de Bastille-Linux sólo funcionaban en sistemas nuevos lo cual no sigue siendo así. Sin embargo, cabe destacar que Bastille carece (casi) de utilidad en sistemas ya usados. De esta manera, se recomienda por cuestiones de seguridad instalar Bastille-Linux en sistemas recién instalados. Habiendo aclarado este punto podemos pasar a cuestiones más importantes: ¡la instalación!
Bastille-Linux está disponible como tarball .tgz en bastille-linux.sourceforge.net. Este archivo es de sólo 134 Kb. Una vez descargado se lo descomprime haciendo (tar xzf Bastille-1.1.0.tgz).
Cuatro guiones administran Bastille-Linux:
- InteractiveBastille.pl: este guión formula al usuario diversas preguntas para definir las operaciones que se van a efectuar en el sistema. Al finalizar, crea un archivo config teniendo en cuenta las respuestas dadas.
-
- AutomatedBastille.pl: instala la configuración por defecto dando la posibilidad de usar un cortafuegos a partir de un archivo de configuración suministrado. Cabe destacar que este guión ya no se sigue manteniendo.
-
- BackEnd.pl: es el responsable de los cambios introducidos al sistema. Toma como parámetros las respuestas incialmente dadas
-
- Undo.pl : cuando se ejecuta BackEnd.pl algunos archivos del sistema (/etc/syslog.conf,/etc/inetd.conf, /etc/hosts.*, ...) sufren modificaciones. Para permitir la recuperación del sistema inicial, las copias de respaldo se ubican en el directorio /root/Bastille/undo.
Para instalar Bastille-Linux hay que ser superusuario ya que los guiones modificarán los archivos de configuración. La instalación más habitual consiste en ejecutar primero el InteractiveBastille.pl. A continuación el usuario deberá responder una serie de preguntas (que serán analizadas en detalle más adelante). Por último se debe ejecutar el BackEnd.pl y ¡listo!. Un seguimiento de todos los cambios introducidos se puede encontrar en el directorio /root/Bastille/undo.
Algunas observaciones antes de comenzar.
- Se supone que el guión, por defecto, se ejecuta en el directorio /root/Bastille ... esto se modificará en una futura versión y será posible ejecutarlo desde cualquier lugar (de hecho, quizás ya sea así en el momento de leer estas líneas)
- Dos módulos proponen la creación de cuentas y presuponen que en el sistema se usan contraseñas ocultas. Esto ocurre en la instalación por defecto y es conveniente verificar que el directorio /etc/passwd no contenga contraseñas, que al directorio /etc/shadow sólo tenga acceso el superusuario y que sea este directorio el que contiene las contraseñas.
- Bastille-Linux aún no administra enlaces entre módulos como los que aparecen en la configuración del núcleo (esta característica estará disponible en una próxima versión). Se debe prestar atención a las respuestas dadas en cada módulo y a las consecuencias que pueden originar. Así, por ejemplo, es posible decirle al módulo IPChains bloquear el puerto 2049 y mantener el NFS en la lista de demonios activos del módulo MiscellaneousDaemons (NFS usa este puerto).
Los módulos paso a paso
Para comprender las etapas paso a paso, conservaré las preguntas planteadas por Bastille-Linux en inglés acompañándolas de su correspondiente traducción al castellano. Las letras entre [ ] muestra la respuesta por defecto (N -> No, Y -> Yes -Sí-).
IPChains
Este módulo sirve para configurar un cortafuegos. Si bien no es indispensable para proteger el sistema, permite controlar el tráfico de red desde y hacia nuestra máquina. Sin embargo, no basta con bloquear el tráfico con un cortafuegos. Hay que reconfigurar los demonios (recordar que no son inútiles diferentes niveles de seguridad).
El principio en que se basa este guión es excelente. Considera 2 interfaces de red: la que se comunica con el exterior y la que se comunica con la red local. El objetivo es determinar los servicios disponibles en cada máquina y y bloquear el resto. Por defecto, se rechaza todo lo que proviene del exterior. A continuación el guión establecer las reglas para autorizar determinados servicios.
El guión simultáneamente se hace cargo de los protocolos TCP, UDP, ICMP y propone una lista de servicios que se deben vigilar para cada uno de ellos. Sería demasiado extenso detallar el enfoque que sigue Bastille-Linux para instalar un cortafuegos pero la lectura del guión con sus comentarios ayuda muchísimo. Sin embargo, se necesita de un mínimo de conocimiento para entender este módulo.
PatchDownload - Obteniendo los parches
Las actualizaciones son importantes para mantener la integridad del sistema. En los últimos meses, bind y piranha, (por citar algunos) han provocado graves problemas de seguridad. Fueron rápidamente solucionados: al ser el código fuente público, algunas personas inmediatamente escribieron los parches.
Desafortunadamente, este guión aún no funciona del todo bien. Es bastante complejo puesto que se deben determinar los paquetes instalados y, entre ellos, los que se necesitan actualizar. A continuación, se debe descargar el parche, verificar que no ha sido modificado (por algún hacker o durante el proceso de transferencia) antes de instalarlo. La verdadera dificultad radica en que esta etapa depende de la distribución empleada.
Por el momento, Jay Beale recomienda realizar esta etapa en forma manual sin descuidarla. Una versión más funcional de este módulo está en vís de desarrollo y estará disponible muy pronto.
FilePermissions - Los permisos de los archivos
Este módulo está inspirado en el documento del grupo SANS. Su finalidad es determinar los programas que deben ser accesibles únicamente al superusuario (o a un miembro del grupo root), los que necesitan conservar el bit SUID, etc ...
AccountSecurity - La seguridad de las cuentas
Un hacker a menudo comienza con el robo de la cuenta de un usuario (o una cuenta del sistema). Algunas precauciones sencillas dificultan la tarea y permiten detectar eventuales intrusiones.
- Would you like to set up a second UID 0 account - ¿Desea configurar una segunda cuenta con UID 0? [N]
-
Al responder afirmativamente a esta pregunta se crea otra cuenta root en el sistema. En este caso, no se debería seguir usando la cuenta original de root sino la recién creada. Esto incrementa en un factor de dos la posibilidad de que un hacker pueda romper la clave de superusuario pero permite conocer quién utiliza la identidad de superusuario analizando los archivos situados en /var/log.
- May we take strong steps to disallow the dangerous r-protocols? - ¿Se pueden tomar medidas drásticas para los comandos r? [Y]
-
Como hemos mencionado anteriormente los comandos r son fuentes potenciales para obtener una nueva cuenta en una máquina: ¡las contraseñas se transfieren sin cifrar! En una red de este tipo un 'sniffer' (rastreador) ofrece interesantes posibilidades...
Bastille-Linux prohibe el uso de los comandos r via PAM (Pluggable Authentication Modules), elimina los permisos de ejecución y bloquea los servidores que están en tcp_wrapper (rlogind, rexecd y rshd). Están configurados en /etc/inetd.conf donde es suficiente colocarlos como comentarios.
- Would you like to enforce password aging? - ¿Desea imponer un límite de caducidad a las contraseñas? [Y]
-
Las contraseñas se deberán cambiar cada 180 días. Se desactivan las cuentas cuyas contraseñas no se cambian.
- Would you like to create a non-root user account? - ¿Desea crear una cuenta para un usuario estándar? [N]
-
Hay que usar lo mínimo posible la cuenta de superusuario. De hecho, un simple comando como rm -rf ejecutado por el superusuario puede provocar un desastre cosa que no sucede en el caso de un usuario sin dichos privilegios. Únicamente las tareas de administración se deben hacer usando la cuenta de superusuario.
- Would you like to restrict the use of cron to administrative accounts? - ¿Desea restringir el uso de cron para tareas administrativas? [Y]
cron permite ejecutar tareas en forma automática. Por ejemplo, un administrador puede usarlo para verificar regularmente la integridad de archivos o para hacer búsquedas en /var/log. Por otra parte, permitir su uso a todos los usuarios es brindar demasiados priviliegios. Para evitar esta situación, Bastille-Linux crea un archivo /etc/cron.allow que contiene los usuarios autorizados a usar este servicio.
BootSecurity - Seguridad en el arranque
La opciones propuestas por este módulo abarcan la seguridad física de una máquina. Este módulo corrige los agujeros de seguridad de versiones previas que permitían a cualquier persona acceder físicamente a la consola y adquirir privilegios de (i.e. superusuario). En efecto, era suficiente ejecutar LILO en modo monousuario, (LILO: linux single) para encontrarse con un gentil intérprete de comandos perteneciente al root ;-P
Obviamente esto no basta. Para proteger físicamente a una computadora se debe proteger la BIOS con una contraseña, el disco duro debe ser el único dispositivo de arranque, el gabinete debe estar asegurado para evitar que alguien agregue su propio disco duro... Este es por supuesto un comportamiento paranoico que no necesita aplicarse sin que exista una muy buena razón.
Desde el punto de vista del programa, algunas medidas elementales brindan un compromiso razonable con las mencionadas anteriormente:
- Would you like to password-protect the LILO prompt? - ¿Desea proteger a LILO mediante una contraseña? [N]
-
Al contestar "Yes" (SÍ) evita que gente desautorizada acceda al sistema tras el arranque.
- Would you like to reduce the LILO delay time to zero? - ¿Desea reducir a cero el tiempo de espera de LILO? [N]
-
De esta manera nadie puede ingresar parámetros en tiempo de arranque. Si nuestra computadora posee diversos sistemas operativos no debe responderse en forma afirmativa pues el único SO que arrancará será el elegido por defecto.
- Do you ever boot Linux from the hard drive? - ¿Siempre arranca Linux desde el disco duro? [Y]
-
Si respondió YES (SÍ) a algunas de las preguntas previas y tiene instalado LILO en su sistema, debe responder también aquí YES (SÍ) para que se graben las modificaciones al disco.
- Would you like to write the LILO changes to a boot floppy? - ¿Desea guardar los cambios hechos a LILO en un disquete de arranque? [N]
-
Debe responder afirmativamente si dispone de un disquete de arranque para emergencias o bien si es el modo elegido para arrancar Linux.
- Would you like to disable CTRL-ALT-DELETE rebooting? - ¿Desea desactivar la secuencia CTRL-ALT-DELETE para reiniciar el sistema? [N]
-
El objetivo es evitar que alguien reinicie la máquina. Sin embargo, esto es inútil a menos que también se encuentre protegido el suministro de energía eléctrica ;-)
- Would you like to password protect single-user mode? - ¿Desea proteger el modo monousuario mediante una contraseña? [Y]
Como hemos visto al principio de este módulo, resulta ser una muy buena idea evitar que cualquier persona adquiera privilegios de superusuario.
SecureInetd - Seguridad Inetd
El propósito de este módulo es restringir y desactivar servicios superfluos. Los hackers fácilmente pueden encontrar agujeros de seguridad en cualquier servicio privilegiado, por lo tanto se deben restringir tanto los servicios como sus privilegios.
Por ejemplo, un error en el DNS de RedHat 6.0 permite adquirir privilegios de superusuario en forma remota. Desactivando este servicio o reduciendo sus privilegios nos protegerá de este inconveniente.
Algunos protocolos, como los comandos r ya mencionados pero también el ftp o el telnet resultan ser muy vulnerables. Otros permiten al atacante obtener información (finger o identd por ejemplo) de las cuentas de una máquina, etc. Muchos de estos servicios están administrados por tcp_wrapper que permite controlar al que accede a un determinado servicio (por intermedio del archivo /etc/hosts.{allow, deny}). Una vez que el wrapper decide si el cliente puede acceder al servicio solicitado, envía la solicitud al correspondiente servidor.
Esta parte continúa siendo un tanto rígida y debería reveerse completamente en futuras versiones.
- Would you like to modify inetd.conf and /etc/hosts.allow to optimize use of Wrappers? - ¿Desea modificar inetd.conf y /etc/hosts.allow para optimizar el uso de Wrappers? [Y]
-
Bastille-Linux instala estos dos archivos. Puede resultar interesante hecharles un vistazo para pasarles parámetros más precisos en función a nuestras necesidades.
- Would you like to set sshd to accept connections only from a small list of IP addresses? - ¿Desea autorizar el acceso a sshd solamente a un número limitado de direcciones IP? [N]
-
sshd es un demonio que permite conectarse de modo seguro (intercambio de claves, cifrado de contraseñas y datos,...) Permite reemplazar totalmente a telnet, rlogin, rsh, rcp y ftp. Cabe destacar un versión equivalente de ssh bajo la licencia BSD: OpenSSH. Volveremos sobre este asunto posteriormente.
- Would you like to make "Authorized Use" banners? - ¿Desea instalar mensajes con la leyenda "Uso autorizado"? [Y]
Toda persona que intente conectarse a nuestra máquina verá un mensaje de advertencia que le preguntará si está autorizado para conectarse a través de este servicio. Este mensaje se encuentra en el archivo /etc/motd.
Antes de proseguir, recordemos que una red se basa en un modelo cliente-servidor. Por lo tanto, para cada servicio hay que saber si se está del lado del cliente o del lado del servidor. Por ejemplo, el no hacer funcionar el servidor web no nos impide navegar por Internet ya que el navegador juega el rol del cliente.
DisableUserTools - Deshabilitar las herramientas de los usuarios
Este módulo es breve pero absolutamente indispensable para un servidor. En general, un hacker ingresa a una máquina mediante una cuenta de usuario normal. A continuación recompila algunos programas del sistema a fin de poder explotar sus puntos débiles. Este módulo desactiva al compilador C para todos los usuarios salvo para el superusuario.
Por lo tanto, si una máquina es únicamente un servidor donde nadie necesita compilar hay que eliminar el compilador.
ConfigureMiscPAM - Configuración de PAM
La finalidad de este módulo consiste en disminuir los riesgos de ataques tipo 'Denegación de servicios' estos ataques cuelgan al sistema sobrecargándolo (por ejemplo: llenando una partición con archivos core, ejecutando pings mortales, etc)
PAM significa "Pluggable Authentification Module". Se trata de una biblioteca que permite al administrador del sistema elegir el modo en que autentica cada aplicación a sus usuarios, los permisos que tienen, los recursos a los que pueden acceder, etc.
- Would you like to put limits on system resource usage? - ¿Desea imponer limitaciones al uso de recursos del sistema? [Y]
-
El archivo /etc/security/limits.conf contiene los límites impuestos al sistema. Bastille-Linux los modifica de la siguiente manera:
- a la cantidad de archivos core la acota a 0 ;
- cada usuario puede ejecutar a los sumo 150 procesos ;
- el máximo tamaño de un archivo se limita a 40 Mb.
Se pueden modificar cada uno de estos valores directamente desde el archivo de configuración.
- Should we restrict console access to a small group of user accounts? - ¿Se debe restringir el acceso a la consola a un pequeño grupo de cuentas de usuario? [N]
En RedHat 6.0/6.1, los usuarios que se conectan inicialmente desde la consola se benefician con ciertos privilegios como el poder montar el CD-ROM. Es posible restringir el acceso a la consola a un grupo de usuario de confianza. Esta pregunta permite precisar dichos usuarios si se opta por este tipo de política.
Logging - Acceso al sistema
syslog es uno de los servicios más importantes para detectar si una máquina ha sido intervenida. Este demonio registra ciertos sucesos que tienen lugar en el sistema. Se puede optar por limitar la cantidad de información almacenada.
Cabe destacar que si se elige un número mínimo de servicios, cualquier anomalía en los archivos /var/log se puede detectar fácilmente debido al pequeño volumen de información guardada. En cambio, si el sistema posee muchos servicios inútiles los archivos /var/log se vuelven inmensos y por lo tanto difíciles de analizar (en este caso es necesario recurrir a guiones dedicados).
Este módulo agrega nuevos controles al archivo /etc/syslog.conf.
- Would you like to add additional logging? - ¿Desea añadir un acceso adicional al sistema? [Y]
-
Bastille-Linux crea un archivo /var/log/kernel para almacenar los mensajes del kernel y los errores graves (los mensajes provenientes del cortafuegos pertenecen a la primera categoría). Determinadas informaciones se envían a 2 terminales (TTY 7 y TTY8). Un nuevo archivo /var/log/loginlog registra los usuarios que se conectan al sistema.
- Do you have a remote logging host? - ¿Dispone de acceso a un host remoto? [N]
-
Salvo que posea otra máquina hacia la que envía sus mensajes, la respuesta debe ser negativa.
- Would you like to set up process accounting? - ¿Desea activar la contabilidad de procesos? [N]
En Linux, es posible registrar los comandos que han sido ejecutados, cuándo y por quién. Si bien es útil para seguir de cerca las actividades de un hacker hace que el archivo log rápidamente se vuelva enorme. En pocas palabras, su uso consume espacio de disco y tiempo de CPU. Conviene desactivar esta opción a menos que realmente resulte necesario.
MiscellaneousDaemons - Otros demonios
Siempre preocupados por la minimización, este módulo sólo activa los servidores que realmente se necesitan al iniciar el sistema. Por defecto, se desactivan casi todos los servicios inútiles. Se puede volver a activar un servicio mediante el comando chkconfig.
Servicios |
Descripción |
apmd |
Se usa para controlar las baterias de las computadoras portátiles. |
NFS y samba |
Para administrar sistemas de archivos compartidos ... si bien son muy útiles en redes heterogéneas son origen de enormes agujeros de seguridad. |
atd |
Todo lo que se puede hacer por intermedio de atd se puede hacer mediante cron. |
servicios PCMCIA |
Si se tiene un dispositivo PCMCIA, lo que es frecuente en portátiles pero mucho más raro en estaciones de trabajo. |
dhcpd |
Servidor para proporcionar direcciones IP temporales. Este tipo de servicio lo proporciona un Proveedor de Servicios de Internet (ISP) o se usa en una red local. |
gpm |
Se usa en modo consola (texto) para manejar el ratón. A menos que se trabaje a menudo en modo consola este servicio no sirve para nada. |
servidor de noticias |
Pocas personas necesitan de un servidor de noticias en sus máquinas. En general, es tarea del ISP. |
routed |
Así como el servidor de noticias es tarea del ISP, él es tarea de su DNS. |
NIS |
Servicio muy práctico en una red local...¡pero origen de muchos problemas desde el punto de vista de la seguridad! |
snmpd |
Servidor destinado a la administración de una red (estadísticas, gestión de usuarios,...) |
sendmail |
No es necesario ejecutarlo como demonio para permitir el envío y recepción de correo. Además, si recibe su correo de su ISP por POP o IMAP, sendmail carece de utilidad y como programa posee un gran historial de fallos... |
Sendmail
Como hemos mencionado previamente, sendmail es un servicio que gestiona correo. Su historia esta plagada de agujeros de seguridad provocados por la diversidad de tareas que tiene un servidor de correo y los privilegios necesarios para llevarlas a cabo (resolución de nombres, información para syslog, etc...). Además de sus vulnerabilidades, sendmail permite obtener información de un usuario específico de un servidor determinado. Por ejemplo, el comando sendmail EXPN y VRFY permiten saber a una persona si existe una cuenta de usuario concreta.
Como hemos dicho, no es necesario ejecutar sendmail como demonio para enviar y recibir correo. Para un uso individual sendmail no sirve verdaderamente para nada ya que es suficiente con utilizar un cliente de correo cualquiera (netscape, rmail, pine, mutt, etc...) para enviar correo. Para recibirlo, bastará con activar sendmail a intervalos regulares para poder verificar el contenido de nuestra casilla de correos.
- Do you want to leave sendmail running in daemon mode? - ¿Desea que sendmail permanezca ejectuándose como demonio? [Y]
-
Como hemos visto en la mayoría de los casos carece de utilidad y es sumamente peligroso por lo tanto es conveniente desactivarlo.
- Would you like to run sendmail via cron to process the queue? - ¿Desea que sendmail gestione a través de cron la cola de espera de los mensajes? [N]
-
Si se contesta afirmativamente, sendmail verificará la cola de mensajes cada 15 minutos. Es posible modificar este parámetro desde el archivo /etc/sysconfig/sendmail.
- Would you like to disable the VRFY and EXPN sendmail commands? - ¿Desea desactivar los comandos VRFY y EXPN de sendmail? [Y]
Estos comandos proporcionan información útiles tanto a hackers como spammers.
RemoteAcces - Acceso remoto
A menudo resulta útil poder conectarse a una máquina sin estar físicamente próxima a ella. Hemos visto que los comandos r permiten hacer esto de una manera insegura. Bastille-Linux sugiere descargar ssh. Se trata de un programa que cifra los datos (y por lo tanto las contraseñas) que circulan a través de una conexión.
Se puede usar un programa donde el tamaño de la clave de sesión no supere los 128 bits (N.T: este límite varía de acuerdo a las leyes propias de cada país). Expliquemos qué es una clave de sesión. Se trata de la clave que servirá para cifrar los datos. Esta clave se construye paso a paso por el cliente y el servidor y resulta de un protocolo de intercambio de claves (Diffie-Hellman en la mayoría de los casos). El principio consiste en construir una clave con una parte de la clave de cada uno de los participantes. Esta clave de sesión se usa para cifrar los datos en base a un algoritmo simétrico (es decir, se usa la misma clave tanto para cifrar como para descifrar datos). Así DES, que sirve para cifrar las contraseñas en Unix, es un algoritmo simétrico que posee una clave de 56 bits.
Ahora bien, una clave de 128 bits ¿es suficiente para garantizar la confidencialidad y seguridad de una transacción?: ¡SÍ!. Aún cuando actualmente DES no se considere "muy segura", los mejores ataques no están al alcance de todo el mundo. Por otra parte, es un error común creer que una clave de tamaño 2k es dos veces más difícil de romper que otra de tamaño k. De hecho, la dificultad se incrementa mucho más rápido que el tamaño de la clave. Para una clave de tamaño k, existen 2^k claves posibles (y por lo tanto 2^2k para una clave de tamaño 2k). Por lo tanto, al duplicar el tamaño de una clave estamos agregando¡ claves posibles! Cuando uno comprueba la verdadera dificultad que implica romper a DES (56 bits) uno espera que las claves de sesión de 128 bits ofrezcan una seguridad inviolable (suponiendo que el algoritmo de cifrado/descifrado no contenga agujeros de seguridad). Desde el punto de vista de un atacante, el aumentar este límite hace que la dificultad pase de un nivel imposible a otro "aún más imposible".
Cuatro programas diferentes que proporcionan servicios parecidos:
- ssh 1.2.x : un sistema cliente-servidor para establecer conexiones cifradas;
- ssh 2.x : idéntico al anterior pero con menos fallos y más posibilidades;
- OpenSSH : una versión similar a la anterior pero bajo licencia BSD;
- ssf : como ssh, pero adaptado a la legislación francesa
Los restantes módulos están relacionados con servicios. La política que se toma para ellos puede parecer sorprendente: se empieza por restringir los privilegios y se termina por detenerlos. Contrariamente a lo que podría pensarse, estas dos medidas no son contradictorias. En efecto, estos servicios se pueden reactivar en cualquier momento, ya sea accidentalmente o por algún intruso...con lo cual resulta conveniente restringir sus privilegios.
DNS
Un DNS (Domain Name Server) pemite vincular una dirección IP con el nombre de una máquina y viceversa. Por ejemplo, la dirección 198.186.203.36 corresponde a www.bastille-linux.org. La función principal de este servidor se denomina BIND (to bind significa, entre otras cosas, vincular). Últimamente, se ha descubierto un ataque de tipo DoS contra BIND. Se lo puede evitar, dando acceso DNS a un grupo reducido de directorios (antes de ejecutar un comando o guión , se puede cambiar el directorio raíz - por defecto / - mediante el comando chroot).
Agreguemos algunas observaciones técnicas antes de detallar el comportamiento de Bastille-Linux. El demonio asociado a este servicio se denomina named. Su configuración proviene del archivo /etc/named.conf.
- Would you like to chroot named and set it to run as a non-root user? - ¿Desea cambiar el directorio raíz de named y ejecutarlo como un usuario normal? [N]
-
Para hacer todo esto, Bastille-Linux crea un nuevo usuario denominado dns que no posee intérprete de comandos sino únicamente su propio directorio /home/dns. En el interior se reconstruye la arquitectura de un sistema clásico agregando los directorios usuales (/usr, /etc, /var, etc ...). A continuación, se copian los archivos de configuración y bibliotecas que necesita el demonio. Son necesarias otras pequeñas modificaciones (para syslog por ejemplo ver el guión DNS.pm). Ahora el DNS tiene su propio entorno :)
- Would you like to deactivate named, at least for now? - ¿Desea desactivar momentáneamente a named? [Y]
La mayoría de las personas no necesitan poseer un servidor de nombre en sus máquinas ya que el ISP les brinda dicho servicio. El COMO-DNS describe la instalación de un caché para la resolución de nombres pero aún así puede ser origen de problemas.
Apache
Apache es el servidor web más utilizado de Internet. Un servidor de este tipo es útil en dos casos:
- para albergar un sitio web: en este caso es necesaria una dirección IP fija. Los ISP (Proveedores de Servicios de Internet) tienen esta clase de direcciones lo cual no es el caso de sus clientes.
- para probar nuestras propias páginas web: en este caso bastará con activar el servidor (/etc/rc.d/init.d/httpd start) en el momento apropiado.
El archivo para configurar este demonio se encuentra en /etc/httpd/conf.
- Would you like to deactivate the Apache web server? - ¿Desea desactivar el servidor web Apache? [Y]
-
Puesto que no siempre se lo necesita y en aras de la minimización lo desactivamos.
- Would you like to bind the web server to listen only to the localhost? - ¿Desea vincular al servidor web para que "escuche" solamente al localhost? [N]
-
Es posible vincular al demonio httpd a una dirección específica. Aquí, Bastille-Linux propone conectarlo a la dirección del localhost 127.0.0.1. Esto permite tener en ejecución un servidor en una máquina para probar nuestras propias páginas web.
Se podrán acceder a ellas desde la dirección:
http://localhost/ (o http://localhost/raynal para acceder a nuestras páginas web personales)
Es decir Apache usa la interfaz loopback (lo) para funcionar.
- Would you like to bind the web server to a particular interface? - ¿Desea vincular al servidor web con una interfaz particular? [N]
-
Al responder aquí afirmativamente anula la respuesta precedente. Hemos dicho que queríamos usar el servidor web con el loopback ... y esta pregunta permite precisar otra interfaz (Ethernet, por ejemplo) mediante una dirección IP que le es asociada.
- Would you like to deactivate the following of symbolic links? - ¿Desea desactivar el seguimiento de enlaces simbólicos? [Y]
-
Es imperativo responder afirmativamente. De la misma manera que el DNS funciona en un espacio restringido, no se debe permitir a Apache salir de su universo (es decir, /home/httpd). Por ejemplo, si uno de los usuarios posee, en su directorio para el servidor web, un enlace al directorio raíz /, todo el mundo puede acceder a todos los archivos...en particular a los archivos de configuración del tipo passwd entre otros.
- Would you like to deactivate server-side includes? - ¿Desea desactivar los "server-side includes"? [Y]
-
Como dice Jay Beale: si no sabe de qué se trata es porque no lo necesita. Baste con saber que se puede configurar para que los usuarios puedan ejecutar cualquier programa en el servidor (y sí...tiemblen amigos administradores ...sería un pesadilla para ustedes ;-)
- Would you like to disable CGI scripts, at least for now? - ¿Desea momentáneamente desactivar los guiones CGI? [Y]
-
Escribir un guión CGI (Common Gateway Interface) no es extremadamente difícil pero se necesitan tomar ciertas precauciones (sobrecargar la pila, por ejemplo, genera archivos core en el servidor). Gran cantidad de métodos actuales para atacar a un sistema explotan los errores cometidos en estos guiones.
- Would you like to disable indexes? - ¿Desea deshabilitar los archivos índex¿ [N]
Ante la ausencia de un archivo index.html en un directorio, Apache lista todos los archivos que contiene. Esto es menos grave que permitir la lectura de los enlaces simbólicos. No obstante imaginen que un determinado directorio contenga datos importantes.
Un servidor, como cualquier otro servidor, puede ser una invitación a visitar nuestra máquina y, quizás, a dañarla si encuentra incorrectamente configurada. Esto puede resultar bastante molesto en algunos casos. Supongamos por ejemplo, el caso de un banco, si se pueden leer los nombres de sus clientes (y quizás sus contraseñas)...visiten la página www.kitetoa.com, que no se van a arrepentir ;-) (N.T: desgraciadamente está solamente en francés)
Printing - Imprimir
Una única pregunta: ¿imprimirá con su máquina?. Si la respuesta es negativa Bastille-Linux desactiva el demonio lpd y elimina el bit SUID de lpr y lprm. =============
FTP
Desde el punto de vista de la seguridad, FTP puede ser el origen de diversos problemas . Por ejemplo, al iniciar una conexión las contraseñas circulan en texto plano. Lo mismo sucede con los datos, lo cual es peligroso si los datos son confidenciales (datos médicos, financieros...)
Por otra parte, últimamente se han encontrado algunos agujeros de seguridad en wu-ftpd. Recordemos, que no es en absoluto necesario tener el servidor ejecutándose para hacer transferencias via FTP.
El archivo que controla el acceso al servidor FTP es /etc/ftpacces.
- Would you like to disable user privileges on the FTP daemon? - ¿Desea eliminar los privilegios de los usuarios para el demonio FTP? [N]
-
Uno de los inconvenientes del FTP es que permite conexiones anónimas. Otro, es que permite "subir" archivos (es decir, enviar archivos al servidor). Numerosos ataques se aprovechan de estas vulnerabilidades. Por otra parte algunos problemas provienen del hecho de que las transacciones no son seguras (es decir, los datos no son cifrados).
- Would you like to disable anonymous download? - ¿Desea anular las descargas anónimas? [N]
Esto impide las conexiones al servidor del tipo anonymous.
Últimos trucos y consejos
Como lo he subrayado anteriormente, Bastille-Linux constituye una formidable herramienta pedagógica. Tanto las propias preguntas como los comentarios son bien precisos. Cuando las cosas no son lo suficientemente claras, se dispone de una gran diversidad de recursos para encontrar la respuesta correcta. La mejor manera de aprender sobre un determinado tema, consiste en usar únicamente el módulo deseado.
Para ello bastará con hacer una copia de respaldo del archivo que contiene las preguntas y editar el archivo Questions.txt. Cada módulo empieza con la palabra clave FILE... sólo resta conservar lo que deseamos realmente nos interesa.
/root/Bastille >> cp Questions.txt Questions.txt-orig
/root/Bastille >> emacs Questions.txt BackEnd.pl &
/root/Bastille >> ./InteractiveBastille
Obviamente las medidas tomadas por astille-Linux no son suficientes para garantizar la seguridad de nuestro sistema:
- ningún sistema es 100% seguro;
- son indispensables otras medidas para completar las sugeridas por la Bastille-Linux.
Entre las medidas indispensables que se pueden agregar podemos pensar inmediatamente en un analizador de archivos log (portsentry, snort, snplog, etc ...), en un parche de www.openwall.com para el kernel (pila no ejecutable, restriciones sobre los directorios /tmp y /proc, etc...).
El camino para proteger un sistema es arduo e interminable. Se debe estar continuamente al tanto sobre los agujeros de seguridad (a través de listas de correos como la bugtraq del sitio securityfocus, por ejemplo).
Conclusión
Bastille-Linux ayuda a proteger una distribución Linux con mala reputación en el ámbito de la seguridad. Puede que digas: ¿por qué entonces no elegir otra?. Es verdad, pero Red Hat (o Mandrake ya que las diferencias son mínimas) posee ciertas características agradables. El objetivo del presente artículo no es el promover (o denigrar) a una determinada distribución. Después de todo, la libertad de elección es una de las fortalezas del software libre. De hecho, este artículo posee diversos cometidos. Ante todo, mostrar la preocupación permanente de un administrador de sistemas que vive con el temor de ver su red destruida por algunos hackers inescrupulosos. Por otra parte, esta herramienta les permitirá hacer una profunda visita a la configuración del sistema. Bajo esta óptica, resulta ser un medio excelente, tanto para los neófitos como para los usuarios avanzados, para explorar y descubrir los rincones ocultos de la configuración de un sistema Linux.
Las dos premisas fundamentales son el minimalismo y la profundidad. Cuanto menos servicios existan en nuestra máquina menor serán los agujeros de seguridad. Para cada uno de estos servicios, muchas protecciones valen más que una sola...pero esto es un arma de doble filo pues una protección mal configurada (or la conjunción de muchas de ellas) se pueden volver en nuestra contra.
Por último, señalemos que la próxima versión de este programa se llamará BUS (Bastille Unix Security). Se tratará de una juiciosa combinación entre Bastille-Linux y Msec (Mandrake Security Proyect) el cual se denominará pronto Usec (Unix Security Project).
Referencias
- http://bastille-linux.sourceforge.net : Sitio oficial de Bastille-Linux
- Bastille-Linux: A Walkthrough : en el sitio www.SecurityFocus.com. Este artículo está en inglés y fue escrito por Jay Beale, autor principal de la Bastille-Linux. Presenta al programa y su instalación. Me resultó de suma ayuda al escribir el presente artículo ;-)
- http://www.sans.org : el sitio del grupo SANS (Jay Beale colabora con ellos). Fuente inagotable de información sobre seguridad computacional.
- http://www.securityfocus.com/frames/?content=/vdb/stats.html: siempre en SecurityFocus, muestra un interesante estudio sobre los sistemas operativos y sus fallos. El primer lugar lo ocupa una familia de sistemas operativos muy conocidos y a continuación Linux (sin hacer hincapié en alguna distribución en particular)
- www.kitetoa.com : un sitio que se dedica a probar servidores web y a encontrar cosas interesantes. Patético y divertido a la vez. -Solamente en Francés-
- http://www.ssh.com : sitio oficial del secured shell. ssh es de uso gratuito para evaluación, uso no comercial o para ámbitos universitarios (...no en Francia)
- http://www.openssh.org : lo mismo que ssh ... pero bajo licencia BSD :)
Last modified: Mon Jun 12 16:40:50 CEST 2000
Formulario de "talkback" para este artículo
Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
Ir a la página de "talkback" |
|
Contactar con el equipo de LinuFocus
© Frédéric Raynal, FDL
LinuxFocus.org
Pinchar aquí para informar de algún problema o enviar comentarios a LinuxFocus
|
Información sobre la traducción:
fr |
-> |
-- |
|
fr |
-> |
en |
|
en |
-> |
es |
|
|
2001-06-15, generated by lfparser version 2.9