El proceso de fortalecimiento es manejado paso a paso

Un procedimiento siempre es útil, si le permite ver el proceso completo de fortalecimiento y le permita tomar desiciones. Una posibles aproximación para este procedimiento en Debian 2.2.GNU/linux es mostrado abajo. Este es un proceso post de instalación para una revición de la lista de medidas a ser tomadas, paso a paso, durante la configuración. vea .también este procedimiento está (por el momento) más orientado hacia el fortalecimiento de servicios del sistema de redes. Haga una instalación del sistema (considere la información en este howto acerca de las particiones). Después que la instalación de base sea instalada, entre a la instalación por defecto , no seleccione paquetes de tareas, si no seleccione shadow passwords. Vaya através de dselect y remueva lo que no es necesario, si no selecciono paquetes antesv de ser (I)instalados. Deje la menor cantidad de programas necesarios en el servidor. Actualice todo el software desde los utimos paquetes disponibles en security.debian.org como se expuso previamente en . implemente las sugerencias presentadas en este manual , considerando las cuotas del usuario, definiciones de login y lilo. Para hacer un fortalecimiento del servicio haga una lista de servicios activos actualmente en el sistema.

$ ps -aux $ netstat -pn -l -A inet # /usr/sbin/lsof -i | grep LISTEN
Necesitará instalar `lsof-2.2` para que el tercer comando funcione (corralo como root). Debería ser consiente que `lsof` puede transladar la palabra LISTEN a su configuraciones de los locales. Para eliminar los servicios innecesario, primero determine como comienza y de que paquete proviene. Puede hacer esto fácil revisando el programa que escucha en ese puerto, el siguiente ejemplo le dice como hacer uso de estas herramientas y dpkg
#!/bin/sh # ARREGLAME: this is quick and dirty; replace with a more robust script snippet for i in `sudo lsof -i | grep LISTEN | cut -d " " -f 1 |sort -u` ; do pack=`dpkg -S $i |grep bin |cut -f 1 -d : | uniq` echo "Service $i is installed by $pack"; init=`dpkg -L $pack |grep init.d/ ` if [ ! -z "$init" ]; then echo "and is run by $init" fi done
Una vez que usted encuentre servicios no deseados, remueva el paquete (con dpkg --purge) o, si es útil, pero no debería estar habilitado al inicio, use update-rc.d (vea ) para removerlo del sistema de inicio. Para los servicios inetd (lanzado por el super demonio)usted podría revisar los servicios habilitados, por ejemplo con:
$ grep -v "^#" /etc/inetd.conf | sort -u
e incapacitar aquellos que no sean necesarios, comentando la línea que los incluye, removiendo los paquetes o usando update-inetd Si se tienen servicios de cubierta (usando estos /usr/sbin/tcpd) revise que los /etc/hosts.allow y /etc/hosts.deny estén configurados acorde a su política de servicios. Si es posible y dependiendo de cada servicio usted puede tener un límite de servicios, si desea limitar cuando se usa más de una interfaz externa para escuchar solamente cada una de ellas. Por ejemplo, si usted desea el acceso interno a FTP, haga que el demonio escuche en su interfaz de administración solamente, no sobre todas las interfaces (i.e, 0.0.0.0:21). Reinicie la máquina, o cámbiela para entrar a single user y vuelva a multiusuario con
$ init 1 (....) $ init 2
Revise los servicios disponibles actualmente, y si es necesario repita estos pasos de nuevo. Instale, ahora los servicios necesarios, si usted todavia no lo ha hecho, y configurelos apropiadamente. Revise que usuarios son utilizados para correr los servicios deisponibles, por ejemplo con:
$ for i in `/usr/sbin/lsof -i |grep LISTEN |cut -d " " -f 1 |sort -u`; do user=`ps -ef |grep $i |grep -v grep |cut -f 1 -d " "` ; echo "Service $i is running as user $user"; done
y considere cambiar estos servicios para un usuario o grupo dado, que pueden también ser cambiados de directorio raíz, para incrementar la seguridad. Puede hacer esto cambiando el script /etc/init.d donde el servicio se activa. La mayoría de servicios en Debian usan start-stop-daemon de tal forma que puede usar la opción --change-uid y la opción --chroot para configurar estos servicios. Cambiar el directorio raíz de los servicios está más allá del alcance de este documento, pero ofrecemos una palabra de advertencia: Usted podría necesitar poner todos los archivos instalados por el servicio de paquetes usando dpkg -L y los paquetes de los que dependen en el ambiente de cambio de directorio raíz. Repita los pasos anteriores para revisar que los solamente los servicios deseados corran, y que lo hagan como el usuario o grupo desea. Pruebe la instalación de servicios para saber si trabajan como se esperaba. Compruebe el sistema usando un revisor de aseguramiento de vulnerabilidades (como `nessus`) para determinar las vulnerabilidades del sistema (configuraciones erróneas, servicios viejos o innecesarios) Instale medidas de instrusión por red y medidas de intrusión por servidor (como `snort` y `logsentry`). Repita el paso del revisor de red y verifique que los sistemas de detección de intrusiónd trabajan correctamente. para los verdaderos paranoicos, considere también lo siguiente: Agregar capacidades de cortafuegos al sistema, aceptando conexiones entrantes solamente para los servicios ofrecidos y limite conexiones salientes para los autorizados. Vuelva a revisar la instalación con una nueva herramienta de revisión de vulnerabilidades. Revise las conexiones salientes usando un revisor de red desde el sistema a un servidor externo y verificque que las conexiones indeseadas no encuentren vía de salida.

ARREGLAME: Este procedimiento considera el servicio de fortelecimiento, pero no el sistema de fortalecimiento a nivel de usuario, incluir informaciones con respecto al chequeo de permisos del usuario, archivos setuid y paros en el sistema usando el sistema de archivos.

Lista de chequeo de la configuración

Este apéndice reitera puntos de otras secciones de este manual condensando en un formato de lista de chequeo. El propósito es ser un resumen para quienes ya han leído el manual. También hay otras buenas listas de chequeo disponibles, Kurt Seifried tiene una configuración basada en un curso en .

ARREGLAME: esto es basado en v1.4 del manual, y podría necesitar actualizarse. límitar la entrada para un acceso físico. Capacitar la contraseña BIOS incapacitar la entrada floppy/cdrom/... enviar una contraseña LILO o GRUB (/etc/lilo.conf o /boot/grub/menu.lst, respectivamente); revisar que la configuración de los archivos LILO o GRUB sea de lectura-protegida. desaprobar el disco flexible MBR para iniciar por el respaldo de la floppy booting back door by overwriting the MBR (maybe not?) partitura Separe los datos del suscriptor, no sistema de datos, y cambiar rápaidamente los datos del tiempo de recorrido de sus datos de particón. enviar `nosuid,noexec,nodev` montar opciones en /etc/fstab sobre la partición ext2 tal como /tmp. Higiene de las contraseñas y aseguramiento a la entrada Defina una buena contraseña para el administrador Habilite shadowing y MD5 en las contraseñas Instale y use PAM Agregue MD5 para soportar PAM y asegúrese que: (en términos generales) las entradas en el archivo /etc/pam.d/ que permiten acceso a la máquina, tengan en el segundo campo del archivo pam.d definidoc com "requisite" o "required". Cambie /etc/pam.d/login para permitir solamente entradas locales al administrador. también marque las tty: atuorizadas en /etc/security/access.conf y generalmente configurar este archivo para limitar la entrada del administrador tanto como sea posible. Agregue pam_limits.so si usted desea habilitar límites para usuarios. Cambie /etc/pam.d/passwd: especifique un tamaño mínimo de contraseña.(podrían ser 6 caracteres) y habilite md5 agregue un grupo wheel a /etc/group si desea, agregue pam_wheel. para entrar a /etc/pam.d/su para especificar controles por usuario iniciales, use pam_listfile cuando sea apropiado. tenga un archivo /etc/pam.d/othery montarlo con seguridad alta. ponga límites en /etc/security/limits.conf (note que /etc/limits no es usado si usted está utilizando PAM) Restrinja /etc/login.defs; también, si usted habilita MD5 y/o PAM, asegurese que usted hace los cambios carrespondientes ahí también. inhabilite el acceso a root por ftp en /etc/ftpusers inhabilite la entrada vía red al root; use o . (considere instalar `sudo`) Use PAM para hacer cumplir las restrinciones adicionales sobre logins? Otros asuntos de la seguridad local. Cambios de Kernel (ver ) Parches del Kernel (ver ) restrinja los permisos de los archivos de bitácora (/var/log/{last,fail}log, Apache logs) Verifique que la revisión de setuid está habilitada en /etc/checksecurity.conf Considere hacer algunos archivos log append-only y configurar archivos inmutables usando chattr (ext2 filesystems únicamente) Active integridad de archivos (vea ). instale `debsums` Considere remplazar locate con slocate Enviar bitácoras a una impresora local? Queme su configuración sobre un CD de arranque y e inicie la máquina desde este? incapacitar módulos del kernel? Limite el acceso a la red Instale y configure ssh (se sugiere PermitRootLogin No /etc/ssh/sshd_config, PermitEmptyPasswords No; note que hay otras sugerencias en este texto) Considere incapacitar o eliminar in.telnetd Generalmente, inhabilite los servicios gratuitos en /etc/inetd.conf usando `update-inetd --disable` (or inhabilite todo inetd, o use un reemplazo como xinetd or rlinetd) Inhabilite los otros servicios gratuitos de red; mail, ftp, DNS, www, etc no deben estar corriendo si usted no los necesita y monitoréelos regularmente. Para los servicios que necesite, no use solamente los programas comunes, busque más versiones seguras enviadas por Debian (o busque otros recursos). Para cualquier servicio que usted termine usando, asegúrese de entender los riesgos. Monte celdas de directorio raíz distintos para usuarios externos y demonios. Configure firewall y tcpwrappers (i.e. ); revise /etc/hosts.deny en este texto. si usted corre ftp, monte su servidor ftpd y siempre corra chrooted para el directorio raíz del usuario Si usted corre X, inhabilite la autenticación xhost y use ssh a cambio, mejor aún, inhabilite X remoto si usted puede (adicione -nolisten tcp a X desde la línea de comandos y apague XDMCP en /etc/X11/xdm/xdm-config configurando requestPort a 0) Inhabilite el acceso externo a impresoras. Use tunel para sesiones de IMAP o POP a través de SSL o ssh; instale stunnel si usted quiere proporcionar este servicio a usuarios de correo remoto Monte un loghost y configure otras máquinas para enviar logs a ésta (/etc/syslog.conf) asegure BIND, Sendmail, y otros demonios complejos (Configure una celda de cambio de directorio ; corra como non-root pseudo-user) Instale snort o una herramienta de logging similar. Prescinda de NIS y RPC si usted puede (inhabilite portmap). Políticas Eduque a los usuarios acerca de los porque y los como de sus políticas. Cuando usted ha prohibido algo que normalmente está disponible en otros sistemas, suministre documenteción que explique como conseguir resultados similares usando otros medios más seguros. Prohiba el uso de protocolos que usa claves en texto plano (telnet, rsh y friends; ftp, imap, http, ...). Prohiba programas comoVGAlib. Use quotas de disco. manténegase informado sobre asuntos de seguridad Subscríbase a la lista de correo de seguridad Subscríbase a las actualizaciones de seguridad, adicione a /etc/apt/sources.list una entrada (o entradas) a http://security.debian.org/debian-security Además recuerde correr periódicamente apt-get update ; apt-get upgrade (tal vez instalar un cron job?) como se explicó en .

Montar un IDS aislado

Usted puede montar fácilmente una máquina Debian como un Sistema de Detección de Instrusos usando `snort`.

Algunas pautas: Instale una base de sistema Debian y no seleccione paquetes adicionales. Baje e instale (con dpkg) manualmente los paquetes necesarios (vea los paquetes instalados en la lista de abajo). Baje e instale ACID (Analisis Consolado para Instrucciones para la Base de Datos).

ACID es un paquete corrientepara Debian con el `acidlab`, esto ocaciona un grafico WWW interfaz para sacar snort's . Esto pude obtenerse desde , or . You might want to read the .

Usted puede montar este sistema con almenos dos interfaces: una interfaz conectada para un mantenimiento lan (para el acceso a los resultados y para mantener el sistema), una interfaz conectada con ip-direcciónagregada al sistema al segmento de la red para ser analizado .

Para configurar las tarjetas de red sin una ip-dirección usted no puede usar el standard's Debian /etc/network/interfaces desde el ifup y ifdown espere más informaciones que necesita. Usted tiene (simple `ifconfig eth0 up`)

Usted necesita tener puesta instalacióne Debian standard Apache, MySQL y PHP4 por ACID para trabajar. Downloaded paquetes (Nota:las versiones podrian variar dependiendo de cada distribución debian que usted usa, esto es desde Debian woody septiembre 2001):es

ACID-0.9.5b9.tar.gz adduser_3.39_all.deb apache-common_1.3.20-1_i386.deb apache_1.3.20-1_i386.deb debconf_0.9.77_all.deb dialog_0.9a-20010527-1_i386.deb fileutils_4.1-2_i386.deb klogd_1.4.1-2_i386.deb libbz2-1.0_1.0.1-10_i386.deb libc6_2.2.3-6_i386.deb libdb2_2.7.7-8_i386.deb libdbd-mysql-perl_1.2216-2_i386.deb libdbi-perl_1.18-1_i386.deb libexpat1_1.95.1-5_i386.deb libgdbmg1_1.7.3-27_i386.deb libmm11_1.1.3-4_i386.deb libmysqlclient10_3.23.39-3_i386.deb libncurses5_5.2.20010318-2_i386.deb libpcap0_0.6.2-1_i386.deb libpcre3_3.4-1_i386.deb libreadline4_4.2-3_i386.deb libstdc++2.10-glibc2.2_2.95.4-0.010703_i386.deb logrotate_3.5.4-2_i386.deb mime-support_3.11-1_all.deb mysql-client_3.23.39-3_i386.deb mysql-common_3.23.39-3.1_all.deb mysql-server_3.23.39-3_i386.deb perl-base_5.6.1-5_i386.deb perl-modules_5.6.1-5_all.deb perl_5.6.1-5_i386.deb php4-mysql_4.0.6-4_i386.deb php4_4.0.6-1_i386.deb php4_4.0.6-4_i386.deb snort_1.7-9_i386.deb sysklogd_1.4.1-2_i386.deb zlib1g_1.1.3-15_i386.deb

Installed packages (dpkg -l):

ii adduser 3.39 ii ae 962-26 ii apache 1.3.20-1 ii apache-common 1.3.20-1 ii apt 0.3.19 ii base-config 0.33.2 ii base-files 2.2.0 ii base-passwd 3.1.10 ii bash 2.03-6 ii bsdutils 2.10f-5.1 ii console-data 1999.08.29-11. ii console-tools 0.2.3-10.3 ii console-tools- 0.2.3-10.3 ii cron 3.0pl1-57.2 ii debconf 0.9.77 ii debianutils 1.13.3 ii dialog 0.9a-20010527- ii diff 2.7-21 ii dpkg 1.6.15 ii e2fsprogs 1.18-3.0 ii elvis-tiny 1.4-11 ii fbset 2.1-6 ii fdflush 1.0.1-5 ii fdutils 5.3-3 ii fileutils 4.1-2 ii findutils 4.1-40 ii ftp 0.10-3.1 ii gettext-base 0.10.35-13 ii grep 2.4.2-1 ii gzip 1.2.4-33 ii hostname 2.07 ii isapnptools 1.21-2 ii joe 2.8-15.2 ii klogd 1.4.1-2 ii ldso 1.9.11-9 ii libbz2-1.0 1.0.1-10 ii libc6 2.2.3-6 ii libdb2 2.7.7-8 ii libdbd-mysql-p 1.2216-2 ii libdbi-perl 1.18-1 ii libexpat1 1.95.1-5 ii libgdbmg1 1.7.3-27 ii libmm11 1.1.3-4 ii libmysqlclient 3.23.39-3 ii libncurses5 5.2.20010318-2 ii libnewt0 0.50-7 ii libpam-modules 0.72-9 ii libpam-runtime 0.72-9 ii libpam0g 0.72-9 ii libpcap0 0.6.2-1 ii libpcre3 3.4-1 ii libpopt0 1.4-1.1 ii libreadline4 4.2-3 ii libssl09 0.9.4-5 ii libstdc++2.10 2.95.2-13 ii libstdc++2.10- 2.95.4-0.01070 ii libwrap0 7.6-4 ii lilo 21.4.3-2 ii locales 2.1.3-18 ii login 19990827-20 ii makedev 2.3.1-46.2 ii mawk 1.3.3-5 ii mbr 1.1.2-1 ii mime-support 3.11-1 ii modutils 2.3.11-13.1 ii mount 2.10f-5.1 ii mysql-client 3.23.39-3 ii mysql-common 3.23.39-3.1 ii mysql-server 3.23.39-3 ii ncurses-base 5.0-6.0potato1 ii ncurses-bin 5.0-6.0potato1 ii netbase 3.18-4 ii passwd 19990827-20 ii pciutils 2.1.2-2 ii perl 5.6.1-5 ii perl-base 5.6.1-5 ii perl-modules 5.6.1-5 ii php4 4.0.6-4 ii php4-mysql 4.0.6-4 ii ppp 2.3.11-1.4 ii pppconfig 2.0.5 ii procps 2.0.6-5 ii psmisc 19-2 ii pump 0.7.3-2 ii sed 3.02-5 ii setserial 2.17-16 ii shellutils 2.0-7 ii slang1 1.3.9-1 ii snort 1.7-9 ii ssh 1.2.3-9.3 ii sysklogd 1.4.1-2 ii syslinux 1.48-2 ii sysvinit 2.78-4 ii tar 1.13.17-2 ii tasksel 1.0-10 ii tcpd 7.6-4 ii telnet 0.16-4potato.1 ii textutils 2.0-2 ii update 2.11-1 ii util-linux 2.10f-5.1 ii zlib1g 1.1.3-15

FIXME: !!!!! Falta mucho aqui !!!!! ¿Dónde esta lo demás?

Security update protected by a firewall FIXME: To be translated ...