Cómo aumentar la seguridad del servidor
Servidor

Cómo aumentar la seguridad del servidor

05 Feb, 2016 • 6 min de lectura

Esta entrada no pretende ser una guía exhaustiva de seguridad, hay diferentes modos de proteger el servidor.

Ubuntu ya incorpora algunos como el Iptables  o el logado con claves SSH, cómodo y seguro, vamos a ver algunos detalles.

Instalación claves SSH

La operativa de las claves es la siguiente, generamos un set en local con el siguiente comando:

$ ssh-keygen -t rsa

Después la copiamos al servidor en cuestión con el comando ssh-copy-id, con el siguiente comando se proporciona el acceso SSH para poder depositar el fichero público.

$ ssh-copy-id -i \~/.ssh/keyname.pub [email protected]

Y la registramos en el servidor remoto utilizando:

$ssh-add keyname.pub

Si todo ha ido correcto podremos desconectarnos del servidor remoto, y al intentar conectar de nuevo, no será necesario introducir la contraseña, ya que estaremos utilizando el par de llaves con una seguridad más elevada que la de la contraseña que usábamos.


Puedes reforzar la seguridad deshabilitando el acceso por contraseña en /etc/ssh/sshd_config :

PermitRootLogin prohibit-password
PasswordAuthentication no

y reiniciando el servicio SSH.

Instalación UFW firewall

Iptables sirve para controlar los puertos del servidor, siempre he encontrado el uso y mantenimiento del iptables algo complicadillo, resulta más sencillo el uso de Documentación de UFW, compárese estos ejemplos para realizar la misma acción (Ojo antes de habilitar el ufw asegurarse de hacer allow 22 o SSH):

sudo ufw allow 22/tcp
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

En el primero ufw ya maneja la creación de la regla y dónde añadirla. A continuación algunos comandos para usar el UFW(mi opción):

sudo apt-get install ufw

sudo ufw default deny incoming   #por defecto

sudo ufw default deny incoming    #por defecto

sudo ufw default deny outgoing     #lo contrario de lo anterior y siendo más restrictivos podemos luego precisar qué abrir.

sudo ufw allow ssh  #por supuesto, de otro modo nos quedaríamos sin poder volver a entrar :)

sudo ufw allow www

sudo ufw allow ftp

Y para borrar reglas:

sudo ufw delete allow ftp

Sólo un pero, si deseamos usarlo con IPV6 deberemos activarlo, para ello, editar el fichero ufw siguiente:

sudo nano /etc/default/ufw

IPV6=yes

Una vez ufw configurado, lo usaremos con los siguientes comandos:

sudo ufw enable

sudo ufw status  #veremos el estado

sudo ufw disable   #pararlo

sudo ufw reset   #resetearlo y comenzar la configuración a partir de la de por defecto

Hasta aquí hemos manejado como logarnos y asegurar los puertos de la máquina, pero no estamos ‘limitando’ que uso se hace de estos puertos, es decir, se podría por fuerza bruta intentar entrar, para evitarlo usaremos fail2ban. Por medio de este sencillo aplicativo se pueden controlar los intentos de login en diferentes medios el servidor y a nivel avanzado permite un alto nivel de personalización permitiendo vigilar diferentes logs de sistema operativo.

Instalación Fail2ban

Gracias a Fail2ban me quité de encima algunas IP chinas que no paraban de llenarme los logs :).

apt-get install fail2ban

Su instalación nos crea una serie de ficheros

/etc/fail2ban/fail2ban.conf (basic settings)

/etc/fail2ban/jail.conf  #configuración de lo que se va a monitorizar, por defecto SSH

/etc/fail2ban/action.d/    #IP sospechosas sin bloquear, de momento.

/etc/fail2ban/filter.d/    #configuración de filtros para detectar los ataques

Por defecto fail2ban usa /etc/fail2ban/jail.conf , es preferible utilizar jail.local:

nano /etc/fail2ban/jail.local

Fragmento de configuración correspondiente a SSH:

[ssh]

enabled = true

port = ssh

filter = sshd

logpath = /var/log/auth.log

maxretry = 2

Cuando el servicio se reinicia se pierden las IP baneadas:

/etc/init.d/fail2ban restart  #ó

sudo service fail2ban restart

Para desbloquear una IP únicamente usar:

iptables -D fail2ban-local -s 55.222.222.22 -j DROP

Aunque también se puede desbloquear usando el cliente de Fail2Ban en lugar de Iptables, antes de la versión v0.8.8:

fail2ban-client getnombreJail actionunban laIP

Y con la versión 0.8.8 y después:

fail2ban-client set nombreJail unbanip laIP

Si no se sabe el Jailname se pueden ver los que hay en:

fail2ban-client status

Al instalarlo la primera vez me ocurrió lo que menciona la documentación sobre el consumo excesivo de python, para ello, aconseja configurarle

ulimit -s 256

Si estamos ante una nueva instalación del servidor, vale la pena valorar la instalación de tripwire  ó aide, estas aplicaciones realizan una ‘observación’ de la configuración inicial, y si esta cambia en un futuro, nos notificaría el cambio.

Antivirus

Si deseamos escanear en busca de virus, rootkits, backdoors y sploits podemos usar rkhunter

rkhunter --check

rkhunter --update

rkhunter --propupd

rkhunter --check

rkhunter --checkall

clamAV, el antivirus, personalmente lo uso únicamente para escanear, no me gusta el servicio en marcha por temas de rendimiento. (Opcional) Deshabilita el inicio automático si no quieres que freshclam se ejecute como demonio en el futuro:

sudo systemctl disable clamav-freshclam.service

sudo freshclam  #actualizarlo

sudo clamscan -r / #escanea toda la máquina mostrando todos los nombres de fichero

clamscan -r --bell -i / #escanear todos los ficheros y mostrar solo afectados

clamscan -r /home #escanear ficheros de usuarios unicamente

clamscan -r --remove /home/USER #Escanea todos los ficheros de usuario y elimina los afectados

 

No hay que dejar de lado la gestión de los Usuarios y sus permisos sobre los directorios, pero es un tema más complejo ya que va a depender bastante del uso del servidor, si tendrá java, o si en el servidor web vamos alojar Magento o Wordpress. Más información sobre la configuración y permisos para ejecutar la web con un usuario con permisos dentro del grupo www-data: http://devdocs.magento.com/guides/v2.1/install-gde/prereq/zip_install.html#mage-owner-about-group

http://devdocs.magento.com/guides/v2.1/install-gde/continue.html

Y los permisos para Magento 2: http://devdocs.magento.com/guides/v2.0/install-gde/prereq/file-sys-perms-over.html

SSL gratuitos

https://letsencrypt.org, ver también notas generales de la instalación en un lamp con letsencrypt.

Lectura extra para ampliar: https://gendersec.tacticaltech.org/wiki/index.php/Linux_security

http://www.tecmint.com/how-to-monitor-user-activity-with-psacct-or-acct-tools/

Categorías: Servidor
Etiquetas: WordPress