_cabelo_
(usa Debian)
Enviado em 29/04/2009 - 08:35h
Galera venho recorrer ao VOL novamente pois já revirei a net e nao consegui fazer funcionar.
Estou desenvolvendo um serviço de captive portal, (eu sei que parece que estou reinventando a roda, mas é que os existentes tem muitos recursos desnecessarios para mim), e nesse captive portal eu ja testei diversos firewalls que encontrei pela net como o do Carlos Affonso Enriques no viva o linux e também o do darkstarlinux no slackbr.org mas nenhum dos firewall me deram uma respota favoravel do que preciso, o que preciso é o seguinte.
Quando o usuário for acessar a página principal definida no navegador dele ele será redirecionado para o servidor local onde será pedido o usuario e senha para conferir com o do meu banco de dados mysql, isto ai este tudo OK o problema é no redirecionamento da url acontece o seguinte, se eu digito
www.uol.com.br o navegador fica buscando até dar falha de conexão mas se eu digito 200.98.249.120 (IP do UOL), ele é redirecionado para a minha página de login corretamente, agora eu nao consiguo entender o que acontece para dar este erro.
Segue o meu script de firewall
#!/bin/bash
### Define as variaveis
IPT=/sbin/iptables
IPCLIENTE='/instala/firewall-ips'
IFACENET=eth0
#### Ativa o roteamento
echo "1" > /proc/sys/net/ipv4/ip_forward
#### Limpa as regras
$IPT -F
$IPT -X
$IPT -Z
$IPT -F -t nat
$IPT -X -t nat
$IPT -Z -t nat
#### Define a politica padrao
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
#### Libera o interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
#### Filtros
# Bloquear Netbios
$IPT -A INPUT -p udp --dport 137:139 -j DROP
$IPT -A INPUT -p tcp --dport 137:139 -j DROP
$IPT -A INPUT -p tcp --dport 445 -j DROP
$IPT -A FORWARD -p udp --dport 137:139 -j DROP
$IPT -A FORWARD -p tcp --dport 137:139 -j DROP
$IPT -A FORWARD -p tcp --dport 445 -j DROP
# Bloquear o uso de Proxy externo
$IPT -A FORWARD -p tcp --dport 3128 -j DROP
$IPT -A FORWARD -p tcp --dport 8080 -j DROP
# Bloquear acesso externo a porta do virtual host de autenticacao
$IPT -A INPUT -i $IFACENET -p tcp --dport 82 -j DROP
#### Redireciona toda a rede
grep "^" $IPCLIENTE | while read IP;
do
# Cria uma nova chain (cadeia)
$IPT -t nat -N "PRE-$IP"
# Redireciona o trafego do IP do cliente da porta 80 pra porta 82 onde roda o virtual host do apache
echo $IP
$IPT -t nat -A PREROUTING -i eth1 -p tcp -s $IP -j REDIRECT --to-port 82
#$IPT -t nat -A "PRE-$IP" -i eth1 -p tcp -s $IP --dport 80 -j REDIRECT --to-port 82
Esta é a regra real que existia no firewall do darkstarlinux mas foi modificada pois não funcionava de jeito nenhum
# Redireciona o tráfego do IP do cliente da porta 80 pra cadeia com o IP
$IPT -t nat -A PREROUTING -i eth1 -p tcp -s $IP --dport 80 -j "PRE-$IP"
# Bloqueia conexões de entrada da porta 0 ate 1024 com destino ao IP do cliente
#$IPT -A FORWARD -s 192.168.0.0/24 -d $IP -p tcp --dport 0:1024 -j DROP
done
#### Ativa os modulos do Kernel
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_tables
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tcpmss
modprobe ipt_tos
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
echo "-----------------------------------------------------------------------"
este é o meu script a variavel IPCLIENTE recebe do arquivo firewall-ips corretamente pois eu coloquei um echo para verificar. Peço que por favor me deem uma ajudinha para este projeto..
Desde já agradeço
__________________
Fernando Piovezan
MNP - Soluções em Informática