ivancsantos
(usa Debian)
Enviado em 05/01/2012 - 10:44h
Caro colega Saitam, seu script não está configurado para uso com proxy transparente, que é o caso do nosso amigo Renato.
@Renato, estou postando um script de iptables padrão que utilizo, ele deve ajudar no que você precisa atualmente mas provavelmente será necessário que você faça alterações para o ambiente em que ele irá rodar, por isso é recomendado a leitura que sugeri anteriormente, aqui está:
#!/bin/bash
#
# description: Este script controla o start/stop do servico de
# firewall baseado no IPTABLES.
#
case "$1" in
start)
echo -e "\nIniciando o FIREWALL...\n"
# ------------------------------------------------------------------------------
# Remove todas as regras
# ------------------------------------------------------------------------------
$BIN -F
$BIN -X
$BIN -Z
$BIN -F -t nat
$BIN -X -t nat
$BIN -F -t mangle
$BIN -X -t mangle
echo "Limpando Regras ............................. [ OK ]"
# ------------------------------------------------------------------------------
# Definicao de variaveis
# ------------------------------------------------------------------------------
IPTABLES="/sbin/iptables"
INT_NET="192.168.1.0/24" # Endereço da rede interna
EXT_IF="eth0" # Interface de rede Internet
INT_IF="eth1" # Interface de rede Intranet
EXT_IP=`ifconfig $EXT_IF | grep inet | cut -d : -f 2 | cut -d \ -f 1`
INT_IP="192.168.1.254 # IP da Interface INT_IF deste servidor
# ------------------------------------------------------------------------------
# Carregando Modulos
# ------------------------------------------------------------------------------
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_mark
modprobe ipt_MARK
modprobe ipt_string
# ------------------------------------------------------------------------------
# Politicas Padrao
# -----------------------------------------------------------------------------
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -i $INT_IF -s $INT_NET -j ACCEPT
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth1/rp_filter
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Aplicando Politicas Padrao .................... [ OK ]"
# ------------------------------------------------------------------------------
# Portas permitidas
# ------------------------------------------------------------------------------
$IPTABLES -A FORWARD -i $INT_IF -s $INT_NET -o $EXT_IF -m multiport -p tcp --dport 20,21,22,25,53,110,143,443,587,993,3389 -j ACCEPT
$IPTABLES -A FORWARD -i $INT_IF -s $INT_NET -o $EXT_IF -p udp --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -i $INT_IF -s $INT_NET -o $EXT_IF -p icmp -j ACCEPT
------------------------------------------------------------------------------
# Servico publicado: ssh
# ------------------------------------------------------------------------------
$IPTABLES -A INPUT -i $EXT_IF -m state --state NEW -p tcp -d $EXT_IP --dport 22 -j ACCEPT
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# Proxy Transparente
# ------------------------------------------------------------------------------
$IPTABLES -t nat -A PREROUTING -i $INT_IF -s $INT_NET -p tcp --dport 80 -j REDIRECT --to-port 3128
# ------------------------------------------------------------------------------
# Logando tudo o que nao e permitido
# ------------------------------------------------------------------------------
$IPTABLES -A INPUT -j LOG --log-prefix "BLOQUEIO DE INPUT:" -m limit --limit 5/minute
$IPTABLES -A OUTPUT -j LOG --log-prefix "BLOQUEIO DE OUTPUT:" -m limit --limit 5/minute
$IPTABLES -A FORWARD -j LOG --log-prefix "BLOQUEIO DE FORWARD:" -m limit --limit 5/minute
echo "Aplicando Politicas Customizadas ................ [ OK ]"
iptables-save > /var/firewall-last-state
;;
stop)
# ------------------------------------------------------------------------------
# Limpando todas as regras
# ------------------------------------------------------------------------------
$BIN -F
$BIN -X
$BIN -Z
$BIN -F -t nat
$BIN -X -t nat
$BIN -Z -t nat
$BIN -F -t mangle
$BIN -X -t mangle
$BIN -Z -t mangle
# ------------------------------------------------------------------------------
# Definindo politicas padrao
# ------------------------------------------------------------------------------
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
echo 0 > /proc/sys/net/ipv4/ip_forward
;;
restart)
$0 stop
$0 start
;;
*)
echo "Sintaxe: firewall {start|stop|restart}"
;;
esac