domingo, 27 de enero de 2008

Segurización de un servidor VHCS2 sobre Ubuntu Server 6.06 - Apache 2 / PHP / Postfix / FTP / iptables

Segurización de PHP

Una de las primeras cosas que hacemos para segurizar el servidor, es cambiar el php.ini, que en el caso de esta versión de sistema operativo, se encuentra ubicado en /etc/php4/apache2/php.ini.
Se le agregarán las siguientes entradas:

disable_functions = system, exec, shell_exec, passthru, pcntl_exec, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, popen, pclose, ini_alter, virtual, openlog, escapeshellcmd

allow_url_fopen = Off

register_globals = Off

Se debió quitar de la lista una serie de valores que originalmente estaban, como ser:

putenv: Con este valor, no funciona el Squirrelmail.
set_time_limit: Con este valor, no funciona el Webmail OverLook3.

Finalmente, deberemos reiniciar el servidor web para efectivizar los cambios realizados. Eso, como veremos en general en todos los casos, lo hacemos con /etc/init.d/apache2 stop y /etc/init.d/apache2 start.

Segurización de Apache 2

Se cambió el shell por omisión del usuario dueño de la ejecución de apache 2 (en mi caso es el www-data). El shell era /bin/sh, y ahora se configuró el /usr/sbin/nologin.
Al mismo tiempo, se cambió el directorio del usuario del apache, que por mosión era el /home/www-data, por el /dev/null.
Esos dos cambios se realizaron editando directamente el archivo /etc/passwd, localizando la entrada del usuario www-data, y cambiando sus campos para que queden así:

www-data:x:33:33:www-data:/dev/null:/usr/sbin/nologin

Luego se bajó y subió el servidor apache con el comando /etc/init.d/apache2 stop y /etc/init.d/apache2 start.
Se verificó que las páginas existentes funcionen bien, y con eso tenemos el primero de nuestros procesos de segurización de apache 2 finalizado.

Segurización de SSH - Uso de fail2ban

El sistema fail2ban es famoso por reaccionar ante muchos intentos de login fallidos por parte de una direccion IP en particular, impidiendo que se le proporcione el mismísimo promt del ssh.
Este comando reacciona incorporando reglas de iptables en forma automática.
Para implementarlo en Ubuntu 6.06 (viejo al día de la fecha, pero muy buen servidor), se deberá instalar con el típico comando de la suite apt:

# apt-get install fail2ban

Una vez instalado, se podrá recorrer su configuración verificando el archivo /etc/fail2ban.conf, que entre otras cosas, deberá tener:

[DEFAULT] (esta sección tendrá los valores mínimos necesarios para que fail2ban funcione correctamente)
...
logtargets = /var/log/fail2ban.log (archivo donde se logueará el comportamiento de fail2ban)
maxfailures = 5 (cantidad de intentos de login antes de estar baneado)
bantime = 600 (tiempo que el servidor no permitirá conexiones desde esa dirección IP)
...

[MAIL] (esta sección indicará las configuraciones destinadas a enviar un mail cada vez que se banee una dirección IP)
...
enabled = true
host = mail.firulete.com
port = 25
user = webmaster@firulete
password = firulete01
from = fail2ban@firulete.com
to = webmaster@serverremoto.com
...

Luego de estas configuraciones, sólo tendremos que reinicializar el servicio fail2ban con los comandos /etc/init.d/fail2ban stop y /etc/init.d/fail2ban start.
Podremos verificar que el programa está en ejecución mediante un "ps aux | grep fail2ban", que nos entregará algo del estilo "/usr/bin/python /usr/bin/fail2ban".


En breve estaré agregando las secciones correspondientes a la forma de segurizar el servidor de correo, Postfix, el FTP server, y la forma cómo configurar el sistema iptables2 para que tengamos, aparte de todo, un excelente firewall en nuestro servidor VHCS2.

No hay comentarios: