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.848 ]

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

Dois links de ADSL em um mesmo servidor

Shorewall, uma excelente opção para firewall Linux

Criando cluster com o PFSense

A teoria por trás do firewall

Dominando o iptables (parte 1)

  
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