El bastionado o securización de una máquina Linux puede ir mucho más
lejos de lo que en principio voy a explicar aqui, lo que voy a exponer
se podría decir que son los principios básicos de securización en un
entorno de servidor.
En próximas fechas expondré como instalar y configurar tripwire, snort...
Ahora vamos con lo que nos ocupa en este momento, bastionar la máquina de forma básica en 10 pasos
1) Si tenemos instalado sendmail como servidor de correo por
defecto y no lo necesitamos lo mejor que podemos hacer es pararlo con
el comando:
#/etc/init.d/sendmail stop
En caso de no querer ejecutarlo probablemente tampoco queramos
que si la máquina se reinicia se rearranque, con este comando
evitaremos que ello ocurra:
#/sbin/chkconfig --level 345 sendmail off
2) Políticas de cuentas de usuarios y passwords:
Para hacer que las passwords sean válidas durante por ejemplo 90
días y se nos avise con antelación 15 días antes de que va a expirar ,
usaremos el comando:
#chage -M 90 -W 15 -m 20 <login>
La opción -m marca el número de días que tiene que haber entre
cada cambio de password, la opción -I sirve para determinar el número
de días que puede estar una cuenta inactiva.
3) Restricciones en el uso de ssh:
En caso de tener habilitado el ssh, debemos cambiar la directiva
PermitRootLogin?
a no en vez de yes. Esto provoca que el root no pueda conectarse
directamente por ssh a la máquina y nos previene de ataques por fuerza
bruta.
Para denegar el acceso a otros usuarios como al root por ssh directo lo indicaremos en el fichero sshd_config indicando
DenyUsers user1 user2...
El tiempo de login se configura en el parámetro loginGraceTime y
el número máximo de intentos en el parámetro
MaxStartups.
Un detalle importante sería dejar solamente la validación
por el protocolo tipo 2 solamente ya que el tipo 1 es débil.
4) Aseguramos los terminales para que los usuarios no puedan escribirse unos a otros dentro del fichero /etc/profile ponemos:
mesg n
5) Securizamos la consola física:
Cuando entramos a la consola física por defecto tenemos la
posibilidad como usuarios de apagar la máquina o reiniciarla, como no
queremos que esto ocurra cambiamos los ficheros que conceden estos
privilegios.
rm -f /etc/security/console.apps/poweroff
rm -f /etc/security/console.apps/halt
rm -f /etc/security/console.apps/reboot
De esta forma solamente root podrá ejecutarlos. Otra cosa que
debemos cambiar es el fichero /etc/inittab, cambiando esta
línea:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Esto sirve para que no se pueda reiniciar la máquina desde la
consola con Ctrl-Alt-Sup, depués de este cambio ejecutar:
#init Q
6) Cambiar el umask por defecto:
Para cambiarlo añadimos en el fichero /etc/login.defs:
umask 077
7) Si no se va a utilizar el cron, lo mejor es no instalarlo o no arrancarlo.
8) No instalar nunca los servicios de red que empiezan por r..(rhost :-P )
9) Creamos cuotas si es necesario:
Esto se hace añadiendo al fichero en /etc/pam.d la línea:
session required /lib/security/pam_limits.so
esta linea impone las limitaciones que configuremos en el fichero:
/etc/security/limits.conf
10) Cerrar todos los puertos de los servicios que no estemos usando o no necesitemos.
Puede ser muy útil el nmap para ver que puertos tenemos abiertos, desde otra máquina podemos hacer:
Por ejemplo:
nmap -sS <ip de nuestra máquina>
Y ver que pasa.
El nessus tambien os será útil, en otro artículo explico como empezar a trabajar con él.
Y esto es todo por ahora en cuanto al bastionado.
Espero que os sea útil:
elduende@electroduende.org