- IPTABLES e Squid
+ Responder ao Tópico
-
IPTABLES e Squid
Olá pessoal, sou novo por aqui, estou precisando de umas dicas pois confesso estou um pouco confuso..
Configurei o firewall na empresa que tem 2 placas de rede eth0 link da Embratel 200.xxx.xxx.xxx IP FIXO e a eht1 192.168.0.0 para rede local.
O Squid esta funcionando perfeitamente.
porem ja tentei de tudo um pouco para liberar as portas 110 e 25 do outloock express e nada ou até mesmo a porta 143 do imap.
Outra coisa todos que acessam o site da empresa www.empresa.com.br da uma pagina do squid dizendo acesso negado,o endereço da empresa aponta para o IP Fixo do servidor configurado pela fapesp, se u digitar o IP exemplo: 200.000.000.000 ou www.empresa.com.br fora da minha rede exemplo em casa vem a pagina de acesso negado do squid como faço para liberar isso no Iptables ou squid
basicamente preciso liberar o webmin pra mim acessar de casa o site e baixar e-mail nas estações já tentei de tudo sempre da erro a distro que estou usando é RedHat 9.0, segue abaixo o script do firewall:
se alguem puder me ajuda eu agradeço, muito.....
Pessoal um grande abraço..
Wellyngton Tharyck
#!/bin/sh
./ etc/init.d/functions
#Copy Right 2004
start() {
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_tables
modprobe ipt_state
modprobe ipt_limit
modprobe ipt_LOG
modprobe ipt_REJECT
IF=eth0 # Interface de saida
echo -n "***** Iniciando Firewall *****"
echo "1" > /proc/sys/net/ipv4/ip_forward
# Limpa Regras - FLUSH
iptables -t nat --flush
iptables -t filter --flush
# Estabelece Politica Padrao
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# Ativa Filtro de Match Extensions
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Libera Loopback
iptables -A FORWARD -s 0/0 -d 0/0 -j ACCEPT -i lo
iptables -A INPUT -s 0/0 -d 0/0 -j ACCEPT -i lo
# Libera Inputs para a Porta 22 - SSH / Samba
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT # Rede interna
# Libera Inputs para as Portas SMTP, HTTP, HTTPS, POP, FTP e Proxy
iptables -A INPUT -p tcp --dport 25 -j ACCEPT #SMTP - Tcp/Ip
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #HTTP - Tcp/Ip
iptables -A INPUT -p tcp --dport 443 -j ACCEPT #HTTPS - Tcp/Ip
iptables -A INPUT -p tcp --dport 110 -j ACCEPT #POP - Tcp/Ip
iptables -A INPUT -p tcp --dport 53 -j ACCEPT #DNS - Tcp/Ip
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #FTP - Tcp/Ip
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT #Proxy - Tcp/Ip
# Libera acesso aos servicos SMTP, HTTP, HTTPS, POP, DNS, FTP e Proxy
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT #SMTP - Tcp/Ip
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT #HTTP - Tcp/Ip
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT #HTTPS - Tcp/Ip
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT #POP - Tcp/Ip
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT #DNS - Tcp/Ip
iptables -A FORWARD -p tcp --dport 21 -j ACCEPT #FTP - Tcp/Ip
iptables -A FORWARD -p tcp --dport 3128 -j ACCEPT #Proxy - Tcp/Ip
# Nega acessos externos
iptables -A INPUT -p udp --dport 69 -j DROP
iptables -A INPUT -p udp --dport 161 -j DROP
iptables -A INPUT -p udp --dport 1024 -j DROP
iptables -A INPUT -p udp --dport 31337 -j DROP
iptables -A FORWARD -p udp --dport 6000 -j DROP
iptables -A FORWARD -p tcp --dport 6000 -j DROP
# Estabelece NAT
iptables -t nat -A POSTROUTING -s 0/0 -d 0/0 -o eth0 -j MASQUERADE # NAT na saida
iptables -A FORWARD -s 0/0 -d 0/0 -j ACCEPT
# Estabelece Proxy Transparente
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
echo " [ ok ] "
}
stop () {
echo -n "***** Parando Firewall *****"
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat --flush
iptables -t filter --flush
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
echo " [ ok ] "
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo " Uso: firewall (start | stop | restart)"
echo
esac
exit 0
-
IPTABLES e Squid
Caro well,
nao sei se posso te ajudar,mas qto as portas 25 e 110, tente substituir suas regras por essas...e qto ao erro de acesso negado fico te devendo...
iptables -A FORWARD -p TCP -s 192.168.0.0/24 --dport 25 -j ACCEPT
iptables -A FORWARD -p TCP -s 192.168.0.0/24 --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
espero ter ajudado..
[]´s
-
IPTABLES e Squid
IMPLEMENTANDO IPTABLES + OUTLOOK + SQUID
por Márcio Oliveira (beastie)
Introdução
Bom pessoal, meu objetivo não é construir um firewall muito avançado, nem mostrar regras muito especificas, meu objetivo é implementar um firewall simples, que possibilite a navegação e uso de SQUID + OUTLOOK, para uma pequena ou grande rede, dependendo da necessidade.
Neste caso , estamos assim:
ip válido : 200.xxx.xxx.xxx
ip da rede : 10.0.0.0/8
ip do firewall na rede : 10.0.0.1
eth1 interface da internet
eth0 interface da rede local
IPTABLES
Vou usar IPTables, pois está muito estável e é uma boa "pedida" quando falamos em firewall, apesar de eu particularmente usar também ipchains em firewalls mais antigos e me divertir com ipmasqadm mfw e portfw... hehehe...
Basico do básico, vamos começar a carregar os módulos:
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_state
/sbin/modprobe ipt_MASQUERADE
Beleza, carregados os módulos, vamos dar um "flushing" no firewall, para não termos problemas do tipo: Porque quando eu tiro o proxy do navegador ele continua a utilizar a internet?"...
/usr/sbin/iptables -F
/usr/sbin/iptables -Z
/usr/sbin/iptables -X
/usr/sbin/iptables -t nat -F
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
/usr/sbin/iptables -P OUTPUT ACCEPT
Detalhes relevantes: nunca se esqueça de dar um flushing na tabela nat também, e pessoal, pensa bem, você tem que liberar o que É NECESSÁRIO, e não tudo, por isso o Policy padrão de input e do forward é DROP, porque se não ta nas regras, ou você esqueceu ou não é para estar liberado! Isso evita acidentes "comuns".
Habilitando roteamento e demais cositas...
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
No meu firewal nada de scan...
INPUT
Vamos liberar o INPUT para a interface de loopback, que só vai ser usada pelo servidor, mas com origem de qualquer ip, para não ter perigo de não manipular alguns pacotes:
/usr/sbin/iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
/usr/sbin/iptables -A INPUT -p ALL -s 10.0.0.1 -i lo -j ACCEPT
/usr/sbin/iptables -A INPUT -p ALL -s 200.xxx.xxx.xxx -i lo -j ACCEPT
Agora uma regra que eu procuro colocar no começo, que na minha opinião melhora um "pouco" a performance do firewall já que a leitura das regras para os pacotes é linear. Ela diz que toda conexão estabilizada ou relacionada com o meu firewall deve ser mantida e não analizada pelas proximas regras:
/usr/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Libera as respostas dos DNS para meu firewall
/usr/sbin/iptables -A INPUT -p udp -s 200.204.0.10 --sport 53 -d 200.xxx.xxx.xxx -j ACCEPT
/usr/sbin/iptables -A INPUT -p udp -s 200.204.0.138 --sport 53 -d 200.xxx.xxx.xxx -j ACCEPT
Nada de pacote fragmentado no meu firewall! Se temos um programa criando pacotes despadronizados ou uma tentativa de ataque, o problema não é meu!
/usr/sbin/iptables -A INPUT -i eth1 -f -j LOG --log-prefix "Pacote INPUT fragmentado: "
/usr/sbin/iptables -A INPUT -i eth1 -f -j DROP
(Não esquecendo de logar o pacote fragmentado para descobrir oquê ele é).
Evitando Spoofing:
/usr/sbin/iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
/usr/sbin/iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
/usr/sbin/iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
/usr/sbin/iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP
/usr/sbin/iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP
Obs: as mascaras estão corretas.
Regras para ping, aqui varia muito de admin para admin, eu só libero resposta de ping de outros ips, ping para minha rede interna e ping do servidor da minha empresa para o firewall do cliente, como ta na ultima linha:
/usr/sbin/iptables -A INPUT -p icmp --icmp-type 8 -i eth0 -j ACCEPT
/usr/sbin/iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
/usr/sbin/iptables -A INPUT -p icmp -s 200.20x.xxx.xxx -d 200.xxx.xxx.xxx -j ACCEPT
Libero o acesso as squid para minha rede interna:
/usr/sbin/iptables -A INPUT -p TCP -i eth0 -s 10.0.0.0/8 --dport 3128 -j ACCEPT
Libero o acesso ao ssh:
/usr/sbin/iptables -A INPUT -p TCP --dport 22 -j ACCEPT
Libera resposta de servidores www para meu squid:
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 80 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 443 -j ACCEPT
/usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 20 -j ACCEPT
/usr/sbin/iptables -A INPUT -p UDP -i eth1 --sport 21 -j ACCEPT
Ora de mandar embora as porcarias, agora que ta tudo que eu preciso liberado:
/usr/sbin/iptables -A INPUT -p tcp --dport 3128 -j REJECT --reject-with tcp-reset
/usr/sbin/iptables -A INPUT -j LOG --log-prefix "Pacote input descartado: "
/usr/sbin/iptables -A INPUT -j DROP
Não esqueça de sempre logar o que você descarta, pois pode ser uma tentativa de ataque ou uma porta que deve ser liberada para um programa funcionar!
FORWARD
Já começamos com barra pesada no forward, descartando os pacotes inválidos, coisa que no ipchains deixa os admins de firewall loucos:
/usr/sbin/iptables -A FORWARD -m state --state INVALID -j DROP
Aceita as conexões estabilizada e recionadas com outras feitas nos pcs da minha rede interna:
/usr/sbin/iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Opa, aqui está um dos segredos para o outlook funcionar, uma coisa que ninguém faz e todo mundo reclama que o teu outlook não funciona, é liberar a resposta e o acesso aos resolvedores de nome, para que o outlook transforme o nome que ele possui no servoidor smtp e pop em um ip:
/usr/sbin/iptables -A FORWARD -p udp -s 10.0.0.0/8 -d 200.204.0.10 --dport 53 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p udp -s 10.0.0.0/8 -d 200.204.0.138 --dport 53 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p udp -s 200.204.0.10 --sport 53 -d 10.0.0.0/8 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p udp -s 200.204.0.138 --sport 53 -d 10.0.0.0/8 -j ACCEPT
Feito isso, vamos liberar para a minha rede interna as portas que o outlook vai utilizar para acessar os servidores externos:
/usr/sbin/iptables -A FORWARD -p TCP -s 10.0.0.0/8 --dport 25 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p TCP -s 10.0.0.0/8 --dport 110 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
/usr/sbin/iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
Pronto, o nosso objetivo do outlook funcionar está OK! Agora vamos dropar o resto, nunca se esquecendo de logar isso:
/usr/sbin/iptables -A FORWARD -j LOG --log-prefix "Pacote forward descartado: "
/usr/sbin/iptables -A FORWARD -j DROP
No caso da rede que eu fiz isso, eram poucos pcs, uns 30, então em masquerei a conexão mesmo, mas nada te impede de usar SNAT:
/usr/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
Entendendo o Funcionamento do Outlook:
Bem pessoal, depois de tudo isso as regras estão ai, mas pode ser que não entendam o funcionamento do outlook, então vamos lá:
* Foi liberado o acesso da minha rede interna aos resolvedores de nome (200.204.0.10 e 200.204.0.138) para que o outlook consiga transformar pop.domain.com.br em um ip.
* Foi liberada requisição das estações nas portas 25 e 110 na rede externa e resposta da rede externa pelas portas 25 e 110.
* Não esquecendo que as conexões da rede interna estão sendo mascaradas e toda conexão estabelecida ou relacionada por elas é aceita, não sofrendo novamente a verificação das regras do firewall subsequentes.
* Não se esqueça do principal: a configuração da estação de trabalho deve ser a serguinte:
gateway : 10.0.0.1 (no meu caso, este é o ip do firewall)
dns primário : 200.204.0.10
dns secundário : 200.204.0.138
Sem essas configurações nas estações, nada funcionará.
Pronto, as simples regras estão OK e o outlook funciona!!!
Márcio Oliveira (beastie)
Analista Linux
Netkraft Tecnologia de Redes
[email protected]
Fontes de Pesquisa:
Meu Dia-a-Dia.
-
Firewall
OK...
Mas uma dúvida com aquele meu firewall tem como liberar as portas mencionadas e acesso aos outro itens?
Obrigado