#!/bin/bash
# Script de configurao do iptables para Debian Lenny
# Este script pode ser usado em outras distribuies Linux que utilizam o Kernel 2.4 em diante
# Alteraao feita para adptao ao sistema da PMQG - Prefeitura Municipal de Quartel Geral
# Autor da adaptao - Antonio Francisco de Souza - 28/11/2008 - Administrador de Sistemas Linux/Unix
#
firewall_start(){
#
# Abre para uma faixa de endereos da rede local
#iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 3128 -j ACCEPT
#iptables -A FORWARD -s 192.168.0.2 -p tcp -m tcp --dport 80 -j DROP
iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT
#
#
iptables -A INPUT -m multiport -p tcp --dport 222,2121,995,993,587,80,21,443,10000,5800,5900,139,137,631,901 -j ACCEPT
#
# Abre uma porta (inclusive para a Internet)
#iptables -A INPUT -p tcp --dport 222 -j ACCEPT
# Abre uma porta (inclusive para a Internet)
#iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
# Abre uma porta (inclusive para a Internet)
#iptables -A INPUT -p tcp --dport 901 -j ACCEPT
# Abre uma porta (inclusive para a Internet)
#iptables -A INPUT -p tcp --dport 631 -j ACCEPT
#
iptables -A INPUT -p udp --dport 631 -j ACCEPT
#
# Abre uma porta (inclusive para a Internet)
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Abre uma porta (inclusive para a Internet)
#iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
# Abre uma porta (inclusive para a Internet)
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# Abre uma porta (inclusive para a Internet)
#iptables -A INPUT -p tcp --dport 139 -j ACCEPT
#
#
# Ignora pings
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
#
# Proteo contra IP spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
# 
# Protege contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# 
# Proteo contra ICMP Broadcasting 
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# 
# Bloqueia traceroute
iptables -A INPUT -p udp --dport 33435:33525 -j DROP
# 
# Protees diversas contra portscanners, ping of death, ataques DoS, etc.
iptables -A INPUT -m state --state INVALID -j DROP
# 
# Abre para a interface de loopback.
# Esta regra  essencial para o KDE e outros programas grficos funcionarem adequadamente.
iptables -A INPUT -i lo -j ACCEPT
# 
# Fecha as portas udp de 1 a 1024 e porta alta 59229 altamente suspeita
iptables -A INPUT -p udp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 59229 -j DROP
# 
# Bloqueia uma porta de sada, tanto local quanto forward
#
# Limewire
iptables -A FORWARD -p TCP --dport 6346 -j REJECT
# Audiogalaxy
iptables -A FORWARD -d 64.245.58.0/23 -j REJECT
# GNUTella
#
iptables -A FORWARD -d 64.13.152.67 -j REJECT
#
# Bloqueando sites de redirecionamento suspeito que usam a porta segura (https:// - 443)
iptables -A FORWARD -d imo.im -p tcp --dport 443 -j DROP
iptables -A FORWARD -d www.meebo.com -p tcp --dport 443 -j DROP
#iptables -A FORWARD -d secure.logmein.com -p tcp --dport 443 -j DROP
#iptables -A FORWARD -d secure.logmein.com -j DROP
#iptables -A FORWARD -d cadastro.uol.com.br -p tcp --dport 443 -j DROP
#iptables -A FORWARD -d 207.46.113.83 -p tcp --dport 443 -j DROP		# HOTMAIL
#iptables -A FORWARD -d 64.94.18.193 -p tcp --dport 443 -j DROP		# LOGMEIN
#iptables -A FORWARD -d 64.94.18.197 -p tcp --dport 443 -j DROP		# LOGMEIN
#
iptables -A FORWARD -p tcp --dport 6346 -j REJECT
#
# eDonkey
iptables -A FORWARD -p tcp --dport 4661:4662 -j REJECT
iptables -A FORWARD -p udp --dport 4665 -j REJECT
iptables -A FORWARD -d login.oscar.aol.com -j REJECT
#
# Bloqueando ICQ
iptables -A FORWARD -p tcp --dport 5190 -j REJECT
iptables -A FORWARD -d login.icq.com -j REJECT
#
# Bloqueando Yahoo Messenger
#iptables -A FORWARD -d cs.yahoo.com -j REJECT
iptables -A FORWARD -d scsa.yahoo.com -j REJECT
#
# Bloqueando MSN messenger - todas as verses
#iptables -A FORWARD -p tcp --dport 1863 -j REJECT
#iptables -A FORWARD -d 64.4.13.0/24 -j REJECT
iptables -A INPUT -p tcp --dport 1863 -j DROP
iptables -A INPUT -p udp --dport 1863 -j DROP
iptables -A OUTPUT -p tcp --dport 1863 -j DROP
iptables -A FORWARD -p tcp --dport 1863 -j DROP
iptables -A OUTPUT -p udp --dport 1863 -j DROP
iptables -A FORWARD -p udp --dport 1863 -j DROP
# 
# Redireciona uma faixa de portas para um micro da rede local
# Libera a porta que ser usada aqui
#iptables -t nat -A PREROUTING -p tcp -i ra0 --dport 2222 -j DNAT --to 192.168.0.2
#iptables -t nat -A POSTROUTING -d 192.168.0.2 -j SNAT --to 192.168.0.1
# 
# Esta regra  o corao do firewall do Kurumin,
# ela bloqueia qualquer conexo que no tenha sido permitida acima, justamente por isso ela  a ltima da cadeia.
#iptables -A INPUT -p tcp --dport 3128 -j DROP
iptables -A INPUT -p tcp --syn -j DROP
# 
echo "O Firewall do Administrador Toninho est sendo carregado..."
sleep 1
echo "Tudo pronto! Agora voc esta mais seguro."
sleep 1
}
firewall_stop(){
iptables -F
iptables -X
iptables -P INPUT   ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT  ACCEPT
}
 
case "$1" in
 "start")
firewall_start
        ;;
 "stop")
        firewall_stop
echo "O Firewall est sendo desativado"
sleep 2
echo "ok."
        ;;
  "restart")
echo "O Firewall est sendo desativado"
sleep 1
echo "ok."
        #firewall_stop; firewall_start
	firewall_stop
	echo "O Firewall est sendo reiniciado"
	firewall_start
	echo "OK... A segurana acima de tudo..."
        ;;
      *)
echo "Regras ativas..."
        iptables -L -n
echo ""
echo "Use os parametros stop, start ou restart"
esac
