UFW- Securizando servicios de servidor WEB

Configuración del Firewall en linux UFW

Mediante el comando ufw podemos configurar el firewall de Linux de forma sencilla. Lo primero que debemos de hacer es ver si esta activo o no.

sudo ufw status

Esto nos mostrará la lista de puertos, o en su defecto si esta inactivo. El hecho de estar inactivo supone que tenemos todos los puertos abiertos, lo que es una seria vulnerabilidad.
![[Snag_5bd2428.png]]
Para activarlo, escribimos:

sudo ufw enable

NOTA: Debemos tener en cuenta que si estamos conectados vía SSH por el puerto 22, al activar el firewall puede ser que nos expulse, si anteriormente no hemos abierto el puerto.

Ahora podemos poner, sudo ufw status y nos retornara la configuración actual.

![[Snag_5c08db1.png]]
En este caso, vemos que ya tenemos varios puertos abiertos dado que hemos instalado diferentes servicios.

Lista de puertos comunes.
Algunos de los puertos más importantes de los sistemas Linux suelen estar activados por defecto, aunque en algunos casos esto no se da. Hay que tener en cuenta que mantener SSH en el puerto 22 es considerado un riesgo a nivel de seguridad, por lo que se recomienda cambiarlo.

| Puertos comunes |

21 > FTP
22 > SSH
23 > SFTP
25 > SMTP
43 > WHOIS
53 > Nameservers (sistema DNS)
80 > HTTP (servidor web, ya sea Apache, Nginx u otro)
110 > Protocolo POP utilizado para mail.
111 > rpcbind
143 > Protocolo IMAP utilizado para mail.
443 > HTTP seguro (utilizado por certificados SSL a nivel web, https://)
953 > rndc
993 > IMAP bajo SSL
995 > Protocolo POP con SSL
 
2082 > Panel cPanel
2083 > cPanel con SSL
2086 > Panel WHM
2087 > WHM con SSL
2095 > Webmail
2096 > Webmail con SSL
 
3306 > MySQL
4643 > Virtuosso
9999 > Urchin
 
Panel Plesk > 8443
Panel DirectAdmin > 2222
Panel Webmin > 10000 |
Veamos ahora como abrir o cerrar los puertos según las necesidades de cada servidor.

Una forma sencilla es indicar directamente el nombre del servicio utilizando la opción de allow.

sudo ufw allow ssh

Sin embargo, podemos escribir la regla equivalente especificando el puerto en vez del nombre del servicio. Por ejemplo, este comando funciona como el anterior:

sudo ufw allow 22

Si deseamos ver algo mas de información del estado de los puertos, podemos poner

sudo ufw status verbose

Otra opción si deseamos habilitar varios puertos que estan consecutivos, podemos indicar el rango.

sudo ufw allow 6000:6007 /tcp
sudo ufw allow 6000:6007 /udp

Esto abriría los puertos del 6000 al 6007

Cerrar puertos.

Si deseamos cerrar un puerto que tengamos abierto, podemos cerrarlo con.

sudo ufw deny 80 

Esto cerraría el puerto 80 de http evitando conexiones al servidor.

Habilitar o cerrar puertos con orígenes definidos.

En ocasiones para mayor seguridad queremos abrir los puertos, pero solo para acceder desde una dirección ip concreta, esto lo realizaremos añadiendo la opción from

  sudo ufw allow from 03.0.113.4

De este modo solo daremos acceso al equipo con la ip designada. Aunque lo mas común es determinar el o los puertos concretos que queremos que pueda acceder.

 Por ejemplo, si desea permitir que 203.0.113.4 se conecte al puerto 22 (SSH), utilice este comando:

sudo ufw allow from 203.0.113.4 to any port 22

Por último si estamos en una infraestructura con diferentes subredes, podemos determinar cual de ellas pueden acceder o no. Por ejemplo una subred para un departamento de una empresa en concreto.

sudo ufw allow from 203.0.113.0/24

o si queremos especificar el puerto

sudo ufw allow from 203.0.113.0/24 to any port 22

Por numero de regla

Si utiliza el número de regla para eliminar reglas de firewall, lo primero que le convendrá hacer es obtener una lista de reglas de firewall. El comando “UFW status” tiene una opción para mostrar números junto a cada regla, como se muestra aquí:

sudo ufw status numbered
Numbered Output:Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

Si queremos eliminar la regla 2, que permite las conexiones del puerto 80 (HTTP), podemos especificarlo en un comando “UFW delete”

sudo ufw delete 2

Otra forma es hacerlo sin numerar poniendo directamente el servicio a borrar o el numero de puerto. Por ejemplo: desea eliminar la regla allow http, podría escribir lo siguiente:

sudo ufw delete allow http

También podría especificar la regla mediante allow 80 en vez de hacerlo por nombre de servicio:

sudo ufw delete allow 80

Otros comandos útiles pueden ser:

Si decide que no desea utilizar UFW, puede desactivarlo con este comando:

sudo ufw disable

Si ya configuró reglas de UFW y decide que desea empezar de nuevo, puede utilizar el comando “reset”:

sudo ufw reset