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