Enviado em 19/09/2014 - 13:57h
Criei várias regras com o iptables e todas funcionaram muito bem até o momento. Porém ao configurar o servidor FTP me debati em um problema. Quando a política de saída é configurada para drop, o ftp não conecta, ainda que a regra foi incluída na cadeia do iptables. Também adicionei os módulos do conntrack com o modprobe mas ainda assim sem sucesso.
# LIMPANDO REGRAS
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# STATEFUL FIREWALL
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#REQUISICOES DE SAIDA DNS
iptables -A OUTPUT -o eth0 -p udp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# SAIDA/ENTRADA SSH
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# DIRETRIZES GLOBAIS
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
# TRATAMENTO ICMP
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/second -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
# REGRAS DO FTP
iptables -A INPUT -m tcp -p tcp -m multiport --dports 20,21 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -m tcp -p tcp -m multiport --dports 20,21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# MODO PASSIVO
iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# HTTP
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# SAMBA
iptables -A INPUT -i eth0 -p tcp --dport 445 -s 192.168.1.1/24 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 139 -s 192.168.1.1/24 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 445 -s 192.168.1.1/24 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 139 -s 192.168.1.1/24 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 137 -s 192.168.1.1/24 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 138 -s 192.168.1.1/24 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --sport 137 -s 192.168.1.1/24 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --sport 138 -s 192.168.1.1/24 -j ACCEPT
# NTP
iptables -A INPUT -i eth0 -p udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --sport 123 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# PORT-KNOCKING
# KNOCK1
#iptables -N STATE0
#iptables -A STATE0 -p udp --dport 12345 -m recent --name KNOCK1 --set -j DROP
#iptables -A STATE0 -j LOGDROP
# KNOCK2
#iptables -N STATE1
#iptables -A STATE1 -m recent --name KNOCK1 --remove
#iptables -A STATE1 -p udp --dport 23456 -m recent --name KNOCK2 --set -j DROP
#iptables -A STATE1 -j STATE0
# KNOCK3
#iptables -N STATE2
#iptables -A STATE2 -m recent --name KNOCK2 --remove
#iptables -A STATE2 -p udp --dport 34567 -m recent --name KNOCK3 --set -j DROP
#iptables -A STATE2 -j STATE0
# ACEITANDO AS REGRAS
#iptables -N STATE3
#iptables -A STATE3 -m recent --name KNOCK3 --remove
#iptables -A STATE3 -p tcp --dport 22 -j ACCEPT
#iptables -A STATE3 -j STATE0
# VERIFICANDO OS FLAGS
#iptables -A INPUT -m recent --name KNOCK3 --rcheck -j STATE3
#iptables -A INPUT -m recent --name KNOCK2 --rcheck -j STATE2
#iptables -A INPUT -m recent --name KNOCK1 --rcheck -j STATE1
#iptables -A INPUT -j STATE0
# CRIANDO LOGS
iptables -N LOGDROP
iptables -A INPUT -p tcp -j LOGDROP
iptables -A INPUT -p udp -j LOGDROP
# LIMITAR O TAMANHO DO ARQUIVO
iptables -A LOGDROP -m limit --limit 7/min --limit-burst 10 -j LOG
iptables -A LOGDROP -j DROP