Un firewall es un filtro que permite/deniega servicios dentro de una red. Ventajas de un firewall:
El firewall de GNU/Linux ya viene integrado dentro del kernel, actualmente se están manejando las reglas de el firewall con iptables el cual ya viene integrado desde la versión del kernel 2.4. El manejo de las reglas para nuestro firewall en ubuntu es por medio de iptables, existe la herramienta ufw (The uncomplicated firewall) que es muy fácil de utilizar que convierte nuestras reglas a iptables. La aplicación ufw viene integrada desde la versión de ubuntu 8.04 LTS. Primero veremos que servicio tenemos en escucha.
root@server1:~# netstat tanp | grep LISTEN tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 4869/dovecot tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 4698/mysqld tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 4869/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4945/apache2 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4850/vsftpd tcp 0 0 192.168.1.243:53 0.0.0.0:* LISTEN 4578/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4578/named tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 4833/master tcp 0 0 0.0.0.0:4025 0.0.0.0:* LISTEN 4768/partimaged tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 4578/named root@server1:~#
Como podemos ver tenemos algunos servicios que están en escucha y en espera de peticiones.
Esta opción configura que nuestro firewall aceptara conexiones de todo tipo es muy inseguro teniendo esta opción activada.
root@server1:~# ufw default allow
Cuando se crea un firewall se recomienda primero bloquear todos los puerto y conexiones para después abrir solamente los que se requieren.
root@server1:~# ufw default deny
Para poder iniciar nuestro firewall solamente que ejecutar:
root@server1:~# ufw enable
También se puede de la siguiente manera:
root@server1:~# /etc/init.d/ufw start
Para detener nuestro firewall:
root@server1:~# ufw disable
También se puede de la siguiente manera:
root@server1:~# /etc/init.d/ufw stop
Y para reiniciar el servicio ufw:
root@server1:~# /etc/init.d/ufw restart
Para poder activar el log de nuestro firewall ejecutamos:
root@server1:~# ufw logging on Logging enabled root@server1:~#
Para poder desactivarlo:
root@server1:~# ufw logging off Logging disabled root@server1:~#
El log de nuestro firewall es guardado dentro del archivo /var/log/messages. Pero para poder ver los últimos sucesos del mismo ejecutamos
root@server1:~# tail -f /var/log/messages Mar 9 12:06:07 server1 kernel: [11316.481777] [UFW BLOCK INPUT]: IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:e0:4d:0b:8d:41:08:00 SRC=192.168.1.213 DST=192.168.1.255 LEN=195 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=631 DPT=631 LEN=175 Mar 9 12:06:08 server1 kernel: [11317.479863] [UFW BLOCK INPUT]: IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:e0:4d:0b:8d:41:08:00 SRC=192.168.1.213 DST=192.168.1.255 LEN=193 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=631 DPT=631 LEN=173
Comenzaremos con la administración de las reglas, todas las reglas estemos activando o bloqueando serán guardadas entro del archivo de configuración /var/lib/ufw/user.rules.
Tenemos el siguiente ejemplo, el servicio el openssh esta siendo ocupado en nuestro servidor y esta en escucha de peticiones por el puerto 59345 y deseamos permitir las conexiones, entonces crearemos la regla de la siguiente manera.
root@server1:~# ufw allow 59345 /tcp Rule added root@server1:~#
Pero tenemos otro ejemplo queremos activar el servicio apache.
root@server1:~# ufw allow http Rule added root@server1:~#
Otro opciones de como habilitar:
root@server1:~# ufw allow from 192.168.1.0/24 proto tcp to any port ftp Rule added root@server1:~#
En esta regla esta permitiendo la conexión al servidor FTP desde el segmento de red 192.168.1.0.
Para poder bloquear puertos en nuestro firewall seria de la siguiente manera.
root@server1:~# ufw deny 4025 /tcp Rule added root@server1:~#
Otros ejemplos:
root@server1:~# ufw deny 139 Rule added root@server1:~# ufw deny 445 Rule added root@server1:~#
Cuando tenemos alguna regla que nos permite conectarnos aun servicio del cual ya no se esta ocupando seria mejor eliminarla para que nuestra seguridad, por ejemplo:
root@server1:~# ufw delete allow http Rule deleted root@server1:~#
Para poder ver el estado del firewall ejecutamos:
root@server1:~# ufw status Firewall loaded To Action From -- ------ ---- 59345:tcp ALLOW Anywhere 21:tcp ALLOW 192.168.1.0/24 4025:tcp DENY Anywhere 139:tcp DENY Anywhere 139:udp DENY Anywhere 445:tcp DENY Anywhere 445:udp DENY Anywhere root@server1:~#
Como podemos ver son nuestra reglas que hemos creado. Pero tenemos otro modo ver estas reglas:
root@server1:~# iptables nL Chain ufwuserinput (1 references) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:59345 ACCEPT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:21 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4025 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:139 DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:139 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:445 DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:445 RETURN all -- 0.0.0.0/0 0.0.0.0/0 Chain ufwuseroutput (1 references) target prot opt source destination RETURN all 0.0.0.0/0 0.0.0.0/0
Para que nuestro firewall inicie cada vez que se apaga la máquina, deberemos modificar dentro del archivo de configuración de nuestro firewall.
root@server1:~# vim /etc/ufw/ufw.conf
Dentro de este archivo solamente hay el parámetro ENABLED tienes que estar en yes para que inicie automáticamente si no esta así tienen que modificarlo.
# /etc/ufw/ufw.conf # # set to yes to start on boot ENABLED=yes
Y con todo esto ya quedo configurado nuestro firewall.