#!/bin/sh

# Limpando as tabelas
iptables -F
iptables -X
iptables -Z
#iptables -t nat -F
#iptables -t nat -X
#iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X

# Definindo política padrão:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
#iptables -P FORWARD DROP

# Checagem de Sanidade
iptables -N sanity
iptables -F sanity
iptables -A INPUT -j sanity
#iptables -A FORWARD -j sanity

# Libera saida e entrada de pacotes:
iptables -A OUTPUT  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED     -j ACCEPT

#SSH
#iptables -A INPUT -p tcp --destination-port 22 -j DROP
#iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT

#DHCP
iptables -A INPUT -p tcp -m multiport --dports 67,68 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dports 67,68 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --sports 67,68 -j ACCEPT
iptables -A INPUT -p udp -m multiport --sports 67,68 -j ACCEPT

# Qualquer conexão desconhecida Ã(c) imediatamente registrada e derrubada
iptables -A INPUT -j LOG --log-prefix "FIREWALL: INPUT "

#Habilitando porta de DNS
iptables -A INPUT -p udp -s 192.168.1.3 --source-port 53 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 53 -j DROP

# Libera o loopback
iptables -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Libera Bittorrent somente para esta maquina
iptables -A INPUT -p tcp --destination-port 6881:6889 -j ACCEPT

# Performance - Setando acesso a web com delay minimo
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 20 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 21 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p udp --dport 53 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p udp --dport 80 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p udp --dport 587 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 4661 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 4662 -j TOS --set-tos 0x10
iptables -t mangle -A PREROUTING -i eth0 -p tcp --sport 4662 -j TOS
--set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p udp --dport 4672 -j TOS --set-tos 0x00
iptables -t mangle -A PREROUTING -i eth0 -p udp --sport 4672 -j TOS
--set-tos 0x08
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 5222 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 8118 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 9050 -j TOS --set-tos 0x10

#
#
#Bloqueia qualquer tentativa de conexao de fora para dentro por TCP
#Problema com amule
#iptables -A INPUT -i ppp+ -p tcp --syn -j DROP

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

#Protege contra Syn-floods
iptables -A INPUT -p tcp --syn -m limit --limit 2/s -j ACCEPT

#Protege contra port scanners ocultos
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit
--limit 1/s -j ACCEPT

#Protege contra ping da morte
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit
1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

#Contra ataques smurf
iptables -A INPUT -p icmp --icmp-type 8 -j DROP

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

#Responde pacotes icmp especificados e rejeita o restante
iptables -A INPUT -i ppp+ -p icmp --icmp-type host-unreachable -j ACCEPT
iptables -A INPUT -i ppp+ -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i ppp+ -p icmp -j REJECT --reject-with icmp-host-unreachable
#A regra acima Ã(c) interessante, pois da a impressão q o host não
esta on-line

#aMule
iptables -v -A INPUT -p tcp --dport 4661:4662 -j ACCEPT
iptables -v -A INPUT -p udp --dport 4665 -j ACCEPT
iptables -v -A INPUT -p udp --dport 4672 -j ACCEPT

#Fecha as portas udp de 1 a 1024, abre para o localhost
iptables -A INPUT -p udp -s 127.0.0.1/255.0.0.0 -j ACCEPT
iptables -A INPUT -p udp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 59229 -j DROP

#Definindo permissões de fora pra dentro por porta:
#iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT

#SIP
#iptables -A INPUT -p udp --dport 5060 -j ACCEPT
#iptables -A FORWARD -o eth0 -p udp --dport 5060 -j ACCEPT

#Algumas boas ideias retiradas do Arno's iptables firewall

iptables -N VALID_CHECK
iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL SYN,ACK,FIN,RST,PSH,URG -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A VALID_CHECK --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP
iptables -A VALID_CHECK -p tcp --tcp-option 64 -j DROP
iptables -A VALID_CHECK -p tcp --tcp-option 128 -j DROP
iptables -A VALID_CHECK -m state --state INVALID -j DROP
iptables -A VALID_CHECK -p tcp -m state --state NEW ! --syn -j DROP
iptables -A VALID_CHECK -p tcp --syn -j DROP
iptables -A VALID_CHECK -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP

iptables -A INPUT -j VALID_CHECK
#iptables -A FORWARD -j VALID_CHECK

# Fecha tudo ultima regra
iptables -A INPUT -p tcp --syn -j DROP
#iptables -A FORWARD -p tcp --syn -j DROP

iptables -A INPUT -i eth0 -j DROP
#iptables -A FORWARD -i eth0 -j DROP
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a