sábado, 21 de enero de 2012

Asegurando Linux/Unix


Sea un servidor o sea un equipo de escritorio a veces con variaciones por distribución, aquí les dejo una guía de como asegurar Linux/Unix (por lo menos aplica para Linux: Debian, ubuntu, RedHat, Centos, etc, sobre Unix: Muchas aplican para oracle-solaris y HP-UX), lo que yo llamo una “Receta mínima de Seguridad", ojo no con esto estoy diciendo que tu maquina esta blindada, pero si esta mas protegida y/o sera mas difícil de penetrar.

 
Es importante recordar que a veces los que usamos Linux (desde el laptop), andamos en la calle, nos conectamos desde sitios con poca seguridad, por eso vale la pena tomarse una hora quizás y aplicar estos pasos y podremos andar en la calle mucho mas tranquilos.

1.- Asegurate de eliminar cuentas de usuarios que no uses (aplica Linux/Unix):
more /etc/shadow (recuerda que esta protegido solo para que sea leído por root).
news, games, gopher, son algunas cuentas que segunel caso pordemos pensar en salir de ellas.

2.- Edad de los passwords (aplica Linux/Unix):
Obliga a los usuarios a cambiar sus claves con regularidad, ejecuta el siguiente comando:
passwd -n 40 -x 60 -w 45 user_instalado (parametrizalo a tu antojo).
Afecta:
Min Change: Mínimo de días en que el password es valido.
Max Change: Máximo de días en que el password es valido.
Warning: A los cuantos días  avisara que debes cambiar la clave.

3.- Desconfigura el usuario root (Aplica Linux/Unix):
No lo uses para conexiones remotas, muchos sistemas tienen un usuario que llama a root (como dice el adagio, si sabes que el login es root y quieres entrar en un sistema sin permiso, la mitad del camino esta hecho).

4.- Configura sudo (aplica Linux/Unix):
El archivo es /etc/sudoers
Para editarlo se usa visudo
Ejemplo: /etc/sudoers
maestro: ALL=(ALL) ALL
maestro es el usuario.

5.- Verifica servicios activos y desactiva los que no uses:
nmap localhost (nos muestra los servicios y el puerto en uso, no esta instalado en todos los linux por defecto, en Unix rara vez)
netstat -an | egrep 'Proto|LISTEN'
Coteja la salida con /etc/services, este te dirá el programa o servicio dueño del puerto que viste con netstat puedes deshabilitar el servicio ejecutando p.ej:
/etc/init.d/sendmail stop (Sobre casi todos los Linux/Unix)

Un archivo a revisar (Todos los Linux/Unix casi todos):
/etc/inetd.conf
Busca el servicio a bloquear:
Ejemplo: telnet, ftp, etc.
Si colocas un "#" delante del servicio lo estarás desactivando. Pero recuerda que necesitas reiniciar el servicio para que funcione:
Nota: Solaris hasta su versión 9 funcionaba de la misma manera, a partir de la versión 10, usas inetadm | grep servicio, ej inetadm | grep telnet, cierras el servicio usando inetadm -d telnet (ejemplo), inetadm -e telnet (abre el servicio).

Este ultimo servicio se termina combinando con la recomendación 6 de nuestra receta mínima de seguridad.

6.- Configura tcp wrapper (aplica Linux/Unix, muchos lo traen instalados)
Esto se basa en configurar un host.allow y/o un host.deny (primero lee host.allow, si no existe o esta desconfigurado se va para host.deny)
Los parámetros dentro del archivo son mas o menos así:
demon.list [client.list options]
daemon.list: Es simplemente el servicio ej: sshd, telnetd, etc
client.list dir ip o nombre del equipo (debes tener un dns o colocados los nombres en /etc/hosts)
Options: Dice si enviá un correo, si usa un archivo cuando accesa, etc.
Un ej sencillo:
host.allow
ftpd: 192.168.1.4

7.- Configura OpenSSh (aplica Linux/Unix):
Yo por lo menos manejo esta configuración:
/etc/ssh/sshd_config
AllowTcpForwarding no
X11Forwarding no
StrictModes yes
IgnoreRhosts yes
HostbasedAuthentication no
RhostsRSAAuthentication no
PermitEmptyPasswords no
Banner /etc/issue

Reinicia el servicio luego de configurado:
/etc/init.d/sshd restart

8.- Comprueba la fuerza de los passwords (aplica Linux/Unix):
Usa ejemplo John the Ripper (recuerda que debes descargarlo)
/usr/sbin/john /etc/shadow

9.- Búsqueda y desactivacion de los setuid y setgid sobre el sistema (aplica Linux/Unix):
find / \( -perm -4000 -o -perm -2000 \) -print

Luego basta con aplicar ejemplo:
chmod 0755 /usr/bin/ejemplo  (setuid por ejemplo)


10.- Actualiza paquetes (Aplica Linux/Unix):
Los paquetes casi siempre en las actualizaciones tienen mejoras de seguridad.


11.- Configura el firewall en tu maquina personal o servidor:
Dependiendo del sistema operativo sea (Linux o Unix), muchos de ellos vienen con un firewall por defecto instalado, configura las reglas que apliquen para tu red, Niega aquellos servicios y o direcciones que no te sean relevantes y habilita un log para ver el comportamiento del firewall.

Unas Recomendaciones para cada persona (sea un sysadmin o un simple usuario final):
Esto es tarea de todos los días:
Entrena a tu personal con talleres y mantenlos actualizados
Entrena a tu grupo técnico en seguridad, asesorate con expertos para que te ayuden a configurar tu servidor.
Inscribete en CERT
Auditorias: Usa servicios como nessus o sara para monitorear el normal desempeño de tu servidor.

Dejanos saber tus comentarios.
Enjoy!!



No hay comentarios:

Publicar un comentario