hardening debian

22
Reforzando la instalaci ´ on de Debian GNU/Linux ArCERT Coordinaci´ on de Emergencias en Redes Teleinform´ aticas www.arcert.gov.ar versi´ on 2.0 16 de marzo de 2006 Resumen En este documento describiremos como mejorar la seguridad en una instalaci´ on de GNU/Linux. El temario incluye configuraci´ on adecuada del BIOS, particionamiento, instalaci´ on minima, deshabilitaci´ on de servicios no utilizados, desinstalaci´ on de software no utilizado, revisi´ on de logs, detecci´ on de intrusiones, firewall de host, actualizaciones de seguridad, sincronizaci´ on de hora, etc. Utilizaremos como base la distribuci´ on Debian, versi´ on Sarge (o stable). Muchos de los conceptos vertidos en esta gu´ ıa podr´ an ser aplicados a cualquier distribuci´ on de Linux, o sistema operativo tipo Unix (*BSD, Solaris, etc.). En ning´ un caso podr´ a responsabilizarse a ArCERT o a la ONTI en forma institucional, o a sus agentes a t´ ıtulo individual y/o personal, de ning´ un da˜ no puntual ni general, directo o indirecto, consecuencial o incidental, o de cualesquiera otra categor´ ıas, derivado de la ejecuci´ on de las actividades planteadas para este tutorial.

Upload: luiskrlos79

Post on 03-Jan-2016

73 views

Category:

Documents


3 download

DESCRIPTION

Hardening Debian

TRANSCRIPT

Page 1: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

ArCERTCoordinacion de Emergencias en Redes Teleinformaticas

www.arcert.gov.arversion 2.0

16 de marzo de 2006

Resumen

En este documento describiremos como mejorar la seguridad en una instalacion de GNU/Linux. El temarioincluye configuracion adecuada del BIOS, particionamiento, instalacion minima, deshabilitacion de servicios noutilizados, 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, versionSarge (o stable). Muchos de los conceptos vertidos en esta guıa podran ser aplicados a cualquier distribucion deLinux, 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ıtuloindividual y/o personal, de ningun dano puntual ni general, directo o indirecto, consecuencial o incidental, o decualesquiera otra categorıas, derivado de la ejecucion de las actividades planteadas para este tutorial.

Page 2: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

Indice1. Introduccion 3

2. Pre-Instalacion 3

3. Instalacion 33.1. Particiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.2. El usuario normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4. Boot Loader 6

5. Limpieza 85.1. Servicios de red innecesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85.2. Otros paquetes no utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85.3. Modulos de Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6. Deshabilitando el CTRL-ALT-Del 10

7. Opciones de Montaje 11

8. Usuarios y permisos 118.1. Usuarios con shell interactıvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118.2. El bit SUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128.3. Permisos de tareas planificadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128.4. Sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

9. Limitacion del acceso de root 139.1. El grupo wheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149.2. La consola fısica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149.3. Acceso vıa 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 1715.1. Sincronizacion horaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1715.2. Back-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815.3. Auditorıas regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815.4. Chequeos de integridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1915.5. Manejo de bitacoras (logs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

16. Herramientas para automatizar el fortalecimiento 2016.1. Bastille Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2016.2. Paquetes Harden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

17. Otras fuentes de informacion 21

18. CheckList 21

www.arcert.gov.ar 2 ArCERT c©2006

Page 3: Hardening Debian

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 elresultado 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 dıas a mediados de los 90’, a horas en el 2000, y minutos en la actualidad. En este documento nosocuparemos de mejorar la seguridad en una instalacion de GNU/Linux. Utilizaremos como base la distribucionDebian, version Sarge (o stable), por ser una de las mas usadas en ambientes de servidor, y porque la consideramoscomo una de las mas adecuadas para esa misma funcion. Muchos de los conceptos vertidos en esta guıa podran seraplicados a cualquier distribucion de Linux, o sistema operativo tipo Unix (*BSD, Solaris, etc.). Sin embargo, sedeberan tomar los recaudos necesarios para que dicha adaptacion no deje puertas abiertas debido a las diferenciasentre las distintas distribuciones.

2. Pre-InstalacionComenzaremos por considerar dos temas esenciales. Se dice que quien tiene acceso fısico a un equipo tendra ac-

ceso total al mismo. Si bien esta afirmacion no siempre es exacta, y algunas de las tareas que realizaremos tienenpor objetivo contrarrestarla, es absolutamente recomendable que el acceso fısico al servidor y su consola este res-tringido solo al personal autorizado. Como segundo recaudo, el equipo no debera conectarse a la red hasta haberfinalizado con las tareas de aseguramiento. En caso de ser necesario algun tipo de conexion (como ser que el equipodebe iniciarse mediante netboot), estas tareas deberan realizarse en una red cerrada, asegurada, y preferentementeaislada. 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 deentrada 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 deno ser posible, como en el ejemplo de la Figura 2, deberemos ordenar los dispositivos para que el elegido sea elprimero de la lista. Inclusive podemos deshabilitar todos los dispositivos de almacenamiento menos el dispositivode boot. Por ejemplo, una vez instalado el sistema operativo, se puede deshabilitar el CD-ROM del BIOS, ya queel mismo sera detectado de todas maneras por el sistema operativo.

Por ultimo, deberemos configurar una contrasena para restringir la realizacion de cambios en la configuraciondel BIOS.

3. InstalacionPara 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 bibliografıa, deberemos teneren cuenta algunos detalles que nos permitiran asegurar un resultado exitoso.

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

www.arcert.gov.ar 3 ArCERT c©2006

Page 4: Hardening Debian

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 c©2006

Page 5: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

Figura 3: Opciones de montaje durante la instalacion

3.1. ParticionesEn 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 consejosconsisten en:

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

En equipos que brinden servicios crıticos, /var/log podrıa llenarse y perjudicar el buen funcionamientode los mismos, por lo que podrıa 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 sealojan los archivos menos susceptibles a cambios) tendran su propio espacio.

Las particiones pueden montarse con ciertas opciones que restringen su funcionalidad (ver Figura 3). Lasrestricciones mas interesantes que pueden aplicarse en el momento de la instalacion son (hablaremos mastarde sobre esto en ’Opciones de Montaje’):

• nodev: No permite la creacion de dispositivos (devices).• nosuid: No permite la utilizacion de los bits suid y 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 deberıa 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 c©2006

Page 6: Hardening Debian

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 encuenta 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 paraMulti-user workstation (estacion de trabajo multiusuario).

3.2. El usuario normalComo 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, unusuario no privilegiado. En nuestro ejemplo usaremos operador, tal como se ve en la Figura 5. Se debe evitar laexistencia de cuentas impersonales, por lo que el campo full-name (nombre completo) puede sernos de utilidad. Elusuario no privilegiado, ademas de darnos el acceso inicial al sistema, nos permitira realizar todas aquellas tareasque no requieran extricamente capacidades de root.

Una vez terminada la instalacion del sistema operativo base, comenzaremos el fortalecimiento propiamentedicho del sistema. Si aun no modifico el orden de boot en el BIOS, este el momento.

4. Boot LoaderVamos 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 fısico a la consola de nuestro equipo (situacion que deberser evitada a toda costa) pueda modificar los parametros de inicializacion del kernel, protegeremos el boot loadercontra modificaciones.

Primero, generaremos un hash del pasword que utilizaremos:

www.arcert.gov.ar 6 ArCERT c©2006

Page 7: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

Figura 5: Creacion de un usuario no privilegiado

debian:˜# grub-md5-cryptPassword:Retype password:$1$1nxTK1$0kdd0C8txj7nDPx5SnVx./

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

## password [’--md5’] passwd# e.g. password topsecret# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/# password topsecretpassword --md5 $1$1nxTK1$0kdd0C8txj7nDPx5SnVx./

En este mismo archivo, editaremos el valor de la variable lockalternative, para que el password queacabamos de crear no solo se aplique a las modificaciones explıcitas de los parametros de inicio del kernel, sinoque 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 noprivilegiados 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 cambiodel lockalternative:

debian:˜# update-grubSearching 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-686Updating /boot/grub/menu.lst ... done

www.arcert.gov.ar 7 ArCERT c©2006

Page 8: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

5. LimpiezaPara 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 innecesariosMuchas 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 podemoscorrer el comando netstat -tulp:

debian:˜# netstat -tulpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 *:time *:* LISTEN 608/inetdtcp 0 0 *:discard *:* LISTEN 608/inetdtcp 0 0 *:daytime *:* LISTEN 608/inetdtcp 0 0 localhost:smtp *:* LISTEN 602/exim4udp 0 0 *:discard *:* 608/inetdudp 0 0 *:bootpc *:* 708/dhclientdebian:˜#

Como podemos observar, los servicios time, discard y daytime se encuentran habilitados y levantados vıa inetd.Para deshabilitarlos, procederemos a editar el archivo /etc/inetd.conf, y comentar las lıneas correspondientes. Loscambios se produciran al reiniciar el servicio.

debian:˜# /etc/init.d/inetd restartRestarting internet superserver: inetd.

Por otra parte existen servicios no levantados por inetd que 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 vıa 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 utilizadosLa instalacion base de cualquier sistema operativo instala una serie de paquetes que, si bien son utilizados en la

mayorıa de los casos, no siempre son totalmente necesarios. Podemos ver todos los paquetes instalados en nuestrosistema 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 imaginacionpara 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 PPP3 no seran necesarios (ppp,pppconfig, pppoe, pppoeconf).

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

2Mail 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 c©2006

Page 9: Hardening Debian

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 terminadasen -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 lasubseccion ’Modulos 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 parael 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 puedeser util el comando dpkg -S. Por ejemplo, el archivo /usr/bin/e2pall pertenece al paquete tetex-bin:

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

Una mencion especial merece el paquete gcc-3.3-base, que solo contiene documentacion descriptiva y seincluye 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 borranaquellas dependencias reversas de los paquetes definidos.

De esta manera, reducimos la cantidad de programas instalados en nuestro sistema, lo que se traduce en unamenor probabilidad de vernos afectados por algun bug.

4

www.arcert.gov.ar 9 ArCERT c©2006

Page 10: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

Figura 7: Listado de los modulos cargados (lsmod)

5.3. Modulos de KernelLos 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 unresultado 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 nuestrohardware 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 quedarıa ası, siendo pcnet32 el driver de la placa de red:

ide-diskide-genericpcnet32

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 levantara con este soporte. Para evitar esto puede configurar estasaplicaciones para que solo utilizen IPv4, o bien, eliminar la posibilidad que el modulo ipv6 se cargue. Esto ultimose consigue realizando la siguente modificacion en /etc/modprobe.d/aliases:

#alias net-pf-10 ipv6alias net-pf-10 off

6. Deshabilitando el CTRL-ALT-DelEste 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 lıneacorrespondiente en el archivo /etc/inittab:

www.arcert.gov.ar 10 ArCERT c©2006

Page 11: Hardening Debian

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 init que debe releer el archivo de configuracion:

debian:˜# telinit q

O su equivalente,

debian:˜# kill -1 1

7. Opciones de MontajeLas 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ı:

# <file system> <mount point> <type> <options> <dump> <pass>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 lıneas de este archivo. Pero sidecidimos 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 interactıvoComenzaremos 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 totalmenteinnecesario dado que ninguno de estos usuarios sera utilizado de manera interactiva. Utilizaremos el siguientecomando 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. Elcomando /bin/false siempre devuelve error y evita el login.

5Input/Output (operaciones de Entrada/Salida)

www.arcert.gov.ar 11 ArCERT c©2006

Page 12: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

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

8.2. El bit SUIDVamos 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 deejecucion 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 stackoverflow, podrıa 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 lanecesidad 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 quehabra que evaluar los beneficios y desventajas (por ejemplo, el uso de crontabs por parte de los usuarios). Para elresto:

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

8.3. Permisos de tareas planificadasSi bien ya anteriormente le sacamos el bit suid al 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 lınea:

www.arcert.gov.ar 12 ArCERT c©2006

Page 13: Hardening Debian

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. SudoUna 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 informacionen la pagina principal de sudo6.

9. Limitacion del acceso de rootLa 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 root mediante el comando su. Ademas serıa interesante restringirlos usuarios que podran transformarse en superusuario.

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

www.arcert.gov.ar 13 ArCERT c©2006

Page 14: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

9.1. El grupo wheelExiste 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 olvidarnosde crear el grupo y agregar los usuarios necesarios al mismo:

debian:˜# addgroup --system wheelAdding group ‘wheel’ (104)...Hecho.debian:˜# usermod -G wheel operador

9.2. La consola fısicaEsta es otra forma de mitigar una falencia en el acceso fısico al servidor. Se puede evitar que root acceda

directamente por una consola fısica al sistema. En el archivo /etc/securetty tenemos la lista de consolas enlas que root puede loguearse. Podemos simplemente comentar dichas lineas y ası restringir el acceso.

9.3. Acceso vıa SSHSi en nuestro sistema esta instalado SSH como forma de administracion remota (vease tambien ’Adminis-

tracion Remota’), tambien debemos limitar el acceso directo de root. Para lograrlo hay que editar el archivo deconfiguracion 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 RemotaVamos 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 servidorjunto 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 dediseno que pueden comprometer la seguridad del equipo. La siguiente pregunta nos consulta sobre el bit suid enel 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 opcion no. La ultima pregunta es sobre si queremosiniciar el servidor de SSH.

Sera conveniente restringir desde donde se puede acceder a dicho protocolo. Mas alla del uso de un firewall loharemos vıa tcpwrapper, soportado por OpenSSH. Usaremos la polıtica todo denegado excepto lo expresamentepermitido. 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 c©2006

Page 15: Hardening Debian

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 librerıa libwrap (hoy incluida en la libC),o mediante la utilizacion del programa tcpd.

11. Parametros del kernelEl 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 ICMPnet.ipv4.icmp_echo_ignore_broadcasts=1# Tampoco debemos hacerle caso a respuestas ICMP que no# pedimosnet.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=0net.ipv4.conf.default.accept_redirects=0# Tampoco aceptamos paquetes con "source route"net.ipv4.conf.all.accept_source_route=0net.ipv4.conf.default.accept_source_route=0

Y para hacer efectivos los cambios inmediatamente:

debian:˜# sysctl -p

12. Seleccion de paquetesEn 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 elsoftware estrictamente necesario.

Por ejemplo, en este caso utilizaremos el equipo como servidor Web. ¿Que tipo de servidor Web? Supongamosque solo necesitamos un servidor Web con paginas estaticas. ¿Es necesario instalar un Apache con PHP? Larespuesta claramente es no. De hecho no solo no vamos a necesitar PHP, sino que posiblemente ni siquiera seaApache 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 depaginas estaticas, existen alternativas como thttpd (que tiene soporte para CGI9) o dhttpd. Programas maschicos suponen menos lıneas 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 buscade opiniones. En el caso de Debian podemos visitar http://packages.qa.debian.org/<nombre del paquete>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 unaaplicacion 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 c©2006

Page 16: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

La interoperabilidad con otras aplicaciones semejantes son puntos importantes para no quedar atado a unaaplicacion. Va a ser necesario que maneje formatos y protocolos internos que sean estandares o de facilmigracion 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 subscribirsea la lista de los desarrolladores si esta fuera publica.

13. FirewallEl servidor debera estar operativo en una zona particular de la red, comunmente llamada DMZ11 cuando se

trate de servicios externos, que sera la unica zona que recibira conexiones desde afuera. Para restringir el accesosuele 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 hostsera 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 graficapara 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 clientesen las redes que correspondan (por ejemplo, restringir el acceso desde otras maquinas de la DMZ, si elservicio es para Internet).

Permitir la salida a Internet solo a los sitios necesarios para la actualizacion del equipo y los servicios queası lo requieran, como conexiones al puerto smtp desde los servidores de correo electronico. En algunoscasos se puede poner un servidor de actualizaciones interno (con apt-proxy, por ejemplo), de manera quesolo este requiera salida.

Permitir la salida a otras maquinas de la DMZ solo cuando sea para un servicio interno particular (porejemplo, a una base de datos).

14. Actualizaciones de seguridadAhora 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 lınea:

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 DSA12, para estar al tanto de lasactualizaciones 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-system

11DeMilitarized zone (zona desmilitarizada)12Debian Security Announce (Anuncios de Seguridad en Debian) http://lists.debian.org/debian-security-announce/

www.arcert.gov.ar 16 ArCERT c©2006

Page 17: Hardening Debian

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 estamoslistos para comenzar a utilizarlo. El siguiente paso consistira en configurar y asegurar los servicios que esteequipo deba brindar (Web, Mail, etc.), pero eso lo dejamos para otros documentos. Luego de configurados losservicios, sera el momento de realizar un back-up (vease ’Back-up)’ completo del sistema.

15. MantenimientoEl 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 cuentalos conceptos de esta guıa durante toda la vida del servidor. En particular, no debemos olvidarnos de realizar lasactualizaciones 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 horariaEn los proximos apartados insistiremos en la importancia de enviar a un host remoto y seguro los mensajes

generados 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 informaticos en redes con latencia variable.

www.arcert.gov.ar 17 ArCERT c©2006

Page 18: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

15.2. Back-upDentro 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 gestorde 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. Otraherramienta 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 encapacidad mas de lo que lo han hecho en los ultimos anos), o poseamos un intercambiador de CDs de grancapacidad.

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, esnecesario que la polıtica 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 ungestor de back-up, dump es una opcion muy interesante por su manejo de niveles para copias incrementalesy su integracion con el sistema de archivos ext2/ext3. Como desventajas, tiene su lentitud, y que no escompatible con todos los filesystems existentes.

La unica forma de obtener una imagen exacta del disco, con la certeza de que no contendra ningun tipo deinconsistencia, ni a nivel logico del disco, ni a nivel transaccional de las aplicaciones, es realizar back-upsoffline.

15.3. Auditorıas regularesUna 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 realizarestos chequeos de manera perıodica.

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, tiger realizara 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 (vease’Manejo de bitacoras (logs)’), sera conveniente arbitrar los medios necesarios para que dicho reporte sea enviadoa un equipo remoto con las medidas de seguridad del caso. La opcion mas comun para este tipo de reportes es elenvıo por e-mail (a traves de algun MTA local), pero tambien podrıan utilizarse otros medios mas seguros, comopor ejemplo lıneas 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 c©2006

Page 19: Hardening Debian

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 estatarea:

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

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 loprovee. 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 con uno o mas algoritmoscriptograficos, verificacion de MAC time (Modificacion, Acceso y Cambio), permisos, tamano, etc. Todas proveenuna configuracion de ejemplo (en el caso de AIDE, /etc/aide/aide.conf) que servira de punto de partidapara 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 losarchivos de inicio del sistema operativo, estan contemplados en el archivo de ejemplo.

/var/log tiene algunas configuraciones especıficas, que seguramente causaran varios falsos positivos sila 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 tieneusuarios 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 auditorıa 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 c©2006

Page 20: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

sean recibidos en un host remoto, donde se tenga la seguridad de que podran ser recuperados en caso de que unaintrusion intente borrarlos.

Ademas, para el caso de las verificaciones de integridad de los archivos, todos los metodos se basan en lacreacion de una base de datos con el estado inicial del sistema, y la posterior comparacion con esta. Si queremosque 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 puedabloquear 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 mayorıa 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 lasaplicaciones y el sistema operativo. Se configura a traves del archivo /etc/syslog.conf, el cual tiene dosconceptos fundamentales: facility y level. El primero es la aplicacion o el componente del sistemas operativo quegenera logs. level hace referencia a la severidad del mensaje. Por cada combinacion de estos se realiza una accion.El formato entonces quedarıa:

facility.level <Tab><Tab> accion

Ası, para cada tipo y severidad de log habra un tratamiento, por ejemplo, escribir un mensaje en un archivo. Estosarchivos, 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 unaintrusion. 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. Unaalternativa mucho mas segura, aunque pocas veces utilizada, es enviar los mensajes a traves de un puerto serial aun loghost totalmente 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 suelentener un volumen importante. Esta herramienta es logcheck. La misma se basa en varias reglas, alojadas en eldirectorio /etc/logcheck, que definen por medio de expresiones regulares que mensajes son importantes, ycuales son inofensivos. Luego de seleccionar los mensajes segun las reglas definidas, un resumen es enviado pore-mail. De la misma manera que en los casos anteriores, podrıa ser conveniente que este reporte sea enviado a unhost 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 administradorde sistemas.

16.1. Bastille LinuxEsta 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 generation19http://www.logwatch.org

www.arcert.gov.ar 20 ArCERT c©2006

Page 21: Hardening Debian

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 guıa 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 susefectos posteriores. Por ejemplo, en la Figura 13 se observa a la aplicacion consultando sobre la deshabilitaciondel bit suid en diversos programas.

16.2. Paquetes HardenLos 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, telnet que 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 informacionPara 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 c©2006

Page 22: Hardening Debian

Reforzando la instalacion de Debian GNU/Linux

� Restringir el acceso fısico.

� 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 auditorıas regulares.

� Configuracion del envio de bitacoras a un loghost.

www.arcert.gov.ar 22 ArCERT c©2006