Um poderoso firewall para a sua rede wireless com IP x MAC

Este firewall é dedicado exclusivamente para um provedor wireless, mas serve também para uma rede pequena de sua empresa. Além de amarrar IP ao MAC, pode restringir portas, serviços etc.

[ Hits: 41.894 ]

Por: FRANCISCO SOARES DA SILVA em 12/06/2008


Script das regras do iptables



####################################################
#fsoaress76@hotmail
########################################################
# FIREWALL #
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

#==================== NÃO PASSA PELO SQUID
# RADIO UOL
-A PREROUTING -i eth0 -m tcp -p tcp -d 200.221.0.0/16 --dport 80 -j ACCEPT
-A PREROUTING -i eth1 -m tcp -p tcp -d 200.221.0.0/16 --dport 80 -j ACCEPT
-A PREROUTING -i eth3 -m tcp -p tcp -d 200.221.0.0/16 --dport 80 -j ACCEPT

# CONECTIVIDADE SOCIAL
-A POSTROUTING -s 10.90.0.0/16 -d 200.221.0.0/16 -j MASQUERADE
-A POSTROUTING -s 10.100.0.0/16 -d 200.221.0.0/16 -j MASQUERADE
-A POSTROUTING -o eth2 -p gre -j MASQUERADE

#===================== SQUID
-A PREROUTING -i eth0 -p tcp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3525
-A PREROUTING -i eth1 -p tcp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3525
-A PREROUTING -i eth3 -p tcp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3525

#===================== MASCARAMENTO
-A POSTROUTING -s 10.90.0.0/8 -j MASQUERADE
-A POSTROUTING -s 10.100.0.0/8 -j MASQUERADE
-A POSTROUTING -s 189.XX.0.0/16 -j MASQUERADE

#FIREWALL

COMMIT
*mangle
:PREROUTING ACCEPT [9:1243]
:INPUT ACCEPT [9:1243]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [10:3755]
:POSTROUTING ACCEPT [10:3755]
COMMIT
*filter
:FORWARD ACCEPT [0:0]
:Block - [0:0]
:INPUT ACCEPT [0:0]
:Users - [0:0]
:OUTPUT ACCEPT [0:0]

########### SISTEMA REMOTO

# DNS
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT

# LIMITANDO PING
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A INPUT -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

#ACEITA PING ESTENDIDO DO ROTEADOR
-A INPUT -p icmp -s 200.xx.xxx.1 -j ACCEPT

# HTTP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

# MYSQL
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p udp -m udp --dport 3306 -j ACCEPT

# SSH
-A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT
-A INPUT -p udp -m udp --dport 2222 -j ACCEPT

# VNC
-A INPUT -p tcp -m tcp --dport 5800 -j ACCEPT
-A INPUT -p udp -m udp --dport 5800 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5900 -j ACCEPT
-A INPUT -p udp -m udp --dport 5900 -j ACCEPT

######## SEGURANÇA

# FECHANDO SQUID EXTERNO
-A INPUT -p tcp -i eth2 -m tcp --dport 3131 -j DROP

# back orifice
-A INPUT -p tcp -m tcp --dport 31337 -j DROP
-A INPUT -p udp -m udp --dport 31337 -j DROP

# NetBus
-A INPUT -p tcp -m tcp --dport 12345:12346 -j DROP
-A INPUT -p udp -m udp --dport 12345:12346 -j DROP

#ACESSO SEFAZNET
-A INPUT -p tcp -m tcp --dport 50000 -j ACCEPT
-A INPUT -p udp -m udp --dport 50000 -j ACCEPT

#CONECTIVIDADE SOCIAL PERMITIDA
-A INPUT -p tcp -d 200.201.173.0/24 --dport 80 -j ACCEPT
-A INPUT -p tcp -d 200.201.174.0/24 --dport 80 -j ACCEPT
-A INPUT -p tcp -d 200.201.166.0/24 --dport 80 -j ACCEPT
-A INPUT -p tcp -d 200.201.160.0/24 --dport 80 -j ACCEPT

# ACEITANDO CONEXÃO JÁ ESTABELECIDA
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -j Users
-A INPUT -j Block

# MYSQL
-A FORWARD -i eth2 -p tcp --dport 3306 -j ACCEPT
-A FORWARD -i eth2 -p udp --dport 3306 -j ACCEPT
-A FORWARD -i eth2 -p tcp --dport 3333 -j ACCEPT
-A FORWARD -i eth2 -p udp --dport 3333 -j ACCEPT

# CÂMERA
-A FORWARD -i eth2 -p tcp --dport 199 -j ACCEPT
-A FORWARD -i eth2 -p udp --dport 199 -j ACCEPT
-A FORWARD -i eth2 -p tcp --dport 1999 -j ACCEPT
-A FORWARD -i eth2 -p udp --dport 1999 -j ACCEPT

# LIBERANDO ACESSO SEFAZNET
-A FORWARD -p tcp --dport 50000 -j ACCEPT
-A FORWARD -p udp --dport 50000 -j ACCEPT

# VNC
-A FORWARD -p tcp --dport 5800 -j ACCEPT
-A FORWARD -p udp --dport 5800 -j ACCEPT
-A FORWARD -p tcp --dport 5900 -j ACCEPT
-A FORWARD -p udp --dport 5900 -j ACCEPT

# LIBERANDO PING EXTERNO LOCAL PARA INTERNET
-A FORWARD -p icmp --icmp-type echo-request -j ACCEPT

# BLOQUEANDO PING-OF-DEAD E PING MALICIOSO
-A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# BLOQUEANDO PORT SCANNERS OCULTO
-A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# PROTEÇÃO CONTRA SYN-FLOODS
-A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

# BLOQUEANDO ACESSO EXTERNO, PERMITINDO APENAS A REDE LOCAL
-A FORWARD -j Block

# BLOQUEANDO ACESSO EXTERNO HTTP,WWW
-A Block -m state -i eth2 --state NEW -j ACCEPT

# ACEITA CONEXÕES JÁ ESTABELECIDAS
-A Block -m state --state ESTABLISHED,RELATED -j ACCEPT

# FTP / SSH / Telnet / SMTP
-A Block -p tcp -m tcp --dport 25 -j DROP
-A Block -p udp -m udp --dport 25 -j DROP
-A Block -p tcp -m tcp --dport 20:24 -j ACCEPT
-A Block -p udp -m udp --dport 20:24 -j ACCEPT

# DNS
-A Block -p tcp -m tcp --dport 53 -j ACCEPT
-A Block -p udp -m udp --dport 53 -j ACCEPT

# HTTP
-A Block -p tcp -m tcp --dport 80 -j ACCEPT
-A Block -p udp -m udp --dport 80 -j ACCEPT

# POP-3
-A Block -p tcp -m tcp --dport 110 -j ACCEPT
-A Block -p udp -m udp --dport 110 -j ACCEPT

# NETBIOS
-A Block -p tcp -m tcp --dport 137 -j DROP
-A Block -p udp -m udp --dport 137 -j DROP
-A Block -p tcp -m tcp --dport 138 -j DROP
-A Block -p udp -m udp --dport 138 -j DROP

# REMOTO DE CÂMERA
-A Block -p tcp -m tcp --dport 199 -j ACCEPT
-A Block -p udp -m udp --dport 199 -j ACCEPT

# HTTPS
-A Block -p tcp -m tcp --dport 443 -j ACCEPT
-A Block -p udp -m udp --dport 443 -j ACCEPT
#
-A Block -p tcp -m tcp --dport 445 -j DROP
-A Block -p udp -m udp --dport 445 -j DROP

# SISTEMA DA SAÚDE
-A Block -p tcp -m tcp --dport 211 -j ACCEPT
-A Block -p udp -m udp --dport 211 -j ACCEPT

# DNS
-A Block -p tcp -m tcp --dport 53 -j ACCEPT
-A Block -p udp -m udp --dport 53 -j ACCEPT

# PROXY
-A Block -p tcp -m tcp --dport 3525 -j ACCEPT
-A Block -p udp -m udp --dport 3525 -j ACCEPT

-A Block -p tcp -m tcp --dport 5800 -j ACCEPT
-A Block -p udp -m udp --dport 5800 -j ACCEPT
-A Block -p tcp -m tcp --dport 5900 -j ACCEPT
-A Block -p udp -m udp --dport 5900 -j ACCEPT

# ALTAS GERAL
-A Block -p tcp -m tcp --dport 1024:65535 -j ACCEPT
-A Block -p udp -m udp --dport 1024:65535 -j ACCEPT

###################################################

############ ==== IP REDE ==== ####################

# CLIENTE_1
-A Users -m mac -s 10.100.1.2 -j RETURN --mac 00:00:ee:96:2d:8e
# CLIENTE_2
-A Users -m mac -s 10.100.2.2 -j RETURN --mac 00:15:ff:33:11:e1
# CLIENTE_3
-A Users -m mac -s 10.100.3.2 -j RETURN --mac 00:05:9e:88:55:3f
# CLIENTE_4
-A Users -m mac -s 10.100.4.2 -j RETURN --mac 00:0e:ee:aa:ee:57
#CLIENTE_5
-A Users -m mac -s 10.100.5.2 -j RETURN --mac 00:0a:22:00:44:bb

# CASO QUEIRA DEIXAR LIVRE O IP SEM AMARRAR COM A MAC
-A Users -s 10.100.6.2 -j RETURN
#
#-A Users
-A Block -j DROP
-A Users -j DROP
COMMIT

Página anterior     Próxima página

Páginas do artigo
   1. Configurando as placa de redes e rotas virtuais
   2. Criando arquivos e diretórios
   3. Script das regras do iptables
   4. Arquivo de iniciar, para e reiniciar o iptables
   5. Colocando restart automático
   6. Recapitulando, conclusão
Outros artigos deste autor

Monitoramento de pops para provedores

Leitura recomendada

Migrando do ipchains para o iptables

Port Forward mais completo: caçando o fantasma da rede interna

Firewall com Iptables: direto ao assunto (RHEL5 e Fedora)

Instalação do Layer7 no Debian Etch

Squid + iptables (método ninja)

  
Comentários
[1] Comentário enviado por elgio em 12/06/2008 - 18:20h

Pelo bem da humanidade, fico CAÇANDO estes terríveis equivocos:

# PROTEÇÃO CONTRA SYN-FLOODS
-A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

Tu ACABOU de tornar negação de serviço no teu servidor uma tarefa SUPER HIPER FÁCIL:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7070

No mais, achei o artigo um mero despejo de configurações que se enquadram apenas no teu cenário e sem explicações do porque tu faz cada configuração (porque N interfaces virtuais por exemplo? Onde está o "Amarrando" o Mac que consta no resumo?)

Enfim...

[2] Comentário enviado por y2h4ck em 13/06/2008 - 10:11h


Concordo com Elgio (viu Elgio como não sou do contra ???rsrs).

Ficou tudo mto jogado no ar...

[3] Comentário enviado por elgio em 13/06/2008 - 10:56h

Puxa, Francisco!

Na boa, tira LOGO esta regra de Syn flood fajuta e liga syn cookie. Qualquer um MUITO FACILMENTE pode derrubar teu servidor com um simples comando:

hping3 --fast --rand-source -p 80 -S TEU-IP

Isto envia MUITO mais syns por segundo, lotando teu limit do iptables e fazendo com que o PROPRIO iptables tire teu servidor do para conexoes legitimas. E o --rand-source falsifica o Ip de origem. Além do --fast ainda tem o --flood que é ainda mais rápido, mas o --fast já é suficiente.

Cara, SYN FLOOD com sucesso só se o atacante tiver muitoas máquinas. Mas com esta idiotice do iptable bloquear, fica brincadeira de criança fazer. Fique alerta.

E y24ck: nunca te considerei do contra. Justamente o contrário, te admiro muito e li os teus artigos.

[4] Comentário enviado por fsoaress76 em 13/06/2008 - 13:07h

"elgio" sobre seu artigo ainda nao tinha visto, mais foi boa sua colocação.
quanto a amarração de ip+mac

na página "Script das regras do iptables" no final tem:



# CLIENTE_1
-A Users -m mac -s 10.100.1.2 -j RETURN --mac 00:00:ee:96:2d:8e
# CLIENTE_2
-A Users -m mac -s 10.100.2.2 -j RETURN --mac 00:15:ff:33:11:e1
# CLIENTE_3
-A Users -m mac -s 10.100.3.2 -j RETURN --mac 00:05:9e:88:55:3f
# CLIENTE_4
-A Users -m mac -s 10.100.4.2 -j RETURN --mac 00:0e:ee:aa:ee:57
#CLIENTE_5
-A Users -m mac -s 10.100.5.2 -j RETURN --mac 00:0a:22:00:44:bb

# CASO QUEIRA DEIXAR LIVRE O IP SEM AMARRAR COM A MAC
-A Users -s 10.100.6.2 -j RETURN

é bem mais simples do que outras regras que usam três linha só para liberá um ip.

[5] Comentário enviado por elgio em 13/06/2008 - 13:35h

Ok. Não tinha visto os macs porque não li todos os codigos do firewall.

Uma dica então: é sempre bom poder manter as regras iptables o minimo possível. Tu fizeste isto bem com o RETURN em uma lista separada (assim, se houverem 300 macs e um mac casar com a primeira, nao sera avaliada pelas outras 298, como acontece quando pessoas fazem isto assim:

-A FORWARD -m mac -s 10.100.5.2 --mac ! 00:0a:22:00:44:bb -j DROP
(dropando se nao for do MAC)

Ainda assim, eu acho muito mais eficiente fazer isto por ARP estatico. Porque?

porque ARP eh uma coisa que a maquina sempre fara. Como tu conhece o IP e mac, se for ESTATICO, ficara ainda MAIS RAPIDO, pois o roteador nao precisará perguntar via ARP broadcast quem é o IP:

arp -s 10.100.5.2 00:0a:22:00:44:bb

Para ARPS estaticos o roteador nunca pergunta o MAC, logo se vier do ip 10.100.5.2 com outro MAC o cara ficara OFF, pois o gateway sempre ira mapear 10.100.5.3 para 00:0a:22:00:44:bb. Eu ainda uso isto para evitar que alguns espertinhos usem ips livres:

# IP 10.100.5.55 nao esta alocado ainda!
arp -s 10.100.5.2 00:01:00:01:00:01 (arp INVALIDO)


[6] Comentário enviado por chikinho_fenix em 28/01/2009 - 19:53h

tentei entender seu artigo, mas confesso que nao achei em lugar algun referencia a esse topico

"Para essas regras funcionarem, devemos certificar que temos o seguinte arquivo no diretório /etc/init.d/functions, sem este arquivo essas regras de iptables não funcionarão"

o que conterá nesse arquivo.

[7] Comentário enviado por fsoaress76 em 28/01/2009 - 20:41h

chikinho_fenix

Este arquivo tem mais de 550 linhas nao da para colocar aqui.

mais no final ele retorna isso...

+- assim
O "OK" aparece em cor VERDE

Nivelando todas as regras do usuarios - definido chains: [ OK ]
verificando todas as regras do usuarios - definido chains: [ OK ]
Aplicando régras do firewall dos iptables: [ OK ]
firewall ativado [ OK ]

se tiver um erro diz qual é a linha, etc, etc


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts