Notas de Luis

IPtables firewall de linux

Lo primero que podemos hacer es borrar todas las reglas del firewall para aquellos casos donde hayamos cometido errores o queramos empezar desde cero:

DENEGAR O ACEPTAR EL TRÁFICO

Podemos denegar todo el tráfico y luego ir añadiendo reglas que permitan el tráfico que queramos, o bien podemos permitir todo el tráfico y luego añadir reglas que rechacen el que queramos. Vamos a elegir alguna de estas dos políticas con el comando iptables -P, por ejemplo que empiece rechazando todo el tráfico:

Ahora podemos listar todas estas reglas del firewall con este comando:

Y si navegamos vemos que no tenemos internet porque el firewall lo está bloqueando:

Y ahora si queremos permitir el tráfico del firewall, ejecutamos estos otros comandos:

Y ya tendremos otra vez conexión a internet y podremos navegar:

SCRIPT PARA ELIMINAR TRÁFICO E IR PERMITIENDO UNO A UNO

Creamos un script que en principio se encarga de denegar todo el tráfico y luego en dicho script se van contemplando aquel tráfico que queramos permitir:

Si ejecutamos este script volvemos a no tener tráfico:

Sin embargo, podemos crear otro script que haga lo mismo pero que por defecto permita todo el tráfico:

Y volvemos a tener conectividad:

Ahora tenemos 2 scripts, uno para permitir el tráfico y otro para denegarlo:

IR AÑADIENDO REGLAS PARA PERMITIR CIERTO TRÁFICO (desde script restrictivo que limita todo el tráfico)

Tenemos activado el script que deniega todo el tráfico, y ahora podemos ir permitiendo regla a regla; por ejemplo vamos a permitir que haya tráfico ICMP tanto de salida como de entrada con estos comandos:

AÑADIENDO REGLAS AL SCRIPT

Ahora desde un script restrictivo, podemos ir permitiendo tráfico con las reglas, por ejemplo vamos añadir al script que nos permita el tráfico ICMP para hacer ping:

Lo que pasa con esto es que sólo hemos permitido el tráfico de ping, pero nos falta el tráfico DNS, ya que ahora mismo si hacemos un ping a google no podrá resolver:

Para permitir el tráfico DNS en iptables lo hacemos con este comando, donde además también habilitamos la interfaz loopback:

Y ahora si hacemos un ping vemos que ya lo realiza correctamente:

REGULAR TRÁFICO HTTP Y HTTPS NAVEGADOR WEB

Ahora en este punto no tenemos la capacidad de navegar por la web, ya que el firewall lo está bloqueando, por lo que tendremos que añadir nuevas reglas para regularlo, por ejemplo vamos a habilitar el tráfico por el puerto 80:

Y ahora si hacemos un curl a una web http vemos que funciona:

Pero el problema está en que tenemos que habilitar el tráfico https y este se mueve por el puerto 443; por lo que para ello deberemos habilitar el tráfico también por este puerto:

Y ahora ya si podremos hacer un curl a un https://google.es o acceder a él a través del navegador:

BLOQUEAR DIRECCIÓN IP EN FIREWALL IPTABLES

Para bloquear una dirección IP, tendremos que hacerlo así, y ahora si intentamos hacer un ping no vamos a poder:

Aunque también podemos limitar sólo el tráfico por ICMP de esta IP:

BLOQUEAR TRÁFICO DE UN PUERTO CON IPTABLES

Por ejemplo vamos a limitar todo el tráfico por el puerto 22, que es el ssh:

Y si intentamos acceder por ssh desde otro equipo no podremos:

Y podríamos habilitar el tráfico por ssh sólo a una determinada dirección IP; y para ello lo haríamos de esta forma:

Y si accedemos desde esta dirección IP, sí podremos, ya que será la única IP que podrá acceder:

computing/network/iptables_firewall_de_linux.txt · Última modificación: por 127.0.0.1