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.

Tabla de contenidos

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, para lo que deberemos estar conectados vía SSH.

$ ssh-copy-id -i keyname [email protected]

Y la registramos en el servidor remoto utilizando:

$ssh-add keyname

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.

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 unicamente 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.

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

How to Monitor User Activity with psacct or acct Tools


Admin

Becommerce.es es una colección de mis notas a título personal, use at your own risk.

0 comentarios

Deja un comentario