Gostaria de criticas (construtivas) a esse firewall abaixo

1. Gostaria de criticas (construtivas) a esse firewall abaixo

Alex Sandro Gonzales Rodrigues
slacklex

(usa Slackware)

Enviado em 07/04/2006 - 21:07h

Olá pessoal esse firewall abaixo é o que estou usando aqui no momento, ainda não está completamente pronto pois ainda faltam alguns servidores entrar no ar aqui,mas gostaria que vocês pudesse dar suas críticas construtivas, melhorias, erros dicas dele etc..

Muito obrigado..


#!/bin/bash

########################### FIREWALL LEX INFORMATICA ##################################
########################### ##################################



######### Carrega os módulos###############
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_layer7


#####################Definindo Policiamento Padrão###########################

# Zera Tabelas
iptables -F
iptables -X

# Tabela Filter
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

# Tabela Nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT


# O iptables define automaticamente o número máximo de conexões simultâneas
# com base na memória do sistema. Para 32MB = 2048, 64MB = 4096, 128MB = 8192,
# sendo que são usados 350 bytes de memória residente para controlar
# cada conexão.
# Quando este limite é excedido a seguinte mensagem é mostrada:
# "ip_conntrack: maximum limit of XXX entries exceed"
#
# Como temos uma rede simples, vamos abaixar este limite. Por outro lado isto
# criará uma certa limitação de tráfego para evitar a sobrecarga do servidor.
echo "2048" > /proc/sys/net/ipv4/ip_conntrack_max



#############################TABELA FILTER###################################

# Barra pacotes TCP indesejáveis e loga isso (Cuja nova conexão NÃO é iniciada com flag syn)
iptables -A FORWARD -p tcp -m tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "NAO SYN: "
iptables -A FORWARD -p tcp -m tcp ! --syn -m state --state NEW -j DROP

# Aceita os pacotes que podem entrar (liberação de entrada)
iptables -A INPUT -i ! eth0 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Bloqueia conexões inválidas vindas da interface ppp0
iptables -A INPUT -m state --state INVALID -j DROP

#### Abaixo seguem regras contra Port Scannners, trojans, floods... ########

# Proteção contra Port Scanner Avançados
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT


# Protecao quanto a ataques DoS
iptables -A INPUT -i ppp0 -m unclean -j DROP
iptables -A INPUT -i ppp0 -m unclean -j LOG --log-level 6 --log-prefix "UNCLEAN "


# Proteção com SYNFLOODS
echo 1 > /proc/sys/net/ipv4/tcp_syncookies


# Proteção contra Ping da Morte
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


# Proteção contra SYN-Floding
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT


# Proteçao contra icmp
iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP


# Proteção contra IP Spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter


# Proteção contra Tracert
iptables -A INPUT -p udp -s 0/0 -i ppp0 --dport 33435:33525 -j DROP


# Proteção contra o Wincrash
iptables -A FORWARD -p tcp --dport 5042 -j LOG --log-prefix "WINCRASH"
iptables -A FORWARD -p tcp --dport 5042 -j DROP

# Proteçao contra o NETBUS
iptables -A FORWARD -p tcp --dport 12345 -j DROP



# Proteção contra trinoo
iptables -A INPUT -p tcp -i ppp0 --dport 27444 -j DROP
iptables -A INPUT -p tcp -i ppp0 --dport 27665 -j DROP
iptables -A INPUT -p tcp -i ppp0 --dport 31335 -j DROP
iptables -A INPUT -p tcp -i ppp0 --dport 34555 -j DROP
iptables -A INPUT -p tcp -i ppp0 --dport 35555 -j DROP

# Fechando portas Time e o Server X
iptables -A INPUT -i ppp0 -p tcp --dport 37 -j DROP

# Não permite que usuários da rede baixem ou façam upload de arquivos com extensao exe
iptables -A FORWARD -m layer7 --l7proto exe -d 192.168.1.0/24 -j DROP

# Permitindo FORWARD para a porta SSH
iptables -A FORWARD -i ppp0 -p tcp -d 192.168.0.2 --dport 22 -j ACCEPT

# Libera acesso de smtp para fora apenas para o IP 192.0.0.0
iptables -A FORWARD -p tcp -d ! 192.0.0.0 --dport 25 -j LOG --log-level 6 --log-prefix "SMTPNOTHING "
iptables -A FORWARD -p tcp -d ! 192.0.0.0 --dport 25 -j DROP

# Bloqueio do acesso ao orkut tanto via https quanto http
iptables -A FORWARD -d www.orkut.com -p tcp --dport 80 -j DROP
iptables -A INPUT -d www.orkut.com -p tcp --dport 80 -j DROP
iptables -A FORWARD -d orkut.com -p tcp --dport 80 -j DROP
iptables -A INPUT -d orkut.com -p tcp --dport 80 -j DROP
iptables -A OUTPUT -d www.orkut.com -p tcp --dport 80 -j DROP


iptables -A FORWARD -d www.orkut.com -p tcp --dport 443 -j DROP
iptables -A INPUT -d www.orkut.com -p tcp --dport 443 -j DROP
iptables -A FORWARD -d orkut.com -p tcp --dport 443 -j DROP
iptables -A INPUT -d orkut.com -p tcp --dport 443 -j DROP
iptables -A OUTPUT -d www.orkut.com -p tcp --dport 443 -j DROP



#######################TABELA NAT #######################################

# Ativando NAT somente para a rede interna p/ acesso a internet
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE

# Permitindo acesso remoto ao servidor SSH da rede local
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 22 -j DNAT --to 192.168.0.2

# Redirecionando todo o tráfego interno à porta 80 para que vá para o Proxy
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -p udp -i eth1 --dport 80 -j REDIRECT --to-port 3128

# Proteção contra ataques Spoofing
iptables -t nat -A PREROUTING -i ppp0 -s 172.16.0.0/16 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 192.168.0.0/24 -j DROP
iptables -t nat -A PREROUTING -i ppp0 -s 10.0.0.0/8 -j DROP

#Bloqueio de NetBios
iptables -t nat -A PREROUTING -p tcp --dport 445 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 135 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 137 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 138 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 139 -j DROP
iptables -t nat -A PREROUTING -p udp --dport 445 -j DROP
iptables -t nat -A PREROUTING -p udp --dport 135 -j DROP
iptables -t nat -A PREROUTING -p udp --dport 137 -j DROP
iptables -t nat -A PREROUTING -p udp --dport 138 -j DROP
iptables -t nat -A PREROUTING -p udp --dport 139 -j DROP




  


2. Re: Gostaria de criticas (construtivas) a esse firewall abaixo

Joaquim Petiz
Mau_Humorado

(usa Suse)

Enviado em 04/08/2006 - 10:59h

não precisa definir politicas de ACCEPT, pois são default
não é uma boa ideia alterar o ip_contrack_max, pois pode sobre-carregar o firewall ou o sub-utilizar, deixe o padrão, a não ser que possua "muitas" maquinas e use algum algorithimo de roteamento avançado como zebra, ospf, htb, ... e tenha certeza do que esta fazendo, caso contrario, não vai mudar sua vida.
não tem necessidade logar conexões que não iniciem por sim, só vai dificultar a analise dos logs, pois não tem nenhuma utilidade prática.
o firewall ja é default DROP, nesse caso, não precisa bloquear nada, apenas liberar.
bloqueio para port scanner não tem necessidade, o firewall é default DROP, caso queira algo bom para emitir falsas respostas, use o modulo psd do p-o-m
não precisa logar pacotes mal formados, vai aumentar muito o tamanho do log, dificultando a analise e sem utilidade pratica
ative o tcp_syncookies no inicio do script, junto com aqueles módulos..
o icmp no firewall default drop é bloqueado por padrão, elimine essa regra de ping da morte
ou voce usa o tcp_syncookies ou limita o syn, use o syncookies é mais funcional
elimine todas as regras referente a bloqueio de icmp
ative o rp_filter no inicio do script
elimine essa regra de tracert e wincrash, deixe apenas a de log
mude a regra do netbus de drop para log
o mesmo para a de trinoo
elimine essa regra de time e server X
na regra de smtp apenas libere para aquele endereço, não faça um bloqueio exceto aquele endereço
esse bloqueio do orkut ta feio, se as conexões partem apenas da rede local e seu firewall é dedicado, elimine as regras no input e output
esse bloqueio para spoof não tem sentido, uma vez que voce ja esta usando o rp_filter
Essa regra para bloqueio de netbios, pode ser substituida por
iptables -t nat -A PREROUTING -j DROP

Adicione nas suas regras o seguinte módulo
echo 0 > /proc/sys/net/ipv4/conf/$internet/accept_source_route

e no final do script a seguinte regra:
iptables -A FORWARD -j DROP
iptables -A INPUT -j DROP


3. Re: Gostaria de criticas (construtivas) a esse firewall abaixo

Ivan de oliveira Santos
melphos

(usa Debian)

Enviado em 22/08/2006 - 16:44h

Se a política padrão é DROP, não precisa colocar regras de DROP no final do script, como o amigo acima disse.

Dica, para que você tenha um bom entendimento do seu script de firewall, divida ele em arquivos. por exemplo.
knl.cfg = configurações do kernel
protect.cfg = regras de proteção
vars.cfg = arquivos com as variáveis

E no seu script:
source knl.cfg
source protect.cfg
source vars.cfg

Assim você consegue ter uma boa noção e um bom norte quando precisar alterar suas regras. Principalmente quando começa a ficar muito grande.

Quando tenho muitos servidores, muitas regras, eu até divido por segmento, por exemplo:
corp.cfg = regras rede corporativa
dmz.cfg = regras do segmento DMZ
client.cfg = regras para o segmento client
vpn.cfg = regras para conexões entrantes de VPN.

E assim por diante. Quando um dia algué precisar liberar o servidor X que fica na DMZ o serviço FTP por exemplo, você vai no arquivo dmz.cfg e adiciona a regra.

Assim você tem até um controle das regras, não conflitando ou tendo "brexas".

abraços,
Ivan Santos






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts