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