HARDENING EN LINUX

FTP

Si necesitamos utilizar el servicio FTP en nuestro servidor, debemos tomar una serie acciones para mejorar su seguridad. El primer paso sera descargar el servidor FTP para Linux llamado vsftpd:

Éste servidor de FTP trae incorporado varias características para reforzar nuestro servidor. Una vez instalado el programa, el siguiente paso será crear unas reglas básicas en nuestro firewall. Para el caso de Linux lo reforzaremos en iptables:

Las dos primera reglas que añadimos son para el control de la conexión FTP a través del puerto 21 en la interfaz de red de nuestro servidor. También debemos permitir la entrada a la conexión de la data a través del puerto 20. Utilizamos la siguiente regla para el modo de conexión pasiva:
Una vez creadas las reglas podemos pasar a la configuración del vsftpd. Esto lo realizaremos modificando el archivo vsftpd.conf que encontraremos en el directorio /etc/
En éste archivo encontraremos varias instrucciones que ajustaremos para mejorar la seguridad de nuestro servidor FTP. Configuraremos el servidor en el modo anónimo y verificaremos que no se permitan usuarios locales por defecto:
En el servidor FTP sólo de debe permitir descargar los ficheros que se encuentren en la carpeta FTP configurada, cualquier tipo de comando de escritura debe ser negado:
Habilitaremos la función de logs, para registrar la actividad que se realice en nuestro servidor FTP. También nos aseguraremos de que las conexiones de transferencia se originen del puerto 20:
Configuraremos el servidor FTP para que este sea ejecutado por un usuario dedicado a este servicio y sin otros privilegios:
Añadiremos también un mensaje de bienvenida donde podemos colocar advertencias, reglas o mensajes de información para los clientes que se conecten:
Activaremos también la protección contra ataques de denegación de servicios estableciendo la cantidad máxima de clientes permitidos y la cantidad de conexiones por IP:
Configuraremos el modo en que se ejecutara el servidor FTP, la dirección IP donde se recibirán las solicitudes y el rango de puertos efímeros permitidos a través del modo pasivo:
Al configurar el cliente para IPv4 se debe remover el modo IPv6 que se encuentra activado por defecto:
El servidor FTP también se puede configurar para que soporte SSL y TLS para brindar mayor seguridad al intercambio de ficheros. Para activarlo es necesario compilarlo dentro del vsftpd. Podemos revisar la versión de la siguiente manera: 
Para implementarlo el primer paso es crear un certificado vsftpd.pem utilizando OpenSSL. Lo podemos crear rápidamente utilizando la siguiente instrucción: 
Con el certificado ya creado regresamos nuevamente al archivo de configuración del vsftpd: 
En el archivo de configuración habilitamos el SSL, colocamos la ruta donde se encuentra ubicado el certificado y obligamos a las conexiones de data y de acceso del servidor FTP a ser cifradas con SSL:
Finalmente para terminar, reiniciamos el demonio de vsftpd para que se tomen en cuenta los cambios realizados y ya con esto tener un servidor FTP endurecido.

WEB

Lo primero que haremos sera instalar el servidor web apache que utilizaremos en CentOS. Éste sera el servicio que se encargará de mostrar nuestro sitio web y al cual reforzaremos para mejorar su seguridad:
Lo primero que haremos sera crear un usuario sin privilegios para el servidor web. Este usuario lo configuraremos en el Apache en el archivo httpd.conf:
En Apache existen dos herramientas muy populares que mejoran la seguridad del servidor web. La primera que instalaremos será Mod Security para proteger nuestro sitio contra ataques de fuerza bruta. Simplemente descargaremos el paquete de mod_security y reiniciaremos el servicio de httpd para tome efecto: 
La siguiente herramienta que instalaremos será el Mod Evasive para reforzar contra ataques de fuerza bruta y proteger nuestro servidor web contra ataques de denegación de servicios. Instalamos el paquete de mod_evasive y reiniciaremos el servicio de httpd. Una vez finalizado podemos revisar en los módulos del Apache que ambos programas están siendo ejecutados correctamente.
Luego procedemos a configurar el archivo del host virtual donde establecemos las ruta para el registro de solicitudes al servidor web y de errores que se puedan presentar. También estableceremos un límite al tamaño permitido para las solicitudes:
Finalmente instalaremos un certificado y habilitaremos HTTPS en nuestro servidor web. El primer paso es instalar el módulo SSL para Apache:
El siguiente paso sera crear un certificado y una llave utilizando la herramienta OpenSSL:
Una vez creados, nos iremos al archivo de configuración SSL en Apache y configuraremos la ruta donde se encuentran nuestros ficheros web y el dominio con el puerto 443:
En éste mismo archivo de configuración colocaremos las rutas donde se encuentra la llave y el certificado que creamos anteriormente:
Luego reiniciamos el servicio httpd y podemos ver que nuestro sitio web ahora se puede acceder por HTTPS y tiene instalado un certificado TLS 1.2 que cifra la conexión: