Migrar squid transparente para não transparente

1. Migrar squid transparente para não transparente

Murilo Nunes da Silva
murilo_ns

(usa Ubuntu)

Enviado em 15/05/2014 - 14:27h

Pessoal, boa tarde
Aqui em nosso servidor (CentOS 6.5) temos squid transparente que não tem feito um bloqueio efetivo :)
Eu gostaria de bloquear alguns sites https, como facebook entre outros. Para isso, vi que o proxy transparente não seria útil.

O Squid hoje tem filtrado o conteúdo e praticamente não tem bloqueado, seja http ou https. Eu gostaria que ele efetuasse o bloqueia correto de palavras e alguns sites https, para isso creio que devo migrar ele de transparente para normal.
Além disso, eu gostaria que no SARG tivessemos os registros com pelo menos os nomes das máquinas. Como poderia ser feito?

Se tivermos ele por autenticação dos usuários, há a possibilidade de fazer com que apenas um usuário não se autentifique e não tenha registros(no caso o diretor)?

Quais seriam os impactos dessas mudanças?

Atualizações e antivírus poderiam parar?

Então vamos lá....

Minha rede tem a seguinte topologia


Modem >>>> Servidor proxy/firewall/dhcp <<>> Switch >>> Vlan 1 e VLan 2

O servidor recebe um ip fixo do modem e distribui esse via dhcp para o switch que somente separa com vlans e repassa esses endereços


Segue meu firewall



#!/bin/sh

echo -e "\n Carregando rc.firewall...\n"

LSMOD=/sbin/lsmod
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe
INSMOD=/sbin/insmod
GREP=/bin/grep
AWK=/bin/awk
SED=/bin/sed
CUT=/bin/cut
IFCONFIG=/sbin/ifconfig
IPTABLES=/sbin/iptables

UNIVERSE="0.0.0.0/0"

EXTIF0="p4p1" #mesma coisa que eth0, que e' conectado no roteador
IPEXTIF0=192.168.1.49 #192.168.30.2
INTNET0=192.168.50.0/24

INTIF0="em1" #mesma coisa que eth1
INTNET1=192.168.51.0/24
INTIF1="em1.2"


echo -en "Carregando modulos: \n"

echo "\n Carregando e verificando se os modulos do kernel estao ok... \n"
$DEPMOD -a


echo "\n Habilitando forwarding...\n"
echo 1 > /proc/sys/net/ipv4/ip_forward

echo "\n Limpando as regras existentes e configurando a politica default para drop...\n"
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT DROP
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -F -t nat

# Esvazia a drop-it chain... se ela existe.
if [ -n "`$IPTABLES -L | $GREP drop-it`" ]; then
$IPTABLES -F drop-it
fi

# Remove todas as chains definidas pelos usuarios.
$IPTABLES -X
#
# Zera todos os contadores do IPTABLES.
$IPTABLES -Z

echo "\n Protecao contra Ping of dead...\n"
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

echo "\n Criando um DROP chain...\n"
$IPTABLES -N drop-it
$IPTABLES -A drop-it -j LOG --log-level info
$IPTABLES -A drop-it -j REJECT

echo "\n Carregando regras INPUT...\n"

# A interfaces loopback é valida.
#
$IPTABLES -A INPUT -i lo -j ACCEPT

$IPTABLES -A INPUT -p tcp --dport 20022 -j ACCEPT #ssh
$IPTABLES -A INPUT -p tcp --dport 10000 -j ACCEPT #webmin

$IPTABLES -A INPUT -p tcp --dport 901 -j ACCEPT #swat(samba)

#portas Squid
$IPTABLES -A INPUT -i $INTIF0 -p tcp --dport 3128 -j ACCEPT

#portas para o Samba
$IPTABLES -A INPUT -p udp --dport 137 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 138 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 139 -j ACCEPT

#Permitindo acesso interno ao srvadmin da dell
$IPTABLES -A INPUT -i $INTIF0 -p tcp --dport 1311 -j ACCEPT
$IPTABLES -A INPUT -i $INTIF1 -p tcp --dport 1311 -j ACCEPT

$IPTABLES -A INPUT -i $INTIF0 -p tcp --dport 3128 -j ACCEPT
$IPTABLES -A INPUT -i $INTIF0 -p tcp --dport 3129 -j ACCEPT

$IPTABLES -A INPUT -i $INTIF1 -p tcp --dport 3128 -j ACCEPT
$IPTABLES -A INPUT -i $INTIF1 -p tcp --dport 3129 -j ACCEPT

# Permite algum trafego relacionado retornando para o servidor.
$IPTABLES -A INPUT -s $UNIVERSE -m state --state ESTABLISHED,RELATED -j ACCEPT

# Todas as regras nao explicitas e todas as outras entradas
# sao negadas e registradas no log.
#
$IPTABLES -A INPUT -j drop-it

echo "\n Carregando regras OUTPUT...\n"

# A interface loopback é valida.
#
$IPTABLES -A OUTPUT -o lo -j ACCEPT

# Qualquer pacote saindo da interface externa para algum lugar e valido.
#
$IPTABLES -A OUTPUT -o $EXTIF0 -j ACCEPT
$IPTABLES -A OUTPUT -o $INTIF0 -j ACCEPT

$IPTABLES -A OUTPUT -o $INTIF1 -j ACCEPT

# Todas as regras nao explicitas e todas as outras saidas
# sao negadas e registradas no log.
#
$IPTABLES -A OUTPUT -j drop-it

echo "\n Carregando regras FORWARD...\n"

$IPTABLES -A FORWARD -i $INTIF0 -o $EXTIF0 -s $INTNET0 -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF1 -o $EXTIF0 -s $INTNET1 -j ACCEPT


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


$IPTABLES -t nat -A POSTROUTING -s 192.168.51.0/24 -o $EXTIF0 -j MASQUERADE

#Usado para libera a conexão da rede interna em1
$IPTABLES -t nat -A POSTROUTING -o $EXTIF0 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.50.0/24 -j MASQUERADE

#roteamento para a VLAN geral em1.2
$IPTABLES -t nat -A POSTROUTING -s 192.168.51.0/24 -j MASQUERADE

#bloquear de um rede para a outra
$IPTABLES -A FORWARD -s 192.168.50.0/24 -d 192.168.51.0/24 -j DROP
$IPTABLES -A FORWARD -s 192.168.51.0/24 -d 192.168.50.0/24 -j DROP

#liberar para o servidor de uma vlan para outra somente a conexão do servidor
$IPTABLES -A FORWARD -s 192.168.50.0/24 -d 192.168.50.1 -j ACCEPT
$IPTABLES -A FORWARD -s 192.168.51.0/24 -d 192.168.51.1 -j ACCEPT

#Roteamento para o squid
$IPTABLES -t nat -A PREROUTING -i $INTIF0 -p tcp --dport 80 -j REDIRECT --to-port 3129
#

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "\n Protecao contra Ping of dead...\n"
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPTABLES -A FORWARD -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

# Todas as regras nao explicitas e todos os outros direcionamentos ( forwards )
# sao negados e registradas no log.
$IPTABLES -A FORWARD -j drop-it

#### Regras NAT

echo "\n Carregando regras NAT...\n"





Segue meu .conf do Squid



#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acl redeCV src 192.168.50.0/24
acl redeGeral src 192.168.51.0/24

acl SSL_ports port 443 563 3128
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 901 # swat
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access deny to_localhost

#

http_access allow redeCV
http_access allow redeGeral

acl block_redes_sociais dstdomain "/etc/squid/block/redes_sociais"
http_access allow redeCV !block_redes_sociais

acl block_palavras url_regex -i "/etc/squid/block/palavras"
http_access deny block_redes_sociais

http_access deny block_palavras
http_access allow localhost
http_access deny all

#configuracoes gerais
http_port 3128
http_port 3129 intercept
visible_hostname srv_proxy
cache_mgr webmaster
error_directory /usr/share/squid/errors/pt-br
hosts_file /etc/hosts
dns_nameservers 8.8.8.8 8.8.8.4

hierarchy_stoplist cgi-bin ?
cache_mem 256 MB
maximum_object_size_in_memory 128 KB
cache_dir ufs /var/spool/squid 2040 16 256

coredump_dir /var/spool/squid

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
maximum_object_size 200 MB




Conteúdo do arquivo /etc/squid/block/redes_sociais

.facebook.com*



Conteúdo do arquivo /etc/squid/block/palavras

orkut
xxx
sexo
warez
torrent
[*****]
sex[^t]



Desde já agradeço a ajuda/atenção.
OBS.: se tiverem dicas de organização para o script do Firewall também são aceitas
Todas sugestões são aceitas


Abraços


  


2. Re: Migrar squid transparente para não transparente

Alex Silva
l0g1in

(usa FreeBSD)

Enviado em 16/05/2014 - 10:27h

Cara com os diretores dá sim pra fazer ele não autenticar, é só você antes do REQUIRED você cria uma ACL pra eles e http_access allow diretoria, libera por mac ou ip, caso você tenha um Samba 4 ou um Active Directory fica mais fácil ainda pois você pode fazer a autenticação pelo AD ai ele não precisa por senha pra entrar, no sarg tem a opção de você excluir o usuário que não quer aparece no relatórios. Caso sua rede tenha IP Fixo em todas as maquina ou você nos computadores da diretoria você pode configurar e no iptables criar uma regra que passa tudo, sem que eles precisem autenticar no proxy, assim fica até mais simples.
iptables -A FORWARD -p tcp --destination-port 80 -s 192.x.x.x -j ACCEPT. Mais tudo depende da sua estrutura de como está, quais equipamentos que você tem, como você quer fazer, tem que dar uma estuda na estrutura...


3. Re: Migrar squid transparente para não transparente

Murilo Nunes da Silva
murilo_ns

(usa Ubuntu)

Enviado em 19/05/2014 - 10:44h

root360 escreveu:

Cara com os diretores dá sim pra fazer ele não autenticar, é só você antes do REQUIRED você cria uma ACL pra eles e http_access allow diretoria, libera por mac ou ip, caso você tenha um Samba 4 ou um Active Directory fica mais fácil ainda pois você pode fazer a autenticação pelo AD ai ele não precisa por senha pra entrar, no sarg tem a opção de você excluir o usuário que não quer aparece no relatórios. Caso sua rede tenha IP Fixo em todas as maquina ou você nos computadores da diretoria você pode configurar e no iptables criar uma regra que passa tudo, sem que eles precisem autenticar no proxy, assim fica até mais simples.
iptables -A FORWARD -p tcp --destination-port 80 -s 192.x.x.x -j ACCEPT. Mais tudo depende da sua estrutura de como está, quais equipamentos que você tem, como você quer fazer, tem que dar uma estuda na estrutura...


Obrigado pela resposta

Você saberia informar como eu mudaria meu .conf atual para o proxy não transparente?
Tem alguma dica ou melhoria para o .conf atual?
No iptables mudaria alguma coisa?


Abraços






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts