Este documento busca ser una checklist de las cosas que deben ser tenidas en cuenta a la hora de dar seguridad a un servidor (basado en sistema Debian).
Habilitar clave en el BIOS
Deshabilitar arranque de CD y DISQUETE
Habilitar clave en LILO o GRUB (/etc/lilo.conf o /boot/grub/menu.lst, respectivamente); revisar que los archivos de configuracion de LILO o GRUB sean de solo lectura (chattr +i)
Separar en sus propias particiones:
Datos escritos por usuarios
Datos que no son del sistema operativo
Datos que cambian rapidamente con el uso
Configurar nosuid,noexec,nodev en las particiones que sea posible, como en /tmp
Colocar una buena clave de root
Ajustar /etc/pam.d/login para permitir acceso root solo local.
Marcar tambien authorized tty:s en /etc/security/access.conf y tratar de limitar en este archivo los accesos de root lo más posible.
Usar pam_limits.so si se desean limitar los accesos por usuario.
Ajustar /etc/pam.d/passwd: configurar minimo tamaño de claves (6 caracteres) y habiltiar md5 (ya viene por defecto en Linux nuevos)
Agregar un grupo wheel a /etc/group si se desea; agregar pam_wheel.so group=wheel al archivo /etc/pam.d/su
Para tener control por usuario, usar el módulo pam_listfile.so donde sea apropiado.
Tener un archivo /etc/pam.d/other y configurarlo con las opciones de seguridad por defecto.
Configurar límites en /etc/security/limits.conf
Revisar /etc/login.defs; también.
Mantener el kernel al día
Revisar los permisos de los archivos de logs (/var/log/{last,fail}log, Apache logs, etc)
Instalar y configurar checksecurity y verificar que la revisación de setuid está habilitada en /etc/checksecurity.conf
Considerar si algunos archivos de log deben ser solamente de append y algunos archivos de configuración inmutables usando chattr.
Instalar alguna herramienta de chequeo de integridad: (sXid, AIDE (Advanced Intrusion Detection Environment), TripWire, integrit o samhain.
Instalar debsums
Considerar remplazar locate con slocate
Analizar de armar un servidor de syslog e inclusive los logs críticos logearlos en una impresora.
Instalar y configurar servidor openssh con:
PermitRootLogin No
PermitEmptyPasswords No
Deshabilitar y remover in.telnetd (no viene por defecto)
Deshabilitar servicios en /etc/inetd.conf (usando update-inetd –disable o deshabilitando todo inetd, o usando remplazo como ser xinetd o rlinetd)
Deshabilitar cualquier otro servicio de red que no sea necesario, revisar puertos abiertos con netstat -atup
Para los servicios que son necesarios verifique de correr versiones seguras (las puertas abiertas son eso!).
Colocar en jaulas chrrot los usuarios externos y los daemons.
Configurar firewall y tcpwrappers (p.ej: hosts_access); revisando /etc/hosts.deny
Si corre ftp, configurar para que el servidor siempre esté enjaulado en el home del usuario.
Si corre ssh para usuarios remotos, considerar scponly.
Si se corre X, deshabilitar xhost authentication y acceder por ssh para acceso X. Deshabilitar acceso X remoto (agregar -nolisten tcp en la linea de comando de X para apagar XDMCP en /etc/X11/xdm/xdm-config configurarndo requestPort en 0)
Verificar que no tenga servicios de impresion levantados, si no se necesitan. Deshabilitar acceso remoto a impresoras.
Asegurar protocolos
IMAP y
POP mediante
SSL o con tuneles ssh o zebedee.
Asegurar BIND, Postfix y otros servicios complejos (si es posible colocándolos en una jaula, o verificar que tengan un usuario propio. Así vienen por defecto)
Instalar snort o una herramienta similar de análisis
Evitar
NIS y
RPC si se puede (disabilitar portmap).
Educatr a los usuarios sobre las políticas de seguridad. Cuando se prohibe algo que está disponible en otros sistemas entregar documentación de fundamento de las mejoras en seguridad.
Prohibir el uso de protocolos con claves en texto claro (telnet, rsh, ftp, imap, http, etc.)
Usar quotas de disco.
Mas información sobre seguridad en Securing Debian Manual