Si utiliza Linux, tiene muchas opciones para proteger su dispositivo. Viene con iptables, una utilidad de cortafuegos de línea de comandos que ofrece flexibilidad y una protección excelente.
Sin embargo, al tratarse de una utilidad de línea de comandos, requiere una ligera curva de aprendizaje.
Por lo tanto, si usted es un administrador de sistemas o un principiante en Linux, está en el lugar adecuado, ya que vamos a repasar los comandos iptables más comunes con ejemplos.
¿Qué es iptables?
iptables es un cortafuegos integrado en Linux basado en software. Permite a los usuarios de Linux crear o definir políticas que afectan directa e indirectamente al tráfico de Internet.
Esto significa que puede utilizar iptables para crear reglas que bloqueen o permitan el tráfico a través del puerto, la dirección IP de origen, las interfaces de red, etc.
Una vez que defina las reglas, todo el tráfico deberá pasar por ellas. Así, por ejemplo, para cada nueva conexión, iptables comprobará si hay alguna regla predefinida que coincida con la conexión. Si lo hace, aplicará la regla a la conexión. Sin embargo, si no hay ninguna regla aplicable asociada, aplicará la regla por defecto.
Para utilizar iptables, debe utilizar el siguiente comando.
$ iptables -L -n -v
Aquí, los parámetros son los siguientes:
- -L es para listar todas las reglas.
- -n hace que la salida numérica ofrezca un rendimiento más rápido.
- -v para mostrar la salida en formato detallado.
Una vez que ejecute el comando ip tables sin ningún parámetro, devolverá la siguiente salida:
iptables v1.8.7 (nf_tables): ningún comando especificado
Pruebe `iptables -h' o `iptables --help' para obtener más información.
Necesita instalarlo si se encuentra con un error, como el comando «iptables» no encontrado.
Para instalar iptables en su distribución Linux, ejecute el siguiente comando.
$ sudo apt-get install iptables
Devolverá lo siguiente, ya que ya está preinstalado en mi distribución de Linux.
#Salida
Leyendo la lista de paquetes... Hecho
Construyendo árbol de dependencias... Hecho
Lectura de la información de estado... Hecho
iptables ya es la versión más reciente (1.8.7-1ubuntu5).
iptables configurado como instalado manualmente.
0 actualizados, 0 recién instalados, 0 para eliminar y 35 no actualizados.
¿Qué es un cortafuegos?
Los cortafuegos son la forma más básica de proteger sistemas, redes y ordenadores personales. Puede estar basado en hardware o en software, y depende de reglas para funcionar correctamente.
La mayoría de los cortafuegos son altamente personalizables, permitiéndole crear o editar reglas. Por ejemplo, como los paquetes de Internet utilizan puertos para entrar en un sistema, el escaneado basado en puertos puede ayudarle a filtrarlos. Aparte de eso, también puede permitir o bloquear servicios por dirección IP de origen o interfaz de red.
Si utiliza Linux, tendrá acceso a iptables incorporado. Sin embargo, también puede utilizar un cortafuegos autónomo de Linux para ayudarle en el proceso de protección de su sistema.
¿Por qué necesita iptables para configurar el cortafuegos?
Pero, ¿por qué debería utilizar iptables? Después de todo, existen buenas utilidades alternativas de cortafuegos de línea de comandos como ufw y firewalld. Además, puede utilizar cortafuegos autónomos de Linux que son sencillos de utilizar y ofrecen más funciones.
Entonces, ¿qué hace que iptables sea tan atractivo a la hora de configurar un cortafuegos? Las razones para utilizarlo incluyen:
- Ofrece una flexibilidad excelente desde el primer momento. Puede establecer reglas a nivel de paquetes.
- Es relativamente fácil de usar una vez que sabe cómo funciona.
- Bloquea el tráfico no deseado de forma sencilla.
- Redirija los paquetes a una dirección IP alternativa.
- Proteja sus sistemas contra ataques de denegación de servicio (DoS).
Y mucho más
Comprender la arquitectura de iptables y su relación con Netfilter
Para entender correctamente iptables, necesitamos aprender sobre su arquitectura. Primero, nos dará una clara comprensión de los diferentes componentes de iptables. Luego, una vez que conozcamos cada uno de ellos, podremos utilizarlos para escribir reglas de cortafuegos.
Y, cuando hablamos de iptables, Netfilter también entra en escena. Puede pensar en «Netfilter» como un hermano mayor de iptables. Se construye sobre iptables y ofrece un mejor conjunto de características para gestionar su cortafuegos. Sin embargo, utiliza iptables como uno de los medios para conseguir excelentes capacidades de cortafuegos.
Iptables es una interfaz de línea de comandos para los ganchos a nivel de núcleo de Netfilter. Estos ganchos pueden interactuar con la pila de red de Linux, que afecta a los paquetes en el nivel más profundo.
¿Cómo es la arquitectura de iptables?
Tablas
la arquitectura iptables comienza con tablas. Estas tablas se encargan de la organización de las reglas. Y cada tabla se clasifica en función del tipo de decisión que toma. En términos más sencillos, una tabla simplifica el procesamiento general de los paquetes al asignar una forma específica de procesarlos.
Las diferentes tablas que ofrece iptables incluyen:
- Tabla de filtros: Especifica el tipo de decisión para el filtrado de paquetes. En términos sencillos, determina si un paquete debe llegar a su destino o no.
- Tabla NAT: Especifica el tipo de decisión para la traducción de direcciones. Aquí, el enrutamiento de los paquetes se determina en función de las redes NAT. Por ejemplo, si un paquete no puede acceder a NAT, se saltará e intentará buscar una red no NAT.
- Tabla de enredos: Gestiona las necesidades especiales de procesamiento del paquete. Por ejemplo, puede configurarla para que cambie la información de la cabecera del paquete, como los valores TTL.
- Tabla en bruto: La tabla raw le permite trabajar diligentemente con el aspecto de estado del cortafuegos iptables. Utilizando la tabla, puede enrutar paquetes basándose en su «estado» antes de que el núcleo de Linux comience a rastrear su estado. Se utiliza principalmente para marcar los paquetes, tanto si el sistema de rastreo de conexiones los gestiona como si no. Si un paquete no es rastreado, se establece como objetivo NOTRACK.
Cadenas
Y, a continuación, tenemos las «cadenas» dentro de las «tablas»
Estas cadenas manejan la inspección profunda de paquetes en diferentes etapas de su viaje. Por ejemplo, se pueden inspeccionar cuando llegan a un puerto o a una interfaz de red. De esta forma, se puede tomar una decisión antes de que el paquete sea liberado al proceso de un sistema.
Al igual que las tablas, también dispone de diferentes cadenas. Entre ellas se incluyen
- CadenaPREROUTING: Aquí, las reglas gestionan los paquetes recién llegados a la interfaz de red.
- Cadena INPUT: Las reglas mencionadas en la cadena INPUT manejan el comportamiento de la conexión entrante. Una vez hecho esto, se entregan al proceso local.
- Cadena OUTPUT: La cadena OUTPUT se ocupa de los paquetes que producen los procesos.
- Cadena FORWARD: La cadena FORWARD gestiona los paquetes que no están destinados a los sistemas locales. Es un soporte para otros sistemas destinados, como un enrutador.
- Cadena POSTROUTING: Por último, tenemos la cadena POSTROUTING, que se ocupa de los paquetes a punto de salir a través de la interfaz de red.
No todas las cadenas están disponibles en cada tabla. Por ejemplo, la cadena FORWARD sólo está disponible en la tabla mangle, filter y security. Del mismo modo, la cadena POSTROUTING está disponible en mangle y nat (SNAT). Sólo la cadena OUTPUT está disponible en todas las tablas.
Objetivo
Ahora tenemos un «objetivo» Una vez que llega un paquete, se mueve a través de las cadenas para ver qué descripción de regla encaja mejor. Si se ajusta a la descripción de una regla, realiza la acción asociada basada en ella y luego lo mueve al objetivo — sellando el destino del paquete.
En muchos casos, un paquete no se ajustará a ninguna descripción o conjunto de reglas. Y ahí es donde entra en juego la política por defecto, un objetivo.
Los objetivos pueden ser ACEPTAR, RECHAZAR y RECHAZAR. Se trata de objetivos de terminación que deciden el destino del paquete.
- ACEPTAR: Acepta los paquetes.
- RECHAZAR: Arroja el paquete, haciendo que el remitente no pueda saber si el sistema está presente o no.
- RECHAZAR: Rechaza el paquete.
También hay objetivos sin terminación que se utilizan principalmente para almacenar información sobre el paquete.
Comandos iptables más comunes con ejemplos
Antes de saltar y empezar a ejecutar el comando iptables, asegúrese:
- Tiene acceso administrativo para ejecutar los comandos. Si el comando falla debido a privilegios administrativos, vuelva a ejecutar el comando con el comando
sudo
delante. - El artículo no es un tutorial sobre cómo configurar iptables en Ubuntu.
- Utilizaremos el comando iptables que funciona con IPv4. Si pretende trabajar con IPv6, tendrá que utilizar ip6tables en su lugar.
Comprobación del estado de iptables
Para comprobar el estado actual de iptables, deberá ejecutar el siguiente comando.
$ iptables -L -n -v
#salida
Cadena INPUT (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
Cadena FORWARD (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
Cadena OUTPUT (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
La salida anterior contiene mucha información. Sin embargo, también insinúa un cortafuegos inactivo. Esto se debe a que, actualmente, todas las cadenas están configuradas como ACEPTAR y no tienen reglas.
Tendrá que empezar a añadir reglas para activar el cortafuegos.
Añadir reglas a la cadena
Cuando añade una regla, siempre se anexa a la cadena. Por lo tanto, debe utilizar la opción -A (Append). La sintaxis para ello es la siguiente
$ sudo iptables - A
Sin embargo, cuando la ejecute, le devolverá lo siguiente
iptables v1.8.7 (nf_tables): la opción "-A" requiere un argumento
Pruebe `iptables -h' o `iptables --help' para obtener más información.
Los argumentos que puede utilizar para añadir reglas son
- – i: Significa la interfaz. Aquí puede mencionar la interfaz para la que está añadiendo reglas. Puede ser ppp0, eth0, etc.
- – p: Significa protocolo. Aquí, usted menciona la regla para utilizar un protocolo de red para filtrar paquetes. Por ejemplo, puede decir ICMP, TCP, UDP, etc. Si desea que la regla funcione en todos los protocolos, mencione «all» como valor del argumento.
- – s: A continuación viene el argumento fuente, que menciona el origen del tráfico (como la dirección IP o el nombre de host)
- – dport: El dport significa puerto de destino, donde se menciona el número de puerto al que está destinado el paquete.
- – j: Por último, tenemos un argumento TARGET donde puede mencionar el nombre del TARGET, ACCEPT, DROP, o RETURN
También es esencial escribir el comando en el siguiente orden:
$ sudo iptables -A <nombre-cadena> -i <nombre-interfaz> - p <nombre-protocool> - s <fuente> --dport <número de puerto> -j <objetivo>
Guardar cambios en iptables
Una vez añadida una regla, puede guardarla con el comando iptables -save.
$ sudo iptables -save
La salida es la siguiente:
nitt@logan99:~$ sudo iptables-save
# Generado por iptables-save v1.8.7 el dom 14 may 13:37:34 2023
*filtrar
:INPUT ACCEPT [0:0]
:REENVÍO ACEPTAR [0:0]
:SALIDA ACEPTAR [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 392 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completado el dom 14 may 13:37:34 2023
Cómo guardar reglas manualmente
Por defecto, iptables no guarda las reglas. Por lo tanto, si reinicia su ordenador, eliminará todas las reglas. Tendrá que utilizar los siguientes comandos para asegurarse de que no tiene que volver a configurar iptables.
Para las reglas IPv4, escriba el comando:
$ sudo iptables-save > /etc/iptables/rules.v4
Y para las reglas IPv6, escriba el comando
$ sudo iptables-save > /etc/iptables/rules.v6
Persistencia automática de reglas
Para hacer que las reglas persistan incluso después de un reinicio, y además de forma automática, necesitará instalar el paquete iptables-presistent.
Para ello, ejecute el siguiente comando.
$ sudo apt-get install iptables-persistent
Se abrirá la siguiente ventana. Pulse enter en .
Como estamos trabajando con la tabla IPv4, sólo mostrará reglas IPv4. Si está trabajando con IPv6, mostrará la ventana correspondiente.
Nota: El paquete sólo carga sus reglas iptables guardadas. Así que, siempre que cambie las iptables, tendrá que guardarlas con el comando iptables -save.
Recarga de reglas tras el reinicio
Una vez guardadas las reglas, deberá restaurarlas con el siguiente comando.
$ sudo iptables-restore < /etc/iptables/rules.v4
Y
$ sudo iptables-restore < /etc/iptables/rules.v6
Habilitar el tráfico en Localhost / Habilitar Loopback
Para habilitar el tráfico en Localhost, utilice el siguiente comando:
$ sudo iptables -A INPUT -i lo -j ACCEPT
Aquí, lo representa la interfaz loopback para todas las comunicaciones localhost.
Del mismo modo, podemos permitir la salida de paquetes a través de la interfaz loopback.
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
Para comprobar cómo ha cambiado las reglas, ejecute iptables -L -n -V
#salida
Cadena INPUT (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
Cadena FORWARD (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
Cadena OUTPUT (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
Habilitación del tráfico en puertos particulares
Puede habilitar el tráfico para ACEPTAR o RECHAZAR en puertos particulares.
Por ejemplo, los puertos SSL, HTTP y SSH son importantes para el funcionamiento normal de sus aplicaciones. Puede añadir reglas al paquete ACEPTAR a través de los números de puerto para asegurarse de que funcionan según lo previsto.
Para SSL, ejecute el siguiente comando.
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Para HTTPS, ejecute el siguiente comando.
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Para permitir todo el tráfico HTTPS en la interfaz eth0.
$ iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -A OUTPUT -o eth0 -p tcp --puerto 80 -m estado --state ESTABLISHED -j ACCEPT
Para SSH, ejecute el siguiente comando.
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Y para aceptar TODO el tráfico SSH entrante en la interfaz eth0, ejecute lo siguiente:
$ iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -A OUTPUT -o eth0 -p tcp --puerto 22 -m estado --state ESTABLISHED -j ACCEPT
Otro ejemplo sería habilitar el tráfico en un puerto específico para su aplicación personalizada. Digamos el puerto 233.
Para abrir conexiones en ese puerto, ejecute.
$ sudo iptables -A INPUT -p tcp --dport 233 -j ACCEPT
Del mismo modo, también puede deshabilitar las conexiones en un puerto concreto utilizando la opción de destino RECHAZAR.
Bloqueemos todas las conexiones en el puerto 392.
$ sudo iptables -A INPUT -p tcp --dport 392 -j REJECT
Para comprobarlo, ejecute el comando iptables -L -n -v.
#salida
Cadena INPUT (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:233
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Cadena FORWARD (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
Cadena OUTPUT (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Borrar reglas existentes
Para eliminar las reglas existentes, deberá ejecutar el siguiente comando.
$ iptables -F
o
$ iptables --flush
Nota: Si no ha guardado sus reglas, entonces se perderán para siempre y no se podrán restaurar utilizando iptables -restore
Borrar reglas con números de línea
Para borrar una regla específica, necesitará obtener la lista de reglas con números.
$ sudo iptables -L --line-numbers
#Salida
Cadena INPUT (política ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
2 ACCEPT tcp -- anywhere anywhere tcp dpt:http
3 ACCEPT tcp -- anywhere anywhere tcp dpt:https
4 ACCEPT tcp -- en cualquier lugar tcp dpt:233
5 REJECT tcp -- anywhere anywhere tcp dpt:392 reject-with icmp-port-unreachable
Ejecute el siguiente comando si desea eliminar la regla número 4 para la cadena INPUT.
$ sudo iptables -D INPUT 4
Y, si ejecuta de nuevo el comando iptables -n -v -L
#salida
Cadena INPUT (política ACCEPT 0 paquetes, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 RECHAZAR tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Visualizar sólo reglas de cadena INPUT o OUTPUT
Para mostrar sólo las reglas de la cadena INPUT, ejecute el siguiente comando.
$ sudo iptables -L INPUT -n -v --números de línea
#salida
Cadena INPUT (política ACCEPT 0 paquetes, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
4 0 0 RECHAZAR tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Del mismo modo, si desea ver sólo las reglas de la cadena OUTPUT, ejecute
$ sudo iptables -L OUTPUT -n -v --line-numbers
#salida
Cadena OUTPUT (política ACCEPT 0 paquetes, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Iniciar/Parar/Reiniciar el cortafuegos
Si está en RHEL/ Fedora Linux o CentOS, puede iniciar/detener o reiniciar el cortafuegos ejecutando los comandos.
$ service iptables stop
$ service iptables start
$ service iptables restart
También puede utilizar el comando systemctl .
Sin embargo, no funcionará en Ubuntu.
Insertar reglas en un lugar específico
Si desea insertar reglas en una posición específica, debe utilizar los siguientes comandos.
En primer lugar, compruebe las reglas.
$ sudo iptables -L INPUT -n --números de línea
#Salida
Cadena INPUT (política ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
4 RECHAZAR tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Ejecute el siguiente comando si desea insertar reglas entre la 2 y la 3.
$ sudo iptables -I INPUT 3 -s 252.32.1.2 -j DROP
Ahora, compruebe las reglas actualizadas.
#Salida
Cadena INPUT (política ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 DROP all -- 252.32.1.2 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
5 RECHAZAR tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Bloquear el tráfico entrante pero permitir el saliente
Deberá introducir el siguiente comando para bloquear todo el tráfico entrante.
$ iptables -P INPUT DROP
$ iptables -P FORWARD DROP
$ iptables -P OUTPUT ACCEPT
$ iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -L -v -n
De esta forma, podrá hacer ping o descargar paquetes pero bloqueará cualquier tráfico entrante desconocido.
Bloquear una dirección IP concreta
Para bloquear una dirección IP concreta, ejecute el siguiente comando.
$ iptables -A INPUT -s 14.23.59.9 -J DROP
También puede definir una variable para almacenar la dirección IP bloqueada y luego ejecutar el comando.
BLOQUEAR_LA_IP = "a.b.c.d"
Y, a continuación, ejecute
$ iptables -A INPUT -s "BLOCK_THE_IP" -j DROP
Nota: Cambie «a.b.c.d» por su dirección IP preferida.
Permitir que el sistema haga ping desde el exterior
Puede hacer que usuarios externos hagan ping a su servidor para que su red sea detectable.
$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
Permitir que la red interna hable con la red externa
Ejecute el siguiente comando para permitir que la red interna (digamos eth0) hable con la red externa (digamos eth1).
$ sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Permitir DNS salientes
Para permitir conexiones DNS a su servidor, ejecute el siguiente comando.
$ iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
$ iptables -A INPUT -p udp -i eth0 --puerto 53 -j ACCEPT
Permitir Rsycn desde una red específica
Si utiliza el comando Rsync y desea permitirlo a través de una red específica, ejecute el siguiente comando.
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --puerto 873 -m estado --state ESTABLISHED -j ACCEPT
Bloquear puerto
Ejecute el siguiente comando para bloquear un puerto específico y cualquier solicitud entrante.
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
Bloquear el tráfico saliente hacia una dirección IP concreta
Puede bloquear el tráfico hacia cualquier dirección IP ejecutando el siguiente comando.
$ host -t a geekflare.com/es
#salida
geekflare.com/es tiene una dirección de 172.66.40.93
Para bloquear el tráfico saliente hacia esa dirección IP concreta, ejecute el siguiente comando.
iptables -A OUTPUT -d 72.66.40.93 -j DROP
Del mismo modo, también puede bloquear plataformas de medios sociales como Instagram, Twitter y Facebook.
Encuentre la dirección IP de los medios sociales ejecutando el siguiente comando:
$ host -t a social-media-web-adrress.com
Por ejemplo, para Instagram, sería
$ host -t a www.instagram.com
Ahora, tendrá que encontrar el CIDR de la dirección IP de esa plataforma de medios sociales en concreto.
$ whois 185.89.219.11 | grep CIDR
Nota: Puede que necesite instalar el paquete whois ejecutando sudo apt-get install whois
Ahora, introduzca el valor CIDR de la siguiente manera:
$ iptables - A OUTPUT -p tcp -d CIDR-value -j DROP
Nota: Asegúrese de cambiar el valor CIDR como corresponda.
Permitir o bloquear la solicitud de ping ICMP
Para permitir o bloquear las solicitudes de ping ICMP, ejecute los siguientes comandos.
$ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
$ iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Abrir un rango concreto de puertos
Para abrir un rango de puertos, ejecute el siguiente comando.
$ iptables -A INPUT -m estado --state NEW -m tcp -p tcp --dport 8933: 8500 -j ACCEPT
Listar reglas NAT
Para listar las reglas NAT, ejecute el siguiente comando:
$ sudo iptables -t nat -L -n -v
O
$ sudo iptables -t nat -v -L -n --número de línea
Restablecer los contadores de paquetes
Para comprobar el contador actual de iptables
$ sudo iptables -L -n -v
Para restablecer o borrar los contadores, ejecute lo siguiente:
$ sudo iptables -Z
$ sudo iptables -L -n -v
Para restablecer únicamente el contador de la cadena INPUT, ejecute:
$ iptables -Z INPUT
Para restablecer el contador de una regla concreta, ejecute lo siguiente:
$ iptables -z INPUT RULE-NUMBER
Asegúrese de cambiar RULE-NUMBER a esa regla en particular.
Palabras finales
iptables es una potente utilidad de línea de comandos para cortafuegos. Puede configurar casi todo lo relacionado con recursos de red, paquetes, interfaces y escenarios particulares.
Además, iptables ofrece multitud de opciones. Eche un vistazo a su página principal utilizando el comando man para hacerse una idea completa.
$ man iptables
$ man ip6tables
A continuación, eche un vistazo a un cortafuegos de red y cómo ayuda a detener los ataques.