Configurar IPTABLES
Regla de entrada (filtro)
iptables -A INPUT .....
Regla de Salida
iptables -A OUTPUT .....
Opciones
-p [protocolo TCP o UDP]
-s [ip de origen/mascara]
-d [ip de destino/mascara]
--dport [puerto de destino]
--sport [puerto de origen]
-i [Interface de entrada eth0, eth1]
-o [Interfaz de salida eth0, eth1]
-j [Accion a realizar DROP (Rechaza en forma silenciosa, REJECT, rechaza avisando que nno fue aceptado usando ICMP, ACCEPT, acepta, LOG, loguea acciones /var/log/syslog, REDIRECT redirigirá el paquete a donde se indique en el criterio del comando ]
Bloquear Pings con IPTABLES
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j REJECT
iptables -t filter -A INPUT -p icmp --icmp-type echo-replay -j REJECT
Bloquear Rangos de Puertos
--dport 1:65535
(Ejemplo)
Ejemplo de regla completa
iptables -A INPUT -p tcp -s 127.0.0.1/32 --dport 20:21 -j ACCEPT
Borrar Reglas de IPTABLES
iptables -F
Ver Reglas de IPTABLES
iptables -L
iptables -L -n
Routing con IPTABLES
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/255.255.255.0 -j MASQUERADE
Enmascarar por las conexiones procedentes de la red 10.0.0.0 como si lo hicieran desde la ip configurada en la interfaz eth0. (típica regla en un router linux compartiendo la conexión eth0 con la red local conectada a eth1).
Una regla equivalente a esta puede ser esta (si atacamos por SNAT en lugar de MASQUERADE):
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to ip-de-eth0
NOTA: Para que esta regla funcione correctamente, así como todas las reglas FORWARD, PREROUTING, etc, es necesario activar el forwardeo entre interfaces en el kernel :
#echo 1 > /proc/sys/net/ipv4/ip_forward
-----------------------------------------------------------------------------------------
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Redireccionar al puerto 3128 (proxy) todos los paquetes que entran por eth1 y con destino puerto 80 (HTTP), de esta manera conseguimos un proxy transparente.