18 nov. 2009

[Bastille] a tool for SysAdmins

INTRODUCCIÓN

En este artículo aprenderemos a manejar Bastille, desde su instalación y configuración exhaustivamente para proporcionar una mayor seguridad de nuestro sistema Linux. Bastille es una de las tantas herramientas de hardening con el que ahorramos bastante tiempo desde la configuración de cada archivo individual hasta la programación para el fortalecimiento del mismo pudiendo ejecutarse bajo Linux, HP-UX e incluso MacOS X. Con ella podemos realizar bastantes tareas como deshabilitar servicios y puertos innecesarios. Además, cabe decir que, Bastille es un conjunto de scripts en Perl que toma la información que le indiquemos desde una set de preguntas y respuestas de las que ya comentaré a lo largo de este artículo desde una interfaz bastante amigable.

He aquí una lista de las características que nos ofrece Bastille, pero que puede variar a medida de que aparezcan nuevas versiones.
NOTA: Este artículo ha sido elaborado con la versión 3.0.9 de Bastille.

- Aplicar permisos restrictivos en las utilidades de administrador: Permite tan solo a root leer y ejecutar las utilidades habituales de administrador como ifconfig, linuxconf, ping, traceroute y runlevel, deshabilitando el estado del SUID root para estas herramientas , de modo que los usuarios no fueran root, no pudieran usarlo.

- Deshabilitar los protocolos r: Los protocolos r permiten a los usuarios entrar en sistemas remotos usando una autenticación en base a la IP. Esta autenticación permite sólo a determinadas IP acceder remotamente a un sistema. Dado que esta autenticación se basa en la dirección IP, un intruso que ha descubierto una IP autorizada puede crear paquetes camuflados que parecen provenir de ese sistema autorizado. (Véase como ejemplo: RPC)

- Implementar caducidad de contraseñas: Los sistemas Linux por defecto permiten contraseñas que expiran después de 99.999 días. Dado que esto es demasiado en un entorno seguro, Bastille ofrece cambiar la expiración de la contraseña a 180 días. Estas configuraciones están escritas en el archivo /etc/login.defs que pueden ser modificadas posteriormente con un editor cualquiera.

- Deshabilitar Control-Alt-Supr para reiniciar: Esto no permite reiniciar la máquina, algo bastante esencial si nos referimos a su seguridad física.

- Optimizar las envolturas TCP: Esta elección modifica el archivo inetd.conf y el archivo /etc/hosts.allow de modo que inetd debe contactar con las envolturas TCP siempre que reciba una petición en lugar de ejecutar automáticamente el servicio solicitado. Las envolturas TCP determinarán si la dirección IP solicitante está autorizada para ejecutar el servicio en particular. Si la petición no está permitida, se deniega y el intento se registra. Aunque la autenticación basada en IP puede ser vulnerable, esta optimización añade una capa de seguridad en el proceso. No está recomendado para la mayoría de escenarios.

- Añadir mensajes de autorización de uso: Estos mensajes aparecen automáticamente cuando alguien accede en el sistema.

- Limitar el uso de los recursos del sistema: Si limita el uso de los recursos del sistema, puede reducir las oportunidades de fallo de un servidor a un ataque DoS. Si elige limitar el uso de los recursos del sistema en Bastille, se producirán los siguientes cambios:
  • El tamaño de archivos se limita a 40 MB
  • Cada usuario se limita a 150 procesos.
  • El número de archivos del core permitidos por usuario se configura a cero. Los archivos del core se usan para tratar problemas del sistema. Son grandes y utilizables si se obtiene el control de los mismos: pueden crecer y consumir su sistema de archivos.
- Restringir el acceso a consola: Cualquiera con acceso a la consola tiene derechos especiales, como montar un CD-ROM. Bastille puede especificar qué cuentas de usuario tienen acceso para entrar por consola.

- Registro remoto y adicional: Dos registros adicionales podrían añadirse a /var/log:
  • /var/log/kernel (mensajes del kernel)
  • /var/log/syslog (mensajes de error y avisos) Puede también hacer el registro de un host remoto si existe.
- Configuración de cuenta de procesos: Le permite registrar los comandos de todos los usuarios. También registra cuando fueron ejecutados los comandos. Este archivo de registro son útiles para el seguimiento de un intruso en un sistema, pero el archivo puede llegar rápidamente a ser muy grande. Si se tiene acceso root, lógicamente puede ser eliminado.

- Desactivar NFS y Samba: Le permite deshabilitar los servicios NFS y Samba.
Samba proporciona un sistema de archivos compartido. A menos que el cortafuegos se configure para bloquear los paquetes o el administrador asegure estos servicios. Bastille recomienda desactivarlos.

- Fortalecer el servidor Web Apache: Debería desactivarse si el servicio (httpd) no es utilizado.

IMPLEMENTACIÓN

Bajo Linux, Bastille es ofrecida desde los repositorios de nuestra distribución, pero si por algún caso no la estuviera, tendríamos la posibilidad de descargarla desde su propia página oficial. Aunque en este artículo nos centraremos en la instalación desde su propio código fuente, así qué ¡allá vamos!

$ cd /tmp; wget http://nfsi.dl.sourceforge.net/sourceforge/bastille-linux/Bastille-3.0.9.tar.bz2; tar -xjvf Bastille*; cd Bastille; ./Install.sh

Una vez instalado, ejecutaremos Bastille desde la línea de comandos. Para ello tenemos dos intefaces disponibles, una basada en Ncurses (bastille -x) y otra en Tk (bastille -c)
NOTA: Debemos de tener instalado Perl-Tk para su ejecución.

Una vez ejecutado, podemos observar que nos encontramos con una pantalla de bienvenida, la cual está dividida en grupos y funciones y a su vez, las funciones están divididas en preguntas relacionadas a los grupos que veremos ahora.
Tk Bastille Image
NOTA: Todas las elecciones que implemente en Bastille se registran en el archivo /root/Bastille/config.
  • Grupo: FilePermissions
    Would you like to set more restrictive permissions on the administration utilities? [N]: Útil en máquinas con múltiples cuentas de usuario. Hay utilidades que en general, sólo son ejecutadas por el administrador de la máquina aunque por defecto los usuarios habituales tienen acceso a ellas, al menos a parte de sus funcionalidades, como pueden ser los comandos top o ifconfig. Para evitar los posible problemas de seguridad a los que podría dar lugar a esto, Bastille puede cambiar los permisos de las mencionadas aplicaciones con el fin de asegurar que sólo el administrador pueda ejecutarlas. Si usted es el único usuario de la máquina no tiene sentido que habilite esta opción. Si cuenta con otros usuarios que acceden a ella, sí que sería interesante añadir esta opción.
  • Grupo: FilePermissions
    Would you like to disable SUID status for mount/umount? [Y]: En general, los programas que tienen el atributo SUID son muy peligrosos ya que pueden ser invocados por usuarios normales, se ejecutan con privilegios de superusuario. Esto no entrañaría ningún riesgo si estos programas se limitasen a hacer aquello para lo que fueron diseñados, el problema está en que es relativamente habitual que se descubran bugs en estas aplicaciones que permitan “engañarlas” para que hagan funciones indeseables con privilegios de superusuario. Si dice que sí en esta pregunta, Bastille se asegurará de que el comando mount/umount sólo pueda ser ejecutado por aquellos que conozcan la contraseña de superusuario, reduciendo así la exposición al riesgo del equipo.
  • Grupo: FilePermissions
    Would you like to disable SUID status for ping? [Y]: Similar al anterior.
  • Grupo: FilePermissions
    Would you like to disable SUID status por at? [Y]: El comando at se utiliza para programar tareas individualmente para que se ejecute en un momento dado. Históricamente han sido muchas hazañas que se han aprovechado, por consecuente es recomendable desactivarlo.
  • Grupo: FilePermissions
    Would you like to disable the r-tools? [Y]: Las llamadas r-tools son un conjunto de utilidades para la administración remota de equipos, como pueden ser rlogin, rsh, rdist, rpc y similares. El problema con estas herramientas es que todas las transacciones son hechas en texto plano, es decir, la información no es enviada ni recibida de forma cifrada lo que representa un riesgo de seguridad si la transferencia es víctima de sniffing. Contestar afirmativamente a esta pregunta deshabilitaría el uso completo de las herramientas a todos los usuarios (incluyendo root) lo cual es recomendable tomando en cuenta que cada una de estas herramientas tiene actualmente equivalentes más seguras basadas en OpenSSL, PAM, SSH y similares.
  • Grupo: FilePermissions
    Would you like to disable SUID status for usernetctl? [Y]: usernetctl, es una utilidad similar a ifconfig que permite a los usuarios normales el control a las interfaces de red, lo cual es recomendable deshabilitarlo.
  • Grupo: AccountSecurity
    Pregunta: Should Bastille disable clear-text r-protocols that use IP-based authentication? [Y]:
    Descripción: La diferencia de esta pregunta a la anterior es que se refiere al uso de r-tools a nivel de servidor, es decir, permitir que se ejecute por ejemplo rsh en tu sistema y de esta forma poder acceder remotamente a él con rlogin. La misma razón que se describió en la pregunta anterior es por la que deberíamos desactivar estas herramientas.
  • Grupo: AccountSecurity
    Would you like to enforce password aging? [Y]: Habilita un tiempo de caducidad de las contraseñas a 60 días. Antes de que pase ese tiempo se pedirá al usuario que cambie su contraseña. Si se cumple el plazo y el usuario no ha cambiado su contraseña se procederá a bloquear su cuenta hasta que el administrador la vuelva a activar (Véase usermod)
  • Grupo: AccountSecurity
    Do you want to set the default umask? [Y]: El umask son los permisos por defecto que se le asignan a los ficheros que vaya creando. Lo más aconsejable es dejar que Bastille lo fije a un valor seguro (077).
  • Grupo: AccountSecurity
    Should we disallow root login on tty’s 1-6? [N]: Las tty, son terminales accesibles desde las combinaciones CTRL+ALT+F1 hasta F7, por lo que Bastille nos ofrece deshabilitar el acceso root a dichas terminales para que sea conectado antes con un usuario normal con los mínimos privilegios posibles.
  • Grupo: BootSecurity
    Would you like to password-protect the GRUB prompt? [N]: En caso de que un intruso tenga acceso físico al equipo, puede obtener una consola de root rebotando el equipo y pasándole unos parámetros determinados al GRUB. Para evitar esto, lo mejor es activar esta opción de tal manera que aunque se pueda reiniciar el equipo y arrancarlo normalmente, sólo se puedan pasar parámetros al GRUB autenticando antes con su respectiva contraseña, pero si lo que tenemos es un equipo remoto a disposición sin acceso físico alguno, mejor descartar esta opción.
  • Grupo: BootSecurity
    Would you like to password protect single-user-mode? [Y]: El modo mono-usuario sirve para arrancar el sistema de manera que única y exclusivamente pueda acceder el superusuario. Es un tipo de acceso que se utiliza en casos de emergencia, cuando por ejemplo no se recuerda la contraseña de root ya que no suele solicitarse autentificación, esto supone un arma de doble filo que puede permitir el acceso no autorizado al sistema. Si se activa esta opción, Bastille evitará esta situación solicitando contraseña de root al acceder por dicho modo.
  • Grupo: SecureInetd
    Would you like to set a default-deny on TCP Wrappers and xinetd? [N]: inetd es un demonio que se inicia al principio de la secuencia de arranque en Linux, que tiene la función de escuchar varios puertos concretos y así cuando una conexión a un puerto es requerida, inicia el proceso asociado a dicho puerto. Como pueden ser las de servicios de FTP, POP, IMAP, etcétera, por lo que no es recomendable desactivarlo si se quiere utilizar dichos servicios.
  • Grupo: SecureInetd
    Would you like to display “Authorized Use” messages at log-in time? [Y]: Esta opción habilitará un mensaje que aparecerá al comienzo de las sesiones de consola. Este mensaje advertirá de que se está accediendo a un sistema restringido y que cualquier acceso no permitido puede ser perseguido por vía legal. Posteriormente podremos editar dicho mensaje para adecuarlo convenientemente a lo que diga el Departamento Jurídico. (Véase /etc/motd)
  • Grupo: SecureInetd
    Who is responsible for granting authorization to use this machine?: Esta una pregunta dirigida a redactar el mensaje mencionado antes. En este caso se trata de identificar al responsable del equipo encargado de autorizar los diferentes accesos a él, en mi caso Pr0x.
  • Grupo: ConfigureMiscPAM
    Would you like to put this limits on system resource usage? [N]: Permite establecer ciertos límites al número de procesos y memoria usados por usuario con el fin de evitar ataques de denegación de servicio. Si no se activa, posteriormente podemos configurarlo manualmente editando al archivo de configuración /etc/security/limits.conf
  • Grupo: ConfigureMiscPAM
    Should we restrict console access to a small group of users accounts? [N]: En algunas distribuciones, los usuarios que inician sesión por consola tienen algunos derechos especiales de acceso (como la posibilidad de montar la unidad de CD-ROM). Esta opción es mucho más flexible, restringiendo el acceso a la consola.
  • Grupo: Logging
    Would you like to add additional logging? [Y]: Configura el equipo para que incremente el número de fuentes de log y se añadan /var/log/kernel y /var/log/syslog siendo accesibles desde las terminales 7 y 8 (mediante Alt+F7 y F8 respectivamente)
  • Grupo: Logging
    Do you have a remote logging host? [N]: Si ya tiene un registro de host remoto, se puede configurar la máquina para acceder a ella.
  • Grupo: Logging
    Would you like to set up process accounting? [N]: Linux tiene la capacidad de registrar los comandos cuando se ejecutan y por quién. Esto es muy útil para tratar de analizar que es lo que realmente ha hecho un usuario concreto. El inconveniente es que los parámetros de comandos no se registran, pero con Bastille tenemos la posibilidad de activarlo teniendo en cuenta el uso excesivo de CPU y de disco. A menos que usted haya examinado cuidadosamente esta opción, es recomendable que seleccione que “No”.
  • Grupo: MiscellaneousDaemons
    Would you like to desactive NFS and Samba? [Y]: Se recomienda encarecidamente desactivar ambos servicios a menos de que lo uséis por motivos convencionales, ya que NFS tiene bastantes vulnerabilidades de seguridad y Samba (SMB) siendo un mejor sistema de archivos compartidos, todavía plantea graves preocupaciones de seguridad potencialmente indeseables. Ambos servicios se basan en texto claro, lo que significa que los datos transferidos pueden ser detectados.
  • Grupo: MiscellaneousDaemonslike
    Would you like to deactivate the HP OfficeJet (hpoj) script in this machine? [Y]: Con este script podemos activar el Hewlett Packard (HP) multifuncional (impresión/escaneo/copia/fax) si la tuviéramos, por lo contrario, para desactivarla tendríamos que responder afirmativamente a Bastille.
  • Grupo: MiscellaneousDaemons
    Would you to deactive the ISDN script on this machine? [Y]: La teconología ISDN, traducido al español RDSI (Red digital de servicios integrados) está por defecto activado en muchas distribuciones Linux, siendo ésta un método impopular de conexión a Internet (64 kbps) sustituido actualmente por IDSL ofreciendo un servicio básico de RDSI utilizando la tecnología DSL y así obteniendo un mayor ancho de banda, por lo que puede ser desactivado sin preocupación alguna.
  • Grupo: Apache
    Would you like to bind the web server to listen only to the localhost? [N]: Bind es el proceso mediante el cual se “enlaza o liga” un servicio a una determinada dirección IP o nombre de host, en este caso lo que se busca es si se debería configurar el servidor Web para recibir sólo aquellas peticiones que se originen en la dirección 127.0.0.1 o localhost, evitando así un posible punto de acceso al sistema. Esto es útil solo para aquellos que hagan su desarrollo a nivel local y lo utilicen para tal fin. Y aquellos que tengan un servidor Web que deberá ser accedido desde fuera, obviamente deberán contestar “No” a esta pregunta.
  • Grupo: Apache
    Would you like to bind the web server to a particular interface? [N]: Similar a la anterior, pero al nivel de interfaz de red.
    • Grupo: Apache
      Would you like to deactivate the following of symbolic links? [Y]:
      Impide que el servidor Web siga enlaces simbólicos ya que puede ser potencialmente peligroso. Su desactivación puede disminuir la probabilidad de que alguna vulnerabilidad en el futuro en Apache puede ser explotada.
    • Grupo: TMPDIR
      Would you like to install TMPDIR/TMP scripts? [N]: Activar esta opción hará que Bastille instale unos scripts en las cuentas de los usuarios que configuren las variables TMPDIR y TMP de tal manera que utilicen directorios de ficheros temporales completamente individuales, en vez de que todos usen el /tmp lo que puede ser extremadamente peligroso en entornos multiusuarios.
    • Grupo: Firewall
      Would you like to run the packet filtering script? [N]: Utiliza un script para generar reglas de firewall. Este script solo tiene soporte para el IPChains del kernel 2.2 y para Iptables del kernel 2.4 (En caso de que un kernel 2.4 no tenga activo el soporte de iptables se usará IPChains). Este script puede ser problemático para los que utilicen kernels 2.6.x sin embargo puede utilizarse como punto de partida y luego ser modificado posteriormente para adaptarse mejor a las características del kernel. Contestar afirmativamente a esta pregunta generará posteriores preguntas que ayudarán al script a crear las reglas necesarias para el firewall (quienes pueden acceder al sistema desde la red, qué protocolos se pueden servir, qué se colocará en los logs referentes a los procesamientos de acceso, etc.)
    • Grupo: PSAD
      Are you finished making changes to your Bastille configuration?: Y ¡por fin! hemos llegado al final de nuestra trayectoria. Si estamos seguros de la configuración respondemos afirmativamente.
    Finalmente, seleccionamos Go Back and Change Configuration para aplicar los cambios, pero si tan solo quisiéramos guardar la configuración, seleccionaríamos Exit Without Saving.

    Y hasta aquí hemos llegado. Todas las funciones que busca configurar Bastille se pueden hacer manualmente, Bastille lo que tan solo ofrece es la posibilidad de hacer todo mucho más sencillo. Además, cabe decir que existen distribuciones ya hechas que implementan muchas políticas de seguridad, normalmente tienen el mismo nombre de la distribución seguido de la palabra Hardened (por ejemplo: Gentoo Hardened) y otra muy buena opción es Engarde Linux.

    Autor: Pr0x

    Author & Editor

    Ingeniero Civil en Computación (Universidad de Chile FCFM) y Diplomado en Gestión y Evaluación de Proyectos TI (Universidad de Chile FEN). Actualmente trabajo como Project Manager en varios proyectos y como asesor tecnológico para empresas.

    0 Notaciones:

    Publicar un comentario

    Nota: solo los miembros de este blog pueden publicar comentarios.

    Labels

    0-day (12) 1337day (1) 8.8 (2) Adobe Acrobat (1) Android (2) Anonimato (1) Anonymous (9) BackDoor (2) BackTrack (15) badUSB (1) Base64 (1) Black Hat (7) BlackHat (1) Blackploit (25) Brute Force (3) Bug (106) Bypass Password (1) Bypass Redirect (1) C99 Shell (1) Carding (1) CheatSheet (15) Chilean Way (1) Conference (10) Cryptsetup (1) CSRF (1) DDoS (11) DEF CON (3) DEFCON (7) Diapositivas (1) Diseño Web (1) Distro Linux (27) Documental (2) DoS (2) Drupal (1) DuckDuckGo (1) E-zine (18) Ekoparty (1) Escaneo (4) España (1) Exploit (64) Ezine (1) Facebook (1) Fast-Info (44) FBI (1) Ficheros Binarios (1) Firefox (4) Flash (2) Forense (9) Fuerza Bruta (11) Fuga de Datos (1) GhostShell (1) GNU/Linux (4) Google (2) Guía (1) Hack T00LZ (130) Hack Tips (63) Hacked (6) Hacking (18) Hacking Hardware (5) HashCat (1) Herramientas (121) HighSecCON (1) Humor Geek (13) Infografía (1) Ingeniería Social (5) Inj3ct0r (1) Internet Explorer (3) Java (7) JavaScript (2) Kali (3) KitPloit (1) Leaks (21) Linux OS (79) LulzSec (1) Mac OS (10) Magazine (1) Malaware (3) Malaware Tools (12) Malware (1) Man in the Middle (15) Manuales (3) MD5 CRACK (4) Metasploit (57) MSSQL (1) MySQL (6) MySQL CRACK (1) Nmap (6) Nmap NSE (2) Noticias (193) NTLM CRACK (1) Ofuscar (5) OpenSolaris OS (1) OpenSSL (1) ORACLE (1) OWASP (3) Paper (10) PDF (7) PenTest (14) Perl (2) Phearking (13) Phishing (3) PHP (13) phpMyAdmin (1) PoC (1) Premios Bitacoras (1) Presentaciones (11) PRISM (1) Privacidad (2) Programación (12) Programas Linux (41) Programas Windows (41) Pwned (1) Python (5) Reconocimiento (5) Ruby (2) s (1) Scripts (7) Seguridad (145) Seguridad Web (140) Seguridad Wireless (19) Sensitive Data Exposure (2) SHA1 CRACK (1) Shellshock (1) Slides (1) Spoofing (1) Spyware (1) SQLi (19) SQLi Tools (7) SQLMap (2) SSH (1) Textos (74) Tips (57) Troyanos y Virus (11) Trucos (7) Trucos Win (7) Turiales (56) Tutoriales (18) Twitter (1) Ubuntu (2) Underc0de (1) UnderDOCS (1) Unlock (1) URL Redirection (1) UXSS (1) vBulletin (1) Video (48) Virtualización (2) Web T00LZ (17) Wifislax (1) Wikileaks (1) WikiRebels (1) Windows OS (66) Wireless Tools (13) XSS (16) Youtube (1)

     
    biz.