http://www.howtoforge.com/linux_iptables_sarge
1. Comprobaciones previas:
1.1 Tener habilitado el módulo de iptables en el kernel:
cat /boot/config-* | grep -i "CONFIG_IP_NF_IPTABLES" CONFIG_IP_NF_IPTABLES=m
1.2 Tener cargado en ese momento el módulo iptable:
lsmod | grep iptable iptable_filter 2624 0 ip_tables 10160 1 iptable_filter
Si no los tubiera:
1.2.1 Cargar módulos:
modprobe iptable_filter && modprobe ip_tables\\
1.2.1 Especificar que se carguen cada vez que se arranque el equipo:
echo "iptable_filter" >> /etc/modules && echo "ip_tables" >> /etc/modules
1.3 Tener instalado el paquete iptables:
dpkg -l iptables ii iptables 1.4.1.1-3 administration tools for packet filtering and NAT
2. Hacer un script con las reglas:
#!/bin/bash
# Guión para administrar las reglas de iptables # Siempre 1º permitir 2º denegar
###################### Variables #####################
# Pc's coleguistas ORIGEN1="194.179.83.89" ORIGEN2="192.168.1.31" ORIGEN3="cntmalaga.mine.nu" ORIGEN4="lobo99.mine.nu" ORIGEN5="192.168.1.30"
INTERFAZ="eth0"
#################### Guión #########################
# Elimino las reglas anteriores iptables -F iptables -t nat -F iptables -t mangle -F iptables -X
# Asegurarme que puedo conectarme via ssh desde distintas maquinas iptables -A INPUT -s $ORIGEN1 -i $INTERFAZ -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s $ORIGEN1 -i $INTERFAZ -p tcp --dport 443 -j ACCEPT
# Por aquí debería abrir servicios, por ejemplo:
# HTTP/Apache iptables -A INPUT -i $INTERFAZ -p tcp --dport 80 -j ACCEPT iptables -A INPUT -i $INTERFAZ -p udp --dport 80 -j ACCEPT
# Mlnet iptables -A INPUT -i $INTERFAZ -p tcp --dport 4080 -j ACCEPT iptables -A INPUT -i $INTERFAZ -p udp --dport 4080 -j ACCEPT
# FTP iptables -A INPUT -i $INTERFAZ -p tcp --dport 21 -j ACCEPT iptables -A INPUT -i $INTERFAZ -p udp --dport 21 -j ACCEPT
# DNS (resolver) iptables -A INPUT -i $INTERFAZ -p udp --sport 53 -j ACCEPT
###################### Mula #####################
IF=ppp0 IPTABLES=/sbin/iptables MLDONKEY_HOST=192.168.1.2 EDONKEY_PORT=4662 KAD_PORT=8443 OVERNET_PORT=5865 BITTORRENT_PORT=6882 OPENNAP_PORT=9999
## MLDonkey acting as Edonkey2000 client $IPTABLES -I FORWARD -p tcp --dport $EDONKEY_PORT -j ACCEPT $IPTABLES -I FORWARD -p udp --dport $(($EDONKEY_PORT + 4)) -j ACCEPT $IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $EDONKEY_PORT -j DNAT --to-destination $MLDONKEY_HOST $IPTABLES -t nat -I PREROUTING -i $IF -p udp --dport $(($EDONKEY_PORT + 4)) -j DNAT --to-destination $MLDONKEY_HOST
## MLDonkey acting as Kad client $IPTABLES -I FORWARD -p tcp --dport $KAD_PORT -j ACCEPT $IPTABLES -I FORWARD -p udp --dport $KAD_PORT -j ACCEPT $IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $KAD_PORT -j DNAT --to-destination $MLDONKEY_HOST $IPTABLES -t nat -I PREROUTING -i $IF -p udp --dport $KAD_PORT -j DNAT --to-destination $MLDONKEY_HOST
## MLDonkey acting as Overnet client $IPTABLES -I FORWARD -p tcp --dport $OVERNET_PORT -j ACCEPT $IPTABLES -I FORWARD -p udp --dport $OVERNET_PORT -j ACCEPT $IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $OVERNET_PORT -j DNAT --to-destination $MLDONKEY_HOST $IPTABLES -t nat -I PREROUTING -i $IF -p udp --dport $OVERNET_PORT -j DNAT --to-destination $MLDONKEY_HOST
## MLDonkey acting as BitTorrent client $IPTABLES -I FORWARD -p tcp --dport $BITTORRENT_PORT -j ACCEPT $IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $BITTORRENT_PORT -j DNAT --to-destination $MLDONKEY_HOST
## MLDonkey acting as OpenNap client $IPTABLES -I FORWARD -p tcp --dport $OPENNAP_PORT -j ACCEPT $IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $OPENNAP_PORT -j DNAT --to-destination $MLDONKEY_HOST
##################### Fin Mula ####################
# Rechazar todos los demás paquetes entrantes iptables -A INPUT -j REJECT iptables -A FORWARD -j REJECT
3. Utilidades:
-Listar las reglas activas (recuerda que se van acumulando):
iptables --list
-Grabar las nuevas reglas y cualquier otro cambio de forma permanente:
iptables-save