Linux entre duas redes [RESOLVIDO]

1. Linux entre duas redes [RESOLVIDO]

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 11/02/2012 - 17:21h

Prezados, boa tarde.
Tenho que configurar um servidor linux em uma escola onde tenho que separar os computadores da secretaria e os computadores do laboratório de informática. A rede é pequena e tranquila: 2 computadores na secretaria e 15 no laboratório. A escola contratou um link de internet e preciso fazer com que o linux controle o acesso da internet no laboratório. Por medida de segurança, irei colocar três placas de rede no linux: 1 recebe a internet, 1 para a rede administrativa (secretaria) e outra para o laboratório. Gostaria de fazer com que a rede da secretaria tenha acesso ilimitado à internet, sem restrições. Já a rede do laboratório passe pelas regras do Squid, pois irei criar as ACL's para bloqueio de acesso a vários sites. Já fiz a configuração de um linux com apenas uma rede, mas para duas é a primeira vez. Alguém pode me ajudar?
Para facilitar, colocarei o provável cenário.
eth0 - internet
eth1 - 172.18.0.0/24 (laboratório)
eth2 - 10.1.0.0/16 (secretaria)(sem restrições)

P.S.: O Iptables servirá como firewall para as duas redes.

Grato desde já aos que colaborarem.



  


2. Config

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 11/02/2012 - 17:29h

Configura a rede normalmente e direciona a porta 80 da rede do laboratorio para passar pelo squid ja a da secretaria deixa direto sem o proxy.
Ou se precisar de proxy para a secretaria também
Cria 2 acls

acl rede_lab src 172.18.0.0/24
acl rede_secr src 10.1.0.0/16

E configura as regras no seu Squid



No firewall:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -eth0 -j MASQUERADE



3. Re: Linux entre duas redes [RESOLVIDO]

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 12/02/2012 - 10:27h

andrecanhadas
Entendi. Nesse caso o iptables estará direcionando apenas o laboratório (eth1) para passar pela porta 3128, e a secretaria, passará pelo iptables, mas terá navegação liberada. Sem restrições, não é isso? Obrigado. Amanhã começarei a configurar esse servidor e postarei aqui o resultado. Grato


4. Re: Linux entre duas redes [RESOLVIDO]

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 17/02/2012 - 09:28h

andrecanhadas escreveu:

Configura a rede normalmente e direciona a porta 80 da rede do laboratorio para passar pelo squid ja a da secretaria deixa direto sem o proxy.
Ou se precisar de proxy para a secretaria também
Cria 2 acls

acl rede_lab src 172.18.0.0/24
acl rede_secr src 10.1.0.0/16

E configura as regras no seu Squid



No firewall:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -eth0 -j MASQUERADE


Andre,
Para deixar a secretaria liberada, e o laboratorio com os bloqueios eu poderia fazer um squid.conf como o abaixo? A ordem das ACLs estão na ordem correta?

http_port 3128 transparent
visible_hostname srvcpg

cache_mem 32 MB
maximum_object_size_in_memory 128 KB
maximum_object_size 512 MB
error_directory /usr/share/squid/errors/Portuguese
cache_swap_low 95
cache_swap_high 90
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log

#DEFINIÇÃO DAS ACL'S

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl rede_lab src 172.18.0.0/255.255.255.0
acl rede_secr src 10.1.0.0/255.255.0.0
acl acesso_download src "/etc/squid/acesso_download"
acl liberado src "/etc/squid/acesso_livre"
acl [*****] url_regex "/etc/squid/porno_br"
acl bloqueados url_regex "/etc/squid/bloqueados"

#always_direct allow all

#EXTENSOES POR MIME TYPES
acl audio req_mime_type -i ^audio
acl video req_mime_type -i ^video

#EXTENSOES POR REGEX
acl com url_regex -i \.com$
acl com2 url_regex -i \.com\?$
acl pif url_regex -i \.pif$
acl pif2 url_regex -i \.pif\?$
acl scr url_regex -i \.scr$
acl scr2 url_regex -i \.scr\?$
acl mpeg url_regex -i \.mpeg$
acl mpeg2 url_regex -i \.mpeg\?$
acl mp3 url_regex -i \.mp3$
acl mp32 url_regex -i \.mp3\?$
acl avi url_regex -i \.avi$
acl avi2 url_regex -i \.avi\?$
acl wav url_regex -i \.wav$
acl wav2 url_regex -i \.wav\?$
acl mpe url_regex -i \.mpe$
acl mpe2 url_regex -i \.mpe\?$
acl exe url_regex -i \.exe$
acl exe2 url_regex -i \.exe\?$
acl zip url_regex -i \.zip$
acl zip2 url_regex -i \.zip\?$

#LIBERA ACESSO À REDE DA SECRETARIA
http_access allow rede_secr

#BLOQUEIA O DOWNLOAD P/ TODOS DESSAS EXTENSOES ABAIXO
#http_access deny com
http_access deny com2
http_access deny pif
http_access deny pif2
http_access deny scr
http_access deny scr2

#LIBERA O ACESSO A TUDO (EXCETO O QUE ESTA ACIMA DESSA LINHA) P/ "LIBERADO"
http_access allow liberado

#BLOQUEIA O ACESSO A SITES IMPROPRIOS (EXCETO P/ "LIBERADO")
http_access deny [*****]
http_access deny bloqueados

#LIBERA O DOWNLOAD DAS EXTENSOES ABAIXO P/ "ACESSO_DOWNLOAD"
#http_access allow acesso_download com
http_access allow acesso_download pif
http_access allow acesso_download scr
http_access allow acesso_download mpeg
http_access allow acesso_download mp3
http_access allow acesso_download avi
http_access allow acesso_download wav
http_access allow acesso_download mpe
http_access allow acesso_download exe
http_access allow acesso_download zip
http_access allow acesso_download audio
http_access allow acesso_download video

#BLOQUEIA O DOWNLOAD DAS EXTENSOES ABAIXO P/ TODOS EXCETO "ACESSO_DOWNLOAD"
http_access deny mpeg
http_access deny mpeg2
http_access deny mp3
http_access deny mp32
http_access deny avi
http_access deny avi2
http_access deny wav
http_access deny wav2
http_access deny mpe
http_access deny mpe2
http_access deny exe
http_access deny exe2
http_access deny zip
http_access deny zip2
http_access deny audio
http_access deny video

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost
http_access allow rede_lab

http_access deny all


5. Re: Linux entre duas redes [RESOLVIDO]

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 17/02/2012 - 10:12h

Aproveitando o ensejo, eis o Firewall
.

#!/bin/bash

iniciar(){

#COMPARTILHAR A CONEXÃO
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo "Compartilhamento ativado!"

#TRÁFEGO ILIMITADO NAS INTERFACES DE LOOPBACK
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#POLÍTICA PADRÃO-DROPAR OS PACOTES
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP

#REMOVE QUALQUER CHAINS CRIADA
iptables --delete-chain
iptables -t nat --delete-chain

iptables -N DROPAR
iptables -N BLOCKLAB
iptables -t nat -N BLOCKLAB

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

#DROPA PACOTES SYN+FIN
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j LOG --log-level 6 --log-prefix "FLAG - "
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP



#LIBERA TUDO PELA INTERFACE SECRETARIA
iptables -A FORWARD -i eth2 -j ACCEPT
iptables -A FORWARD -o eth2 -j ACCEPT
iptables -A OUTPUT -o eth2 -j ACCEPT
iptables -A OUTPUT -o eth2 -j ACCEPT

#NAT LABORATÓRIO PARA REDE SECRETARIA
ifconfig eth2:0 10.1.0.230 netmask 255.255.0.0
ifconfig eth2:1 10.1.0.231 netmask 255.255.0.0
iptables -t nat -A PREROUTING -d 10.1.0.230 -i eth2 -j DNAT --to 172.18.0.230
iptables -t nat -A PREROUTING -d 10.1.0.231 -i eth2 -j DNAT --to 172.18.0.231
iptables -t nat -A POSTROUTING -s 172.18.0.230 -o eth2 -j SNAT --to 10.1.0.230
iptables -t nat -A POSTROUTING -s 172.18.0.231 -o eth2 -j SNAT --to 10.1.0.231
iptables -A FORWARD -s 172.18.0.230 -j ACCEPT
iptables -A FORWARD -d 172.18.0.230 -j ACCEPT
iptables -A FORWARD -s 172.18.0.231 -j ACCEPT
iptables -A FORWARD -d 172.18.0.231 -j ACCEPT

#PROXY TRANSPARENTE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to 3128

#PROXY
iptables -A INPUT -p tcp -s 10.1.0.0/255.255.0.0 -j ACCEPT
iptables -A INPUT -p tcp -s 172.18.0.0/255.255.255.0 -j ACCEPT

#SSH
iptables -A INPUT -p tcp --dport 22 -s 10.1.0.0/255.255.0.0 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 172.18.0.0/255.255.255.0 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 10.1.0.0/255.255.0.0 -m state --state NEW -j ACCEPT

# TRÁFEGO DE SAÍDA
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dport 21,80,443 -m state --state NEW -j ACCEPT

#TRÁFEGO DE SAÍDA DO LABORATÓRIO
iptables -A FORWARD -p tcp -s 172.18.0.0/255.255.255.0 -o eth0 -m state --state NEW -j ACCEPT
iptables -A FORWARD -p udp -s 172.18.0.0/255.255.255.0 -o eth0 -j ACCEPT
iptables -A FORWARD -p udp -s 172.18.0.0/255.255.255.0 -o eth0 -j ACCEPT

#TRÁFEGO DE SAÍDA DA SECRETARIA
iptables -A FORWARD -p tcp -s 10.1.0.0/255.255.0.0 -o eth0 -m state --state NEW -j ACCEPT
iptables -A FORWARD -p udp -s 10.1.0.0/255.255.0.0 -o eth0 -j ACCEPT
iptables -A FORWARD -p udp -s 10.1.0.0/255.255.0.0 -o eth0 -j ACCEPT


}

parar(){
iptables -F
iptables -t nat -F
echo "Regras de Firewall e Compartilhamento Desativados!"
}

case "$1" in
"start") iniciar;;
"stop") parar;;
"restart") parar; iniciar;;
*) echo "Use os parâmetros start ou stop"
esac



6. Melhorias

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 17/02/2012 - 10:49h

A configuração esta Ok tem alguns problemas na ordem das regras e relacionados a cache/memoria

Sugestões:

Para organizar seu .conf o correto seria primeiro colocar todas as regras allow e depois as regras deny

Essas regras de extensões pode ser substituida por algo asim para limpar seu conf:

acl extensoes urlpath_regex -i "/etc/squid3/extensoes"

Dentro de /etc/squid3/extensoes

\.msi$
\.bat$
\.pif$
\.bin$
\.cue$
\.iso$
\.mp3$
\.mpg$
\.wma$
\.divx$
\.scr$
\.tar.gz$
\.tgz$
\.tar$


Outra coisa qual a memoria, HD e processador desse server? Vai ser esclusivo para firewall e squid? pois vi duas coisa que vão prejudicar o desempenho:

Tamanho da memoria:
cache_mem 32 MB

Tamanho do cache: (2GB)
cache_dir ufs /var/spool/squid 2048 16 256
e
maximum_object_size 512 MB

Se tiver espaço em disco usar pelo menos 10GB

Da uma lida em:
http://techfree.wordpress.com/category/squid/
Tem um manual para se aprofundar e entender os parametros:
http://www.dicas-l.com.br/download/squid30.pdf




7. Re: Linux entre duas redes [RESOLVIDO]

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 17/02/2012 - 10:55h

A máquina é uma Genérica com:
Processador Intel Celeron
HD 40
512 Memória.

Ela será:
DNS
Servidor Apache (Apenas para uma pequena intranet, coisa simples mesmo)
Proxy (Squid)
Firewall (Iptables)


8. Firewall

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 17/02/2012 - 11:37h

Quanto ao firewall:

Configura as interfaces pelo /etc/network/interfaces:
E não:
ifconfig eth2:0 10.1.0.230 netmask 255.255.0.0
ifconfig eth2:1 10.1.0.231 netmask 255.255.0.0

Essas regras abaixo vão fazer um loop infinito
#NAT LABORATÓRIO PARA REDE SECRETARIA

iptables -t nat -A PREROUTING -d 10.1.0.230 -i eth2 -j DNAT --to 172.18.0.230
iptables -t nat -A PREROUTING -d 10.1.0.231 -i eth2 -j DNAT --to 172.18.0.231
iptables -t nat -A POSTROUTING -s 172.18.0.230 -o eth2 -j SNAT --to 10.1.0.230
iptables -t nat -A POSTROUTING -s 172.18.0.231 -o eth2 -j SNAT --to 10.1.0.231

Se quer que as duas redes se comuniquem deve criar um Forward entre as duas:
ex:

iptables -A FORWARD -s 172.x.x.x.x/24 -d 10.x.x.x/24 -j ACCEPT
iptables -A FORWARD -s 10.x.x.x/24-d 172.x.x.x.x/24 -j ACCEPT


e criar as rotas para que as duas rede se enxerguem
Ex:
route add -net 172.18.0.0 netmask 255.555.255.0 eth1
route add -net 10.1.0.0 netmask 255.255.0.0 eth2


Não me lembro mas acho vai precisar de:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE



9. OK

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 17/02/2012 - 11:40h

wotila escreveu:

A máquina é uma Genérica com:
Processador Intel Celeron
HD 40
512 Memória.

Ela será:
DNS
Servidor Apache (Apenas para uma pequena intranet, coisa simples mesmo)
Proxy (Squid)
Firewall (Iptables)

Então esta correto as configs de memoria só abaixa:
de:
maximum_object_size 512 MB
para:
maximum_object_size 50 MB
E o aumenta cache pra 5GB




10. Re: Linux entre duas redes [RESOLVIDO]

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 17/02/2012 - 11:44h

Acho que tens razão.
Vou deixá-las independentes, por questão de segurança mesmo. Então vou eliminar os comandos:

#NAT LABORATÓRIO PARA REDE SECRETARIA
ifconfig eth2:0 10.1.0.230 netmask 255.255.0.0
ifconfig eth2:1 10.1.0.231 netmask 255.255.0.0
iptables -t nat -A PREROUTING -d 10.1.0.230 -i eth2 -j DNAT --to 172.18.0.230
iptables -t nat -A PREROUTING -d 10.1.0.231 -i eth2 -j DNAT --to 172.18.0.231
iptables -t nat -A POSTROUTING -s 172.18.0.230 -o eth2 -j SNAT --to 10.1.0.230
iptables -t nat -A POSTROUTING -s 172.18.0.231 -o eth2 -j SNAT --to 10.1.0.231
iptables -A FORWARD -s 172.18.0.230 -j ACCEPT
iptables -A FORWARD -d 172.18.0.230 -j ACCEPT
iptables -A FORWARD -s 172.18.0.231 -j ACCEPT
iptables -A FORWARD -d 172.18.0.231 -j ACCEPT

O demais, creio que funcionará normal.
Meu objetivo principal é:
1 - Internet nas duas redes;
2 - Rede secretaria liberada;
3 - Rede Laboratório com controle de acesso;
4 - Cache para as duas redes.

Creio que com a configuração do Squid e do Iptables citadas (retirando #NAT LABOTATÓRIO PARA REDE SECRETARIA) consigo alcançar meu objetivo.

Farei os testes hoje e ponho o resultado aqui.
E enquanto aos hardware citado acima. Está compatível com cache especificado no Squid?
Grato pelo ajuda.



11. Re: Linux entre duas redes [RESOLVIDO]

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 17/02/2012 - 23:29h

Consegui. Fiz como citado acima. Criei duas ACL's, uma para a rede do laboratório e outra para a rede da Secretaria. A da secretaria liberei tudo e a do laboratório cai nas acls de bloqueio.
Uma observação, o iptables tem que desviar as duas redes para a porta 3128. Tive um problema com o DNS, pois como minha politica padrão era DROP, o DNS não estava sendo acessado, mas liberei o INPUT, FORWARD para as duas redes e funcionou blz.

Obrigado, Andre.

Pode fechar o tópico


12. Maravilha

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 17/02/2012 - 23:56h

wotila escreveu:

Consegui. Fiz como citado acima. Criei duas ACL's, uma para a rede do laboratório e outra para a rede da Secretaria. A da secretaria liberei tudo e a do laboratório cai nas acls de bloqueio.
Uma observação, o iptables tem que desviar as duas redes para a porta 3128. Tive um problema com o DNS, pois como minha politica padrão era DROP, o DNS não estava sendo acessado, mas liberei o INPUT, FORWARD para as duas redes e funcionou blz.

Obrigado, Andre.

Pode fechar o tópico


Legal que pesquisou e se virou no lance do DNS é assim que se aprende .A galera que fica forçando respostas prontas dificilmente aprende algo.
Quanto ao tópico vc é quem deve marcar como resolvido



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts