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
Top Related