TheCarcass
(usa Ubuntu)
Enviado em 29/11/2009 - 14:40h
Pessoal,
É Possivel fazer isso que eu quero?
Aonde estou errando?
Abaixo o script
!/bin/sh
#
# Configuracao do netfilter
#
# To make Firewall start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.firewall
# Author: Marcelo Correa - (the.carcass.br@xxx.com)
# Criation: 01/08/2009
# Atualization: 02/08/2009
#
# E apoiado nos artigos de:
#
#
http://www.malibyte.net/iptables/scripts/fwscripts.html
#
http://www.zago.eti.br/firewall/iptables-modelos.html
#
http://www.vivaolinux.com.br/script/Script-Firewall-Iptables-+-compartilhar-internet/
#
http://www.linuxhelp.net/guides/iptables/
#
http://www.unixtutorial.org/2008/05/variables-in-unix-shell/
#
http://www.guiadohardware.net/tutoriais/linux-escrevendo-scripts-firewall3/
#
# eth2 - interface externa (Realtek/VIA Rhine III)
# eth1 - interface interna (3Com 3c509)
# eth0 - interface wireless (Intel e100) - A IMPLEMENTAR
echo " "
echo " * -------------------------------------------------------------"
echo " * SERVER- script de firewall com IPTables, v1 - 2009-08"
echo " * -------------------------------------------------------------"
echo " "
# Alguns aliases e probes
# Carregando modulos (WTF)
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_gre
IPTABLES=/sbin/iptables
################################################################
# Regras de INPUT
# - pacotes com destino para o firewall
config_input_rules()
{
echo " * - Configurando regras INPUT..."
# Habilita manutencao de estados existentes e DROP nos estados invalidos
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#$IPTABLES -A INPUT -m state --state INVALID -j DROP
# Permite trafego ilimitado na interface loopback
$IPTABLES -A INPUT -i lo -s 127.0.0.1/8 -d 127.0.0.1/8 -j ACCEPT
# Regra de entrada das interfaces
$IPTABLES -A INPUT -i eth1 -s 10.1.0.0/24 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
# Permite atualizacao do DNS pela estacoes
$IPTABLES -A INPUT -s 10.1.0.0/24 -p tcp --dport 953 -j ACCEPT
$IPTABLES -A INPUT -s 10.1.0.0/24 -p udp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -s 10.1.0.0/24 -p udp --dport 67 -j ACCEPT
$IPTABLES -A INPUT -s 10.1.0.0/24 -p udp --dport 68 -j ACCEPT
# Bloqueio de trafegos vindos de fora
## nenhum
# Efetuar log dos pacotes que foram dropados
$IPTABLES -A INPUT -j LOG --log-level 4 --log-prefix "DROP [INPUT]: "
echo " * ---- Regras de INPUT aplicadas."
}
################################################################
# Regras de OUTPUT
# - pacotes com origem no firewall
config_output_rules()
{
echo " * - Configurando regras OUTPUT..."
# Habilita manutencao de estados existentes e DROP nos estados invalidos
$IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
# Permite trafego ilimitado para a interface interna (eth1 ou o IP dela)
$IPTABLES -A OUTPUT -o eth1 -d 10.1.0.0/24 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -d 192.168.1.0/24 -j ACCEPT
# Permite trafego ilimitado para a interface loopback
$IPTABLES -A OUTPUT -o lo -s 127.0.0.1/8 -d 127.0.0.1/8 -j ACCEPT
# Efetuar log dos pacotes que foram dropados
$IPTABLES -A OUTPUT -j LOG --log-level 4 --log-prefix "DROP [OUTPUT]: "
echo " * ---- Regras de OUTPUT aplicadas."
}
################################################################
# Regras de FORWARD
# - pacotes roteados pelo firewall (que atravessam o firewall)
config_forward_rules()
{
echo " * - Configurando regras FORWARD..."
# Habilita manutencao de estados existentes e DROP nos invalidos
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#$IPTABLES -A FORWARD -m state --state INVALID -j DROP
# Permite trafego vindo da rede interna a sair para internet
$IPTABLES -A FORWARD -i eth1 -s 10.1.0.0/24 -o eth2 -j ACCEPT
# Permite trafego vindo da rede WIFI para sair para internet
$IPTABLES -A FORWARD -i eth0 -s 192.168.1.0/24 -o eth2 -j ACCEPT
# Permite trafego entre redes WIFI/interna
$IPTABLES -A FORWARD -s 10.1.0.0/24 -d 192.168.1.0/24 -j ACCEPT
$IPTABLES -A FORWARD -s 192.168.1.0/24 -d 10.1.0.0/24 -j ACCEPT
$IPTABLES -A FORWARD -s 10.1.0.0/24 -d 192.168.0.0/24 -j ACCEPT
$IPTABLES -A FORWARD -s 192.168.0.0/24 -d 10.1.0.0/24 -j ACCEPT
# Efetuar log dos pacotes que foram dropados
$IPTABLES -A FORWARD -j LOG --log-level 4 --log-prefix "DROP [FORWARD]: "
echo " * ---- Regras de FORWARD aplicadas."
}
################################################################
# Regras de NAT
# - pacotes que sofrem traducao de endereco/porta
config_nat_tables()
{
echo " * - Configurando tabelas NAT..."
$IPTABLES -t nat -A POSTROUTING -s 10.1.0.0/24 -o eth2 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j MASQUERADE
echo " * ---- Tabelas NAT criadas."
}
################################################################
# Funcao para start do firewall (vide final do script)
fwstart()
{
echo " * - Ativando protecoes diversas..."
# Desligando forward
echo 0 > /proc/sys/net/ipv4/ip_forward
# Alteracao de rotas
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# "bogus responses"
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Traceroute
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
# Pacotes de spoofing
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/conf/default/rp_filter
# Turn on dynamic IP hacking (WTF?)
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# Broadcast echo
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# SYN-Flood (TCP SYN Cookie Protection)
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# Log dos "Martian Packets"
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
# Limpa tabelas de regras
echo " * - Limpando regras..."
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
# Limpa tabelas NAT
echo " * - Limpando tabelas NAT..."
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t nat -Z
$IPTABLES -t nat -F POSTROUTING
$IPTABLES -t nat -F PREROUTING
# Aplica politicas default
echo " * - Aplicando politicas default (restritivas)..."
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
# Aplicacao das regras
echo " * - Aplicando regras..."
config_input_rules
config_output_rules
config_forward_rules
config_nat_tables
# Habilita roteamento no kernel - isso EFETIVAMENTE interliga as redes interna e externa
echo " * - Ativando forwarding no kernel..."
echo "1" > /proc/sys/net/ipv4/ip_forward
}
################################################################
# Funcao para finalizacao do firewall
fwstop()
{
# Interrompe o roteamento
echo " * - Desativando forwarding no kernel..."
echo "0" > /proc/sys/net/ipv4/ip_forward
# Limpa tabelas de regras
echo " * - Limpando tabelas de regras..."
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
# Limpa tabelas NAT
echo " * - Limpando tabelas NAT..."
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t nat -Z
$IPTABLES -t nat -F POSTROUTING
$IPTABLES -t nat -F PREROUTING
# Aplica politicas default
echo " * - Aplicando regras default para restricao..."
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
# Permite trafego ilimitado na interface e rede interna
echo " * - Aplicando regras default para servidor e rede local..."
$IPTABLES -A INPUT -i lo -s 127.0.0.1/8 -d 127.0.0.1/8 -j ACCEPT
$IPTABLES -A INPUT -i eth1 -s 10.1.0.0/24 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
$IPTABLES -A OUTPUT -o lo -s 127.0.0.1/8 -d 127.0.0.1/8 -j ACCEPT
$IPTABLES -A OUTPUT -o eth1 -d 10.1.0.0/24 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -d 192.168.1.0/24 -j ACCEPT
#$IPTABLES -A OUTPUT -o ppp0 -s 127.0.0.1/8 -j ACCEPT
}
case "$1" in
start)
echo " * Firewall - iniciando..."
fwstart
;;
stop)
echo " * Firewall - finalizando..."
fwstop
;;
restart)
echo " * Firewall - reiniciando..."
fwstop
fwstart
;;
*)
echo "Sintaxe: ./galactus.firewall.sh [start|stop|restart]"
echo " "
exit 1
;;
esac
echo " "
echo " * Concluido!"
echo " * -------------------------------------------------------------"
exit 0