viernes, 10 de junio de 2011

Hardening Servidores en Debian


En este breve tutorial explicaremos los pasos para fortalecer la Seguridad en nuestros Servidores bajo el Sistema Operativo GNU/Linux Debian.


* Lo primero que debemos hacer es, crear los usuarios que tendrán acceso a los servidores:

#adduser usuario
 

Este proceso se debe realizar para todo los usuarios a crear, tener en cuenta que el comando adduser tiene otras opciones; el cual pueden consultarlas con un man adduser.

* Crear el grupo de administradores “wheel”

#addgroup --system wheel

luego agregamos los usuarios al grupo wheel:

#useradd -m -G wheel usuario
 

o podemos agregarlos manualmente por /etc/group; además debemos editar el id del grupo “wheel” el cual lo cambiaremos por 2000; el comando addgroup tiene muchas opciones, así que seria bueno revisar el man.


Lo que también podemos hacer para evitar que cualquier usuario no agregado al grupo wheel pueda hacer su (obtener privilegios de administrador); es editar el archivo /etc/pam.d/su y buscamos la siguiente linea:

# auth required pam_wheel.so <----- descomentamos esta linea.


* Configurar maximo retries, tiempo máximo de login y Habilitar opción para registrar logins fallidos

Comandos:
vi /etc/login.defs
---En el archivo login.defs se cambian los tiempos de las siguientes lineas:
---Maximos reintentos
---LOGIN_RETRIES 3

---TimeOut Login
---LOGIN_TIMEOUT 30

---Registra lo logins fallidos
---LOG_UNKFAIL_ENAB yes
 

* Bloquear las TTY para no acceder directamente como root

con el editor de texto vi, nos dirigimos a la siguiente ruta /etc/securetty y comentamos todas las consolas; el cual podemos hacer mediante la expresión regular: 1,$s/tty/#tty


* Configuración de SSH

primero que nada procedemos a instalar ssh, mediante aptitude:

#aptitude install ssh
luego de su instalación nos dirigimos al archivo de configuración /etc/ssh/sshd_config y modificamos los siguientes parámetros:

AddressFamily inet ----> deshabilitar ipv6


# Authentication:

LoginGraceTime 30 --->cantidad de segundos en que la pantalla de login estará disponible.

PermitRootLogin no ---> no permite el logueo como root.

StrictModes yes

MaxAuthTries 2 ----> cantidad de veces que podemos equivocarnos en ingresar el usuario y password.

MaxStartups 2 ----> cantidad de conexiones simultanea.

AllowUsers usuario ---> permite el acceso a ciertos usuarios.

AllowGroups wheel ---> permite el acceso solo al grupo wheel.
También podemos modificar el puerto, el cual viene por defecto el 22, y agregar el puerto 22365 <---- (puerto de ejemplo).
También podemos agregar un Banner al ssh, el cual esta en la misma configuración del ssh; solo buscar donde dice Banner y colocar la ruta donde esta el Banner.

NOTA: no es recomendable utilizar los 2 parametros (AllowUsers y AllowGroups)


* Instalar rcconf, para bajar servicios que no sean necesarios.

#aptitude install rcconf  
podemos bajar servicios que no utilicemos como ppp lpr portmap.

* Eliminar paquetes innecesarios para el rendimiento del equipo

#aptitude remove –-purge ppp wget eject lpr info ibritish ipchains nano mtools python tasksel procmail dhcp-client telnet ftp mtr-tiny

* Editar los Wrapper en los archivos /etc/hosts.allow y hosts.deny   

Editaremos primero el archivo hosts.allow y colocaremos algo como esto:

ALL: LOCAL

sshd: x.x.x.x  

esto es un ejemplo, ya seria cuestión de aceptar las IP, dominios a permitir el acceso en una red local o una red LAN.
 

Ahora editamos el hosts.deny y colocaríamos algo como esto:
 

sshd: ALL


* Instalación de Postfix como servidor de correo local

#aptitude install postfix

En plena instalación te solicitara el tipo de configuración, y se seleccionara Internet Site; luego nos dirigimos al archivo de configuración en /etc/postfix/main.cf y hacemos cambio de los parámetros que según sea necesario.

Seria bien importante ya que tenemos configurado el postfix, editar el archivo /etc/aliases y agregar la siguiente linea al final (si es que ya no la tiene)
 

root: miusuario@midominio.com

guardamos, salimos y le damos: newaliases


Para comprobar que nuestro Postfix esta enviando correo, podemos comprobar enviar un correo por la consola, ejecutando el siguiente comando:

echo "correo prueba" | mail -s "prueba" micorreo@dominio.com

Recordar que tienen que tener instalado el paquete: mailutils 


* Una aplicación bien interesante que nos mantiene el sistema limpio es “deborphan”

#aptitude install deborphan

podemos utilizar el deborphan en conjunto con aptitude como se muestra abajo en el ejemplo

ejemplo:

#aptitude purge `deborphan --libdevel` `deborphan --find-config` `deborphan --guess-all`


* Deshabilitando Ctrl-Alt-Del

Esto es muy importante, ya que cualquiera que tenga acceso a la consola puede ejecutar esta opción; bueno lo que haremos es deshabilitarla, nos dirigimos a la siguiente ruta:

#vi /etc/inittab  

y dejamos la siguiente linea comentada:

# What to do when CTRL-ALT-DEL is pressed.
# ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now <------ linea que se comenta.


Podemos agregar esta linea para dar un mensaje cuando utilicen la combinación de teclas Crtl – Alt -Del
ca:12345:ctrlaltdel:/usr/bin/logger -s -p auth.notice -t [INIT] "La combinacion de teclas CRTL ALT DEL esta desactivada"
 
Y reiniciamos el servicio:

#telinit q

* Usuarios con shell interactivos

durante el proceso de instalación se crean diferentes usuarios, el cual podemos verificarlos en /etc/passwd
Entonces observando el archivo, verificamos que existen muchos usuarios todos considerados del sistema y se denotan por tener un user id menor que 1000 y poseen la shell /bin/sh; entonces lo que haremos es evitar que hagan login ya que estos usuarios no serán utilizados de manera interactiva:

#chsh -s /bin/false daemon

y esto para todo los usuarios, claro esta que no sea root, ni la de los usuario. Podemos utilizar esta expresion regular del vi para cambiarlos todos de una vez:

:%s/\/bin\/sh/\/bin\/false/g


* Sincronizar la hora con NTP


En este paso lo que haremos es instalar el paquete de ntpdate.

#aptitude install ntpdate

Luego de haberse instalado, colocamos lo siguiente para sincronizar la hora:

#ntpdate -u ip-servidor-ntp

y nos arrojaría algo como esto:
17 May 07:44:57 ntpdate[13641]: step time server 192.168.0.21 offset 0.628878 sec

Ahora procedemos a instalar el paquete NTP:
#aptitude install ntp

ya instalado, nos dirigimos al archivo de configuración del ntp, que esta en la ruta: /etc/ntp.conf
y modificamos la linea que dice: Server osea la linea 16,
y agregamos la ip del servidor NTP, el cual debería de quedar así:

server 192.168.0.21

* Otras aplicaciones bien interesantes para detectar rootkit, es chkrootkit y rkhunter . La misma se encuentra en los repositorios de Debian, la manera de instalarla es:

# aptitude install chkrootkit
o
# aptitude install rkhunter

para ejecutarlo solo colocamos chkrootkit en la consola y listo, hace un chequeo general, dando resultados.


* Realizar auditoría y/o seguridad del servidor:

Existe una aplicación bien interesante llamada tiger; la cual se encuentra en los repositorios de Debian Squeeze; este aplicativo realiza auditoría del sistema y/o detecta intrusiones no autorizadas.

#aptitude install tiger

Ya instalado, ejecutamos el tiger como root; una opción para que nos muestre la información en html seria así;

#tiger -H -l /home/miusuario/log-tigers


* Proteger los scripts de inicio.
#chmod -R 700 /etc/init.d/* 

* Mensajes de inicio de sesión

Se recomienda editar los /etc/motd y /motd.tail ya que estos archivos muestran información del sistema, cada vez que un usuario establece comunicación con el equipo.

Comandos:
mv /etc/motd /etc/motd.original
touch /etc/motd
 
Nota: esto es una información bien general; pero nos sirve para establecer politicas de seguridad en un sistema GNU/Linux Debian; aunque no comente sobre IPTABLES;es importante también tenerlo instalado.
Y recordemos siempre crear una copia de seguridad de los archivos de configuración que se vayan a editar y así evitar una catástrofe.

Paginas web consultadas: