hardening v2

Upload: rodysoft

Post on 08-Apr-2018

243 views

Category:

Documents


2 download

TRANSCRIPT

  • 8/6/2019 Hardening v2

    1/22

    Reforzando la instalacion de Debian GNU/LinuxArCERT

    Coordinacion de Emergencias en Redes Teleinformaticas

    www.arcert.gov.ar

    version 2.0

    16 de marzo de 2006

    Resumen

    En este documento describiremos como mejorar la seguridad en una instalacion de GNU/Linux. El temario

    incluye configuracion adecuada del BIOS, particionamiento, instalacion minima, deshabilitacion de servicios no

    utilizados, desinstalacion de software no utilizado, revision de logs, deteccion de intrusiones, firewall de host,

    actualizaciones de seguridad, sincronizacion de hora, etc. Utilizaremos como base la distribucion Debian, version

    Sarge (o stable). Muchos de los conceptos vertidos en esta gua podran ser aplicados a cualquier distribucion de

    Linux, o sistema operativo tipo Unix (*BSD, Solaris, etc.).

    En ningun caso podra responsabilizarse a ArCERT o a la ONTI en forma institucional, o a sus agentes a t tulo

    individual y/o personal, de ningun dano puntual ni general, directo o indirecto, consecuencial o incidental, o de

    cualesquiera otra categoras, derivado de la ejecucion de las actividades planteadas para este tutorial.

  • 8/6/2019 Hardening v2

    2/22

    Reforzando la instalacion de Debian GNU/Linux

    Indice

    1. Introduccion 3

    2. Pre-Instalacion 3

    3. Instalacion 3

    3.1. Particiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    3.2. El usuario normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    4. Boot Loader 6

    5. Limpieza 8

    5.1. Servicios de red innecesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    5.2. Otros paquetes no utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    5.3. Modulos de Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    6. Deshabilitando el CTRL-ALT-Del 10

    7. Opciones de Montaje 11

    8. Usuarios y permisos 11

    8.1. Usuarios con shell interactvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    8.2. El bit SUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    8.3. Permisos de tareas planificadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    8.4. Sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    9. Limitacion del acceso de root 13

    9.1. El grupo wheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    9.2. La consola fsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    9.3. Acceso va SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    10. Administracion Remota 14

    11. Parametros del kernel 15

    12. Seleccion de paquetes 15

    13. Firewall 16

    14. Actualizaciones de seguridad 16

    15. Mantenimiento 17

    15.1. Sincronizacion horaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    15.2. Back-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    15.3. Auditoras regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    15.4. Chequeos de integridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    15.5. Manejo de bitacoras (logs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    16. Herramientas para automatizar el fortalecimiento 20

    16.1. Bastille Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    16.2. Paquetes Harden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    17. Otras fuentes de informacion 21

    18. CheckList 21

    www.arcert.gov.ar 2 ArCERT c2006

  • 8/6/2019 Hardening v2

    3/22

    Reforzando la instalacion de Debian GNU/Linux

    1. Introduccion

    Por que necesitamos reforzar la instalacion de un sistema operativo? Salvo raras excepciones1, los sistemas

    operativos en general no dedican un gran esfuerzo en la seguridad al momento de la instalacion. Y cual es el

    resultado de este hecho? Con el crecimiento que ha tenido Internet en los ultimos anos, la ventana de tiempo entreque un sistema operativo recien instalado (sin parches) se conecta a Internet, y que el mismo sufre una intrusion,

    ha bajado de das a mediados de los 90, a horas en el 2000, y minutos en la actualidad. En este documento nos

    ocuparemos de mejorar la seguridad en una instalacion de GNU/Linux. Utilizaremos como base la distribucion

    Debian, version Sarge (o stable), por ser una de las mas usadas en ambientes de servidor, y porque la consideramos

    como una de las mas adecuadas para esa misma funcion. Muchos de los conceptos vertidos en esta gua podran ser

    aplicados a cualquier distribucion de Linux, o sistema operativo tipo Unix (*BSD, Solaris, etc.). Sin embargo, se

    deberan tomar los recaudos necesarios para que dicha adaptacion no deje puertas abiertas debido a las diferencias

    entre las distintas distribuciones.

    2. Pre-Instalacion

    Comenzaremos por considerar dos temas esenciales. Se dice que quien tiene acceso fsico a un equipo tendra ac-ceso total al mismo. Si bien esta afirmacion no siempre es exacta, y algunas de las tareas que realizaremos tienen

    por objetivo contrarrestarla, es absolutamente recomendable que el acceso fsico al servidor y su consola este res-

    tringido solo al personal autorizado. Como segundo recaudo, el equipo no debera conectarse a la red hasta haber

    finalizado con las tareas de aseguramiento. En caso de ser necesario algun tipo de conexion (como ser que el equipo

    debe iniciarse mediante netboot), estas tareas deberan realizarse en una red cerrada, asegurada, y preferentemente

    aislada. Antes de realizar la instalacion del sistema operativo elegido, hay algunas tareas que podemos realizar.

    En particular, mediante la configuracion del BIOS del equipo en cuestion, podremos restringir algunos puntos de

    entrada que no sean necesarios para la operatoria normal del sistema. Entre otros, podemos nombrar los siguientes.

    Puertos paralelos

    Puertos seriales

    Puertos USB

    Disqueteras

    Lectoras de CD/DVD

    En la Figura 1 podemos observar un ejemplo de como se deshabilitan algunos puertos innecesarios en el BIOS.

    Otra tarea importante consiste en configurar el orden de seleccion de dispositivos para el boot del equipo. Para

    poder realizar la instalacion, deberemos seleccionar el medio disponible para la misma, normalmente CD-ROM,

    pero una vez finalizada la misma, deberemos seleccionar unicamente el disco de arranque del sistema. En caso de

    no ser posible, como en el ejemplo de la Figura 2, deberemos ordenar los dispositivos para que el elegido sea el

    primero de la lista. Inclusive podemos deshabilitar todos los dispositivos de almacenamiento menos el dispositivo

    de boot. Por ejemplo, una vez instalado el sistema operativo, se puede deshabilitar el CD-ROM del BIOS, ya que

    el mismo sera detectado de todas maneras por el sistema operativo.Por ultimo, deberemos configurar una contrasena para restringir la realizacion de cambios en la configuracion

    del BIOS.

    3. Instalacion

    Para realizar un buen proceso de aseguramiento de un servidor GNU/Linux Debian, incluiremos su instalacion.

    Durante el proceso de instalacion, cuya descripcion completa puede encontrarse en la bibliografa, deberemos tener

    en cuenta algunos detalles que nos permitiran asegurar un resultado exitoso.

    1Por ejemplo, OpenBSD. http://www.openbsd.org

    www.arcert.gov.ar 3 ArCERT c2006

  • 8/6/2019 Hardening v2

    4/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 1: Deshabilitacion de puertos y perifericos

    Figura 2: Deshabilitacion de puertos y perifericos

    www.arcert.gov.ar 4 ArCERT c2006

  • 8/6/2019 Hardening v2

    5/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 3: Opciones de montaje durante la instalacion

    3.1. Particiones

    En primer lugar, deberemos disenar cuidadosamente el sistema de archivos. No existe una regla general, pero

    podemos seguir algunos consejos para mejorar tanto la seguridad como el rendimiento. Algunos de estos consejos

    consisten en:

    Si el sistema va a alojar multiples usuarios interactivos, /home debera tener su propia particion.

    En equipos que brinden servicios crticos, /var/log podra llenarse y perjudicar el buen funcionamiento

    de los mismos, por lo que podra separarse en otra particion .

    Por esta misma razon, /tmp utilizara una particion separada.

    En general, /var (pensado para todas las operaciones mas dinamicas) y /usr (donde normalmente se

    alojan los archivos menos susceptibles a cambios) tendran su propio espacio.

    Las particiones pueden montarse con ciertas opciones que restringen su funcionalidad (ver Figura 3). Las

    restricciones mas interesantes que pueden aplicarse en el momento de la instalacion son (hablaremos mas

    tarde sobre esto en Opciones de Montaje):

    nodev: No permite la creacion de dispositivos (devices).

    nosuid: No permite la utilizacion de los bits suidy sgid.

    noexec: No permite la ejecucion de archivos

    En general, podemos definir que:

    En ninguna particion, salvo / (o donde resida /dev), se necesitan dispositivos.

    /, /usr y /var, en general, son las unicas particiones desde las cuales se debera poder ejecutar archivos.

    Ademas, solo /usr y /var pueden necesitar el uso de suid. Estas restricciones pueden y suelen variarsegun las diferentes distribuciones de GNU/Linux.

    www.arcert.gov.ar 5 ArCERT c2006

  • 8/6/2019 Hardening v2

    6/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 4: Esquema de particiones que propuesto para Multi-user workstation

    En algunos casos puede ser recomendable montar /usr como ro (solo lectura), pero habilitar esta opciondurante la instalacion hara que esta sea imposible de realizarse, ya que habra que escribir en dicha particion.

    Evitar la ejecucion de binarios en /tmp con la opcion noexec es una buena idea. Pero hay que tener en

    cuenta que, en algunos casos, Debian ejecutara ah algunas acciones cuando instala paquetes.

    En nuestro ejemplo usaremos el esquema de la Figura 4, que es la distribucion propuesta por Debian para

    Multi-user workstation (estacion de trabajo multiusuario).

    3.2. El usuario normal

    Como veremos mas adelante(vease tambien Limitacion del acceso de root), el acceso al sistema como usuario

    root estara muy restringido, por lo que la instalacion es el momento correcto para la creacion de, al menos, un

    usuario no privilegiado. En nuestro ejemplo usaremos operador, tal como se ve en la Figura 5. Se debe evitar la

    existencia de cuentas impersonales, por lo que el campo full-name (nombre completo) puede sernos de utilidad. El

    usuario no privilegiado, ademas de darnos el acceso inicial al sistema, nos permitir a realizar todas aquellas tareas

    que no requieran extricamente capacidades de root.

    Una vez terminada la instalacion del sistema operativo base, comenzaremos el fortalecimiento propiamente

    dicho del sistema. Si aun no modifico el orden de booten el BIOS, este el momento.

    4. Boot Loader

    Vamos a asegurar el boot loader, en nuestro caso el grub, que es el programa encargado de cargar el kernel en

    memoria y ejecutarlo. Para evitar que alguien con acceso fsico a la consola de nuestro equipo (situacion que deber

    ser evitada a toda costa) pueda modificar los parametros de inicializacion del kernel, protegeremos el boot loader

    contra modificaciones.Primero, generaremos un hash del pasword que utilizaremos:

    www.arcert.gov.ar 6 ArCERT c2006

  • 8/6/2019 Hardening v2

    7/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 5: Creacion de un usuario no privilegiado

    debian:# grub-md5-crypt

    Password:

    Retype password:

    $1$1nxTK1$0kdd0C8txj7nDPx5SnVx./

    Una vez obtenido el hash, procederemos a insertarlo en la siguiente lnea en el archivo /boot/grub/menu.lst:

    ## password [--md5] passwd

    # e.g. password topsecret

    # password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/

    # password topsecret

    password --md5 $1$1nxTK1$0kdd0C8txj7nDPx5SnVx./

    En este mismo archivo, editaremos el valor de la variable lockalternative, para que el password que

    acabamos de crear no solo se aplique a las modificaciones explcitas de los parametros de inicio del kernel, sino

    que ademas sea necesaria para iniciar el sistema en modo single user, tambien conocido como Recovery Mode.

    ## should update-grub lock alternative automagic boot options

    ## e.g. lockalternative=true

    ## lockalternative=false

    # lockalternative=true

    Por otro lado, hay que modificar los permisos de /boot/grub/menu.lst para evitar que los usuarios no

    privilegiados accedan al hash:

    debian:# chmod o-r /boot/grub/menu.lst

    Para completar este proceso, deberemos ejecutar el comando update-grub y as hacer efectivo el cambio

    del lockalternative:

    debian:# update-grub

    Searching for GRUB installation directory ... found: /boot/grub .

    Testing for an existing GRUB menu.list file... found: /boot/grub/menu.lst .

    Found kernel: /boot/vmlinuz-2.6.8-2-686

    Updating /boot/grub/menu.lst ... done

    www.arcert.gov.ar 7 ArCERT c2006

  • 8/6/2019 Hardening v2

    8/22

    Reforzando la instalacion de Debian GNU/Linux

    5. Limpieza

    Para continuar con la configuracion del equipo vamos a minimizar la instalacion, desintalando paquetes que no

    se utilicen, cerrando servicios de red, y optimizando la carga de modulos del kernel.

    5.1. Servicios de red innecesarios

    Muchas distribuciones instalan servicios que abren puertos de red. Debian Sarge (no as versiones anteriores)

    instala pocos de estos, por lo que no nos atendremos al ejemplo. Para ver que procesos levantan puertos podemos

    correr el comando netstat -tulp:

    debian:# netstat -tulp

    Active Internet connections (only servers)

    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

    tcp 0 0 *:time *:* LISTEN 608/inetd

    tcp 0 0 *:discard *:* LISTEN 608/inetd

    tcp 0 0 *:daytime *:* LISTEN 608/inetd

    tcp 0 0 localhost:smtp *:* LISTEN 602/exim4udp 0 0 *:discard *:* 608/inetd

    udp 0 0 *:bootpc *:* 708/dhclient

    debian:#

    Como podemos observar, los servicios time, discardy daytime se encuentran habilitados y levantados va inetd.

    Para deshabilitarlos, procederemos a editar el archivo /etc/inetd.conf, y comentar las lneas correspondientes. Los

    cambios se produciran al reiniciar el servicio.

    debian:# /etc/init.d/inetd restart

    Restarting internet superserver: inetd.

    Por otra parte existen servicios no levantados por inetdque seguramente podremos eliminar (aunque este escu-

    chando solo en localhost), como el caso de exim4 si no necesitamos un MTA2:

    apt-get remove --purge exim4-config exim4-base

    Esto borrara la configuracion y los paquetes relacionados con exim4, as como sus dependencias reversas.

    Por ultimo, bootpc corresponde al cliente DHCP. No se aconseja que los servidores obtengan su configuracion

    de red va DHCP. Puede borrarse eliminando el paquete dhcp-client.

    As se debe proceder con cada uno de los servicios de red que tenga el sistema y que no sean necesarios.

    5.2. Otros paquetes no utilizados

    La instalacion base de cualquier sistema operativo instala una serie de paquetes que, si bien son utilizados en la

    mayora de los casos, no siempre son totalmente necesarios. Podemos ver todos los paquetes instalados en nuestro

    sistema as:

    dpkg -l | more

    Esto mostrara una larga lista (paginada con more) con el nombre del paquete, su version y una breve descrip-

    cion, tal como se ve en la Figura 6.

    Como veran, los paquetes son muchos y muy variados. Deberemos utilizar nuestra experiencia e imaginacion

    para detectar los paquetes innecesarios de esta larga lista, siguiendo algunas reglas de sentido comun. Por ejemplo:

    Si solo vamos a utilizar ethernet, todos los paquetes que tengan que ver con PPP 3 no seran necesarios (ppp,

    pppconfig, pppoe, pppoeconf).

    En general, los paquetes de internacionalizacion son innecesarios (locales).

    2

    Mail Transport Agent (Agente de Transporte de Correos). Sistema para envio de correo electronico3Point-to-Point Protocol (Protocolo punto a punto)

    www.arcert.gov.ar 8 ArCERT c2006

  • 8/6/2019 Hardening v2

    9/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 6: Listado de los paquetes instalados (dpkg -l)

    Los paquetes para desarrollo como los compiladores o interpretes (perl, gcc) y las bibliotecas terminadas

    en -dev solo son utilizados en casos particulares, por lo que pueden borrarse.

    La automatizacion de deteccion de hardware nomalmente no es necesaria, y hasta puede ser perjudicial

    (hotplug, discover1-data). En caso de desinstalarlos, tendremos que prestar particular atencion a la

    subseccion M odulos de Kernel.

    Los paquetes relacionados con dispositivos que no tenemos o no utilizamos son prescindibles (usbutils,

    eject, setserial, fdutils)

    Los programas que no utilizamos pueden borrarse (aptitude, info, ipchains, mailx, nano, telnet,

    makedev)

    Las bibliotecas usadas por los paquetes que borramos tampoco son necesarias (libdiscover1,libusb).

    Para identificar estas bibliotecas nos puede ser de utilidad un paquete llamado deborphan4.

    Un punto importante es evitar borrar paquetes de tipo essential. Estos paquetes son, por lo general, necesarios para

    el correcto funcionamiento del sistema operativo y requieren una confirmacion particular.

    Puede ocurrir que encontremos archivos de los que desconocemos el paquete que los instalo. Para esto puede

    ser util el comando dpkg -S. Por ejemplo, el archivo /usr/bin/e2pall pertenece al paquete tetex-bin:

    debian:# dpkg -S /usr/bin/e2pall

    tetex-bin: /usr/bin/e2pall

    Una mencion especial merece el paquete gcc-3.3-base, que solo contiene documentacion descriptiva y se

    incluye unicamente por razones de dependencias de paquetes, por lo que puede ser conservado sin mayores pro-

    blemas.

    El siguiente paso sera desinstalar los paquetes seleccionados. Para ello, utilizaremos el siguiente comando:

    debian:# apt-get remove --purge aptitude dhcp-client [...]

    As se eliminara tanto los paquetes como sus archivos de configuracion, esto ultimo gracias al modificador

    --purge. Estemos atentos a la lista de paquetes que realmente se van a remover ya que tambien se borran

    aquellas dependencias reversas de los paquetes definidos.

    De esta manera, reducimos la cantidad de programas instalados en nuestro sistema, lo que se traduce en una

    menor probabilidad de vernos afectados por algun bug.

    4

    www.arcert.gov.ar 9 ArCERT c2006

  • 8/6/2019 Hardening v2

    10/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 7: Listado de los modulos cargados (lsmod)

    5.3. Modulos de Kernel

    Los modulos le dan flexibilidad al kernel, levantando drivers sin necesidad de reinicios. Evitar levantar aquellos

    modulos que no utilizemos puede, ademas de evitar los efectos de sus bugs, incrementar la velocidad de arranque.

    Las aplicaciones de deteccion automatica de hardware cargan modulos en forma dinamica cuando son necesarios.

    Para ver los que estan actualmente cargados en el sistema puede emplear el comando lsmod y obtendra un

    resultado semejante al de la Figura 7.

    Recordemos que en la subseccion Otros paquetes no utilizados se propuso eliminar todos los paquetes quedetectan hardware, como discover1, por lo que tendremos que forzar la carga de los drivers que utiliza nuestro

    hardware para funcionar y que antes se detectaban automaticamente.

    Para esto necesitaremos editar el archivo /etc/modules. Aqu podremos agregar los modulo que necesite-

    mos levantar (la placa de red, por ejemplo) y eliminar aquellos que no sean necesarios, como ide-cd y psmouse.

    En nuestro ejemplo el archivo quedara as, siendo pcnet32 el driver de la placa de red:

    ide-disk

    ide-generic

    pcnet32

    Para cerciorarnos de que se levanta todo lo necesario al arrancar, podemos reiniciar el sistema y comprobarlo.

    Hay que tener en cuenta que existen muchas aplicaciones que levantan modulos por demanda. Por ejemplo

    ipv6, que es el soporte para IP version 6, puede ser levantado por demonios que intenten escuchar en una intefazIPv6. Este es el caso de SSH que por defecto levantar a con este soporte. Para evitar esto puede configurar estas

    aplicaciones para que solo utilizen IPv4, o bien, eliminar la posibilidad que el modulo ipv6 se cargue. Esto ultimo

    se consigue realizando la siguente modificacion en /etc/modprobe.d/aliases :

    #alias net-pf-10 ipv6

    alias net-pf-10 off

    6. Deshabilitando el CTRL-ALT-Del

    Este metodo de reinicializar el equipo siempre ha sido util y atractivo en GNU/Linux, pero posiblemente no

    queremos que cualquiera con acceso a la consola puede utilizarlo. Vamos a deshabilitarlo comentando la lnea

    correspondiente en el archivo /etc/inittab:

    www.arcert.gov.ar 10 ArCERT c2006

  • 8/6/2019 Hardening v2

    11/22

    Reforzando la instalacion de Debian GNU/Linux

    # What to do when CTRL-ALT-DEL is pressed.

    #ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

    Solo resta avisarle al proceso initque debe releer el archivo de configuracion:

    debian:# telinit q

    O su equivalente,

    debian:# kill -1 1

    7. Opciones de Montaje

    Las particiones realizadas en la seccion Instalacion nos permiten montar los sistemas de archivos con dis-

    tintas opciones, algunas de las cuales vimos en aquel apartado. La lista de particiones a montar se encuentra en

    /etc/fstab. Si seleccionamos las opciones de nodev, nosuid y noexec durante la instalacion el archivo que-

    dara algo as:

    #

    proc /proc proc defaults 0 0

    /dev/sda1 / ext3 nosuid,errors=remount-ro 0 1

    /dev/sda8 /home ext3 nodev,nosuid,noexec 0 2

    /dev/sda7 /tmp ext3 nodev,nosuid 0 2

    /dev/sda5 /usr ext3 nodev 0 2

    /dev/sda6 /var ext3 nodev 0 2

    /dev/sda9 none swap sw 0 0

    /dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0

    /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

    Si no utilizaremos el CD-ROM o la disquetera, podemos eliminar las ultimas dos lneas de este archivo. Pero si

    decidimos conservar alguna de las dos, al menos deberemos eliminar la opcion user, que cumple la funcion depermitir a un usuario no privilegiado montar y desmontar dicho dispositivo.

    Otras opciones utiles pueden ser (para mas informacion, man mount):

    sync: Todas las operaciones de I/O5 se hace de forma sincronica.

    defaults: Son las opciones por defecto, es decir: rw, suid, dev, exec, auto, nouser, y async.

    auto: Monta el sistema de archivos al inicio.

    8. Usuarios y permisos

    8.1. Usuarios con shell interactvo

    Comenzaremos por revisar los usuarios creados durante el proceso de instalacion. Para esto tenemos que ana-

    lizar el archivo /etc/passwd, como se ve en la Figura 8.

    Como podemos observar, existen varios usuarios, todos considerados del sistema (en el caso de Debian, se

    caracterizan por tener un user id menor que 1000), que poseen como shell a /bin/sh, siendo esto totalmente

    innecesario dado que ninguno de estos usuarios sera utilizado de manera interactiva. Utilizaremos el siguiente

    comando para modificar esta situacion:

    debian:# chsh -s /bin/false daemon

    Y as para cada uno de los usuarios no interactivos; en este caso root y operador son la obvia excepcion. El

    comando /bin/false siempre devuelve error y evita el login.

    5Input/Output (operaciones de Entrada/Salida)

    www.arcert.gov.ar 11 ArCERT c2006

  • 8/6/2019 Hardening v2

    12/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 8: Usuarios del sistema (/etc/passwd)

    8.2. El bit SUID

    Vamos a revisar algunos permisos importantes en los archivos. Uno de los principales peligros que encontramos

    en los permisos de los archivos ejecutables es el suid bit, que permite a cualquier usuario que tenga permiso de

    ejecucion sobre este archivo, ejecutarlo como si realmente fuese el usuario dueno del archivo, en lugar de el mismo.

    Un problema muy comun, es que un programa comunmente utilizado por los usuarios tenga como dueno a root,

    y tenga prendido el bit suid. Si este programa llegase a tener un bug, por ejemplo un buffer overflow o un stack

    overflow, podra llegar a convertirse en la herramienta que necesita un posible atacante que haya logrado ingresaral sistema para convertirse en root. Tambien existe el bit guid que es lo mismo, pero aplicado al grupo.

    Los archivos con este permiso pueden ser encontrados as (Figura 9):

    debian:# find / -path /proc -prune -o -type f -perm +6000 -ls

    De toda la lista de archivos con este particular permiso solo son totalmente necesarios algunos de ellos:

    passwd: para que los usuarios puedan cambiar su password.

    exim4: para el correcto funcionamiento del e-mail interno, si es que decidimos no borrarlo del sistema.

    login: para que los usuarios puedan ingresar al sistema.

    unix chkpwd: se utiliza para que los programas puedan verificar el password ingresado por el usuario, sin la

    necesidad de tener cada uno el bit suid.

    su: para que usuarios no privilegiados puedan convertirse en root.

    Para el resto de los programas no es extrictamente necesario este permiso, salvo en casos particulares en los que

    habra que evaluar los beneficios y desventajas (por ejemplo, el uso de crontabs por parte de los usuarios). Para el

    resto:

    debian:# chmod ug-s /usr/bin/wall /usr/bin/newgrp /usr/bin/chsh [...]

    8.3. Permisos de tareas planificadas

    Si bien ya anteriormente le sacamos el bit suidal programa crontab, no estara de mas restringir que usuarios

    pueden tener acceso a su uso. Para esto debemos crear el archivo /etc/cron.allow con una unica lnea:

    www.arcert.gov.ar 12 ArCERT c2006

  • 8/6/2019 Hardening v2

    13/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 9: Archivos con el bit suid y guid (find / -path /proc -prune -o -type f -perm +6000

    -ls)

    root

    Si este archivo existe, solo los que esten listado en el podran usar cron.

    El comando at, utilizado para la ejecucion diferida de tareas, es un caso muy similar al de cron. El archivo

    /etc/at.allow se utiliza limitar su uso y su funcionamiento es identico a /etc/cron.allow.

    8.4. Sudo

    Una herramienta que permite tener un control mucho mas estricto sobre las tareas que realizan los usuarios que

    requieran privilegios administrativos es sudo. Con esta herramienta podremos configurar, entre otras cosas:

    Que usuarios pueden elevar sus privilegios (o simplemente ejecutar acciones como otros usuarios).

    Que tareas pueden realizar.

    Si necesitan ingresar un password, y si es el suyo propio o el del usuario impersonado.

    Restricciones horarias.

    Lugar desde donde esta conectado el usuario.

    Registro de las acciones realizadas.

    Sudo es una herramienta versatil y bien documentada. Se puede encontrar mas ejemplos y detallada informacion

    en la pagina principal de sudo6.

    9. Limitacion del acceso de root

    La idea es evitar el login directo de root. Es decir, para acceder al sistema tendremos que ingresar como un

    usuario no privilegiado y despues convertirnos en rootmediante el comando su. Ademas sera interesante restringir

    los usuarios que podran transformarse en superusuario.

    6http://www.gratisoft.us/sudo/

    www.arcert.gov.ar 13 ArCERT c2006

  • 8/6/2019 Hardening v2

    14/22

    Reforzando la instalacion de Debian GNU/Linux

    9.1. El grupo wheel

    Existe una forma de limitar que usuarios pueden ejecutar el comando su. Para esto debemos editar el archivo

    /etc/pam.d/su y habilitar la siguiente opcion:

    # before they can use su. You can also add "group=foo" to# to the end of this line if you want to use a group other

    # than the default "root".

    # (Replaces the SU_WHEEL_ONLY option from login.defs)

    auth required pam_wheel.so

    Ahora solo los usuarios que pertenezcan al grupo wheel podran utilizar el comando su. No debemos olvidarnos

    de crear el grupo y agregar los usuarios necesarios al mismo:

    debian:# addgroup --system wheel

    Adding group wheel (104)...

    Hecho.

    debian:# usermod -G wheel operador

    9.2. La consola fsica

    Esta es otra forma de mitigar una falencia en el acceso fsico al servidor. Se puede evitar que root acceda

    directamente por una consola fsica al sistema. En el archivo /etc/securetty tenemos la lista de consolas en

    las que rootpuede loguearse. Podemos simplemente comentar dichas lineas y as restringir el acceso.

    9.3. Acceso va SSH

    Si en nuestro sistema esta instalado SSH como forma de administracion remota (vease tambien Adminis-

    traci on Remota), tambien debemos limitar el acceso directo de root. Para lograrlo hay que editar el archivo de

    configuracion de ssh en /etc/ssh/sshd config:

    PermitRootLogin no

    Recordemos que hay que reiniciar el servicio de SSH para que esto tenga efecto.

    debian:# /etc/init.d/ssh restart

    De esta manera, para acceder remotamente al equipo deberemos utilizar algun otro usuario.

    10. Administracion Remota

    Vamos a suponer que es necesario acceder remotamente al equipo para su administracion. Seguramente el

    protocolo elegido sera SSH7. Habra que instalar OpenSSH, que en la version Sarge de Debian viene el servidor

    junto con el cliente.

    debian:# apt-get install ssh

    Durante su instalacion, deberemos responder algunas preguntas. La primera es sobre la version de SSH a ejecutar.

    Elegimos solo permitir la version 2 del protocolo, ya que las versiones anteriores tienen importantes defectos de

    diseno que pueden comprometer la seguridad del equipo. La siguiente pregunta nos consulta sobre el bit suid en

    el programa ssh-keysign. Por un lado, no utilizaremos el metodo de autenticacion basada en host, y por otro,

    intentamos evitar el uso de este bit, por lo que elegimos la opci on no. La ultima pregunta es sobre si queremos

    iniciar el servidor de SSH.

    Sera conveniente restringir desde donde se puede acceder a dicho protocolo. Mas alla del uso de un firewall lo

    haremos va tcpwrapper, soportado por OpenSSH. Usaremos la poltica todo denegado excepto lo expresamente

    permitido. En el archivo /etc/hosts.deny:

    7Secure SHell: Protocolo que brinda, entre otras cosas, acceso remoto seguro a un shell

    www.arcert.gov.ar 14 ArCERT c2006

  • 8/6/2019 Hardening v2

    15/22

    Reforzando la instalacion de Debian GNU/Linux

    sshd : ALL

    Y en /etc/hosts.allow, las IPs o redes de las cuales permitimos el acceso:

    sshd : 192.168.31.0/24

    Este metodo tambien puede utilizarse con cualquier servicio que utilice la librera libwrap (hoy incluida en la libC),

    o mediante la utilizacion del programa tcpd.

    11. Parametros del kernel

    El kernel es configurable desde /etc/sysctl.conf, donde se pueden ajustar varios parametros. Veamos

    algunos de ellos8:

    # Ignorar el uso de la tecla "Peticion de sistema"

    kernel.sysrq=0

    # Normalmente, no hay razon para utilizar broadcasts ICMP

    net.ipv4.icmp_echo_ignore_broadcasts=1

    # Tampoco debemos hacerle caso a respuestas ICMP que no

    # pedimos

    net.ipv4.icmp_ignore_bogus_error_responses=1

    # Los ICMP redirects son necesarios en escasas

    # excepciones (por ejemplo, cuando hay 2 gateways)

    net.ipv4.conf.all.accept_redirects=0

    net.ipv4.conf.default.accept_redirects=0

    # Tampoco aceptamos paquetes con "source route"

    net.ipv4.conf.all.accept_source_route=0

    net.ipv4.conf.default.accept_source_route=0

    Y para hacer efectivos los cambios inmediatamente:

    debian:# sysctl -p

    12. Seleccion de paquetes

    En esta etapa debemos tener en especial consideracion que fines va a cumplir el equipo, y seleccionar el

    software a instalar en consecuencia. La principal sugerencia para esta etapa consiste en instalar unicamente el

    software estrictamente necesario.

    Por ejemplo, en este caso utilizaremos el equipo como servidor Web. Que tipo de servidor Web? Supongamos

    que solo necesitamos un servidor Web con paginas estaticas. Es necesario instalar un Apache con PHP? La

    respuesta claramente es no. De hecho no solo no vamos a necesitar PHP, sino que posiblemente ni siquiera sea

    Apache la mejor opcion.

    Veamos algunos puntos a tener en cuenta para elegir una aplicacion:

    Mientras menos cosas extra tenga la aplicacion, mejor. Siguiendo con el ejemplo de un servidor de web de

    paginas estaticas, existen alternativas como thttpd (que tiene soporte para CGI9) o dhttpd. Programas mas

    chicos suponen menos lneas de codigo donde existe una probablididad menor de que alla bugs.

    Priorizemos las aplicaciones de red que puedan ser enjauladas facilmente dentro de un chroot.

    Hay que tener en cuenta que tan mantenido esta el programa. Se puede consultar en foros y listas en busca

    de opiniones. En el caso de Debian podemos visitar http://packages.qa.debian.org/

    para ver cada cuanto hay nuevas versiones y sus bugs.

    La escalabilidad debe ajustarse a nuestras necesidades de crecimiento. Si prevemos aumentar la carga de una

    aplicacion en un futuro cercano esta debe soportarla de antemano.

    8Puede encontrar otros parametros en http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html9Common Gateway Interface (Pasarela de Interfaz Comun)

    www.arcert.gov.ar 15 ArCERT c2006

  • 8/6/2019 Hardening v2

    16/22

    Reforzando la instalacion de Debian GNU/Linux

    La interoperabilidad con otras aplicaciones semejantes son puntos importantes para no quedar atado a una

    aplicacion. Va a ser necesario que maneje formatos y protocolos internos que sean estandares o de f acil

    migracion a otros formatos.

    Una vez seleccionada la aplicacion es recomendable seguirle los pasos de cerca en cuanto a sus nuevas versio-nes y bugs. Si la aplicacion es un paquete Debian puede subscribirse a PTS10. Tambien es buena idea subscribirse

    a la lista de los desarrolladores si esta fuera publica.

    13. Firewall

    El servidor debera estar operativo en una zona particular de la red, com unmente llamada DMZ11 cuando se

    trate de servicios externos, que sera la unica zona que recibira conexiones desde afuera. Para restringir el acceso

    suele usarse un firewall.

    Pero ademas, cada host de nuestra red debera tener un firewall propio, muchas veces llamado firewall de host.

    Como en todas las instalaciones de GNU/Linux, la herramienta utilizada para filtrar los paquetes de red en el host

    sera iptables.

    Para facilitar la configuracion, una opcion es utilizar la herramienta shorewall, que si bien los ejemplos estanpensados para un firewall en el sentido clasico (un gateway con filtrado de paquetes en modo stateful), es perfec-

    tamente adaptable al uso como firewall de host. Tambien puede usarse fwbuilder, que es una herramienta grafica

    para generar las reglas de iptables.

    Algunas recomendaciones a la hora de configurar el firewall:

    Permitir conexiones de entrada solo a los puertos que tengan servicios publicos y que provengan de clientes

    en las redes que correspondan (por ejemplo, restringir el acceso desde otras m aquinas de la DMZ, si el

    servicio es para Internet).

    Permitir la salida a Internet solo a los sitios necesarios para la actualizacion del equipo y los servicios que

    as lo requieran, como conexiones al puerto smtp desde los servidores de correo electronico. En algunos

    casos se puede poner un servidor de actualizaciones interno (con apt-proxy, por ejemplo), de manera que

    solo este requiera salida.

    Permitir la salida a otras maquinas de la DMZ solo cuando sea para un servicio interno particular (por

    ejemplo, a una base de datos).

    14. Actualizaciones de seguridad

    Ahora que ya tenemos el sistema medianamente asegurado, es el momento de actualizar los paquetes instalados.

    Editemos /etc/apt/sources.list que es el archivo que indica donde encontrar dichas actualizaciones.

    Debe existir esta lnea:

    deb http://security.debian.org/ sarge/updates main contrib non-free

    Una vez agregadas estas referencias, debemos actualizar la base de datos local de paquetes (como en la Figura 10)con el comando:

    debian:# apt-get update

    Y actualizar los paquetes, tal como se ve en la Figura 11

    debian:# apt-get upgrade

    Posiblemente sea de utilidad que el administrador se subscriba a la lista de DSA 12, para estar al tanto de las

    actualizaciones en materia de seguridad.

    10Package Tracking System (Sistema de Seguimiento de Paquetes) http://www.debian.org/doc/manuals/developers-reference/ch-

    resources.en.html#s-pkg-tracking-system11DeMilitarized zone (zona desmilitarizada)12Debian Security Announce (Anuncios de Seguridad en Debian) http://lists.debian.org/debian-security-announce/

    www.arcert.gov.ar 16 ArCERT c2006

  • 8/6/2019 Hardening v2

    17/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 10: Actualizacion de la base de datos local para paquetes (apt-get update)

    Figura 11: Actualizacion de paquetes (apt-get upgrade)

    Con este ultimo paso podemos considerar que hemos finalizado la instalacion del sistema operativo, y estamos

    listos para comenzar a utilizarlo. El siguiente paso consistira en configurar y asegurar los servicios que este

    equipo deba brindar (Web, Mail, etc.), pero eso lo dejamos para otros documentos. Luego de configurados los

    servicios, sera el momento de realizar un back-up (vease Back-up) completo del sistema.

    15. Mantenimiento

    El sistema que acabamos de instalar no esta terminado, ya que evolucionara con el tiempo. Seguramente se

    le incorporara, quitara o modificara algun servicio o configuracion. Por este motivo, habra que tener en cuenta

    los conceptos de esta gua durante toda la vida del servidor. En particular, no debemos olvidarnos de realizar las

    actualizaciones de seguridad como se describe en la seccion Actualizaciones de seguridad.

    Ademas habra que hacer el seguimiento del servidor y tener una actitud proactiva con respecto a su seguridad.

    De ello hablaremos en esta seccion.

    15.1. Sincronizacion horaria

    En los proximos apartados insistiremos en la importancia de enviar a un host remoto y seguro los mensajesgenerados por el sistema. La unica manera de correlacionar los eventos que observemos en diferentes equipos,

    sera si sus relojes estan perfectamente sincronizados.

    Por ello, es recomendable establecer un esquema de sincronizacion de relojes utilizando el protocolo NTP13

    Es muy normal contar con un servidor NTP en cada red, donde se sincronizan todas la maquinas y que, a su vez,

    esta sincronizado con uno o mas relojes externos.

    Las aplicaciones utiles para el esquema de sincronizacion pueden ser:

    ntpd, servidor NTP para Unix-like. OpenNTPD, puede ser una alternativa de configuracion mas sencilla.

    ntpdate, cliente NTP para Unix-like.

    Windows incluye un servicio para la sincronizacion horaria.

    13Network Time Protocol, protocolo de internet para sincronizar los relojes de los sistemas inform aticos en redes con latencia variable.

    www.arcert.gov.ar 17 ArCERT c2006

  • 8/6/2019 Hardening v2

    18/22

    Reforzando la instalacion de Debian GNU/Linux

    15.2. Back-up

    Dentro de las tareas de mantenimiento, se encuentra la realizacion de back-ups periodicos del equipo. La

    discusion sobre los diferentes metodos existentes puede ser muy amplia. Sin embargo presentamos algunas reco-

    mendaciones para su ejecucion:

    Para realizar back-up de muchos equipos de manera combinada, sera necesario contar con un buen gestor

    de archivos de respaldo. Amanda14 es una buena opcion libre, compatible con muchos sistemas Unix-like

    (SCO, FreeBSD, IRIX, AIX, HP-UX, GNU/Linux), pero requiere Samba para trabajar con Windows. Otra

    herramienta muy usada, que s tiene soporte para Windows, es bacula15.

    La practicidad de las cintas nunca sera superada por los medios opticos (a menos que estos crezcan en

    capacidad mas de lo que lo han hecho en los ultimos anos), o poseamos un intercambiador de CDs de gran

    capacidad.

    Es recomendable realizar backups full de manera periodica, e intercalarlos con back-ups parciales.

    Para que un back-up sea util, es indispensable que pueda ser recuperado. Y para estar seguros de esto, es

    necesario que la poltica de back-up incluya simulaciones periodicas donde restauremos nuestros sistemasdesde las cintas.

    Considerar la posibilidad de guardar copias de los back-ups en sitios remotos, para contingencias mayores.

    Tener en cuenta que la sensibilidad de la informacion contenida en una cinta de back-up es igual a la infor-

    macion mas sensible que haya sido almacenada, por lo que habra que tomar los recaudos del caso.

    Los metodos mas comunes de back-up en GNU/Linux son utilizar tar, cpio, o dump. Si no utilizamos un

    gestor de back-up, dump es una opcion muy interesante por su manejo de niveles para copias incrementales

    y su integracion con el sistema de archivos ext2/ext3. Como desventajas, tiene su lentitud, y que no es

    compatible con todos los filesystems existentes.

    La unica forma de obtener una imagen exacta del disco, con la certeza de que no contendra ningun tipo de

    inconsistencia, ni a nivel logico del disco, ni a nivel transaccional de las aplicaciones, es realizar back-upsoffline.

    15.3. Auditoras regulares

    Una aplicacion interesante para revisar la seguridad de nuestro servidor es tiger. Esta herramienta realiza di-

    versas verificaciones sobre la configuracion y el estado de varios elementos del sistema operativo. Permite realizar

    estos chequeos de manera perodica.

    La forma mas recomendada para su instalacion es junto con algunos paquetes auxiliares:

    debian:# apt-get install binutils chkrootkit lsof file libmagic1 tiger

    Con su instalacion por defecto, tigerrealizara diariamente las verificaciones y enviara un reporte de los proble-

    mas encontrados. Al igual que con las verificaciones de integridad (vease Chequeos de integridad) y logs (veaseManejo de bit acoras (logs)), sera conveniente arbitrar los medios necesarios para que dicho reporte sea enviado

    a un equipo remoto con las medidas de seguridad del caso. La opcion mas comun para este tipo de reportes es el

    envo por e-mail (a traves de algun MTA local), pero tambien podran utilizarse otros medios mas seguros, como

    por ejemplo lneas seriales unidireccionales.

    En la Figura 12 se puede observar un reporte del analisis hecho por tiger.

    14http://www.amanda.org/15http://www.bacula.org/

    www.arcert.gov.ar 18 ArCERT c2006

  • 8/6/2019 Hardening v2

    19/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 12: Resultado del chequeo hecho por tiger(/var/log/tiger/security.report )

    15.4. Chequeos de integridad

    Como podemos descubrir si eventualmente el equipo resulta comprometido? Un excelente metodo es verificar

    la integridad de los archivos existentes en el sistema de archivos. Existen varias herramientas para realizar esta

    tarea:

    Tripwire, practicamente la mas antigua de todas (solo de uso libre para Linux, y bajo ciertas condiciones de

    licenciamiento)

    Integrit, es un clon libre de tripwire.

    Debsums, que verifica la integridad de los archivos en base al hash contenido en el paquete Debian que lo

    provee. No todos los paquetes tienen los hashes necesarios, por lo que la herramienta no resulta practica.

    AIDE16, actualmente una de las mas usadas y recomendables.

    En general estas herramientas proveen varias opciones de verificacion, incluyendo hashes conunoomas algoritmos

    criptograficos, verificacion de MAC time (Modificacion, Acceso y Cambio), permisos, tamano, etc. Todas proveen

    una configuracion de ejemplo (en el caso de AIDE, /etc/aide/aide.conf) que servira de punto de partida

    para una configuracion adecuada al sistema que acabamos de instalar.

    Algunas de las cosas que habra que modificar seguramente incluiran:

    Ni /etc, donde se encuentran todos los archivos de configuracion, ni /boot, donde se encuentran los

    archivos de inicio del sistema operativo, estan contemplados en el archivo de ejemplo.

    /var/log tiene algunas configuraciones especficas, que seguramente causaran varios falsos positivos si

    la actividad de nuestro host modifica los logs constantemente.

    /home solo esta contemplado como un ejemplo. Si el sistema posee muchos usuarios independientes, se-

    guramente querremos verificar como mucho que no cambie el dueno (owner) de los archivos. Si no tiene

    usuarios ademas del administrador, vamos a querer observar cualquier tipo de cambio.

    Un buen metodo para ajustar la configuracion es agregar todos los directorios dependientes del ra z faltantes

    (/boot, /home/, etc.) con todas las verificaciones posibles, e ir ajustandolas a medida que recibimos las aler-

    tas. Como mencionamos en caso de la auditora interna, sera conveniente que los reportes de estas verificaciones

    16Advanced Intrusion Detection Environment (Ambiente avanzado para la deteccion de intrusos)

    www.arcert.gov.ar 19 ArCERT c2006

  • 8/6/2019 Hardening v2

    20/22

    Reforzando la instalacion de Debian GNU/Linux

    sean recibidos en un host remoto, donde se tenga la seguridad de que podr an ser recuperados en caso de que una

    intrusion intente borrarlos.

    Ademas, para el caso de las verificaciones de integridad de los archivos, todos los metodos se basan en la

    creacion de una base de datos con el estado inicial del sistema, y la posterior comparacion con esta. Si queremos

    que esta verificacion sea efectiva, y no pueda ser falseada durante una intrusion, deberemos montar la base de datosen un dispositivo de solo lectura. Por ejemplo, en un CD-ROM (o alguna clase de dispositivo al que se le pueda

    bloquear la escritura por hardware: un disquete, un pen-drive, una tarjeta flash, etc.).

    15.5. Manejo de bitacoras (logs)

    Los logs del sistema seran seguramente una de las herramientas mas valiosas a la hora de atender un intento de

    intrusion al equipo, exitoso o no.

    En la mayora de los sistemas UNIX-like, y por supuesto tambien en GNU/Linux, se utiliza el sistema syslog

    para manejar los logs del sistema. Este sistema consiste en un demonio que recibe los diferentes mensajes de las

    aplicaciones y el sistema operativo. Se configura a traves del archivo /etc/syslog.conf, el cual tiene dos

    conceptos fundamentales: facility y level. El primero es la aplicacion o el componente del sistemas operativo que

    genera logs. level hace referencia a la severidad del mensaje. Por cada combinacion de estos se realiza una accion.

    El formato entonces quedara:

    facility.level accion

    As, para cada tipo y severidad de log habra un tratamiento, por ejemplo, escribir un mensaje en un archivo. Estos

    archivos, normalmente residen en el directorio /var/log. Como mencionamos en otros apartados, sera conve-

    niente que estos mensajes sean guardados en un repositorio externo, para evitar que sean falseados en caso de una

    intrusion. La forma mas comun de realizar esta tarea es enviarlos a otro host mediante el mismo protocolo syslog,

    de la siguiente manera:

    *.* @loghost.ourdomain

    De esta manera, todos los mensajes (de cualquier tipo y nivel), seran reenviados al host loghost.ourdomain. Una

    alternativa mucho mas segura, aunque pocas veces utilizada, es enviar los mensajes a trav es de un puerto serial aun loghosttotalmente desconectado de la red.

    Existen alternativas17 al sistema syslog, como syslog-ng18, que permite mucha mayor flexibilidad en las accio-

    nes a tomar con los mensajes recibidos.

    Por ultimo, mencionaremos una herramienta que puede ayudar a la lectura de los logs almacenados, que suelen

    tener un volumen importante. Esta herramienta es logcheck. La misma se basa en varias reglas, alojadas en el

    directorio /etc/logcheck, que definen por medio de expresiones regulares que mensajes son importantes, y

    cuales son inofensivos. Luego de seleccionar los mensajes segun las reglas definidas, un resumen es enviado por

    e-mail. De la misma manera que en los casos anteriores, podra ser conveniente que este reporte sea enviado a un

    host remoto.

    Otra opcion muy similiar es logwatch19.

    16. Herramientas para automatizar el fortalecimientoExisten algunas herramientas que pueden ayudarnos a asegurar un servidor. Dichas herramientas son utiles, pe-

    ro por ninguna razon deben reemplazar el trabajo manual y el chequeo de las configuraciones por un administrador

    de sistemas.

    16.1. Bastille Linux

    Esta herramienta, con bastante historia en GNU/Linux, consiste en una serie de preguntas que habra que res-

    ponder, para luego automatizar varias de las tareas que hemos realizado en este manual, y algunas otras que no

    17http://www.loganalysis.org/sections/syslog/syslog-replacements/index.html18syslog next generation19

    http://www.logwatch.org

    www.arcert.gov.ar 20 ArCERT c2006

  • 8/6/2019 Hardening v2

    21/22

    Reforzando la instalacion de Debian GNU/Linux

    Figura 13: Chequeo de los bits suid con bastille (InteractiveBastille)

    hemos cubierto. Se recomienda utilizar el mismo como una gua para ayudar a estas tareas, pero nunca para reem-

    plazar la inspeccion personal de las mismas.

    Para instalar esta herramienta, al igual que con todos los paquetes, realizaremos la siguiente operacion:

    debian:# apt-get install bastille

    Luego de finalizada la instalacion, podemos ejecutar el modo interactivo mediante el siguiente comando:

    debian:# InteractiveBastille

    A continuacion, se nos presentaran una serie de preguntas sobre las tareas a realizar, con una explicacion de sus

    efectos posteriores. Por ejemplo, en la Figura 13 se observa a la aplicacion consultando sobre la deshabilitacion

    del bit suiden diversos programas.

    16.2. Paquetes Harden

    Los paquetes harden de Debian son una serie de paquetes que, al igual que Bastille Linux, nos ayudaran a

    asegurar un sitio, pero no reemplazaran una buena configuracion.

    Los paquetes harden se encargan de conflictuar con otros paquetes que, por alguna razon, son considerados

    inseguros. Por ejemplo, telnetque trabaja sobre protocolos sin cifrar.

    Entre otros, podemos encontrar harden-tools, que incluye algunas herramientas como el tiger, harden-doc, con

    documentacion sobre seguridad, y harden-servers, harden-clients, harden-remoteflaws y harden-localflaws, queeliminan o limitan la instalacion de paquetes con conocidos problemas de seguridad de distintos perfiles.

    17. Otras fuentes de informacion

    Para obtener mas informacion sobre seguridad en la distribucion Debian:

    http://www.debian.org/doc/manuals/securing-debian-howto/

    El manual completo de instalacion de Debian puede obtenerse en:

    http://www.debian.org/releases/sarge/installmanual

    18. CheckList

    Pre-instalacion

    www.arcert.gov.ar 21 ArCERT c2006

  • 8/6/2019 Hardening v2

    22/22

    Reforzando la instalacion de Debian GNU/Linux

    Restringir el acceso fsico.

    Aislar la red.

    Deshabilitar los puertos y dispositivos innecesarios.

    Seleccionar de dispositivo de arranque. Configurar password de modificacion de BIOS.

    Instalacion

    Particionado.

    Aislar la red.

    Ajustar las opciones de inicio en el BIOS.

    Creacion de usuario/s no privilegiado/s.

    Limpieza

    de servicios de red preinstalados.

    de paquetes no utilizados.

    de modulos de kernel.

    Deshabilitar el Ctl+Alt+Del.

    Ajustar /etc/fstab.

    Usuarios y permisos.

    Ajustar las propiedades de los usuarios (shell).

    Eliminar los suid bit de los ejecutables.

    Restringir el uso del cron.

    Restringir el uso del at.

    Ajustar las opciones de sudo.

    Limitar el acceso de root.

    Crear el grupo wheel y agregar los usuarios correspondientes.

    Configurar que consolas seguras (/etc/securetty).

    Administracion remota (SSH).

    Permitir solo version 2.

    Configurar tcpwrapper (hosts.deny y hosts.allow).

    Restringir login de root.

    Ajustar parametros del kernel (/etc/sysctl.conf).

    Instalar paquetes (servicio/s que brindara el servidor).

    Configurar el firewall de host.

    Instalar cliente para la sincronizacion horaria.

    Actualizar los paquetes instalados (apt-get upgrade).

    Planear y configurar esquema de back-up.

    Instalar y configurar herramienta para integridad de archivos.

    Instalar y configurar herramienta para auditoras regulares.

    Configuracion del envio de bitacoras a un loghost.

    www.arcert.gov.ar 22 ArCERT c2006