
Soy nuevo con iptables. Creé un script que restablece (reset.sh) iptables y otro script (ip-chains.sh) crea cadenas como cadenas de entrada y salida. En el mismo scipr (ip-chains.sh) en la parte inferior, creé una regla solo para probar y permitir el puerto 2121 entrante y saliente que estoy usando para FTP.
El problema es que cuando ejecuto el script de reinicio puedo acceder al servidor FTP, pero cuando ejecuto el script ip-chains.sh no puedo. Estoy confundido porque tengo la regla en el mismo archivo de script para permitir el tráfico en el puerto 2121.
Estoy usando eth1 para conectarme al servidor FTP 192.168.1.0 y eth2 para conectarme a la máquina cliente. Aquí está mi script de ip-chains.sh:
#!/bin/bash
#Flush tables and set policies to drop
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Create Logging Chain for accepted packets on INPUT CHAIN
iptables -N accept-input
#Rules for accept-input chain
iptables -A accept-input -j LOG --log-prefix "INPUT-ACCEPTED "
iptables -A accept-input -j ACCEPT
#Create Logging Chain for dropped packets on INPUT CHAIN
iptables -N drop-input
#Rules for drop-input chain
iptables -A drop-input -j LOG --log-prefix "INPUT-DROPPED "
iptables -A drop-input -j DROP
#Create Logging Chain for accepted packets on OUTPUT CHAIN
iptables -N accept-output
#Rules for accept-output chain
iptables -A accept-output -j LOG --log-prefix "OUTPUT-ACCEPTED "
iptables -A accept-output -j ACCEPT
#Create Logging Chain for dropped packets on OUTPUT CHAIN
iptables -N drop-output
#Rules for drop-output chain
iptables -A drop-output -j LOG --log-prefix "OUTPUT-DROPPED "
iptables -A drop-output -j ACCEPT
#Allow port 2121
iptables -A INPUT -i eth1 -p tcp -s 0/0 --dport 2121 -m state --state NEW,ESTABLISHED,RELATED -j accept-input
iptables -A OUTPUT -o eth1 -p tcp -d 0/0 --sport 2121 -m state --state ESTABLISHED,RELATED -j accept-input
iptables -A INPUT -i eth2 -p tcp -s 0/0 --dport 2121 -m state --state NEW,ESTABLISHED,RELATED -j accept-input
iptables -A OUTPUT -o eth2 -p tcp -d 0/0 --sport 2121 -m state --state ESTABLISHED,RELATED -j accept-input
#Log all DROPPED traffic
iptables -A INPUT -j drop-input
iptables -A OUTPUT -j drop-output
iptables -L -n
Respuesta1
Tenga cuidado, cuando elimina sus reglas, iptables -F
elimina todas sus reglas, ¡pero no su póliza! Entonces, si es así, policy DROP
¡puedes quedar fácilmente bloqueado de tu sistema!
Generalmente es más seguro colocarlo policy ACCEPT
con una DROP
última regla de la cadena. O mientras estás trabajando de forma remota, configura un cron
trabajo en tu firewall policy ACCEPT
y iptables -F
cada cinco o diez minutos; de esta manera estarás seguro de tener acceso a tu sistema en cualquier caso.
En tu script tienes iptables -p FORWARD DROP
y no hay reglas de eth1
hasta eth2
y viceversa. Debe establecer iptables -p FORWARD ACCEPT
o agregar algunas reglas a la cadena de avance para resolver su problema, por ejemplo:
iptables -A FORWARD -p tcp -i eth1 -o eth2 -s 2121 -d 2121 -j ACCEPT;
iptables -A FORWARD -p tcp -i eth2 -o eth1 -s 2121 -d 2121 -j ACCEPT;
Respuesta2
use -v para ver dónde han aterrizado los paquetes...
iptables --list -n -v