Firewall Iptables agressivo para desktop

Publicado por Danilo Martins (última atualização em 29/04/2010)

[ Hits: 13.566 ]

Homepage: www.facebook.com/Nilodanx52

Download Firewall.sh

Download 1272380410.rc.firewall (versão 2)




Há alguns anos venho utilizando inúmeras formas de segurança na internet... e perdi muito tempo.

Pois agora que eu utilizo o Fedora 11 não perco mais tempo! Pesquisei muitas semanas no VOL, Google, entre outros fóruns para encontrar regras e as adaptei às minhas necessidades.

Aqui está o script, bem agressivo, e não dei os direitos dos desenvolvedores pois "um bom filho a casa retorna". Espero que compreendam...

Divirtam-se!!!

  



Versões atualizadas deste script

Versão 2 - Enviado por Danilo Martins em 27/04/2010

Changelog: Como já tinha postado a primeira versão desse script, resolvi postar o que eu uso atualmente, este possui a mesma estrutura, porém retirei algumas coisas e comentei outras.

Download 1272380410.rc.firewall


Esconder código-fonte

#!/bin/sh

echo "####################ATIVANDO IPTABLES#######################"
### Passo 1: Limpando as regras ###
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
iptables -F -t nat

echo "Limpando as regras ...................................[ OK ]"

# Definindo a Politica das Cadeias
iptables -P INPUT REJECT
iptables -P FORWARD REJECT
iptables -P OUTPUT ACCEPT
echo "Politica das Cadeias .........................[ OK ]"

### Passo 2: Desabilitar o trafego IP entre as placas de rede ###
echo "0" > /proc/sys/net/ipv4/ip_forward
echo "Desabilitar o trafego IP entre as placas .............[ OK ]"

# Configurando a Protecao anti-spoofing
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#for spoofing in /proc/sys/net/ipv4/conf/*/rp_filter; do
# echo "1" > $spoofing
#done
echo "Protecao anti-spoofing ...............................[ OK ]"
###########setando protecao contra ataques
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
for i in /proc/sys/net/ipv4/conf/*; do
echo 0 >$i/accept_redirects
echo 0 >$i/accept_source_route
echo 1 >$i/log_martians
echo 1 >$i/rp_filter;
done
echo "Protecao contra ataques ..............................[ OK ]"

# Impedimos que um atacante possa maliciosamente alterar alguma rota
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "Impedimos alterar alguma rota ........................[ OK ]"

# Utilizado em diversos ataques, isso possibilita que o atacante determine o "caminho" que seu
# pacote vai percorrer (roteadores) ate seu destino. Junto com spoof, isso se torna muito perigoso.
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "Impossibilita que o atacante determine o "caminho" .....[ OK ]"

# Protecao contra responses bogus
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "Protecao contra responses bogus ......................[ OK ]"

# Protecao contra ataques de syn flood (inicio da conexao TCP). Tenta conter ataques de DoS.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo "Protecao contra ataques de syn .......................[ OK ]"

### Passo 3: Carregando os modulos do iptables ###
# Ativa modulos
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_GRE
echo "Carregando os modulos ................................[ OK ]"

### Pacotes
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
#iptables -A OUTPUT -m state --state ESTABLISHED, RELATED, NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Pacotes ..............................................[ OK ]"

### Ativando o mascaramento (nat)
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo "Ativando Mascaramento ................................[ OK ]"

######

# Redireciona porta 80 para 3128 (squid)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

# PORTA 3128 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p tcp --dport 3128 -j ACCEPT
echo "Redireciona porta 80 para 3128 .......................[ OK ]"
# PORTA 110 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -i eth0 -p udp --dport 110 -j ACCEPT
echo "PORTA 110 ............................................[ OK ]"
# PORTA 25 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p tcp --dport 25 -j ACCEPT
echo "PORTA 25 .............................................[ OK ]"
# PORTA 443 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i eth0 -p tcp --dport 443 -j ACCEPT
echo "PORTA 443 ............................................[ OK ]"
# PORTA 67 - ACEITA A CONECÇÃO DO DHCP
iptables -A FORWARD -i eth0 -p tcp --dport 67 -j ACCEPT
iptables -A FORWARD -i eth0 -p tcp --dport 86 -j ACCEPT
iptables -A FORWARD -i eth0 -p udp --dport 67 -j ACCEPT
iptables -A FORWARD -i eth0 -p udp --dport 86 -j ACCEPT
echo "PORTA 67 .............................................[ OK ]"
# https
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p udp --dport 8080 -j ACCEPT
echo "https ................................................[ OK ]"
# PORTA 21 - ACEITA PARA A REDE LOCAL
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp --dport 21 -j ACCEPT
echo "PORTA 21 .............................................[ OK ]"
# PORTA 6881 - PROGRAMAS DE TORRENT'S
iptables -A INPUT -p tcp --dport 6881 -j ACCEPT
iptables -A INPUT -p udp --dport 6885 -j ACCEPT
iptables -A INPUT -p udp --dport 4444 -j ACCEPT
echo "PROGRAMAS DE TORRENT'S ...............................[ OK ]"
#bloqueia qualquer tentativa de nova conexao de fora para esta maquina
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j REJECT
echo "bloqueia tentativa de nova conexao de fora ...........[ OK ]"

#no iptables, temos de dizer quais sockets sao validos em uma conexao
iptables -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
echo "Cadeia de Entrada ....................................[ OK ]"
#######################################################################
# No iptables, temos de dizer quais sockets sao validos em uma conexao#
#######################################################################
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
echo "Sockets Sao Validos ..................................[ OK ]"
#################################################
################ Tabela FILTER ##################
#################################################
############ Proteção contra tronjans ###########
iptables -A INPUT -p TCP -i eth0 --dport 666 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 4000 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 6000 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 6006 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 16660 -j REJECT
echo "Proteção contra tronjans .............................[ OK ]"
############## Proteção contra worms #################
iptables -A FORWARD -p TCP -i eth0 --dport 135 -j REJECT
echo "Proteção contra worms ................................[ OK ]"
############# Proteção contra trinoo ##################
iptables -A INPUT -p TCP -i eth0 --dport 27444 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 27665 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 31335 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 34555 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 35555 -j REJECT
echo "Proteção contra trinoo ...............................[ OK ]"
######### Protecao contra acesso externo squid ###########
iptables -A INPUT -p TCP -i eth0 --dport 3128 -j REJECT
iptables -A INPUT -p TCP -i eth0 --dport 8080 -j REJECT
echo "Proteção contra squid externo.........................[ OK ]"
############# Protecao contra telnet #############
iptables -A INPUT -p TCP -i eth0 --dport telnet -j REJECT
echo "Proteção contra telnet ...............................[ OK ]"
# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j REJECT
iptables -A FORWARD -m unclean -j REJECT
iptables -A INPUT -m state --state INVALID -j REJECT
iptables -N VALID_CHECK
iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
iptables -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j REJECT
iptables -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j REJECT
iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j REJECT
iptables -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
iptables -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT
iptables -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j REJECT
echo "Prtecoes Diversas ....................................[ OK ]"
# Dropa pacotes TCP indesejaveis
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j REJECT
echo "Dropa pacotes mal formados ...........................[ OK ]"
# Proteç contra syn-flood
iptables -A FORWARD -p tcp --dport 135 -i eth0 -j REJECT
echo "Protecao contra syn-flood ............................[ OK ]"
# Proteç contra ping da morte
iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT
echo "Proteç contra ping da morte .........................[ OK ]"
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
echo "Caregando tabela filter ..............................[ OK ]"

# Loga tentativa de acesso a determinadas portas
iptables -A INPUT -p tcp --dport 22 -i eth0 -j LOG --log-prefix "FIREWALL: ssh: "
iptables -A INPUT -p tcp --dport 21 -i eth0 -j LOG --log-prefix "FIREWALL: ftp: "
iptables -A INPUT -p tcp --dport 23 -i eth0 -j LOG --log-prefix "FIREWALL: telnet: "
iptables -A INPUT -p tcp --dport 25 -i eth0 -j LOG --log-prefix "FIREWALL: smtp: "
iptables -A INPUT -p tcp --dport 80 -i eth0 -j LOG --log-prefix "FIREWALL: http: "
iptables -A INPUT -p tcp --dport 110 -i eth0 -j LOG --log-prefix "FIREWALL: pop3: "
iptables -A INPUT -p udp --dport 111 -i eth0 -j LOG --log-prefix "FIREWALL: rpc: "
iptables -A INPUT -p tcp --dport 113 -i eth0 -j LOG --log-prefix "FIREWALL: identd: "
iptables -A INPUT -p tcp --dport 137:139 -i eth0 -jLOG --log-prefix "FIREWALL: samba: "
iptables -A INPUT -p udp --dport 137:139 -i eth0 -j LOG --log-prefix "FIREWALL: samba: "
iptables -A INPUT -p tcp --dport 161:162 -i eth0 -j LOG --log-prefix "FIREWALL: snmp: "
iptables -A INPUT -p tcp --dport 6881 -i eth0 -j LOG --log-prefix "FIREWALL: torrent: "
iptables -A INPUT -p udp --dport 6885 -i eth0 -j LOG --log-prefix "FIREWALL: torrent: "
iptables -A INPUT -p udp --dport 4444 -i eth0 -j LOG --log-prefix "FIREWALL: torrent: "
iptables -A INPUT -p tcp --dport 6667:6668 -i eth0 -j LOG --log-prefix "FIREWALL: irc: "
iptables -A INPUT -p tcp --dport 3128 -i eth0 -j LOG --log-prefix "FIREWALL: squid: "
echo "Negando portas indesejadas ...........................[ OK ]"

##Algumas portas devem ser negadas.
iptables -A INPUT -p tcp --dport 1433 -j REJECT
iptables -A INPUT -p tcp --dport 6670 -j REJECT
iptables -A INPUT -p tcp --dport 6711 -j REJECT
iptables -A INPUT -p tcp --dport 6712 -j REJECT
iptables -A INPUT -p tcp --dport 6713 -j REJECT
iptables -A INPUT -p tcp --dport 12345 -j REJECT
iptables -A INPUT -p udp --dport 12345 -j REJECT
iptables -A INPUT -p tcp --dport 12346 -j REJECT
iptables -A INPUT -p udp --dport 12346 -j REJECT
iptables -A INPUT -p tcp --dport 20034 -j REJECT
iptables -A INPUT -p tcp --dport 31337 -j REJECT
iptables -A INPUT -p udp --dport 31337 -j REJECT
iptables -A INPUT -p tcp --dport 6000 -j REJECT
echo "Negando portas invalidas .............................[ OK ]"

#Traceroutes caindo

iptables -A INPUT -p udp --dport 33434:33523 -j REJECT
iptables -A INPUT -p tcp --dport 113 -j REJECT
iptables -A INPUT -p igmp -j REJECT
iptables -A INPUT -p tcp --dport 80 -j REJECT
iptables -A INPUT -p tcp --dport 443 -j REJECT

echo "Rejeitando lixo :.....................................[ OK ]"

###BLOQUEANDO TODAS AS SAIDAS E PORTAS
iptables -A INPUT -p all -j REJECT
iptables -A FORWARD -p all -j REJECT
echo "Rejeitando saida e entrada ...........................[ OK ]"
########################

# Esta regra � o cora��o do firewall,
# ela bloqueia qualquer conex�o que n�o tenha sido permitida acima, justamente por isso ela � a �ltima da cadeia.
iptables -A INPUT -p tcp --syn -j REJECT
echo "Bloqueia tudo :.......................................[ OK ]"


# Finalmente: Habilitando o trafego IP, entre as Interfaces de rede
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "Habilitar o trafego IP entre as placas: ..............[ OK ]"

echo "##################FIM DE REGRAS IPTABLES####################"
echo "####################FIREWALL ATIVADO#######################"
exit 0

Scripts recomendados

cg_ext - script para alteração de extensão de arquivos em larga escala

Criando um Backup .ISO do seu CD.

Cronômetro em shell

Agenda desenvolvida em Shell Script

Cria ambiente virtual (VirtualHost no Apache e Virtual Mail no Postfix) para desenvolvimento web


  

Comentários
[1] Comentário enviado por elgio em 21/08/2009 - 18:46h

Amigo, um script que certamente serve aos vossos propósitos.

Mas ninguém deve baixar ele e simplesmente aplicar, pois foi construído para uma realidade específica sua.

Além de que é perigoso:

iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j REJECT

Com estas regras acima, basta um atacante fazer da Internet um:

hping --fast -S -p 80 QUALQUER_IP_INTERNO_teu

E derruba TODOS OS TEUS SERVIDORES TCP! Fácil fácil. Muito mais fácil do que perder tempo realizando um syn flood de verdade. Agora teu iptables é quem tira teus servidores do ar!
(sim, pois além de 1/s tu dropa)

Má ideia...

[2] Comentário enviado por nilodanx52 em 23/08/2009 - 01:08h

Bem! então, peço humilde mente que me comente novamente se puder (é claro) afim de ajudar-me a não deixar essa falha... e se tiver como mande-me regras que permita-me reduzir maiores transtorno... Abrigado Pelo Alerta!!!
################################
###VIVA O LINUX!!! SEGURANÇA É TUDO!!!###
################################

[3] Comentário enviado por elizeuoliveira em 24/08/2009 - 18:59h

ola cara é o seguinte eu preciso de ajuda para configurar o meu firewall é mno unbutu


meu email e elizeu@worksoft.inf.br

[4] Comentário enviado por pssgyn em 10/03/2010 - 16:09h


Elgio, boa tarde. Estou procurando alguns scripts de firewall que seja simples e funcional. Nesse script que vc fez o seu comentário, qual seria a solução, para o erro que vc apontou ??? Obrigado e uma boa tarde .....

[5] Comentário enviado por luizvieira em 04/05/2010 - 09:15h

Muito bom, só precisa de uma personalização de acordo com o contexto e fica melhor ainda :-)
[ ]'s

[6] Comentário enviado por zenienss em 16/05/2010 - 17:00h

Voce nao deu os creditos aos desenvolvedores e espera que compreendam? que LIXO! Voce é o famoso control+C e Control+V que se acha! Vai estudar e o dia que voce conseguir sozinho dai voce nao precisa dar creditos.
L
I
X
O


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts