Skip to main content

Iptables

OPCIONES IPTABLES

Para limpiar la reglas y tablas anteriores

iptables -F iptables -Z

Inicio de política restringida

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP

Bloquear todo el tráfico entrante

iptables -A INPUT -i eth0 -j DROP

Aceptamos los paquetes que usa ping (ICMP)

iptables -A INPUT -P imcp -j ACCEPT

Aceptamos ssh desde un host y rsync desde cualquier red

iptables -A INPUT -p tcp -s IP_HOST --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 12000 -j ACCEPT

Aceptamos contestación desde el servidor

iptables -A OUTPUT -m conntrack --cstate RELATED,ESTABLISHED -j ACCEPT

Mostrar todas las reglasa

iptables -L

Registro y expusión de todas las conexiones ICMP

iptables -A INPUT -p icmp --icmp-type echo-request -s 0.0.0.0 -j LOG --log-prefix "envio de paquete ICMP"

iptables -A INPUT -P icmp --icmp-type echo-request -s 0.0.0.0 -j REJECT

SSH de Lunes a Viernes de 08:00 a 20:00

iptables -p tcp --dport 22 --days Fri,Sat,Sun --timestart 0800:00 --timestop 20:00:00 -j ACCEPT

Descartamos más de 3 intentos de conexión

iptables -A INPUT -p tcp --dport 22 -m connlimit --conlimit-above 3 -j DROP

Descartamos todas las conexiones con las máquinas que realicen más de 5 peticiones por minuto

iptables -A INPUT -p tcp -m limit --limit 5/m --limit-burst 5 -j DROP

Regla PAT el puerto 22

iptables -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 15000

Activar ip-forward

Utilizamos el siguente comando para establecer el ip_forward=1 y de esta manera dejarlo activado: sysctl -w net.ipv4.ip_forward=1

Masquerade

iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

#Reglas para escuchar mostrar las conexines del hostB a la red del anfitriona de las #máquinas virtuales

iptables -t nat -A PREROUTING -i enp0s8 -p tcp --dport 678 -j DNAT --to-destination 192.168.10.6:5678

iptables -t nat -A POSTROUTING o enp0s8 -p tcp --dport 5678 -d ip_hostB -j SNAT --to-source 192.168.10.6


Por defecto DROP, permitir Servicio SSH

iptables -A INPUT -i eth0 -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED-j ACCEPT iptables -A OUTPUT -i eth0 -p tcp --sport 22 -m conntrack --cstate ESTABLISHED -j ACCEPT

Bloquear por intentos de conexión

iptables -A INPUT -i eth0 -s 10.0.1.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "Ojo peligro"

iptables -A INPUT -i eth0 -s 10.0.1.0/8 -j DROP

Descartar paquetes TCP null

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

Descartar paquetes "Xmas"

iptables -A INPUT -p tcp --tp-flags Xmas -j DROP

Descarte paquete peligrosos de cierre de conexiones

iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j DROP

Evitar más de un respuesta en el mismo segundo

iptables -A INPUT -p icmp --icmp-type echo-request -m limit -limit 1/s -j DROP

Algunos ejemplos

Bloquear tŕafico de una tarjeta y una dirección concreta

iptables -A INPUT -i eth0 -s 192.68.10.11 -j DROP

Bloquear tŕafico entrante de una tarjeta y puerto concreto

iptables -A INPUT -i eth0 -p tcp --dport 22 -j DROP

Bloquear todo el tráfica de una tarjeta y que vaya destinado a puerto concreto

iptables -A INPUT -i eth0 -p tcp --dport 22 -j LOG --log-prefix "Acceso al puerto 22"

conntrack

conntrack -L

Hace un seguimiento permanante de todas las conexiones

Seguimiento conexiones al puerto 22

conntrack -L -p tcp --dport 22 --state ESTABLISHED


Total de conexiones

conntrack -C

Mostrar log

conntrack -L

Solo nuevas líneas del log

conntrack -E -e NEW

Estadísticas

conntrack -S

Configuración

Si queremos saber el máximo de conexiones que permitimos para las líneas conntrack debemos acudir al archivo: /proc/sys/net/netfilter o en versiones más antiguas /porc/sys/net/ipv4/netfilter