Fórum Ubuntu Linux - PT

Suporte Técnico => Servidores => Tópico iniciado por: lucascatani em 22 de Maio de 2012, 11:11

Título: Acesso WEB interno
Enviado 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?
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 22 de Maio de 2012, 11:30
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.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 22 de Maio de 2012, 12:03

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
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 22 de Maio de 2012, 12:15
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?
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 22 de Maio de 2012, 12:19
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?
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 22 de Maio de 2012, 12:36
Citar
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.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 22 de Maio de 2012, 12:41
Citar
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

Título: Re: Acesso WEB interno
Enviado por: lucascatani em 22 de Maio de 2012, 19:52
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERFACELOCAL -j SNAT --to ???
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 22 de Maio de 2012, 23:06
... -d <ip publico> --dport <porta do serviço> -j SNAT --to <ip do servidor na rede interna>
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 22 de Maio de 2012, 23:20
... -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?
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 22 de Maio de 2012, 23:26
quase, só faltou amarrar com a origem na rede interna (-s 192.168.0.0/24).
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 22 de Maio de 2012, 23:29
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.

Título: Re: Acesso WEB interno
Enviado por: lucascatani em 24 de Maio de 2012, 12:47
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?

Título: Re: Acesso WEB interno
Enviado por: zekkerj em 24 de Maio de 2012, 13:05
Citar
Fora do proxy funciona... deve ser o squid... como libero no squid?
Coloque como exceção no WPAD.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 24 de Maio de 2012, 17:40
Citar
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.
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 24 de Maio de 2012, 19:57
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?
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 25 de Maio de 2012, 08:29
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
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 25 de Maio de 2012, 11:47
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
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 26 de Maio de 2012, 04:51
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?
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 26 de Maio de 2012, 08:53
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?
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 26 de Maio de 2012, 11:53
Citar
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.

Citar
Você me sugeriu colocar uma exceção no WPAD. TEm alguma idéia?
Do mesmo jeito que se fez no outro tópico...

Citar
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?
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 26 de Maio de 2012, 12:32
Citar
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.


Citar
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.


Citar
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...
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 26 de Maio de 2012, 13:21
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?

Citar
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...
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 26 de Maio de 2012, 13:25
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?

Citar
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
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 26 de Maio de 2012, 14:03
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.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 26 de Maio de 2012, 14:08
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
Código: [Selecionar]
#!/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
Código: [Selecionar]
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



Título: Re: Acesso WEB interno
Enviado por: zekkerj em 26 de Maio de 2012, 14:32
Esse firewall é do servidor web  que vc está tentando acessar?
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 26 de Maio de 2012, 15:08
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
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 26 de Maio de 2012, 17:52
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"...
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 26 de Maio de 2012, 18:33
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?
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 26 de Maio de 2012, 20:52
Citar
me sugere usar accept?
Pelo menos até você confirmar que tudo está funcionando...
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 28 de Maio de 2012, 09:54
Citar
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)
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 28 de Maio de 2012, 10:23
Use a linha de comando no firewall, tente abrir uma conexão para o servidor web:

wget http://189.11.189.11:8181
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 28 de Maio de 2012, 11:16
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...
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 28 de Maio de 2012, 13:40
Então tem alguma coisa errada nesse redirecionamento...
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 28 de Maio de 2012, 16:05
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.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 12:20
Esse é o mais urgente de todos os problemas...
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 15:46
Zekkerj, não consigo redirecionar com o rinetd? tenho mais um ip válido na máquina...
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 29 de Maio de 2012, 15:59
Como eu disse no outro tópico, não conheço o rinetd, não posso opinar sobre ele.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 16:06
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?
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 29 de Maio de 2012, 16:29
Acho que só pra rede interna. Aliás, em vez de SNAT, faça MASQUERADE, é mais simples.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 16:48
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
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 29 de Maio de 2012, 16:54
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].
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 16:56
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...
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 19:12
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?
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 29 de Maio de 2012, 19:48
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.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 20:47
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..
Título: Re: Acesso WEB interno
Enviado por: zekkerj em 29 de Maio de 2012, 20:58
É 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.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 21:42
É 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.

Código: [Selecionar]
#!/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

Título: Re: Acesso WEB interno
Enviado por: zekkerj em 29 de Maio de 2012, 22:40
Citar
# 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.
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 29 de Maio de 2012, 22:42
Citar
# 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 :-)
Título: Re: Acesso WEB interno
Enviado por: lucascatani em 30 de Maio de 2012, 12:24
TEnho um dns interno, se der para fazer por dns, não me importo