Configuração manual do Firewall de Rede via Netfilter iptables.
Para acessar as configurações em linha de comando, o arquivo está em "/etc/firewall.user"
# vi /etc/firewall.user
Vamos por partes.
Com esse firmware alternativo, a única forma de acesso remoto, é via ssh, ou seja, a comunicação com o roteador é via porta tcp 22, se perder esta configuração, somente via cabo serial, mas é bem complicado, terá que obter um cabo específico, abrir o roteador e soldar o cabo na placa e depois acessá-lo via hiper terminal.
Então o scrip firewall começaria assim:
#!/bin/sh
#alias
IPT="/usr/sbin/iptables"
REDE="192.168.1.0/24"
AP="ACCEPT"
DP="DROP"
#Regras SSH
$IPT -I INPUT -i eth1 ! -s 191.0.0.0/8 -p tcp --sport 1024:65535 --dport 22 -j $DP
$IPT -I INPUT 2 -i br-lan ! -s 192.168.1.2 -p tcp --sport 1024:65535 --dport 22 -j $DP
$IPT -I INPUT 3 -i eth0 ! -s 192.168.1.2 -p tcp --sport 1024:65535 --dport 22 -j $DP
#Com essas regras, você restringe o acesso a ssh apenas para ips específicos, acesso externo ao range de ips 191.0.0.0/8 e apenas o ip 192.168.1.2 na interface lan, caso a bridge de algum problema, terá acesso pela eth0, a opção -I colocam estas regras em primeiro plano
$IPT -I INPUT 4 -i br-lan -p udp --dport 67:68 --sport 67:68 -j $AP
#Regra para liberar o DHCP na rede Lan.
$IPT -I INPUT 5 -i eth1 -p icmp --icmp-type 8 -j $DP
#Regra para bloquear o ping vindo de fora para dentro
#Regras para loopback
$IPT -A INPUT -i lo -s 127.0.0.1 -j $AP
$IPT -A OUTPUT -o lo -d 127.0.0.1 -j $AP
$IPT -t nat -A OUTPUT -o lo -d 127.0.0.1 -j $AP
#ip6tables tablela FILTER
ip6tables -A INPUT -i eth1 -p tcp --dport 22 -j DROP
ip6tables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
#Essas regras bloqueiam acesso as portas 22 e 80 ao roteador pelo protocolo IPv6.
#Chain OUTPUT
iptables -A OUTPUT -p icmp -m icmp ! --icmp-type 0 -m limit --limit 2/s -j $AP
iptables -A OUTPUT -p udp -m udp --sport 1024:65535 --dport 53 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 80 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 443 -j $AP
iptables -A OUTPUT -p udp -m udp --dport 123 -j $AP
iptables -A OUTPUT -m state --state ESTABLISHED -j $AP
iptables -A OUTPUT -p udp -m udp --sport 1024:65535 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 -j $AP
#Regras para cadeia output
#Regras INPUT
$IPT -A INPUT -p udp -m udp -s 0/0 -i eth1 --dport 33435:33525 -j $DP #Bloqueio de traceroute
$IPT -A INPUT -i eth1 -m state --state INVALID -j $DP
$IPT -A INPUT -p icmp -m icmp ! --icmp-type 8 -m limit --limit 2/s -j $AP
$IPT -A INPUT -i eth1 -p tcp -s 0/0 --sport 80 --dport 1024:65535 -j $AP
$IPT -A INPUT -i eth1 -p tcp -s 0/0 --sport 443 --dport 1024:65535 -j $AP
$IPT -A INPUT -i eth1 -p udp -s 0/0 --sport 53 --dport 1024:65535 -j $AP
$IPT -A INPUT -i br-lan -p udp --sport 1024:65535 --dport 53 -j $AP
$IPT -A INPUT -i br-lan -d 192.168.1.15 -m limit --limit 3/s -j $AP
$IPT -A INPUT -i br-lan -p udp -s $REDE -d 224.0.0.0/24 -m limit --limit 5/s --limit-burst 11 -j $AP
$IPT -A INPUT -p udp -m udp -s 0/0 --sport 123 -m limit --limit 3/s -j $AP
#Mais algumas regras básicas para cadeia input.
#Regras de bloqueio na cadeia INPUT
$IPT -A INPUT -i eth1 -p udp -m udp --dport 1:1024 -j $DP
$IPT -A INPUT -i eth1 -p tcp --syn -j $DP
$IPT -A INPUT -i br-lan -p tcp --dport 1024:65535 -m limit --limit 1/s -j $AP
$IPT -A INPUT -i br-lan -p tcp --dport 1:1024 -j $DP
$IPT -A INPUT -i br-lan -p udp --dport 1024:65535 -m limit --limit 1/s -j $AP
$IPT -A INPUT -i br-lan -p udp --dport 1:1024 -j $AP
#Tabela NAT
$IPT -t nat -I POSTROUTING -o eth1 -j MASQUERADE
#Essa regra é importante para saída de pacotes do roteador.
#Chain FORWARD
$IPT -I FORWARD -i br-lan -o eth1 -p udp -s $REDE -d 0/0 --sport 1024:65535 --dport 53 -j $AP
$IPT -I FORWARD 2 -i eth1 -o br-lan -p udp -s 0/0 -d $REDE --sport 53 --dport 1025:65535 -j $AP
$IPT -I FORWARD 3 -i br-lan -o eth1 -p tcp -s $REDE -d 0/0 --sport 1025:65535 --dport 80 -j $AP
$IPT -I FORWARD 4 -i eth1 -o br-lan -p tcp -s 0/0 -d $REDE --sport 80 --dport 1025:65535 -j $AP
$IPT -I FORWARD 5 -i br-lan -o eth1 -p tcp -s $REDE -d 0/0 --sport 1025:65535 --dport 443 -j $AP
$IPT -I FORWARD 6 -i eth1 -o br-lan -p tcp -s 0/0 -d $REDE --sport 443 --dport 1025:65535 -j $AP
$IPT -I FORWARD 7 -o eth1 -s $REDE -m conntrack --ctstate ESTABLISHED,RELATED -j $AP
$IPT -I FORWARD 8 -i eth1 -d $REDE -m conntrack --ctstate NEW -j REJECT
$IPT -I FORWARD 9 -p tcp -s 0/0 -d $REDE -m multiport --sports 110,587,809,993,994,995,465,8080 -m state --state ESTABLISHED -j ACCEPT
$IPT -I FORWARD 10 -p tcp -d 0/0 -s $REDE -m multiport --dports 110,587,809,993,994,995,465,8080 -m state --state NEW,ESTABLISHED -j ACCEPT
# Dez Regras com prioridade de execução na cadeia FORWARD (acesso a DNS, HTTP, HTTPS e outos).
#Regra para Torrent porta 56733
$IPT -A FORWARD -i br-lan -p udp -s $REDE -d 0/0 --sport 56733 --dport 1024:65535 -j $AP
$IPT -A FORWARD -i eth1 -p udp -d $REDE -s 0/0 --sport 1024:65535 --dport 56733 -j $AP
#Regra de bloqueio na chain forward
$IPT -A FORWARD -p tcp --syn -j DROP
#Tabela NAT cadeia Mangle
$IPT -t mangle -I POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o eth1 -j TCPMSS --set-mss 1492
#Regra para setar as saída de pacotes, com mtu 1492 bytes
$IPT -t mangle -I PREROUTING -i eth1 -p tcp --dport 22 -j DROP
#Regra paranoica de segurança para bloqueio de ssh
$IPT -t mangle -I PREROUTING 2 -p tcp --tcp-flags ACK,FIN,SYN SYN -i eth1 -j TCPMSS --set-mss 1492
#Regra para setar os pacotes de entrada, com mtu em 1492 bytes.
$IPT -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j DROP
#Regra paranoica de segurança contra acesso ao http do roteador.
echo "((( Regras de Firewall Ativadas... )))"
# EOF
#Regras básicas, desenvolvidas para uso particular, cada caso é um caso.
Nenhum comentário:
Postar um comentário