lunes, 28 de octubre de 2013

Incrementar la seguridad de tu servidor (Segunda parte)

Hola de nuevo,

después de la primera parte en la que hablamos de cómo conseguir que root no pudiera entrar en nuestro servidor por SSH, vamos con la segunda parte en la que aprenderemos a configurar el firewall que viene integrado en el kernel de linux, hablamos de iptables.

Por defecto una instalación de Linux es bastante segura, pero aún así siempre es mejor configurar el firewall para que sólo tengamos abiertos los puertos que queremos, aunque haya programas escuchando en más puertos.

Esto se hace entrando por SSH, luego obteniendo permisos de root y ejecutando el siguiente script que explicaré paso a paso:



De la línea 5 a la 8 estamos diciendo nuestra política por defecto, en concreto decimos que los paquetes entrantes (INPUT) y que pasen por nuestra máquina en dirección a otra (FORWARD) sean rechazados (DROP), y que los paquetes salientes de nuestra máquina (OUTPUT) sean aceptados (ACCEPT)

De la línea 13 a la 15 lo que hacemos es borrar cualquier regla que pudiera estar definida con anterioridad con la opción -F.

En la línea 18 estamos diciendo que cualquier paquete entrante que venga relacionado con una conexión previamente establecida sea aceptado.

En la línea 19 estamos aceptando cualquier paquete que vaya destinado a la interfaz local para que los programas locales se puedan comunicar entre si.

En la línea 22 estamos aceptando los paquetes ICMP de tipo ECHO (8), es decir, estamos aceptando paquetes que nos envíe el programa PING que sirve para ver si nuestro servidor está funcionando. Si no hacemos esto, OVH pensará que nuestro servidor ha sufrido un problema y nos abrirán un ticket de reparación automático. Además, siempre es mejor que nuestro servidor responda a los PING. En la línea 23 estamos configurando que nuestros paquetes de respuesta al PING de tipo ECHO REPLY (tipo 0) puedan salir (OUTPUT) de nuestro servidor, esto no haría falta ya que permitimos por defecto cualquier paquete saliente, pero por si acaso algún día cambiamos nuestra política por defecto no está de más incluirlo.

En la línea 24 estamos aceptando paquetes que vayan al puerto de SSH, el puerto 22 por defecto.

En la línea 28 estamos aceptado paquetes destinados al puerto 80 (HTTP) , suponiendo que nuestro servidor vaya a actuar como servidor web, en caso contrario, es mejor quitar esta línea.

De la línea 32 a la 34 estamos aceptando paquetes para el servicio FTP, puertos 21 (FTP) y 20 (FTP-DATA), así como los puertos del 40110 al 40210 cuando sea una conexión pasiva, estos últimos puertos debemos configurarlos en nuestro servidor de FTP.  Si nuestro servidor no va a actuar como servidor FTP es mejor quitar estas tres líneas.

Una vez hayamos ejecutado este script ya estariamos protegidos mediante el firewall, sin embargo, si apagáramos y encendiéramos el servidor todas las reglas se perderían, para evitar esto tenemos muchas maneras de hacerlo, la que yo hice fue la siguiente:

Crear un script en "/etc/network/if-post-down.d/iptablessave" que guarde las reglas al apagar la máquina:




Y creamos un script que cargue las reglas previamente guardadas en "/etc/network/if-pre-up.d/iptablesload"



Y con esto ya tendríamos el firewall de nuestro servidor finalizado.

Tenéis más información sobre todo esto aquí. Y también tenéis la documentación oficial de iptables aquí.

En la siguiente entrega veremos cómo seguir configurando nuestro servidor para conseguir un poco más de seguridad.
Saludos y hasta pronto.

No hay comentarios:

Publicar un comentario