Вы находитесь на странице: 1из 14

aso 1 – Instalación de Iptables Firewall de Linux

1. Instalación de Iptables

Iptables viene preinstalado en casi todas las distribuciones de Linux. Pero si no lo


tienes instalado en el sistema Ubuntu / Debian, usa:

sudo apt-get update


sudo apt-get install iptables

2. Comprobación del estado actual de los iptables

Con este comando, puede comprobar el estado de su configuración actual de


Iptables. Aquí se utiliza la opción -L para listar todas las reglas y la opción -v es para
una lista más tediosa. Tenga en cuenta que estas opciones distinguen entre
mayúsculas y minúsculas.

sudo iptables -L -v

Ejemplo:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target prot opt in out source
destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target prot opt in out source
destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target prot opt in out source
destination

Esta es la salida del comando anterior. Aquí, las tres cadenas se establecen en la
política ACCEPT predeterminada. Actualmente no hay reglas para ninguna de las
cadenas.

Para hacer más práctico este tutorial de Iptables, modificaremos la


cadena INPUT para filtrar el tráfico entrante.

Paso 2 – Definición de reglas de cadena


Definir una regla significa añadirla a la lista (cadena). Aquí está el comando Iptables
formateado con opciones regulares. No tenemos que especificar todos ellos.

sudo iptables -A -i -p -s --dport -j

Aquí -A significa añadir. La cadena se refiere a la cadena en la que queremos añadir


nuestras reglas. Interface es la interfaz de red en la que se desea filtrar el
tráfico. Protocol se refiere al protocolo de la red de los paquetes que desea filtrar.
También puede especificar el puerto, no el del puerto en el que desea filtrar el tráfico.

Para obtener información más detallada sobre el comando Iptables y sus opciones,
puede consultar la página principal de Iptables.

1. Habilitar el tráfico en localhost

Queremos que todas las comunicaciones entre aplicaciones y bases de datos en el


servidor continúen como de costumbre.

sudo iptables -A INPUT -i lo -j ACCEPT

Ejemplo:

Chain INPUT (policy ACCEPT 7 packets, 488 bytes)


pkts bytes target prot opt in out source
destination
0 0 ACCEPT all -- lo any anywhere
anywhere

-A se utiliza una opción para añadir la regla a la cadena INPUT, aceptar todas las
conexiones en la interfaz lo. lo significa la interfaz de loopback. Se utiliza para todas
las comunicaciones en el localhost, como las comunicaciones entre una base de datos
y una aplicación web en la misma máquina.

2. Habilitación de conexiones en el puerto HTTP, SSH y SSL

Si queremos que nuestras conexiones regulares HTTP (puerto 80), https (puerto 443),
ssh (puerto 22) continúen como de costumbre. Introduce los siguientes comandos
para habilitarlos. En los comandos siguientes, hemos especificado el protocolo con la
opción -p y el puerto correspondiente para cada protocolo con la opción -dport
(puerto de destino).

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT


sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Ahora se aceptarán todas las conexiones de protocolo TCP con puertos especificados.

3. Filtrado de paquetes basados en la fuente

Si desea aceptar o rechazar paquetes basados en la dirección IP de origen o en el


intervalo de direcciones IP, puede especificarlo con la opción -s. Por ejemplo, para
aceptar paquetes desde la dirección 192.168.1.3 –

sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

Puede eliminar paquetes de una dirección IP con un comando similar con la


opción DROP.

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

Si desea eliminar paquetes de un rango de direcciones IP, debe utilizar el


módulo Iprange con la opción -m y especificar el intervalo de direcciones IP con -src-
range.

sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-


192.168.1.200 -j DROP

4. Eliminar el resto del tráfico

Nota: Es importante eliminar el resto del tráfico después de definir las reglas, ya que
impide el acceso no autorizado a un servidor desde otros puertos abiertos.

sudo iptables -A INPUT -j DROP

Este comando descarta todo el tráfico entrante distinto de los puertos mencionados
en los comandos anteriores. Puede comprobar su conjunto de reglas ahora con:

sudo iptables -L -v

5. Eliminación de reglas

Si desea eliminar todas las reglas y comenzar con una pizarra limpia, puede utilizar el
comando flush.

sudo iptables -F
Este comando borra todas las reglas actuales. Si deseas eliminar una regla específica,
puede hacerlo con la opción -D. En primer lugar, liste todas las reglas con números
introduciendo el comando siguiente:

sudo iptables -L --line-numbers

A continuación, obtendrá una lista de reglas con números.

Chain INPUT (policy ACCEPT)


num target prot opt source destination
1 ACCEPT all -- 192.168.0.4 anywhere
2 ACCEPT tcp -- anywhere anywhere
tcp dpt:https
3 ACCEPT tcp -- anywhere anywhere
tcp dpt:http
4 ACCEPT tcp -- anywhere anywhere
tcp dpt:ssh

Para eliminar una regla, especifique el número en la lista y la cadena de la regla. En


nuestro caso, la cadena INPUT y el número 3.

sudo iptables -D INPUT 3

Paso 3 – Cambios persistentes

Las reglas de Iptables que hemos creado se guardan en la memoria. Eso significa que
tenemos que redefinirlos en el reinicio. Para que estos cambios sean persistentes
después del reinicio, utilice el siguiente comando en los sistemas Ubuntu / Debian:

sudo /sbin/iptables-save

Este comando guarda las reglas actuales en el archivo de configuración del sistema
que se utiliza para reconfigurar las tablas en el momento del reinicio. Debe ejecutar
este comando cada vez que realice cambios en las reglas. Para desactivar este
cortafuegos, simplemente limpie todas las reglas y haga que los cambios sean
persistentes.

sudo iptables -F
sudo /sbin/iptables-save

Conclusión

En este tutorial de Iptables, hemos utilizado el firewall de Iptables Linux para permitir
solamente tráfico en puertos específicos. También nos hemos asegurado de que
nuestras reglas se guardarán después del reinicio. Este firewall de Linux eliminará los
paquetes no deseados, pero hay una advertencia aquí que Iptables puede gobernar
solo el tráfico de ipv4. Si su casilla VPS ha habilitado la red ipv6, debe establecer
diferentes reglas para ese tráfico con ip6tables

aso 1 – Instalación de Iptables Firewall de Linux


1. Instalación de Iptables

Iptables viene preinstalado en casi todas las distribuciones de Linux. Pero si no lo


tienes instalado en el sistema Ubuntu / Debian, usa:

sudo apt-get update


sudo apt-get install iptables

2. Comprobación del estado actual de los iptables

Con este comando, puede comprobar el estado de su configuración actual de


Iptables. Aquí se utiliza la opción -L para listar todas las reglas y la opción -v es para
una lista más tediosa. Tenga en cuenta que estas opciones distinguen entre
mayúsculas y minúsculas.

sudo iptables -L -v

Ejemplo:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target prot opt in out source
destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target prot opt in out source
destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target prot opt in out source
destination

Esta es la salida del comando anterior. Aquí, las tres cadenas se establecen en la
política ACCEPT predeterminada. Actualmente no hay reglas para ninguna de las
cadenas.
Para hacer más práctico este tutorial de Iptables, modificaremos la
cadena INPUT para filtrar el tráfico entrante.

Paso 2 – Definición de reglas de cadena


Definir una regla significa añadirla a la lista (cadena). Aquí está el comando Iptables
formateado con opciones regulares. No tenemos que especificar todos ellos.

sudo iptables -A -i -p -s --dport -j

Aquí -A significa añadir. La cadena se refiere a la cadena en la que queremos añadir


nuestras reglas. Interface es la interfaz de red en la que se desea filtrar el
tráfico. Protocol se refiere al protocolo de la red de los paquetes que desea filtrar.
También puede especificar el puerto, no el del puerto en el que desea filtrar el tráfico.

Para obtener información más detallada sobre el comando Iptables y sus opciones,
puede consultar la página principal de Iptables.

1. Habilitar el tráfico en localhost

Queremos que todas las comunicaciones entre aplicaciones y bases de datos en el


servidor continúen como de costumbre.

sudo iptables -A INPUT -i lo -j ACCEPT

Ejemplo:

Chain INPUT (policy ACCEPT 7 packets, 488 bytes)


pkts bytes target prot opt in out source
destination
0 0 ACCEPT all -- lo any anywhere
anywhere

-A se utiliza una opción para añadir la regla a la cadena INPUT, aceptar todas las
conexiones en la interfaz lo. lo significa la interfaz de loopback. Se utiliza para todas
las comunicaciones en el localhost, como las comunicaciones entre una base de datos
y una aplicación web en la misma máquina.

2. Habilitación de conexiones en el puerto HTTP, SSH y SSL

Si queremos que nuestras conexiones regulares HTTP (puerto 80), https (puerto 443),
ssh (puerto 22) continúen como de costumbre. Introduce los siguientes comandos
para habilitarlos. En los comandos siguientes, hemos especificado el protocolo con la
opción -p y el puerto correspondiente para cada protocolo con la opción -dport
(puerto de destino).

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT


sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Ahora se aceptarán todas las conexiones de protocolo TCP con puertos especificados.

3. Filtrado de paquetes basados en la fuente

Si desea aceptar o rechazar paquetes basados en la dirección IP de origen o en el


intervalo de direcciones IP, puede especificarlo con la opción -s. Por ejemplo, para
aceptar paquetes desde la dirección 192.168.1.3 –

sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

Puede eliminar paquetes de una dirección IP con un comando similar con la


opción DROP.

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

Si desea eliminar paquetes de un rango de direcciones IP, debe utilizar el


módulo Iprange con la opción -m y especificar el intervalo de direcciones IP con -src-
range.

sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-


192.168.1.200 -j DROP

4. Eliminar el resto del tráfico

Nota: Es importante eliminar el resto del tráfico después de definir las reglas, ya que
impide el acceso no autorizado a un servidor desde otros puertos abiertos.

sudo iptables -A INPUT -j DROP

Este comando descarta todo el tráfico entrante distinto de los puertos mencionados
en los comandos anteriores. Puede comprobar su conjunto de reglas ahora con:

sudo iptables -L -v

5. Eliminación de reglas
Si desea eliminar todas las reglas y comenzar con una pizarra limpia, puede utilizar el
comando flush.

sudo iptables -F

Este comando borra todas las reglas actuales. Si deseas eliminar una regla específica,
puede hacerlo con la opción -D. En primer lugar, liste todas las reglas con números
introduciendo el comando siguiente:

sudo iptables -L --line-numbers

A continuación, obtendrá una lista de reglas con números.

Chain INPUT (policy ACCEPT)


num target prot opt source destination
1 ACCEPT all -- 192.168.0.4 anywhere
2 ACCEPT tcp -- anywhere anywhere
tcp dpt:https
3 ACCEPT tcp -- anywhere anywhere
tcp dpt:http
4 ACCEPT tcp -- anywhere anywhere
tcp dpt:ssh

Para eliminar una regla, especifique el número en la lista y la cadena de la regla. En


nuestro caso, la cadena INPUT y el número 3.

sudo iptables -D INPUT 3

Paso 3 – Cambios persistentes

Las reglas de Iptables que hemos creado se guardan en la memoria. Eso significa que
tenemos que redefinirlos en el reinicio. Para que estos cambios sean persistentes
después del reinicio, utilice el siguiente comando en los sistemas Ubuntu / Debian:

sudo /sbin/iptables-save

Este comando guarda las reglas actuales en el archivo de configuración del sistema
que se utiliza para reconfigurar las tablas en el momento del reinicio. Debe ejecutar
este comando cada vez que realice cambios en las reglas. Para desactivar este
cortafuegos, simplemente limpie todas las reglas y haga que los cambios sean
persistentes.

sudo iptables -F
sudo /sbin/iptables-save
Conclusión

En este tutorial de Iptables, hemos utilizado el firewall de Iptables Linux para permitir
solamente tráfico en puertos específicos. También nos hemos asegurado de que
nuestras reglas se guardarán después del reinicio. Este firewall de Linux eliminará los
paquetes no deseados, pero hay una advertencia aquí que Iptables puede gobernar
solo el tráfico de ipv4. Si su casilla VPS ha habilitado la red ipv6, debe establecer
diferentes reglas para ese tráfico con ip6tables

Para Iniciar/Parar/Reiniciar Iptables


debemos ejecutar estos comandos:
 sudo service iptables start
 sudo service iptables stop
 sudo service iptables restart

Para aplicar una regla que filtre un


determinado puerto, debemos ejecutar:
 iptables -A INPUT -p tcp –sport 22 22 → crea una regla para el
puerto de origen tcp 2222

Para bloquear el tráfico procedente de una


determinada IP, debemos ejecutar:
 iptables -A INPUT -p tcp -m iprange –src-range 192.168.1.13-
192.168.2.19 (ejemplo de IP)

También podriamos bloquear por MAC con


la condición –mac-source.
 iptables -A INPUT -m mac –mac-source 00:00:00:00:00:01

Una vez ejecutadas las reglas que queramos aplicar, debemos guardarlas
tecleando sudo service iptables save
Ver el estado del firewall
 iptables -L -n -v

El parámetro L muestra las líneas abiertas. V permite recibir más


información sobre las conexiones y N nos devuelve las direcciones IP y sus
correspondientes puertos sin pasar por un servidor DNS.

Eliminar las reglas existentes


Para borrar toda la configuración del firewall para volver a configurarlo de
nuevo debemos teclear:

 iptables -F

Permitir conexiones entrantes


Teclearemos los siguientes parámetros:

 iptables -A INPUT -i [interface] -p [protocolo] –dport [puerto] -m


state –state NEW,ESTABLISHED -j ACCEPT

-i: debemos configurar la interfaz, por ejemplo, eth0. Esto es útil en caso
de tener varias tarjetas de red, si tenemos sólo una, no tenemos por qué
especificar este parámetro.
-p: protocolo. Debemos especificar si el protocolo será TCP o UDP.
–dport: el puerto que queremos permitir, por ejemplo, en caso de HTTP
sería el 80.
Un ejemplo para permitir las conexiones entrantes desde páginas web:

 iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state


NEW,ESTABLISHED -j ACCEPT

Permitir las conexiones salientes


 iptables -A OUTPUT -o [interfaz] -p [protocolo] –sport [puerto] -m
state –state ESTABLISHED -j ACCEPT
-o: debemos configurar la interfaz, por ejemplo, eth0, al igual que en el
caso anterior.
-p: protocolo. Debemos especificar si el protocolo será TCP o UDP.
–sport: el puerto que queremos permitir, por ejemplo, en caso de HTTPS
sería el 443.
Un ejemplo para permitir el tráfico saliente hacia páginas web:

 iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state


ESTABLISHED -j ACCEPT

Permitir los paquetes ICMP


Por defecto, el ping está deshabilitado. Debemos habilitarlo manualmente
añadiendo las correspondientes entradas en iptables. Para ello
teclearemos:
Para poder hacer ping a otros servidores:

 iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT

Para permitir recibir solicitudes de ping de otros equipos:

 iptables -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT

Permitir que el tráfico interno salga a


internet
En el caso de tener 2 tarjetas de red (eth0 en local y eth1 conectada a
internet) podemos configurar el firewall para que reenvíe el tráfico de la
red local a través de internet. Para ello escribiremos:

 iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

Bloquear y prevenir ataques DDoS


 iptables -A INPUT -p tcp –dport 80 -m limit –limit 25/minute –limit-
burst 100 -j ACCEPT
Consultar los paquetes rechazados por
iptables
Para saber los paquetes que iptables ha rechazado debemos teclear:

 iptables -N LOGGING

Ejemplos prácticos:
Cómo bloquear las conexiones entrantes por el puerto 1234:

 iptables -A INPUT -p tcp –dport 1234 -j DROP


 iptables -A INPUT -i eth1 -p tcp –dport 80 -j DROP → bloquea en la
interfaz eth1

Bloquear una dirección IP:

 iptables -A INPUT -s 192.168.0.0/24 -j DROP

Bloquear una dirección IP de salida:

 iptables -A OUTPUT -d 75.126.153.206 -j DROP

También podemos bloquear una url, por ejemplo, facebook:

 iptables -A OUTPUT -p tcp -d www.facebook.com -j DROP

Bloquear el tráfico desde una direccion MAC:

 iptables -A INPUT -m mac –mac-source 00:0F:EA:91:04:08 -j DROP

Bloquear peticiones ping:

 iptables -A INPUT -p icmp –icmp-type echo-request -j DROP

UFW (Uncomplicated Firewall) es una herramienta de configuración de


firewall para Ubuntu desde la consola, desarrollado para facilitar la
configuración del firewall Iptables. Ufw proporciona una manera fácil de
crear un firewall basado en host IPv4 o IPv6.
Lo primero que debemos hacer es instalar ufw desde apt-get con:

 sudo apt-get install ufw

Ahora ejecutamos el firewall tecleando sudo ufw enable. Para parar el


firewall, teclearemos sudo ufw disable, y para reiniciarlo, primero lo
pararemos y a continuación lo volveremos a arrancar con los comandos
especificados.
Una vez tengamos el firewall funcionando, ya podemos comenzar a
establecer reglas en su funcionamiento. Para aplicar una regla que permita
por defecto todo el tráfico, tecleamos:

 sudo ufw default allow

Por el contrario, para bloquear todo el tráfico, teclearemos:

 sudo ufw default deny

Para aplicar reglas a determinados puertos, lo haremos mediante el


comando:

 sudo ufw allow\deny [puerto]/[protocolo]

Ejemplo:

 sudo ufw allow 1234/tcp (permite las conexiones del puerto 1234
en tcp)
 sudo ufw deny 4321/udp (bloquea las conexiones del puerto 4321
en udp)

Existe un archivo que contiene más reglas predefinidas en la


ruta /etc/ufw/before.rulesdonde, por ejemplo, podemos permitir o
bloquear el ping externo. Para ello, pondremos una # delante de la linea -A
ufw-before-input -p icmp –icmp-type echo-request -j ACCEPT
Podemos consultar las reglas del firewall desde un terminal
tecleando sudo ufw status
Como podemos ver, con UFW es bastante sencillo gestionar a nivel ipv4 e
ipv6 nuestro firewall iptables. Todo ello podemos gestionarlo desde un
terminal sin necesidad de disponer de una interfaz gráfica, pero aún
podemos facilitarlo más con otra aplicación, llamada gufw, que es una
interfaz gráfica para ufw que simplifica aún más su uso.
Para instalar gufw debemos escribir en un terminal sudo apt-get install
gufw
Una vez instalado, lo ejecutamos escribiendo gufw o buscándolo en el
panel de aplicaciones.
La primera ventana que nos muestra el programa nos permite activar y
desactivar el firewall, establecer reglas por defecto para el tráfico entrante
y saliente (permitir, rechazar y denegar), y, en la parte inferior, crear reglas.

Вам также может понравиться