Fórum Ubuntu Linux - PT
Suporte Técnico => Servidores => Tópico iniciado por: lucascatani em 22 de Maio de 2012, 11:11
-
Tenho um ip profissional ligado ao meu firewall: IP: 189.11.189.11
Na rede internet um servidor web com o ip 192.168.0.214 na porta 8181.
Problema:
"fora da rede" eu acesso sem problemas pelo endereço 189.11.189.11:8181
Gostaria de poder acessar pelo mesmo endereço da rede interna.
Alguma solução?
-
Vc está fazendo redirecionamento do IP da rede externa para a rede interna, correto?
O que acontece é que quando uma máquina da rede interna tenta acessar esse servidor, o pacote tem endereço de destino externo, e endereço de origem interno. Esses pacotes batem no roteador e são redirecionados, passando a ter endereço de destino interno.
Quando o servidor recebe esse pacote, ele vê o endereço de destino interno, e responde diretamente à origem, com o seu endereço interno. Só que a origem estranha, pois abriu uma conexão pra 189.11.189.11, e não pra 192.168.0.214. Resultado, a origem descarta o pacote.
Pra isso não acontecer, o servidor não pode responder diretamente à origem. O pacote tem que passar pelo roteador, pra que ele possa desfazer a troca de endereços.
Tem 3 soluções pra isso:
1. Redirecionar a origem do pacote pro IP do roteador/firewall. Isso faz com que o servidor responda pro roteador, em vez de responder diretamente à origem. Assim, o roteador tem a chance de destrocar os endereços, fazendo com que o pacote volte à origem com os endereços corretos.
A desvantagem desse método é que todos os acessos vão parecer estar vindo do roteador, inutilizando seu log de acesso.
2. Colocar o servidor numa sub-rede separada --- uma DMZ, por exemplo. Assim o pacote vai ter que voltar pro roteador, pra voltar pra rede interna.
3. Usar seu servidor DNS interno pra responder endereços diferentes pra quem acessa de dentro e de fora da sua rede. Assim vc pode acessar o servidor usando o endereço interno.
-
1. Redirecionar a origem do pacote pro IP do roteador/firewall. Isso faz com que o servidor responda pro roteador, em vez de responder diretamente à origem. Assim, o roteador tem a chance de destrocar os endereços, fazendo com que o pacote volte à origem com os endereços corretos.
A desvantagem desse método é que todos os acessos vão parecer estar vindo do roteador, inutilizando seu log de acesso.
Para minha situação, a única solução viável é essa, a 1. Sem querer abusar, como eu faço?
Desde já agradeço
-
Tem que adicionar uma regra de SNAT ao seu firewall.
PS: Levou em conta a situação de perder o log de acesso ao servidor?
-
Tem que adicionar uma regra de SNAT ao seu firewall.
PS: Levou em conta a situação de perder o log de acesso ao servidor?
Não tem como eu fazer algo para quando a requisição for proveniente da rede interna redirecionar para o ip do servidor web?
Como fica a regra usando o snat?
-
Não tem como eu fazer algo para quando a requisição for proveniente da rede interna redirecionar para o ip do servidor web?
É assim que vc vai fazer. Mas todos os acessos da rede interna vão aparecer como se viessem do firewall.
-
Não tem como eu fazer algo para quando a requisição for proveniente da rede interna redirecionar para o ip do servidor web?
É assim que vc vai fazer. Mas todos os acessos da rede interna vão aparecer como se viessem do firewall.
Isso mesmo, sem problemas... Se puder me dar uma mão no script agradeço! Abraço
-
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERFACELOCAL -j SNAT --to ???
-
... -d <ip publico> --dport <porta do serviço> -j SNAT --to <ip do servidor na rede interna>
-
... -d <ip publico> --dport <porta do serviço> -j SNAT --to <ip do servidor na rede interna>
iptables -t nat POSTROUTING -d 189.11.189.11 -s 192.168.0.0/24 -p tcp --dport 8181 -j SNAT --to 192.168.0.214
isso?
-
quase, só faltou amarrar com a origem na rede interna (-s 192.168.0.0/24).
-
quase, só faltou amarrar com a origem na rede interna (-s 192.168.0.0/24).
Muito obrigado Zekkerj, tem me ajudado muito ultimamente. Testei agora, mas não deu certo.
-
Fora do proxy funciona... deve ser o squid... como libero no squid?
o erro que da no squid connection refused (erro 111)
Sobre a regra de postrouting,....
iptables -t nat -A POSTROUTING -d 189.11.189.11 -s 192.168.0.0 -p tcp --dport 8181 -j SNAT --to 192.168.0.214
Nao preciso criar uma regra de pre-routing também?
-
Fora do proxy funciona... deve ser o squid... como libero no squid?
Coloque como exceção no WPAD.
-
Fora do proxy funciona... deve ser o squid... como libero no squid?
Coloque como exceção no WPAD.
Boa... vou fazer... só não sei como...
Por questão de aprendizado. No squid, como eu faria.
-
Não faz.
Vc não disse que precisa que não passe pelo Squid?
Se é pra não passar pelo squid, não adianta tentar configurar dentro do squid, não?
-
Não faz.
Vc não disse que precisa que não passe pelo Squid?
Se é pra não passar pelo squid, não adianta tentar configurar dentro do squid, não?
Esse não preciso. Mas tenho o msn que ta sendo bloqueado pelo squid
-
Não achei qual das funções do wpad se encaixa quando eu tenho somente o ip que quero "liberar do proxy"
No firewall tenho uma regra que todas as requisições de fora para o IP EXTERNO na porta 8181 (189.11.189.11) são redirecionadas para o IP do servidor web na porta 8181
Tenho outra regra que tudo que chega na LAN com destino ao ip externo faça um snat para o ip do servidor web.
O que não consegui foi fazer o proxy liberar o acesso ao site interno usando o ip externo de dentro da rede.
Poderia colocar a função mais especificamente? estou tendo problemas na minha rede por esse motivo....
Página de documentação do WPAD
http://findproxyforurl.com/pac_functions_explained.html
-
Você não tem um servidor de DNS interno? Pq não cadastra o IP interno nesse DNS, e faz os usuários da rede interna acessarem essa página pelo IP interno?
-
Você não tem um servidor de DNS interno? Pq não cadastra o IP interno nesse DNS, e faz os usuários da rede interna acessarem essa página pelo IP interno?
O cara de fora teria que acessar por um ip e dentro de outro? nem pensar. O problema é o SQUID. Ta dando connection refused. Só resolver isso e pronto. Mas não sei como.
Você me sugeriu colocar uma exceção no WPAD. TEm alguma idéia?
-
O problema é o SQUID. Ta dando connection refused. Só resolver isso e pronto. Mas não sei como.
Olha só, o Squid não daria "conexão recusada" só pra um site. Isso é o próprio servidor que está recusando o acesso, não o Squid.
Você me sugeriu colocar uma exceção no WPAD. TEm alguma idéia?
Do mesmo jeito que se fez no outro tópico...
O cara de fora teria que acessar por um ip e dentro de outro? nem pensar.
Qual o problema dos acessos serem feitos com IPs diferentes?
-
O problema é o SQUID. Ta dando connection refused. Só resolver isso e pronto. Mas não sei como.
Olha só, o Squid não daria "conexão recusada" só pra um site. Isso é o próprio servidor que está recusando o acesso, não o Squid.
Se eu desativo o PROXY FUNCIONA. Como eu já havia dito. Então o servidor não está recusando.
Você me sugeriu colocar uma exceção no WPAD. TEm alguma idéia?
Do mesmo jeito que se fez no outro tópico...
isDnsDomain não funcionou.
O cara de fora teria que acessar por um ip e dentro de outro? nem pensar.
Qual o problema dos acessos serem feitos com IPs diferentes?
Você tem uma empresa.. aí no site da empresa coloca: CLique aqui para acessar a intranet se estiver fora da empresa, e outro banner, agora se estiver dentro clique aqui. Daí essa empresa com 300 funcionários vc passa um por um explicando isso. Inviável.
O squid ta refugando a conexão somente para esse site. Você me sugeriu colocar uma excessão no wpad, mas não me sugeriu qual das opções usar...
-
Você não está me entendendo...
Não há necessidade de nada do tipo "clique aqui se estiver dentro ou aqui se estiver fora". Você tem um servidor DNS interno, pode fazê-lo responder um IP diferente pra página. Assim quem estiver dentro da sua rede recebe o IP interno, quem estiver fora recebe o IP externo.
Sobre a mensagem de conexão recusada, a mensagem que você recebe é parecida com esta?
ERROR
The requested URL could not be retrieved
The following error was encountered while trying to retrieve the URL: %U
Connection to %I failed.
O sistema retornou: %E
O host remoto (servidor) ou a rede pode estar indisponível. Por favor tente novamente.
Your cache administrator is %w.
Generated %T by %h (%s)
Se for, quem está dando essa mensagem pra você é o squid. Não é que você não esteja conseguindo chegar nele, é ele que não está conseguindo chegar no servidor...
-
Você não está me entendendo...
Não há necessidade de nada do tipo "clique aqui se estiver dentro ou aqui se estiver fora". Você tem um servidor DNS interno, pode fazê-lo responder um IP diferente pra página. Assim quem estiver dentro da sua rede recebe o IP interno, quem estiver fora recebe o IP externo.
Sobre a mensagem de conexão recusada, a mensagem que você recebe é parecida com esta?
ERROR
The requested URL could not be retrieved
The following error was encountered while trying to retrieve the URL: %U
Connection to %I failed.
O sistema retornou: %E
O host remoto (servidor) ou a rede pode estar indisponível. Por favor tente novamente.
Your cache administrator is %w.
Generated %T by %h (%s)
Se for, quem está dando essa mensagem pra você é o squid. Não é que você não esteja conseguindo chegar nele, é ele que não está conseguindo chegar no servidor...
A mensagem é quase essa essa.... CONNECTION REFUSED
-
Então: essa mensagem não é o Squid recusando conexão, é o Squid avisando que tentou a conexão e ela foi recusada.
Você tem que rever a configuração do servidor, confirme se a máquina que roda o squid está autorizada a fazer a conexão, não esqueça que quem está conectando é a máquina do Squid, e não a máquina do usuário que iniciou o acesso.
-
Então: essa mensagem não é o Squid recusando conexão, é o Squid avisando que tentou a conexão e ela foi recusada.
Você tem que rever a configuração do servidor, confirme se a máquina que roda o squid está autorizada a fazer a conexão, não esqueça que quem está conectando é a máquina do Squid, e não a máquina do usuário que iniciou o acesso.
Segue meu firewall
#!/bin/bash
INTERNET="eth0"
REDELOCAL="eth1"
modprobe ip_tables
modprobe iptable_nat
# Politica padrao
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# LOG
iptables -A INPUT -j LOG --log-prefix INPUT
iptables -A OUTPUT -j LOG --log-prefix OUTPUT
iptables -A FORWARD -j LOG --log-prefix FORWARD
# Politicas da rede ou pessoais
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Redirecionando
# Servidor WEB
iptables -t nat -A PREROUTING -d 189.11.189.11 -p tcp -m tcp --dport 8181 -j DNAT --to-destination 192.168.0.214:8181
# Redirecionando para acesso interno
iptables -t nat -A POSTROUTING -d 189.11.189.11 -p tcp -m tcp --dport 8181 -j SNAT --to 192.168.0.214:8181
# Servidor WEB de ip 192.168.0.214
iptables -A FORWARD -p tcp --dport 8181 -d 192.168.0.214 -j ACCEPT
iptables -A INPUT -p tcp --dport 8181 -d 192.168.0.214 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 8181 -d 192.168.0.214 -j ACCEPT
###################### FORWARD ##############################
# Liberando http e https
# iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp -m multiport --dports 80,8080 -j ACCEPT
# iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp -m multiport --dports 443 -j ACCEPT
# Liberando o DNS - Necessario para funcionar a internet
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp -m multiport --dports 53,5353 -j ACCEPT
# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
# Liberando o Squid
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 3128 -j ACCEPT
# Liberando POP E SMTP - SSL Também
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp -m multiport --dports 25,110,465,995,587 -j ACCEPT
# Liberando o FTP
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 21 -j ACCEPT
# Liberando Samba
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp -m multiport --dports 137,138 -j ACCEPT
# Liberando o LDAP
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 389 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp --dport 389 -j ACCEPT
# Liberando o Apache
iptables -A FORWARD -i $INTERNET -o $REDELOCAL -p tcp --dport 8181 -j ACCEPT
# Liberando o Sabio - PC LAERCIO
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 3306 -j ACCEPT
# Liberando SNMP - Impressora Biblioteca
iptables -A FORWARD -i $REDELOCAL -p udp --dport 161 -j ACCEPT
# Liberando o msn
iptables -A FORWARD -i $REDELOCAL -p tcp --dport 1863 -j ACCEPT
###################### INPUT ################################
# Liberando Samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p udp -m multiport --dports 137,138 -j ACCEPT
# Liberando ssh
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
# Liberando o Squid
iptables -A INPUT -i $REDELOCAL -p tcp --dport 3128 -j ACCEPT
# Liberando o Apache
iptables -A INPUT -i $REDELOCAL -p tcp --dport 80 -j ACCEPT
# Liberando o DNS
iptables -A INPUT -i $REDELOCAL -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p udp --dport 53 -j ACCEPT
# Liberando o DHCP
iptables -A INPUT -i $REDELOCAL -p udp --dport 67 -j ACCEPT
###################### OUTPUT ################################
# Liberando http e https
# iptables -A OUTPUT -p tcp -m multiport --dports 80,8080,443 -j ACCEPT
# Liberando o Squid
iptables -A OUTPUT -p tcp --dport 3128 -j ACCEPT
# Liberando o Dns - Necessario para o Squid
iptables -A OUTPUT -p udp -m multiport --dports 53,5353 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 53,5353 -j ACCEPT
# Liberando o Samba
iptables -A OUTPUT -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports 137,138 -j ACCEPT
# Liberando o RNDC
iptables -A OUTPUT -p tcp --dport 953 -j ACCEPT
# Liberando o Apache
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
# Liberando o DHCP
iptables -A OUTPUT -p udp --dport 68 -j ACCEPT
iptables -A OUTPUT -p udp --dport 67 -j ACCEPT
# Compartilhando a internet com a REDELOCAL
iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
################### LIBERANDO PC ACESSO ESPECIAL ############
# FS
iptables -A FORWARD -s 192.168.0.253 -j ACCEPT
# PONTO
# iptables -A FORWARD -s 192.168.0.253 -j ACCEPT
################### Protegendo contra ataques ###############
# Syn Cookyes
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# ICMP Broadcasts
# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Mensagens falsas de icmp_error responses
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Anti-spoofings
iptables -A INPUT -j DROP -s 10.0.0.0/8 -i $INTERNET
iptables -A INPUT -j DROP -s 127.0.0.0/8 -i $INTERNET
iptables -A INPUT -j DROP -s 172.16.0.0/12 -i $INTERNET
iptables -A INPUT -j DROP -s 192.168.1.0/16 -i $INTERNET
# Syn Flood via modulo limit
# iptables -A FORWARD -p tcp --syn -m limit --limit 100/s -j ACCEPT
e meu squid
http_port 3128
visible_hostname l9web.local
cache_mem 32 MB
maximum_object_size 4096 KB
cache_dir ufs /var/cache/squid 1000 16 256
cache_access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
emulate_httpd_log on
error_directory /usr/share/squid3/errors/pt-br
# >>>>>>>>>>>>> ACL Gerais
#acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 #http
acl Safe_ports port 8080 #https
acl Safe_ports port 8181 #https
acl Safe_ports port 21 #ftp
acl Safe_ports port 443 #https
acl Safe_ports port 563 #news
#acl Safe_ports port 70 #gopher
acl Safe_ports port 210 #wais
acl Safe_ports port 1025-65535 #unregistered ports
acl Safe_ports port 280 #http-mgmt
acl Safe_ports port 488 #gss-http
acl Safe_ports port 591 #filemaker
acl Safe_ports port 777 #multiling http
acl Safe_ports port 631 #cups
acl Safe_ports port 873 #rsync
acl Safe_ports port 901 #swat
acl Safe_ports port 1863 #
acl Safe_ports port 25 #pop
acl Safe_ports port 110 #smtp
acl CONNECT method CONNECT
# >>>>>>>>>>>>> Minhas ACL
acl network src 192.168.0.0/24
acl proibir_sites dstdomain "/etc/squid3/sites"
acl palavras_bloqueadas url_regex -i "/etc/squid3/palavrasbloqueadas"
acl convidados_internet src 192.168.0.2-192.168.0.96
acl java browser java
# >>>>>>>>>>>>> Diretivas http_access
http_access allow java
http_access allow manager localhost
http_access allow localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# >>>>>>>>>>>>> Delay pools
delay_pools 1
delay_class 1 2
delay_parameters 1 70000/70000 5000/5000
delay_access 1 allow convidados_internet
# >>>>>>>>>>>>> Regras das minhas ACL
http_access deny proibir_sites
http_access deny palavras_bloqueadas
http_access allow network
http_access deny all
-
Esse firewall é do servidor web que vc está tentando acessar?
-
Esse firewall é do servidor web que vc está tentando acessar?
Não.. esse é meu firewall q recebo o ip externo, tenho nessa mesma maquina o squid. o ip é 192.168.0.254
A máquina do servidor web tem o ip 192.168.0.214 e é windows server 2003. A porta do apache 8181 em firewall
-
Vc tem que ver nessa máquina, o porque dela estar recusando uma conexão que vem do firewall.
Em tempo: vc ainda está usando política DROP na cadeia OUTPUT, certo? Nessa mesma máquina que roda o Squid, certo? Lembrou de autorizar essa máquina a abrir conexão pro servidor?
Toda vez que eu vejo alguém com política DROP na cadeia OUTPUT, eu lembro daquele velho ditado: "Passarinho que come pedra sabe o tamanho do ... que tem"...
-
Vc tem que ver nessa máquina, o porque dela estar recusando uma conexão que vem do firewall.
Em tempo: vc ainda está usando política DROP na cadeia OUTPUT, certo? Nessa mesma máquina que roda o Squid, certo? Lembrou de autorizar essa máquina a abrir conexão pro servidor?
Toda vez que eu vejo alguém com política DROP na cadeia OUTPUT, eu lembro daquele velho ditado: "Passarinho que come pedra sabe o tamanho do ... que tem"...
Não tenho mta experiência, então não sei se fiz isso direito. Liberei a 3128 nas 3 cadeias. o meu firewall é o postado acima. Liberei a 8181 também.
me sugere usar accept?
-
me sugere usar accept?
Pelo menos até você confirmar que tudo está funcionando...
-
me sugere usar accept?
Pelo menos até você confirmar que tudo está funcionando...
Segue a tela do SQUID, mesmo com output ACCEPT
ERROR
The requested URL could not be retrieved
O seguinte erro foi encontrado ao tentar recuperar a URL: 189.11.189.11:8181
Conexão para 189.11.189.11:8181 falhou.
O sistema retornou: (111) Connection refused
The remote host or network may be down. Please try the request again.
Seu administrador do cache é webmaster.
Gerado Mon, 28 May 2012 12:46:52 GMT por fabe.local (squid/3.1.14)
-
Use a linha de comando no firewall, tente abrir uma conexão para o servidor web:
wget http://189.11.189.11:8181
-
Use a linha de comando no firewall, tente abrir uma conexão para o servidor web:
wget http://189.11.189.11:8181
falhou: Conexao recusada
Se eu digitar wget 192.168.0.214:8181 funciona...
-
Então tem alguma coisa errada nesse redirecionamento...
-
Então tem alguma coisa errada nesse redirecionamento...
Tenho que fazer um DNAT / SNAT para a rede interna e um para a externa?
No script que postei acima tem as regras que eu já implementei de DNAT / SNAT.
-
Esse é o mais urgente de todos os problemas...
-
Zekkerj, não consigo redirecionar com o rinetd? tenho mais um ip válido na máquina...
-
Como eu disse no outro tópico, não conheço o rinetd, não posso opinar sobre ele.
-
Como eu disse no outro tópico, não conheço o rinetd, não posso opinar sobre ele.
então..voltando ao iptables... tenho q fazer um dnat /snat para a rede interna e um para a externa?
-
Acho que só pra rede interna. Aliás, em vez de SNAT, faça MASQUERADE, é mais simples.
-
Acho que só pra rede interna. Aliás, em vez de SNAT, faça MASQUERADE, é mais simples.
o redirecionamento para a rede externa está ok, com a seguinte linha:
iptables -t nat -A PREROUTING -d 189.11.189.11 -p tcp -m tcp --dport 8181 -j DNAT --to-destination 192.168.0.214:8181
o problema está em compartilhar com a rede interna através do ip externo.
Seria essa a regra?
iptables -t nat -A POSTROUTING -d 189.11.181.11 -p tcp -m tcp --dport 8181 -j SNAT --to 192.168.0.214:8181
-
http://ubuntuforum-br.org/index.php/topic,96217.msg528697.html#msg528697
OBS: Vc está com o mesmo assunto aberto em dois tópicos [pelo menos].
-
http://ubuntuforum-br.org/index.php/topic,96217.msg528697.html#msg528697
OBS: Vc está com o mesmo assunto aberto em dois tópicos [pelo menos].
Parecidos, lá tenho os 2 ips... mas não consegui fazer funcionar... vou fazer um masquerade...
-
Zekkerj , agora sem o SQUID, ou seja nas máquinas que dei um FORWARD ACCEPT no ip, ele acessa com o ip externo. Quando mando passar pelo proxy, me retorna um erro:
O seguinte erro foi encontrado ao tentar recuperar a URL: %url
Conexão para 189.10.183.178 falhou.
O sistema retornou: (111) Connection refused The remote host or network may be down. Please try the request again.
Seu administrador do cache é webmaster.
ERROR The requested URL could not be retrieved
Estamos quase lá, falta agora ajustar o squid. O que me sugere?
-
Não é o squid.
É a máquina onde o squid roda.
Quando o acesso não passa pelo squid, a máquina bate no IP público, é redirecionada (PREROUTING) e encaminhada (FORWARD) para o destino, e você precisa fazer SNAT/MASQUERADE (POSTROUTING) pra que a resposta volte ao firewall, e os NATs sejam desfeitos.
Quando o acesso passa pelo squid, vc só precisa fazer o redirecionamento (PREROUTING), e o pacote vai sair direto pra máquina de destino (OUTPUT). Ao retornar, o NAT deve ser desfeito automaticamente. No máximo vc tem que liberar o recebimento de conexões abertas (ESTABLISHED/RELATED), na cadeia INPUT.
-
Não é o squid.
É a máquina onde o squid roda.
Quando o acesso não passa pelo squid, a máquina bate no IP público, é redirecionada (PREROUTING) e encaminhada (FORWARD) para o destino, e você precisa fazer SNAT/MASQUERADE (POSTROUTING) pra que a resposta volte ao firewall, e os NATs sejam desfeitos.
Quando o acesso passa pelo squid, vc só precisa fazer o redirecionamento (PREROUTING), e o pacote vai sair direto pra máquina de destino (OUTPUT). Ao retornar, o NAT deve ser desfeito automaticamente. No máximo vc tem que liberar o recebimento de conexões abertas (ESTABLISHED/RELATED), na cadeia INPUT.
Neste caso o firewall e o squid são a mesma máquina.. agora me perdi mais ainda..
-
É que o teu firewall tá complexo demais, pro nível de experiência que vc tem agora. Cai numa situação dessas, vc não consegue identificar o problema.
-
É que o teu firewall tá complexo demais, pro nível de experiência que vc tem agora. Cai numa situação dessas, vc não consegue identificar o problema.
Pois é..tem razão.. mas tenho q resolver.. Vou postar meu firewall aqui, se puder me quebrar esse galho. Firewall e squid na mesma máquina. Fora do squid funciona. Com squid não. Uso o WPAD para definir o proxy.
#!/bin/bash
INTERNET="eth0"
REDELOCAL="eth1"
modprobe ip_tables
modprobe iptable_nat
# Politica padrao
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# LOG
iptables -A INPUT -j LOG --log-prefix INPUT
iptables -A OUTPUT -j LOG --log-prefix OUTPUT
iptables -A FORWARD -j LOG --log-prefix FORWARD
# Politicas
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Redirecionando webgiz
# Redirecionando o WEB para internet
iptables -t nat -A PREROUTING -d 189.11.189.11 -p tcp -m tcp --dport 8181 -j DNAT --to-destination 192.168.0.214:8181
# Redirecionando WEB Interno
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.214 -j MASQUERADE
###################### FORWARD ##############################
# Liberando o DNS
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp -m multiport --dports 53,5353 -j ACCEPT
# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
# Liberando o Squid
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 3128 -j ACCEPT
# Liberando POP E SMTP - SSL Também
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp -m multiport --dports 25,110,465,995,587 -j ACCEPT
# Liberando o FTP
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 21 -j ACCEPT
# Liberando Samba
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp -m multiport --dports 137,138 -j ACCEPT
# Liberando o LDAP
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 389 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp --dport 389 -j ACCEPT
# Liberando o Apache
iptables -A FORWARD -i $INTERNET -o $REDELOCAL -p tcp --dport 8181 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 3306 -j ACCEPT
# Liberando SNMP
iptables -A FORWARD -i $REDELOCAL -p udp --dport 161 -j ACCEPT
# Liberando o msn
iptables -A FORWARD -i $REDELOCAL -p tcp --dport 1863 -j ACCEPT
###################### INPUT ################################
# Liberando Samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p udp -m multiport --dports 137,138 -j ACCEPT
# Liberando ssh
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
# Liberando o Squid
iptables -A INPUT -i $REDELOCAL -p tcp --dport 3128 -j ACCEPT
# Liberando o Apache
iptables -A INPUT -i $REDELOCAL -p tcp --dport 80 -j ACCEPT
# Liberando o DNS
iptables -A INPUT -i $REDELOCAL -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p udp --dport 53 -j ACCEPT
# Liberando o DHCP
iptables -A INPUT -i $REDELOCAL -p udp --dport 67 -j ACCEPT
###################### OUTPUT ################################
# Liberando o Squid
iptables -A OUTPUT -p tcp --dport 3128 -j ACCEPT
# Liberando o Dns - Necessario para o Squid
iptables -A OUTPUT -p udp -m multiport --dports 53,5353 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 53,5353 -j ACCEPT
# Liberando o Samba
iptables -A OUTPUT -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports 137,138 -j ACCEPT
# Liberando o RNDC
iptables -A OUTPUT -p tcp --dport 953 -j ACCEPT
# Liberando o Apache
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
# Liberando o DHCP
iptables -A OUTPUT -p udp --dport 68 -j ACCEPT
iptables -A OUTPUT -p udp --dport 67 -j ACCEPT
# Compartilhando a internet com a REDELOCAL
iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
################### Protegendo contra ataques ###############
# Syn Cookyes
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# ICMP Broadcasts
# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Mensagens falsas de icmp_error responses
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Anti-spoofings
iptables -A INPUT -j DROP -s 10.0.0.0/8 -i $INTERNET
iptables -A INPUT -j DROP -s 127.0.0.0/8 -i $INTERNET
iptables -A INPUT -j DROP -s 172.16.0.0/12 -i $INTERNET
iptables -A INPUT -j DROP -s 192.168.1.0/16 -i $INTERNET
# Syn Flood via modulo limit
# iptables -A FORWARD -p tcp --syn -m limit --limit 100/s -j ACCEPT
-
# LOG
iptables -A INPUT -j LOG --log-prefix INPUT
iptables -A OUTPUT -j LOG --log-prefix OUTPUT
iptables -A FORWARD -j LOG --log-prefix FORWARD
Cara, não faz isso não... você está logando simplesmente TUDO que passa pela tua máquina. Isso vai gastar CPU desesperadamente, vai gastar disco desesperadamente, e não vai te servir pra absolutamente nada.
Quer fazer log? Faça só dos pacotes descartados, e coloque um limite no que loga, no máximo 10 pacotes/segundo.
Também observei que vc não liberou conexões pra porta do servidor web na cadeia OUTPUT, só na cadeia FORWARD.
-
# LOG
iptables -A INPUT -j LOG --log-prefix INPUT
iptables -A OUTPUT -j LOG --log-prefix OUTPUT
iptables -A FORWARD -j LOG --log-prefix FORWARD
Cara, não faz isso não... você está logando simplesmente TUDO que passa pela tua máquina. Isso vai gastar CPU desesperadamente, vai gastar disco desesperadamente, e não vai te servir pra absolutamente nada.
Quer fazer log? Faça só dos pacotes descartados, e coloque um limite no que loga, no máximo 10 pacotes/segundo.
Também observei que vc não liberou conexões pra porta do servidor web na cadeia OUTPUT, só na cadeia FORWARD.
Minha poliítica de OUTPUT é ACCEPT... tirei as regras de LOG. Próxima dica :-)
-
TEnho um dns interno, se der para fazer por dns, não me importo