Artigos: 68   Dicas: 135   Usuários: 263
Esqueceu sua senha? Cadastre-se
velha desconfiada
scriptsadmin
Distribuições Linux
Linux mulheres
Qual o melhor ramo em SL
Home >> Artigos >> Firewall >> Criando um firewall

Criando um firewall

Vou mostrar como limpar e criar regras em um servidor proxy usando o IPTABLES
Data de criação: 07/04/2010
Indicar para um amigo Indicar para um amigo     Favoritos Favoritos

Criando um firewall

Hospedagem Cainf
Depois de criado o arquivo limpa_firewall vamos criar a nossa proteção

vim /bin/firewall

chmod a+x /bin/firewall

Segue o conteúdo do firewall

#!/bin/bash
####### Limpar Regras ########
iptables -t filter -F
iptables -t nat -F

modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


### F de Flush ###
### Políca Default ###
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

#+--------------------------------------------------------------------------------------------+
#| BLOQUEAR UMA ESTAÇÃO PARA USAR A INTERNET
#+--------------------------------------------------------------------------------------------+
#iptables -A INPUT -s 192.168.0.37 -p tcp -i eth1 -j DROP
#iptables -A FORWARD -s 192.168.0.37 -p tcp -i eth1 -j DROP
#iptables -A OUTPUT -s 192.168.0.37 -p tcp -i eth1 -j DROP

# Nesse caso estou bloqueando a estação que possui o ip 192.168.0.37

#------------------------------------------------------------------------------------------------
# Redirecionando acesso da porta 80 para 3128
#------------------------------------------------------------------------------------------------
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# Regra muito útil forçando os usuários a navegarem pelo proxy se o espertinho tirar # no browser o ip do servidor e a porta 3128 ou seja tentar navegar em
# modo transparente ele não irá conseguir :)

############### Limitando conexoes por host SSH para 3 acessos
iptables -A INPUT -p tcp --dport 2222 --syn -m limit --limit 1/m --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 --syn -j DROP

# No arquivo /etc/ssh/sshd_config mude a porta para 2222

#=========================================================#
# REGRAS MSN #
#=========================================================#
#------------------------------------------------------------------------------------------------------+
# LIBERANDO PARA MAQUINAS PERMITIDAS |
#------------------------------------------------------------------------------------------------------+
# Server
#iptables -A INPUT -s 192.168.0.1 -p tcp --dport 1863 -j ACCEPT
#iptables -A FORWARD -s 192.168.0.1 -p tcp --dport 1863 -j ACCEPT
#iptables -A OUTPUT -s 192.168.0.1 -p tcp --dport 1863 -j ACCEPT

#-------------------------------------------------------------------------------------------------------
# BARRANDO PARA AS DEMAIS #
#-------------------------------------------------------------------------------------------------------
#iptables -A INPUT -p tcp --dport 1863 -j DROP
#iptables -A FORWARD -p tcp --dport 1863 -j DROP
#iptables -A OUTPUT -p tcp --dport 1863 -j DROP
#-------------------------------------------------------------------------------------------------------
# É preciso adicionar a regra tb no squid

#-------------------------------------------------------------------------------------------------------
# Caso queira redirecionar alguma porta para alguma máquina por exemplo
# Estou redirecionando a porta 8080 para a máquina 192.168.0.5
#-------------------------------------------------------------------------------------------------------

#iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.0.5:8080
#iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.5 --dport 8080 -j ACCEPT


# Protege contra o "Ping of Death"
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Protege contra os ataques do tipo "Syn-flood, DoS, etc"
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT

# Permitir repassamento (NAT,DNAT,SNAT) de pacotes etabilizados e os relatados ...
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Logar os pacotes mortos por inatividade ...
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG

# Protege contra port scanners avan�ados (Ex.: nmap)
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Protege contra pacotes que podem procurar e obter informações da rede interna ...
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP

# Protege contra todos os pacotes danificados e ou suspeitos ...
iptables -A FORWARD -m unclean -j DROP

# Bloqueando tracerroute
iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP

# Mesmo assim fechar todas as portas abaixo de 32000
iptables -A INPUT -i eth0 -p tcp --dport 2222 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport :32000 -j DROP

# Protecoes contra ataques
iptables -A INPUT -m state --state INVALID -j DROP

# Bloqueia qualquer tentativa de conexao de fora para dentro por TCP
iptables -A INPUT -i eth0 -p tcp --syn -j DROP

# Performance - Setando acesso a web com delay minimo
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 53 -j TOS --set-tos Minimize-Delay
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 80 -j TOS --set-tos Minimize-Delay

#---------------------------------------------------------------------------------------------
# Deixa passar as portas UDP do servidores DNS, e Rejeitar o restante
iptables -A INPUT -i eth0 -p udp -s 200.176.2.10 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 200.176.2.12 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -j REJECT

iptables -A INPUT -i eth0 -p udp -s 200.204.0.10 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 200.204.0.138 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -j REJECT

# Responde pacotes icmp especificados e rejeita o restante
iptables -A INPUT -i eth1 -p icmp --icmp-type host-unreachable -j ACCEPT
iptables -A INPUT -i eth1 -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i eth1 -p icmp -j REJECT --reject-with icmp-host-unreachable

# libera o loopback
iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT

# libera conexoes de fora pra dentro
iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 443 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 20 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 21 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 2222 -j ACCEPT

#libera conexoes de dentro pra fora:
iptables -A OUTPUT -p tcp --destination-port 80 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 3306 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 2222 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 20 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 21 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 86 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 5190 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 443 -j ACCEPT


# bloqueia ping
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# ----------------------------------------------------------------
echo "Firewall carregado..."

# EOF

Saia e salva

Não é tudo mas com isso a sua rede está bem protegida

Espero ter ajudado
ATENÇÃO: Nesse caso a eth0 é a placa que entra a Internet

Artigos deste Autor

Comentários

davirodrigues

davirodrigues Visualizar Perfil

09/08/2011 - 02:08:58

É um artigo bom Erick, porém algo que considero fundamental na criação de um firewall, e que você não comentou foi, tipos de firewall, arquiteturas de firewall, emfim, poderia ser o seu próximo artigo...mais ainda continuo achando que deveria ter sido no mesmo artigo, ou ter dividido em 2 artigos...fica aew a dica...

rjdiniz

rjdiniz Visualizar Perfil

28/12/2011 - 01:12:59

Bom script de iptables! E quanto ao uso dos sites da Caixa Economica Federal na parte de FGTS, CAGED, e afins relacionados ao Departamento Pessoal que são mensais... NFe's envio e retorno, sites do governo que tem que ter acesso de retorno tipo o SEFAZ-GO que provavelmente deve ser igual para todos os Estados... em fim falta alguns detalhes

Mapa do Site                                                                                        Responsável pelo site: Antonio Carlos de Oliveira