INICIANTE - Servidor de Internet com Proxy e Firewall

Iniciado por giltla, 28 de Agosto de 2008, 22:16

tópico anterior - próximo tópico

giltla

Olá pessoal...primeiro, é um prazer estar iniciando neste novo mundo (p mim, claro)... c certeza terei muitos desafios e conto c a ajuda de vc's...

Bom..p começar, tenho um pepino nas maos....

Tenho um servidor que atualmente roda o Windows 2000 Server, roteando internet utilizando o NAT. Ele tem 2 placas de rede: vamos colocar assim: eth0, ligada ao modem da internet, com ip fixo profissional, e eth1, liga a rede local, rodando servidor dns, dhcp e roteando internet atraves do NAT do 2k server. Acontece que tenho cerca de 120 usuários utilizando essa mesma conexão ao mesmo tempo, oq torna o trafego mto lento, daí a minha intenção de colocar o ubuntu server como proxy e firewall. Acontece que sei mto pouco de Linux, apenas o básico mesmo. Consegui vários tutoriais sobre o assunto, porém ainda tenho mtas dúvidas.

1 - Tendo em vista que já configurei as duas placas de rede corretamente (pois consigo pingar tanto a rede local quanto algum endereço externo), quais os próximos passos ?

2 - Sei que tenho que colocar o script p rotear a net em algum arquivo de inicialização, mas qual ?

3 - Alguém, pelamordedeus, pode me passar algum tutorial passo a passo ?

4 - Como exemplo, segue ip das redes:

eth0 - rede da internet
          ip                189.75.129.106
          mascara       255.255.255.248
          gateway       189.75.129.105

eth1 - rede local
         ip                  192.168.200.1
         mascara         255.255.255.0


Os servidores dns gostaria de colocar o proprio servidor linux p resolver nomes...

bom...e assim por diante....


Desde já, agradeço a atenção e colaboração de todos...


GILMAR.

edimasa

indiferente se é a versão server ou versão desktop.

você deve de ter instalado em seu pc(servidor) os seguintes softwares:

squid(proxy)

#sudo apt-get install squid

iptables(regra de roteamentos e etc.)

#sudo apt-get install iproute


feito a instalação destes dois edite o arquivo "/etc/squid/squid.conf".
!dica: faça um backup
# sudo cp /etc/squid/squid.conf /etc/squid/squid.bkp

e se quiser pode utilizar essa conf:

#Squid edimasa

#Inf basicas
http_port 3128 transparent
visible_hostname proxysrv

#Politica de acesso> todos os enderecos acessam o proxy
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
#criando grupo de rede
acl ipfree src "/etc/squid/ipfree.txt"
acl ip64 src "/etc/squid/ip64.txt"
acl ip128 src "/etc/squid/ip128.txt"
acl ip256 src "/etc/squid/ip256.txt"


# regra Restricoes
#bloqeuios por extensao
acl badext url_regex -i "/etc/squid/badext.txt"
#acl badurl dstdomain "/etc/squid/badurl.txt"
acl badurl url_regex -i "/etc/squid/badurl.txt"
acl badpal url_regex -i "/etc/squid/badpal.txt"

#grupo de rede permissoes
http_access allow ipfree
http_access deny badext
http_access deny badurl
http_access deny badpal
http_access allow ip64
http_access allow ip128
http_access allow ip256
http_access deny all

##criando limite de banda (delay_pools<qntd de regras>)
delay_pools 4

#delay_class <numero da regra><tipo>
delay_class 1 2   
delay_parameters 1 65536/65536 8192/8192
delay_access 1 allow ip64
##link de 64k

delay_class 2 2
delay_parameters 2 65536/65536 16384/16384
delay_access 2 allow ip128
#link de 128k

delay_class 3 2
delay_parameters 3 65536/65536 30076/30076
delay_access 3 allow ip256
#link de 256k

delay_class 4 2
delay_parameters 4 65536/65536 65536/65536
delay_access 4 allow ipfree


#delay_class 5 2
#delay_parameters 5 -1/-1 -1/-1
#delay_access 5 allow ipfree




#regras
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 280 #http-mgnt
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 Safe_ports port 1025-65535 #portas altas
acl purge method PURGE
acl CONNECT method CONNECT
#liberar portas
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



#---fim do config squid

então, o squid além de ser o proxy, ele pode controlar o acesso como descrito no conf.: (é claro crie esses arquivos  ;)  )
bloqueio de palavras:
/etc/squid/badpal.txt
bloqueio de endereços/sites
/etc/squid/badurl.txt
bloqueio de extensão de arquivo
/etc/squid/badext.txt

detalhe:
1. coloque cada item em uma linha, ex:
www.orkut.com
www.youtube.com

2. para bloquear qualquer arquivo com extensão use desta forma:
.scr$

crie os arquivos:
"/etc/squid/ipfree.txt"
"/etc/squid/ip64.txt"
"/etc/squid/ip128.txt"
"/etc/squid/ip256.txt"

em cada um deve conter uma relação de ips que você queira respectivamente conforme o nome, limitar o download da internet.


regra iptables:

edite o arquivo: "/etc/rc.local" insira esse conteúdo no final do arquivo. observe que deve existir no final somente a linha "exit 0"

#regras proxy
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

#algumas regras de seguranca
#Contra DoS:
iptables -A FORWARD -i eth0 -p tcp -syn -m limit -limit 1/s -j accept
#Contra Port Scanners:
iptables -A FORWARD -o tcp -tcp-flags SYN,ACK,FIN,RST RST -m zlimit -limit 1/s -j accept
#Contra Pings:
iptables -A FORWARD -p icmp -icmp-type echo-request -m limit -limit 1/s -j accept
#Bloquear Back Orifice:
iptables -A INPUT -p tcp --dport 31337 -j DROP
iptables -A INPUT -p udp --dport 31337 -j DROP
#Bloquear NetBus:
iptables -A INPUT -p tcp --dport 12345:12346 -j DROP
iptables -A INPUT -p udp --dport 12345:12346 -j DROP



exit 0


#----fim

reinicie a máquina
isso é o básico pra vc conseguir fazer funcionar o proxy...


giltla

Caracas.... aí edimasa.... valew mesmo... bem passo a passo... mao na roda p quem ta começando como eu... ainda naum tive tempo de montar e testar...mas assim q o fizer posto o resultado aki...

mas desde já, muito obrigado msm...

abs



Roger_Pereira

Vendo essa postagem já gostaria de perguntar umas coisas ao qual vou precisar fazer.

Nesse arquivo do squid o bloqueio maior é em questão a banda, limitando a 64k, 128, 256k, a pergunda que faço é se é mais ou menos a mesma escrutuora para fazer o que preciso.

Criar grupos de acesso a tais sites. designando os ips e mac que pertemcem o grupo e colocando quais sites esse grupo acessa. Deixando todos os outros ips q não tiverem nos grupos sem acesso nenhum a internet.
E também fazendo uma regra di horario onde no horario do almoço a internet ficaria liberada todos os sites.

Alguém poderia me dar o caminho para mim conseguir implantar, depois ate posto aqui pra galera também o esquema de grupos e de horarios o que pode ser interessante para muita gente.

FLW..

cleberrecebe

        Velhinho seguinte, do jeito que tu falou ai acho que é muito mais rápido prático e menos processado hehehee usar o squidguard para o Tal, simples de configurar e vai fazer tudo que tu quer aí, além de redirecionar para um site qualquer o pessoal que num tem acesso tipo para uma pagina da sua empresa :D

         Por via das dúvidas após instalar o squidguard vai aí o conf para tu ter uma idéia :D

Listagem 1 - /etc/squidguard.conf


# /etc/squidguard.conf
# parte 1 - definições básicas
logdir /var/squidGuard/logs
dbhome /var/squidGuard/db


# 2 - define uma regra de horário
time horario_livre {
weekly * 00:00-08:00 18:00-24:00
}


# 3 - define um grupo interno
src sala_de_aula {
ip 10.10.200.0/24
}


# 4 - define um segundo grupo
src escritorios {
ip 10.9.0.0/16
}


# 5 - um grupo de destinos
dest porno {
domainlist porno/dominios
urllist porno/urls
}


# 6 - quem pode o que
acl {
# item (a) - escritorios, por horario
escritorios within horario_livre {
pass all
} else {
pass !porno all
}


# item (b) - sala de aula - nunca pornô!
sala_de_aula {
pass !porno all
}


# item (c) - se não for nenhuma origem conhecida, rejeitar
default {
pass none
redirect http://www.nossapagina.com.br/bloqueado.htm
}
}

abraços velhinho :D

laos

  Fiz algo parecido aqui na loja porém usei o shorewall, um frontend pro iptables diriamos assim... Menos complicado do que fazer as regras direto com o iptables.

Fabio

giant_trunade

#6
Olá pessoal,

queria aproveitar o gancho de vcs para postar uma duvida...

eu usei o squid para bloquear sites, e Linus Torvalds que me perdoe mas é uma &%$#@...

estou usando para isso o squidGuard 2.7 STABLE 3.. fiz minhas configs mas tá muito estranho.. eu coloco as coisas na whitelist e os sites são bloqueados do mesmo jeito.

Minha principal regra (e exigencia da empresa) é que em certo horário alguns sites tenham acesso bloqueado.. porem no horário livre os mesmos nao são liberados... já mudei minhares de vezes meu .conf e nada..

segue abaixo meu squidGuard.conf:



#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /var/lib/squidguard/db/blacklists
logdir /var/log/squid

#
# TIME RULES:
#

time horario_aula {
# weekly smtwhfa 12:00-19:20
weekly smtwhfa 08:00-10:00 19:30-23:00
}

#
# SOURCE ADDRESSES:
#

src redeteste{
ip 192.168.1.0/24
}

src testeliberado{
ip 192.168.1.102/24
}

#
# DESTINATION CLASSES:
#

#Propagandas, banners, publicidade:
dest ads {
domainlist ads/domains
urllist ads/urls
expressionlist ads/expressions
redirect http://127.0.0.1/avisos/bloqueio.gif
}

###Pornografia  ---------------------------------------------------- Inicio
dest adult {
domainlist adult/domains
urllist adult/urls
#redirect http://127.0.0.1/avisos/improprio.html
}

dest porn {
domainlist porn/domains
urllist porn/urls
expressionlist porn/expressions
#redirect http://127.0.0.1/avisos/improprio.html
}

dest artnudes {
domainlist artnudes/domains
urllist artnudes/urls
#redirect http://127.0.0.1/avisos/improprio.html
}

dest naturism {
domainlist naturism/domains
urllist naturism/urls
#redirect http://127.0.0.1/avisos/improprio.html
}

dest mixedadult {
domainlist mixed_adult/domains
urllist mixed_adult/urls
#redirect http://127.0.0.1/avisos/improprio.html
}
###Pornografia  --------------------------------------------------- Fim

###Sites de violencia   -  inicio
dest aggressive {
domainlist aggressive/domains
urllist    aggressive/urls
#redirect http://127.0.0.1/avisos/agressivo.html
}

dest violence {
domainlist violence/domains
urllist violence/urls
#redirect http://127.0.0.1/avisos/agressivo.html
}
###Sites de violencia   -  fim

##chat e salas de bate papo:
dest chat {
domainlist chat/domains
urllist chat/urls
#redirect http://127.0.0.1/avisos/geral.html
}

###sites de redes sociais como orkut e outros:
dest socialnetworking {
domainlist socialnetworking/domains
urllist socialnetworking/urls
#redirect http://127.0.0.1/avisos/por_horario.html
}
###sites de namoro:
dest dating {
domainlist dating/domains
urllist dating/urls
#redirect http://127.0.0.1/avisos/geral.html
}

###############################################################################
######ABAIXO OS SITES QUE CAUSAM RISCO À REDE, COM VÍRUS, SPYWARE E OUTROS#####

#phishing:
dest phishing {
domainlist phishing/domains
#redirect http://127.0.0.1/avisos/virusinfected.html
}

#ringtones (maioria com virus):
dest ringtones {
domainlist ringtones/domains
#redirect http://127.0.0.1/avisos/virusinfected.html
}

#Infectados por vírus:
dest virusinfected {
domainlist virusinfected/domains
urllist virusinfected/urls
#redirect http://127.0.0.1/avisos/virusinfected.html
}

#Com spyware:
dest spyware {
domainlist spyware/domains
#redirect http://127.0.0.1/avisos/virusinfected.html
}

#Com malware:
dest malware {
domainlist malware/domains
urllist malware/urls
expressionlist malware/expressions
#redirect http://127.0.0.1/avisos/virusinfected.html
}

#Dialers para pornografia, virus e spyware:
dest dialers {
domainlist dialers/domains
domainlist dialers/urls
#redirect http://127.0.0.1/avisos/virusinfected.html
}
###############################################################################
###Sites com informações para hacker / cracker e outros:
dest hacking {
domainlist hacking/domains
urllist hacking/urls
#redirect http://127.0.0.1/avisos/geral.html
}

###Sites proxy para burlar o servidor:
dest proxy {
domainlist proxy/domains
urllist proxy/urls
#redirect http://127.0.0.1/avisos/geral.html
}

###Sites de mensagens instantaneas (ex.: MSN):
dest instantmessaging {
domainlist instantmessaging/domains
domainlist instantmessaging/urls
#redirect http://127.0.0.1/avisos/por_horario.html
}

#Sites adicionados à  blacklist pela FAI:
dest adicionados {
domainlist adicionados/dominios
urllist adicionados/urls
#redirect http://127.0.0.1/avisos/geral.html
}

########WHITELIST####################################
#caso algum site esteja dentro de alguma classificação bloqueada e seja necessá
#rio desbloquear, adicione o endereço / dominio aqui:
dest whitelist {
domainlist whitelist/domains
#urllist whitelist/urls
}

acl {
#ip com tudo liberado (para teste)
testeliberado {
pass any
}

##BLOQUEIO POR HORARIO---------------------------------------------------------------- INICIO:
redeteste within horario_aula {
pass whitelist !instantmessaging !socialnetworking !virusinfected !phishing !ringtones !spyware !malware !dialers !hacking !porn !ads !adult !artnudes !naturism !mixedadult !aggressive !violence !chat !dating !adicionados any
redirect http://127.0.0.1/avisos/por_horario.html
}
else {
pass whitelist !virusinfected !phishing !ringtones !spyware !malware !dialers !hacking !porn !adult !ads !artnudes !naturism !mixedadult !aggressive !violence !adicionados any
redirect http://127.0.0.1/avisos/virusinfected.html
}
##BLOQUEIO POR HORARIO----------------------------------------------------------------- FIM.

default {
pass any
}
}





Outro problema sério pessoal é que eu nao estou conseguindo usar https... ja liberei as portas 80, 443 e direcionei ambas para a 3128, porem se eu entro em gmail, yahoomail, ou qq https.. ele retorna a mensagem no firefox:

"Ocorreu um erro durante uma conexão com login.yahoo.com:443.

O SSL recebeu um registro que excedia o comprimento máximo permitido.

(Código do erro: ssl_error_rx_record_too_long)"

nao consigo resolver de forma alguma, e na internet nao acho nada que resolva..

peço que me ajudem nisso. qualquer ajuda será bem vinda

muito obrigado a todos

arisimoes

#7
edimasa vlw pelo conf e pelo rc.local ficou muito bom to tento fazer umas implementações e gostaria de saber se é possivel uma acl em que eu limito uma banda pra determinada url

por exemplpo limitar a banda usada no youtube pra no maximo 10kb/s porem essa regras seria para todos os ips

criei ess acl
acl videos src "/etc/squis/videos.txt"
e la no delay pool adicionei
#Limitando youtube 5k
delay_class 5 2
delay_parameters 5 65536/65536 5192/5192
delay_access 5 allow videos

esta correto?

junniox

Olá
Uma ótima solução Open Source para transformar um PC em um sistema de segurança completo, incluindo firewall, proxy, filtro de conteúdo, antivírus HTTP, antivírus POP3 e SMTP, VPN, antispam, etc. é o Endian Firewall Community...

Vale a pena dar uma olhada, experimente:

http://www.endian.com/en/community/overview/

Eu utilizo essa solução profissionalmente há mais de 2 anos e estou muito satisfeito com os resultados.

[]'s

Teste_100

Desculpem posso tirar uma duvida besta, besta,besta....
como eu fixo meu ip pelo ifconfig. calma que eu se que e
#ifconfig eth0 xxx.xxx.xxx.x/xx ate ai tranquilo
mais se eu reiniciar o pc ele nao ta mais fixo  ??? esta automatico.
Netbook Acer apireOn D150, Atom D 1.6,1gb ram, 160gb HDD.

junniox

Citação de: Teste_100 online 05 de Setembro de 2009, 21:20
Desculpem posso tirar uma duvida besta, besta,besta....
como eu fixo meu ip pelo ifconfig. calma que eu se que e
#ifconfig eth0 xxx.xxx.xxx.x/xx ate ai tranquilo
mais se eu reiniciar o pc ele nao ta mais fixo  ??? esta automatico.

Fixando IP no Ubuntu pelo Shell
Neste exemplo vou utilizar o IP 192.168.0.10

sudo nano /etc/network/interfaces

Localizes as linhas abaixo e altere de acordo com a sua necessidade:

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.0.10
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Após, reinicie o serviço:
sudo /etc/init.d/networking restart

Experimente reiniciar o PC e ver se o IP permaneceu fixo.

[]'s

asghan

   Ubuntu 12.04 - Unity 64bits