====== Seguridad en Debian GNU/Linux ====== 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). ===== Limitar acceso físico en las opciones de arranque ===== * 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'') ===== Particionado ===== * 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'' ===== Sanidad de claves y seguridad de login ===== * 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. ==== Hacer cambios también en: ==== * Diabilitar acceso remoto root en ''/etc/ftpusers'' * Instalar y configurar sudo para tareas de root. * Configurar ''/etc/sudoers'' ===== Otras cosas a asegurar localmente ===== * 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. ===== Limitar acceso por red ===== * 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). ===== Políticas ===== * 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 [[http://www.debian.org/doc/manuals/securing-debian-howto/|Securing Debian Manual]]