iptables? Squid? Onde configurar?

Iniciado por trininhas, 12 de Fevereiro de 2010, 13:31

tópico anterior - próximo tópico

trininhas

 ???
Antes de mais olá ao pessoal todo, e parabens pelo forum.
Infelismente, vou começar a minha participação com um pedido de ajuda.
Sou iniciante no ubuntu, pelo que a minha esperiencia é pouca mas confesso que estou a adorar o pouco que já consegui fazer...

Então é assim, tenho a seguinte rede:
http://www.pereirasti.com/rede.jpg
Imagem acima do permitido. Foi enviado MP ao usuário no dia 13/02 e o mesmo postou mensagem no tópico (14/02) e não acertou.

Consegui configurar o Squid, e aparentemente tudo funciona para os pc's que estão na rede 192.168.100.0/24.

Agora o que pretendo fazer, configurar de forma a que os pc's que estão na rede 192.168.100.0/24, apenas consigam aceder á rede 192.168.1.0/24 no WebServer via https, e que não consigam aceder a mais maquina nenhuma nessa rede.
Era tambem importante que o Squid não fizesse cache a esse site.

Alguem me ajuda???

Por onde Começo??

zekkerj

Você precisa:

1) Me dizer como fez esse desenho. Achei dez!

2) Configurar a forma como os navegadores acessam o squid. A melhor forma que eu conheço pra isso é o script de auto-configuração de proxy (Proxy Auto Config ou PAC).

3) Usar o iptables, no equipamento que faz a ligação entre as redes 192.168.100.0/24 e 192.168.1.0/24 para impedir todos os acessos a 192.168.1.0/24, exceto os destinados a 192.168.1.1:443.

Tem paciência pra isso?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

trininhas

Obrigado zekkerj  pela resposta.

O desenho é feito em Visio

E sim tenho mesmo que ter paciencia

Alguem me ajuda?

zekkerj

Vamos começar pelo script de auto-configuração.

Note que pra ativar essa facilidade, você não vai poder usar proxy transparente, já que você vai estar usando proxy pra alguns acessos, e outros não.

Crie um arquivo chamado "auto.pac" na raiz do servidor web na máquina do proxy squid, com o conteúdo abaixo:

function FindProxyForURL(url, host) {
    var resolvedIp = dnsResolve(host);
    if( isInNet(resolvedIp, "192.168.1.0", "255.255.255.0") ) {
        return "DIRECT";
    return "PROXY 192.168.100.1:3128; DIRECT"
}


Vamos começar configurando os navegadores da rede 192.168.100.0/24 para usarem o URL "http://192.168.100.1/auto.pac" como script de configuração automática de proxy. Teste se isso já resolve a parte das máquinas acessarem o servidor em 192.168.1.1 sem passar pelo cache, depois vamos transformar isso em descoberta automática de proxy.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

trininhas

Caro zekkerj

Apenas posso fazer esse teste quando chegar no emprego, mas aproveito para te colocar outra questão.

Na máquina com o squid, o meu iptables está assim:
_______________
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X


# Habilita roteamento
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128


# Portas abertas
iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 53 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 3128 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 1863 -j ACCEPT
# Abre para a interface de loopback.
iptables -A INPUT -i lo -j ACCEPT

# BLOQUEA O QUE NAO SE ENCAIXA NAS REGRAS ACIMA
iptables -A INPUT -p tcp --syn -j DROP
iptables -P FORWARD DROP

______________________________


Depois de fazer a sua instrução, a minha dúvida é a seguinte:
Uma vês que as máquinas que estão na rede 192.168.100.0/24 tem que ser roteadas pelo proxy para aceder á rede 192.168.1.0/24, eu não tenho que abrir também o acesso ao host 192.168.1.1 na porta 443 para as maquinas da rede 192.168.100.0/24, de forma a que o iptables permita que as máquinas passem sem ir á 3128 do squid? (Foi isto que tentei fazer, mas não consegui!)

Por outro lado, acho eu, que o webserver(192.168.1.1/24) não tem que conhecer a rede 192.168.100.0/24, uma ves que vai responder ao NAT imposto pela regra iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE.  Estou certo?

E mais uma ves, obrigado pela atenção e pela rapida resposta.

zekkerj

Corretíssimo.

A regra de liberação ("iptables -A FORWARD -s 192.168.100.0/24 -d 192.168.1.1 -j ACCEPT") libera a ida, mas vc tem que liberar também a volta.

A melhor forma de fazer isso é esta:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Isso faz com que pacotes que pertençam a "conexões" abertas sejam aceitos automaticamente. Eu sugiro que vc tenha uma regra dessas na cadeia INPUT, também.

Obviamente, estas duas regras têm que aparecer antes da regra de bloqueio, no final.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D