dupotter
(usa )
Enviado em 10/09/2007 - 11:40h
Galera, to com um problema que nem eu sei explicar ao certo como é.
Eu configurei um servidor para ser meu firewall/proxy da internet, está rodando CentOS 5, iptables 1.3.5-1 e squid 2.6.
Configurei o firewall de acordo com umas dicas de um colega, essa máquina roda squid com autenticação, um webserver e um redirecionamento para um server windows que eu tenho aqui na empresa.
Uma das regras do firewall é para permitir o tráfego de emails apenas do meu server de email.
Agora vamos aos problemas:
Meus clientes de email não conseguem conectar no servidor de email que eu possuo (mail.haiala.com.br), porém se eu configurar para tentar acessar o 208.101.34.16 (o ip do servidor), os usuários baixam e recebem emails normalmente. Ou seja, o firewall tá bloqueando o acesso por nome, mas não era pra bloquear.
Outra coisa, se eu digito no navegador http://proxyserver, era pra abrir a página do Apache, pois proxyserver é o nome da minha máquina, mas não vai nem a pau, mas se eu digitar
http://198.164.1.100 que é o ip, vai tranquilo, mesma coisa com o compartilhamento do samba, só abre pelo ip. Resumindo, o firewall esta bloqueando nomes, acredito que por isso não consigo utilizar o mail.haiala.com.br nos meus clientes e penso que a navegação só esta fucionando devido ao squid.
Abaixo segue meu firewall, o que esta comentado eu comentei agora, mas não fez diferença:
################################################################################
#!/bin/bash #
# Script de firewall para a Haiala Metalurgica #
# By gilmar@agrovale.com.br #
# Editado por eduardo@haiala.com.br #
# Logica das regras: 1 Regras de NAT, 2 Regras de Input, 3 Regras de Forward #
################################################################################
# eth0 rede interna
# eth1 rede externa
# -- Definindo uma variavel para facilitar a escrita do script
IPTABLES=/sbin/iptables
#-- Carrega Modulos do Iptables
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
# -- Definindo quais maquinas poderao acessar o firewall
CONFIAVEL1=198.164.1.10
# -- Definindo Rede
REDEMASQ=198.164.1.0/24
REDEEXTERNA=200.103.98.78
REDEPROXY=198.164.1.100
REDEMAQ=00:15:17:25:C1:68
IF_INTERNA=eth0
IF_EXTERNA=eth1
MAIL=208.101.34.16
PORT=20,25,110,21,995,465,22,2631,5017,8017,80,3389,3456,40920,24001
PORT2=88,137,138,139 #,5573
# -- Limpando as regras antigas --
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -X -t nat
# -- Definindo uma politica restritiva
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
# -- Habilitando o repasse entre as placas de rede --
echo "1" > /proc/sys/net/ipv4/ip_forward
# Permitir acesso a Conectividade Social e CMT da caixa
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -s $REDEMASQ -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p all -s 200.201.174.207 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $REDEPROXY -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPTABLES -t nat -A PREROUTING -p tcp -d 200.201.173.68 --dport 80 -j DNAT --to 200.201.173.68:80
$IPTABLES -I FORWARD -p tcp -s 0.0.0.0/0 -d 200.201.173.68/32 --dport 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp -d 200.201.166.200 --dport 80 -j DNAT --to 200.201.166.200:80
$IPTABLES -I FORWARD -p tcp -s 0.0.0.0/0 -d 200.201.166.200/32 --dport 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp -d 200.201.174.207 --dport 80 -j DNAT --to 200.201.174.207:80
$IPTABLES -t nat -A PREROUTING -i $REDEPROXY -p tcp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3128
#Ativando o proxy
echo "Ativando proxy"
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 #Dir. port p/ squid
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128 #Dir. port p/ squid
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 563 -j REDIRECT --to-port 3128 #Dir. port p/ squid
# VPN - Liberando acesso
echo "Ativando rede virtual privada - VPN"
iptables -A INPUT -j ACCEPT -p tcp --dport 1723
iptables -A INPUT -i eth0 -s 0/0 -d 0/0 -p 43 -j ACCEPT
iptables -A INPUT -i eth1 -s 0/0 -d 0/0 -p 43 -j ACCEPT
iptables --append INPUT --protocol 47 --jump ACCEPT
iptables --append INPUT --protocol tcp --match tcp --destination-port 1723 --jump ACCEPT
iptables -A FORWARD -i ppp+ -j ACCEPT
iptables -A FORWARD -o ppp+ -j ACCEPT
# Redirecionamento de portas para intranet
echo "Ativando o redirecionamento para maquina na intranet"
$IPTABLES -t nat -A PREROUTING -i eth1 -d $REDEEXTERNA -p tcp --dport 8181 -j DNAT --to 198.164.1.3 #Ser. Rwindows 2003
$IPTABLES -t nat -A PREROUTING -i eth1 -d $REDEEXTERNA -p tcp --dport 80 -j DNAT --to 198.164.1.100 #Ser. Rwindows 2003
$IPTABLES -t nat -A PREROUTING -i eth1 -d $REDEEXTERNA -p tcp --dport 3389 -j DNAT --to 198.164.1.3
# Permitir pacotes com estado "estabelecido/relacionado"
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Ativar o mascaramento (nat).
$IPTABLES -t nat -F POSTROUTING
#$IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o eth1 -s $REDEMASQ -j SNAT --to $REDEEXTERNA ### Regra Gilmar beicola
#-- Controle de Acesso usando o IP x MAC --
i$IPTABLES -t filter -A FORWARD -d 0/0 -s $REDEPROXY -m mac --mac-source $REDEMAQ -j ACCEPT
$IPTABLES -t filter -A FORWARD -d $REDEPROXY -s 0/0 -j ACCEPT
$IPTABLES -t filter -A INPUT -s $REDEPROXY -d 0/0 -m mac --mac-source $REDEMAQ -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -s $REDEPROXY -o eth0 -j MASQUERADE
# -- PERMITE A SAIDA NA WWW, MAIL, FTP, SSH
$IPTABLES -t nat -A PREROUTING -p tcp -i $IF_EXTERNA -d $REDEEXTERNA -m multiport --dport $PORT -j DNAT --to $MAIL
$IPTABLES -t nat -A POSTROUTING -p tcp -o $IF_INTERNA -m multiport --dport $PORT -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -p tcp -o $IF_INTERNA -m multiport --dport $PORT2 -j MASQUERADE
# -- SAINDO DA REDE WWW, MAIL FTP, DNS, SSH
$IPTABLES -t nat -A POSTROUTING -p tcp -o $IF_EXTERNA -m multiport --dport $PORT -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -p tcp -o $IF_EXTERNA -m multiport --dport $PORT2 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -p udp -o $IF_EXTERNA --dport 53 -j MASQUERADE
echo "Liberar porta para apache"
$IPTABLES -A INPUT -p tcp --destination-port 80 -j ACCEPT
echo "Permitindo o retorno dos pacotes do redirecionamento"
$IPTABLES -A FORWARD -p tcp --dport 8181 -j ACCEPT # Serv. Rwindows 2003
$IPTABLES -A FORWARD -p tcp --dport 3389 -j ACCEPT # Serv. Rwindows 2003 TS
# Permitir qualquer solicitacao de Internet que parta da rede interna 198.164.1.0/24
$IPTABLES -A FORWARD -i eth0 -s $REDEMASQ -j ACCEPT
echo "Ativando acesso ao firewall"
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#echo "Gerando log da pora 3128"
$IPTABLES -A FORWARD -p tcp --dport 3128 -j LOG --log-prefix "Auditoria proxy via forward:"
echo "Ativando acesso administrativo ao ssh"
# Criando um perfil para acesso administrativo via secure shell (ssh)
#$IPTABLES -N ADMIN
#$IPTABLES -A ADMIN -i eth0 -p tcp --dport 2229 --syn -j LOG --log-level info --log-prefix "[Acesso Admin]:"
#$IPTABLES -A ADMIN -i eth0 -p tcp --dport 2229 --syn -j ACCEPT
# Aplicando a permissao de acesso as maquinas acessarem o firewall
#$IPTABLES -A INPUT -i eth0 -s $CONFIAVEL1 -j ADMIN
#$IPTABLES -A INPUT -i eth0 -p tcp --dport 2229 -j REJECT
echo "Ativando entrada de requisicoes ao proxy"
$IPTABLES -A INPUT -i eth0 -p tcp --dport 3128 --syn -j ACCEPT
echo "Libera acesso a rede interna"
$IPTABLES -A INPUT -p tcp --syn -s 198.164.1.0/255.255.255.0 -j ACCEPT
# Libera ping ao firewall
$IPTABLES -A INPUT -i eth0 -p icmp -d 0/0 -j ACCEPT
$IPTABLES -A INPUT -i eth1 -p icmp -d 0/0 -j ACCEPT
#-- Bloqueia qualquer pacote (INPUT) que nao liberado por regras anteriores,
#-- impedindo que novas regras sejam adicionadas por append
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
# Habilitando o trafego Ip, entre as Interfaces de rede
echo "1" > /proc/sys/net/ipv4/ip_forward