Configurar Squid Para Bloquear tudo e Liberar alguns sites [RESOLVIDO]

1. Configurar Squid Para Bloquear tudo e Liberar alguns sites [RESOLVIDO]

Marcos Roberto Contarin
cont4rin

(usa Ubuntu)

Enviado em 11/05/2012 - 17:35h

Olá!
Confesso que sou novo e ingênuo em relação ao linux, sou um usuário, mas me dispus a enfrentar o desafio de fazer um simples servidor proxy para um amigo. Ele quer Bloquear todos o sites de um determinado computador da rede dele e liberar somente 5 ou 6 endereços. 1 endereço de e-mail e outros 4 ou 5 endereços que homologam a NF-e.

Tenho instalado em uma maquina bem modesta o Ubuntu Desktop 11.10 32Bits, com o Squid 2.7 (o mais atualizado.) Mudei muitas informações no squid.conf, em determinado momento consegui bloquear o acesso, mas não conseguia liberar os sites necessários.

Vocês poderiam, claro se não for incomodo, me mandar quais as regras eu utilizo e em que parte do squid.conf elas são inseridas.

O servidor só possui uma placa de rede e será feito direcionamento pelo navegador.

IP servidor: 192.168.0.20
IP Gateway: 192.168.0.1
IP maquina que será bloqueada: 192.168.0.6 (a unica maquina que será direcionada para o proxy da rede, as outras tem acesso normal sem direcionamento para o proxy.)

Tomem como base o squid.conf original.


  


2. Proxy

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 11/05/2012 - 17:55h

Depois de redirecionar a porta 80 para a porta do squid:

squid.conf:
acl users_liberados src "/etc/squid/ips_liberados"
acl user_restrito src 192.168.0.6
acl liberado_restrito url_regex -i "/etc/squid/libera_restrito"
http_access allow users_liberados
http_access deny user_restrito !liberado_restrito
http_access deny all

Dentro de /etc/squid/libera_restrito vai os sites que quer liberar (um por linha)
Dentro de /etc/squid/ips_liberados vai os ips de que tem acesso liberado


3. Sites

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 11/05/2012 - 17:56h

Lembrando que normalmente os sites precisam de acesso a outros sites por traz para carregar imagens, scripts etc...


4. Cometi algum erro?

Marcos Roberto Contarin
cont4rin

(usa Ubuntu)

Enviado em 12/05/2012 - 08:38h

Configurei o squid.conf como foi indicado, criei os 2 arquivos em /etc/squid, com o ip libera( para testes estou usando a classe 10.1.1.0) Mudei os ips aonde tinha numero de ips.

no arquivo /etc/rc.local eu adicionei a o seguinte comando para redirecionar para a porta 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

E meu arquivo squid.conf ficou assim como abaixo (acima disso só tem comentário e abaixo é o arquivo sem alteração)

a maquina que eu configurei para acessar o proxy não bloqueia nada, apesar de eu só ter adicionado o gmail e google no aquivo libera_restrito.

O que posso estar errando?
########################################################################

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#

acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 purge method PURGE
acl CONNECT method CONNECT

# TAG: http_access
# Allowing or Denying access based on defined access lists
#
# Access to the HTTP port:
# http_access allow|deny [!]aclname ...
#
# NOTE on default values:
#
# If there are no "access" lines present, the default is to deny
# the request.
#
# If none of the "access" lines cause a match, the default is the
# opposite of the last line in the list. If the last line was
# deny, the default is allow. Conversely, if the last line
# is allow, the default will be deny. For these reasons, it is a
# good idea to have an "deny all" or "allow all" entry at the end
# of your access lists to avoid potential confusion.
#
#Default:
# http_access deny all
#
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Only allow purge requests from localhost
http_access allow purge localhost
http_access deny purge
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
#
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
##########################################################################
# MINHAS REGRAS DE ACESSO ################################################
##########################################################################
#
acl users_liberados src "/etc/squid/ips_liberados"
acl user_restrito src 10.1.1.6
acl liberado_restrito url_regex -i "/etc/squid/libera_restrito"
http_access allow users_liberados
http_access deny user_restrito !liberado_restrito
http_access deny all

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost



5. Liberado

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 12/05/2012 - 11:51h

Ok aparentemente esta tudo correto.
Dei uma limpada nele e adicionei a porta:

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#

acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 purge method PURGE
acl CONNECT method CONNECT

http_port 3128
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


##########################################################################
# MINHAS REGRAS DE ACESSO ################################################
##########################################################################
#
acl users_liberados src "/etc/squid/ips_liberados"
acl user_restrito src 10.1.1.6
acl liberado_restrito url_regex -i "/etc/squid/libera_restrito"
http_access allow users_liberados
http_access deny user_restrito !liberado_restrito
http_access deny all


#http_access allow localnet
http_access allow localhost


Você executou "squid -k reconfigure " depois que alterou as regras?
Com esta este arquivo "/etc/squid/ips_liberados" esta com a rede/mascara se for troque a regra de lugar:

http_access deny user_restrito !liberado_restrito
http_access allow users_liberados
http_access deny all


6. Network unreachable

Marcos Roberto Contarin
CONT4RIN

(usa Ubuntu)

Enviado em 16/05/2012 - 13:09h

Olá!!
O servidor estava funcionando perfeitamente no local onde eu configurei que tem ADSL Oi, e a Classe de IP é 10.1.1.1, quando levei para o local que iria ficar funcionando o Proxy, que Usa internet Via Rário e IP 192.168.1.1, apesar de eu ter configurado os Ips corretamente e ele estar bloqueando os sites que não estão na lista, acontece que ele está dando o erro "Network unreachable" quando tento acessar os sites da lista de sites liberados. Quando faço o teste de Ping para o mesmo site funciona normalmente o ping. Li que era u problema com DNS, mas eu coloquei os DNS´s no resolv.conf e não funcionou. Gostaria de saber o que posso fazer para resolver. Desde já agradeço.


7. firewall

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 16/05/2012 - 13:26h

CONT4RIN escreveu:

Olá!!
O servidor estava funcionando perfeitamente no local onde eu configurei que tem ADSL Oi, e a Classe de IP é 10.1.1.1, quando levei para o local que iria ficar funcionando o Proxy, que Usa internet Via Rário e IP 192.168.1.1, apesar de eu ter configurado os Ips corretamente e ele estar bloqueando os sites que não estão na lista, acontece que ele está dando o erro "Network unreachable" quando tento acessar os sites da lista de sites liberados. Quando faço o teste de Ping para o mesmo site funciona normalmente o ping. Li que era u problema com DNS, mas eu coloquei os DNS´s no resolv.conf e não funcionou. Gostaria de saber o que posso fazer para resolver. Desde já agradeço.


Já verificou no firewall se tem algo que precisa mudar depois da mudança de adsl para radio?


8. Qual Firewall

Marcos Roberto Contarin
CONT4RIN

(usa Ubuntu)

Enviado em 16/05/2012 - 13:46h

Firewall no servidor Proxy?
Desculpe, mas... como faço isso?
Ele até chegou a funcionar bem por alguns minutos, mas depois que eu desliguei para trocar o cabo de energia da maquina parou sem eu ter feito qualquer alteração.
Passei a manha toda tentando resolver, e só obtive respostas referentes a cache e DNS.
Obrigado



9. Firewall

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 16/05/2012 - 15:40h

CONT4RIN escreveu:

Firewall no servidor Proxy?
Desculpe, mas... como faço isso?
Ele até chegou a funcionar bem por alguns minutos, mas depois que eu desliguei para trocar o cabo de energia da maquina parou sem eu ter feito qualquer alteração.
Passei a manha toda tentando resolver, e só obtive respostas referentes a cache e DNS.
Obrigado


É aconselhavel que use um firewall para proteger sua rede alem de proibir alguem de usar seu proxy externamente.

Tente: (Eth1= placa internet)

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Com estas regras sua internet vai ser compartilhada.

Veja como criar seu firewall:
http://www.vivaolinux.com.br/artigo/Criando-um-firewall-simples-e-compartilhando-a-conexao-usando-o-...


10. Erro de DNS continua

Marcos Roberto Contarin
cont4rin

(usa Ubuntu)

Enviado em 17/05/2012 - 10:47h

Os comandos que você me passou devem ser inseridos em algum arquivo?
Agora o erro é um pouco diferente:
Se eu coloco
dns_nameserver 201.10.1.2
dns_nameserver 201.10.120.3
ou
nameserver 201.10.1.2
nameserver 201.10.120.3

dá esse erro:

Unable to determine IP address from host name "globo.com"

The DNS server returned:

Timeout

Acho que vou começar denovo.


11. Re: Configurar Squid Para Bloquear tudo e Liberar alguns sites [RESOLVIDO]

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 17/05/2012 - 11:07h

cont4rin escreveu:

Os comandos que você me passou devem ser inseridos em algum arquivo?
Agora o erro é um pouco diferente:
Se eu coloco
dns_nameserver 201.10.1.2
dns_nameserver 201.10.120.3
ou
nameserver 201.10.1.2
nameserver 201.10.120.3

dá esse erro:

Unable to determine IP address from host name "globo.com"

The DNS server returned:

Timeout

Acho que vou começar denovo.

Os comando podem ser digitados diretamente no terminal, mas para que continuem após reiniciar o server percisa estar em um arquivo que inicie junto com o sistema como /etc/rc.local

Quanto ao dns onde esta inserindo estes que passou:
Deve ficar no squid.conf:

dns_nameserver 201.10.1.2
dns_nameserver 201.10.120.3

Deve ficar em /etc/resolv.conf:

nameserver 201.10.1.2
nameserver 201.10.120.3


Se dessa forma continuar dando erro de dns tente usar o DNS publico do google:

8.8.8.8
8.8.4.4



12. só iptables

Alex Rocha
alerocha79

(usa Ubuntu)

Enviado em 02/12/2013 - 22:17h

Quiosque funcionando: consegui usando o Debian 7.2, bloqueia todos os sites da internet e só acessa um domínio.

Passos:

A) Configurar o firewall (arquivo: firewall.sh, e dê permissão de execução – sudo chmod a+x firewall.sh, salvei em /home/firewall.sh):

#######################INICIODOARQUIVO########
#!/bin/bash

# Apagando todas as regras
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Mudando a politica – Começa bloqueando tudo
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Libera conexões pre-estabelecidas
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

# Liberar https – aqui você coloca o ip do domínio
iptables -A OUTPUT -p tcp -d xx.xx.xx.xx --dport 443 -m state --state NEW -j ACCEPT

# Liberar http – aqui você coloca o ip do domínio
iptables -A OUTPUT -p tcp -d xx.xx.xx.xx --dport 80 -m state --state NEW -j ACCEPT

# Liberar DNS
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

#Liberar DHCP - na minha rede interna usa dhcp
iptables -A OUTPUT -p tcp --dport 67 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 67 -m state --state NEW -j ACCEPT

#######################FIM

B) deixar configurado para quando iniciar a máquina executar o firewall.sh
edite:
sudo gedit /etc/rc.local

#############INICIODOARQUIVO
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/home/./firewall.sh
exit 0
#################################FIM

Inicie:
sudo /etc/init.d/rc.local start

C)Agendei para executar o script de 5 em 5 minutos no cron (precaução minha):

Configurando o cron:
crontab -e

######INICIO
# Todos os dias de 5 em 5 minutos
*/5 * * * * /etc/init.d/rc.local start

#######FIM

Monitorando para ver se está sendo executado:
sudo tail -f grep CRON /var/log/syslog

D) Configurando para iniciar a máquina e abrir só o firefox
edite:
sudo gedit /etc/X11/Xsession.d/99x11-common_start

###########INICIODOARQUIVO

# $Id: 99x11-common_start 305 2005-07-03 18:51:43Z dnusinow $

# This file is sourced by Xsession(5), not executed.

#exec $STARTUP

exec firefox javascript:%20resizeTo\(1280,1024\)

# vim:set ai et sts=2 sw=2 tw=80:

######FIM






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts