A� vai!
Fernando
#!/bin/sh ### Setar vari�veis IFINT="" IFEXT="" MASCARA="" NET="" IP_GW_INT="" IP_GW_EXT=""
WEB=""
MAIL=""
DNS=""
WIN=""
FTP=""
VALIDICMP=""
VALIDICMP="$VALIDICMP destination-unreachable"
VALIDICMP="$VALIDICMP source-quench"
VALIDICMP="$VALIDICMP time-exceeded"
VALIDICMP="$VALIDICMP parameter-problem"
VALIDICMP="$VALIDICMP echo-reply"
### Prote��es
for i in /proc/sys/net/ipv4/conf/*/rp_filter
do echo 1 > $i
done
for i in /proc/sys/net/ipv4/conf/*/log_martians
do echo 1 > $i
done
for i in /proc/sys/net/ipv4/conf/*/accept_source_route
do echo 0 > $i
done
for i in /proc/sys/net/ipv4/conf/*/accept_redirects
do echo 0 > $i
done
for i in /proc/sys/net/ipv4/conf/*/send_redirects
do echo 0 > $i
done
for i in /proc/sys/net/ipv4/conf/*/secure_redirects
do echo 0 > $i
done
### Alterar par�metros da configura��o de rede
IPV4="/proc/sys/net/ipv4"
echo 1 > $IPV4/icmp_echo_ignore_broadcasts
echo 1 > $IPV4/icmp_ignore_bogus_error_responses
echo 30 > $IPV4/tcp_fin_timeout
echo 60 > $IPV4/tcp_keepalive_intvl
echo 5 > $IPV4/tcp_keepalive_probes
echo 3600 > $IPV4/tcp_keepalive_time
echo 5 > $IPV4/tcp_retries1
echo 5 > $IPV4/tcp_retries2
echo 5 > $IPV4/tcp_syn_retries
echo 1 > $IPV4/tcp_syncookies
###START
case "$1" in
start)
echo -n "Ativando Firewall: "
#Limpa as regras
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat
iptables -F -t mangle
#Hab. o Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
#Bloqueia entrada e forward, deixa saida livre
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#Seta as regras para cada caso de tr�fego
iptables -N int-me
iptables -N ext-me
iptables -N int-ext
iptables -N ext-int
### Outras Prote��es
iptables -A INPUT -m unclean -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp -m state --state NEW ! --syn -j DROP
iptables -A FORWARD -m unclean -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A FORWARD -p tcp -m state --state NEW ! --syn -j DROP
#Redireciona cada fluxo para sua chain particular
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s $NET -d $IP_GW_INT -i $IFINT -j int-me
iptables -A INPUT -s $NET -d $IP_GW_EXT -i $IFINT -j int-me
iptables -A INPUT -i $IFEXT -d $IP_GW_INT -j ext-me
iptables -A INPUT -i $IFEXT -d $IP_GW_EXT -j ext-me
iptables -A INPUT -j BLOCK
iptables -A FORWARD -i $IFINT -o $IFEXT -j int-ext
iptables -A FORWARD -i $IFEXT -o $IFINT -j ext-int
iptables -A FORWARD -j BLOCK
### Priorizar tr�fego dos principais servi�os
iptables -t mangle -A POSTROUTING -p tcp --sport 21 -j TOS --set-tos
Minimize-Delay
iptables -t mangle -A POSTROUTING -p tcp --sport 22 -j TOS --set-tos
Minimize-Delay
iptables -t mangle -A POSTROUTING -p tcp --sport 25 -j TOS --set-tos
Minimize-Delay
iptables -t mangle -A POSTROUTING -p tcp --sport 80 -j TOS --set-tos
Minimize-Delay
iptables -t mangle -A POSTROUTING -p tcp --sport 110 -j TOS --set-tos
Minimize-Delay
### Seta regras para cada grupo de tr�fego
### int-me
iptables -A int-me -i $IFINT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A int-me -p tcp -s xxx.xxx.xxx.xxx --dport 22 -j ACCEPT
for icmp_type in $VALIDICMP; do
iptables -A int-me -p icmp --icmp-type $icmp_type -j ACCEPT
done
iptables -A int-me -p icmp --icmp-type echo-request -m limit --limit 1/s -j
ACCEPT
iptables -A int-me -j BLOCK
### ext-me
iptables -A ext-me -i $IFINT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A ext-me -p tcp -s 200.207.79.136 --dport 22 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 127.0.0.0/8 -j DROP
iptables -A INPUT -s 172.16.0.0/16 -j DROP
iptables -A INPUT -s 192.168.0.0/24 -j DROP
iptables -A ext-me -j BLOCK
### int-ext
iptables -A int-ext -j ACCEPT
### ext-int
#iptables -A ext-int -p ip -s 200.207.79.136 -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/8 -j DROP
iptables -A FORWARD -s 127.0.0.0/8 -j DROP
iptables -A FORWARD -s 172.16.0.0/16 -j DROP
iptables -A FORWARD -s 192.168.0.0/24 -j DROP
for icmp_type in $VALIDICMP; do
iptables -A ext-int -p icmp --icmp-type $icmp_type -j ACCEPT
done
iptables -A int-me -p icmp --icmp-type echo-request -m limit --limit 1/s -j
ACCEPT
iptables -A ext-int -i $IFEXT -m state --state ESTABLISHED,RELATED -j ACCEP
for server in $WEB; do
server=xxx.xxx.xxx.$server
iptables -A ext-int -p tcp -d $server --dport 80 -j ACCEPT
iptables -A ext-int -p tcp -d $server --dport 443 -j ACCEPT
iptables -A ext-int -p tcp -d $server --dport 3306 -j ACCEPT
done
for server in $FTP; do
server=xxx.xxx.xxx.$server
iptables -A ext-int -p tcp -d $server --dport 20:21 -j ACCEPT
iptables -A ext-int -p tcp -d $server --dport 60000:61000 -j ACCEPT
done
for server in $MAIL; do
server=xxx.xxx.xxx.$server
iptables -A ext-int -p tcp -d $server --dport 25 -j ACCEPT
iptables -A ext-int -p tcp -d $server --dport 80 -j ACCEPT
iptables -A ext-int -p tcp -d $server --dport 110 -j ACCEPT
iptables -A ext-int -p tcp -d $server --dport 443 -j ACCEPT
done
for server in $DNS; do
server=xxx.xxx.xxx.$server
iptables -A ext-int -p tcp -d $server --dport 53 -j ACCEPT
iptables -A ext-int -p udp -d $server --dport 53 -j ACCEPT
iptables -A ext-int -p udp -d $server --sport 53 --dport 1024: -j
ACCEPT
done
### Final das regras para start do Firewall
iptables -A ext-int -j BLOCK
echo done
exit
;;
stop)
echo "Parando Firewall: "
#Limpa as regras
iptables -F int-me
iptables -F ext-me
iptables -F int-ext
iptables -F ext-int
iptables -F -t mangle
iptables -F -t nat
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
#Remove as chains e libera acesso
iptables -X int-me
iptables -X ext-me
iptables -X int-ext
iptables -X ext-int
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
#Remove o Forwarding
echo 0 > /proc/sys/net/ipv4/ip_forward
exit
;;
restart)
$0 stop
$0 start
exit
;;
status)
iptables -L -v
exit
;;
*)
echo "Utilize somente: $0 {start|stop|restart|status}
exit
;;
esac
--------------------------------------------------------------------------- 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
