
Eu sou novo no iptables. Eu criei um script que redefine (reset.sh) iptables e outro script (ip-chains.sh) cria cadeias como cadeias de entrada e saída. No mesmo scipr (ip-chains.sh) na parte inferior criei uma regra apenas para testar a permissão da porta de entrada e saída 2121 que estou usando para FTP.
O problema é que quando executo o script de redefinição consigo acessar o servidor FTP, mas quando executo o script ip-chains.sh não consigo. Estou confuso porque tenho a regra no mesmo arquivo de script para permitir o tráfego na porta 2121.
Estou usando eth1 para conectar ao servidor FTP 192.168.1.0 e eth2 para conectar à máquina cliente. Aqui está meu script 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
Responder1
Tenha cuidado, ao liberar suas regras, iptables -F
você libera todas as suas regras, mas não sua política! Então, se você tiver, policy DROP
você pode facilmente ficar sem acesso ao seu sistema!
Geralmente é mais seguro definir policy ACCEPT
uma DROP
última regra da cadeia. Ou, enquanto você estiver trabalhando remotamente, configure um cron
trabalho para definir seu firewall policy ACCEPT
a iptables -F
cada cinco ou dez minutos; desta forma, você terá acesso ao seu sistema em qualquer caso.
No seu script você tem iptables -p FORWARD DROP
e não há regras de eth1
para eth2
e vice-versa. Você deve definir iptables -p FORWARD ACCEPT
ou adicionar algumas regras à cadeia direta para resolver seu problema, por exemplo:
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;
Responder2
use -v para ver onde os pacotes chegaram ...
iptables --list -n -v