Forçar o Iptables a passar pelo squid [RESOLVIDO]

1. Forçar o Iptables a passar pelo squid [RESOLVIDO]

Fábio Torres
fabiokalled

(usa Debian)

Enviado em 12/07/2012 - 17:38h

Boa noite!

Já via algumas dicas e posts indicando como fazer com que o iptables forçe a passagem pelo squid, para que computadores que não estão configurados para passar pelo proxy ou suas configurações são tiradas por usuários mais expertos não possam passar para a internet, burlando a rede interna.

Não quero que os computadores que não estão configurados com o proxy consigam navegar, será que poderiam me ajudar.

Abaixo estão meu firewall e meu squid:

administrador@servidor:~$ sudo cat /etc/init.d/iptables.conf
#!/bin/bash
#
# /etc/init.d/iptables.conf
#
# Limpa e inicializa os modulos
#******************************
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
modprobe iptable_nat
#
# Proxy transparente (Redireciona para o squid) - eth1 -> Placa de rede da intranet
#********************************************************
#
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
#
# Compartilha Internet - eth0 -> Placa de rede da internet
#********************************************************
#
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

_____________________________________________________________________
administrador@servidor:~$ sudo cat /etc/squid/squid.conf
# Autor: FÁBIO TORRES - fabio.torres@ifpa.edu.br
# Arquivo: /etc/squid/squid.conf
#
# Políticas de Acesso a Internet (AI) adotadas
#*********************************************
#
# 01. Definir AI somente para PCs da rede interna (Intranet)
# 02. Definir AI para todos PCs, fora do horário de expediente
# 03. Proibir AI de determinados PCs no horário de expediente
# 04. Definir lista de PC(s) sem AI (bloqueados) 24h/dia
# 05. Proibir uso do Internet Explorer (Estimular Firefox)
# 06. Definir PC(s) com permissão para uso do Internet Explorer
# 07. Proibir formatos de vídeos, áudio e arquivos de risco
# 08. Proibir palavras e sites impróprios/imoral
# 09. Proibir downloads com mais de 5 MB
# 10. Definir PC(s) (admin) com privilegio total de AI
#
# OBS: O controle dos computadores (PC) é feito pelo seu
# endereço físico (MAC) e não pelo IP.
#
# Configuração Geral
#*******************
#
http_port 3128 transparent
cache_mem 32 MB
cache_dir ufs /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
pid_filename /var/run/squid.pid
error_directory /usr/share/squid/errors/Portuguese
emulate_httpd_log on
visible_hostname servidor.4pef
cache_mgr fabio.torres@ifpa.edu.br
#
# Proxy Transparente
#*******************
#
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
#
# acl - Recomendadas
#*******************
#
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 to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
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 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
#
# acl - Personalizadas
#*********************
#
# *** Define portas liberadas
acl Safe_ports port 3050 # Interbase/Firebird
acl Safe_ports port 23000 # Serpro
acl Safe_ports port 13352 # SIRF
acl Safe_ports port 500 # FAP Digital
#
# *** Define a lista de palavras impróprias
acl palavra url_regex -i "/etc/squid/list/palavra.txt"
#
# *** Define a lista de sites impróprios
acl site dstdomain -i "/etc/squid/list/site.txt"
#
# *** Define a rede interna (Intranet)
acl intranet src 10.0.0.0/255.0.0.0
#
# *** Define PC(s) com privilegio total - CUIDADO!
acl admin arp "/etc/squid/list/admin.txt"
#
# *** Define a lista de PC(s) autorizados ao acesso a Internet
acl internet arp "/etc/squid/list/internet.txt"
#
# *** Define os formatos de vídeo, áudio e outros de risco
acl video urlpath_regex .wma$ .asf$ .mov$ mpg$ .mpeg$ .avi$
acl audio urlpath_regex .mp3$ .wav$ .mid$
acl risco urlpath_regex .exe$ .pps$ .com$ .bat$ .scr$
#
# *** Define o browser Internet Explorer
acl ie_browser browser ^Mozilla/4.0 .compatible; MSIE
#
# *** Define PC(s) autorizados a usar o Internet Explorer
acl ie_usuario arp "/etc/squid/list/browser.txt"
#
# *** Define PC(s) sem acesso a Internet (bloqueados) 24h/dia
acl bloqueado arp "/etc/squid/list/bloqueado.txt"
#
# *** Define o horário do expediente
acl exp1_seg-qui time MTWH 08:00-12:00
acl exp2_seg-qui time MTWH 13:30-17:00
acl exp1_sex time F 08:00-12:00
#
# http_access - Recomendadas
#***************************
#
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 - Personalizadas
#*****************************
#
# *** Libera dowloads de ate 5 MB
reply_body_max_size 5242880 allow all !admin
#
# *** Nega palavras impróprias
http_access deny palavra !admin
#
# *** Nega sites improprios
http_access deny site !admin
#
# *** Nega os formatos de vídeo, áudio e outros de risco
http_access deny video !admin
http_access deny audio !admin
http_access deny risco !admin
#
# *** Nega o Internet Explorer
http_access deny ie_browser !ie_usuario !admin
#
# *** Nega Internet no expediente para quem não esta na lista
http_access deny !internet !admin exp1_seg-qui
http_access deny !internet !admin exp2_seg-qui
http_access deny !internet !admin exp1_sex
#
# *** Nega PC(s) sem acesso a internet (bloqueados)
http_access deny bloqueado
#
# Permite acesso da rede interna (Intranet)
http_access allow intranet
#
# *** Nega tudo que não foi liberado ou negado
http_access deny all

Alguém pode me ajudar?

Atenciosamente,
Fábio Torres


  


2. MELHOR RESPOSTA

johnny borges
johnnyb

(usa Fedora)

Enviado em 01/08/2012 - 11:46h

vamo organizar essas regras e quanto a autenficação eu usaria mysql_auth


http_port 3128

#autenticação dos usuários para acesso
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
auth_param basic children 5
auth_param basic realm ENTRE COM SEU LOGIN E SENHA.
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

visible_hostname ServidorCRMB

cache_mem 128 MB
maximum_object_size 512 MB
minimum_object_size 0 KB

cache_swap_low 90
cache_swap_high 95

cache_dir ufs /var/spool/squid 2048 16 256
error_directory /usr/share/squid/errors/pt-br
cache_access_log /var/log/squid/access.log

refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl all src 0.0.0.0/0.0.0.0
acl redelocal src 10.0.0.0/8

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 280 #http-mgmt
acl Safe_ports port 488 #gss-http
acl Safe_ports port 591 500 #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


### configuração padrão
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

acl autenticados proxy_auth REQUIRED

acl grupo_liberado proxy_auth "/etc/squid/list/usuarios_liberados"
acl grupo_limitado proxy_auth "/etc/squid/list/usuarios_limitados"

#criando ACLs para restrição de sites e palavras
acl sitesbloqueados url_regex -i "/etc/squid/list/dominiosbloqueados"
acl palavrasproibidas url_regex -i "/etc/squid/list/palavrasproibidas"
acl sitespermitidos url_regex -i "/etc/squid/list/dominiospermitidos"


### essa regra bloqueia navegação por ip
### se vc tiver um site local tipo 192.168.2.1
### lembre de clocalo na excessao
#ACL para bloquear skype
acl acl_url_im_skype url_regex ^((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5][3-9][0-9]{0,1})(:|/|$\?)



http_access deny sitesbloqueados palavrasproibidas acl_url_im_skype !grupo_liberado !sitespermitidos

http_access allow localhost
http_access allow autenticados
http_access allow redelocal
http_access deny all

3. Re: Forçar o Iptables a passar pelo squid [RESOLVIDO]

Phillip Vieira
phrich

(usa Slackware)

Enviado em 12/07/2012 - 19:18h

Leia o artigo:

http://www.vivaolinux.com.br/artigo/Squid-+-Iptables-Combinacao-Infalivel/

Mas veja bem, leia, não copie e colque, leia, entenda, adapte e tudo vai dar certo ok?


4. Re: Forçar o Iptables a passar pelo squid [RESOLVIDO]

johnny borges
johnnyb

(usa Fedora)

Enviado em 12/07/2012 - 19:34h

amigo vamos com calma primeiramente seu squid tem bastante erro.
qual versao do squid vc usa ?
defina vc quer ou nao proxy transparente ?



5. Forçar o Iptables a passar pelo squid

Fábio Torres
fabiokalled

(usa Debian)

Enviado em 13/07/2012 - 08:03h

Gostaria que todos os computadores fossem autenticados, para acesso a internet automaticamente, ou seja, proxy transparente. No entanto desejo liberar alguns sites como o da Caixa Econômica para trabalhos do setor financeiro.

O que não desejo é que computadores que não estejam com as configurações do proxy consigam acessar a internet, pois quero obrigar a todo mundo a passar pelo meu proxy.

meu esquema de rede é o seguinte: Internet>Servidor Proxy Squid, firewall Iptables, DNS Bind 9 e DHCP3> Switch > computadores
> Routers APR 2405G 08M > computadores sem fio.



6. Re: Forçar o Iptables a passar pelo squid [RESOLVIDO]

johnny borges
johnnyb

(usa Fedora)

Enviado em 13/07/2012 - 10:59h

intao amigo vamos fazer o seguinte

se vc quiser proxy autenticado
vc tera ajustar seu squid para fazer autentificação


para que ninguem navegue sem proxy suas politicas do firewall iptables teram que ser alteradas para drop
e para bloquear ultrasurf e outros vc tera que fazer umas regras personalizadas

vc tera que configurar o Routers APR 2405G 08M para cliente isp, ou fazer um acesse point e distriburir ips pelo dhcp do servidor e nao do Routers APR 2405G 08M

caso queira proxy transparente
vc tera que mudar as politicas para drop redirecionar porta 80 para o squid
para bloquear ultrasurf e outros vc tera que fecha a porta 443 liberando apenas
para alguns sites

ja no Routers APR 2405G 08M vc apenas tera que configurar um ip static
e pronto

escolha uma opção para darmos continuidade as configurações





7. Forçar o Iptables a passar pelo squid

Fábio Torres
fabiokalled

(usa Debian)

Enviado em 13/07/2012 - 13:38h

O esquema de minha rede é:

Todos os serviços estão rodando em uma mesma máquina, que pretendo separá-los após a configuração certa estar rodando na máquina de testes.Poderia até usar virtualização, mas não o pretendo fazer agora, primeiro quero configurar o proxy de maneira adequada para que todo mundo passe por ele, sem exceções.

Servidor DHCP -> atribui IPs para todas as máquinas da rede, inclusive as que estão ligadas ao router.Algumas máquinas como impressoras de rede, os routers e alguns computadores estão co IPs estáticos atribuídos no arquivo dhcpd.conf.

Servidor DNS -> realiza a tradução de endereços de forma local.

Servidor Apache -> já está instalado para que futuramente eu possa usar o SARG e o controlador de impressão Jasmine.

Filtro de pacotes (IPTABLES) está configurado de acordo com o que mencionei no início do post de dúvida. Ele deve, necessariamente, redirecionar tudo e todos para o Squid.

Servidor proxy (Squid) -> Está com as regras que já descrevi.

Routers -> O primeiro está como AP, para que algumas máquinas possam encontrá-lo em uma rede com 20 computadores e os outros 5 APs estão como repetidores universais para repetir o sinal a algumas distâncias do primeiro AP.Nenhum deles está como servidor DHCP e sim como Bridge para que o servidor DHCP possa atribuir ips para TODO MUNDO QUE ESTÁ EM MINHA REDE.

Desejo que seja proxy (Squid) transparente para que eu não tenha que realizar configurações a mais em todos os usuários, a não ser a configuração da passagem pelo proxy, que deverá ser obrigatória.

Será que desta forma preciso configurar proxy autenticado? creio que não pois posso fazer os pacotes serem roteados para o servidor através de algumas regras do iptables que até agora não sei, mas já vi em alguns locais que poderia.

Só tenho que também dar acesso a 2 computadores ao site da Caixa econômica que vi que tem algumas configurações a mais, mas creio que com o proxy transparente poderei efetuar estas configurações.


8. Re: Forçar o Iptables a passar pelo squid [RESOLVIDO]

johnny borges
johnnyb

(usa Fedora)

Enviado em 13/07/2012 - 18:26h

blz intao vamos cai pra dentro bom primeira mente vamos colocar seu squid + o iptables para funcionar

vamos começar como o iptables e falar nisso qual e a versao do squid ?

#!/bin/sh

echo "Iniciando Firewall....................................[ OK ]"
### Limpando as regras ###
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
iptables -F -t nat
echo "Limpando as regras ...................................[ OK ]"

### Mascarando Conecão ###
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.0/24 -j MASQUERADE
echo "Habilitando Navegação.................................[ OK ]"

### Carregando Politicas Padrao ###
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
echo "Inplatando Politica Padrao Drop.......................[ OK ]"

### Regras Input ###
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -p tcp -i em1 --dport 3128 -j ACCEPT
iptables -t nat -A PREROUTING -i em1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Regras De Entrada de Pacote...........................[ OK ]"

### Portas Liberadas Dns ###
iptables -A FORWARD -p udp -m udp -s 192.168.3.0/24 --dport 53 -d 0/0 -j ACCEPT
iptables -A FORWARD -p tcp -m tcp -s 192,168.3.0/24 --dport 53 -d 0/0 -j ACCEPT
echo "Consulta Dns Liberada Para Rede Local.................[ OK ]"


### Libera o Retorno dos Serviços iniciados ###
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Firewall configurado Boa Navegacao....................[ OK ]"


lembre se de troca o range de ip
legenda
em1 placa local
eth0 placa externa




9. Forçar o Iptables a passar pelo squid

Fábio Torres
fabiokalled

(usa Debian)

Enviado em 13/07/2012 - 18:36h

Obrigado jonhy está me ajudando muito. Eu estou em outro trabalho agora e não vou poder colocar pra funcionar e estudar seu script neste momento, mas prometo que segunda feira, quando chegar ao departamento de tecnologia o estudarei e tentarei implementá-lo em minha rede.

Mais uma vez obrigado e continue me ajudando hehehhheh, valeu


10. Re: Forçar o Iptables a passar pelo squid [RESOLVIDO]

johnny borges
johnnyb

(usa Fedora)

Enviado em 13/07/2012 - 23:36h

TAmo junto :D Ate segunda intao :D bom fds


11. Forçar o Iptables a passar pelo squid

Fábio Torres
fabiokalled

(usa Debian)

Enviado em 16/07/2012 - 14:52h

administrador@servidor:~$ squid -v
Squid Cache: Version 2.7.STABLE7


12. Re: Forçar o Iptables a passar pelo squid [RESOLVIDO]

johnny borges
johnnyb

(usa Fedora)

Enviado em 16/07/2012 - 16:09h

vamos editar esse squid seu o bom e vc aprender intao sempre que tiver duvida pode pergunta avontade ;D num existe pergunta apenas resposta errada ;)

http_port 3128 transparent
### use um quarto da memoria
cache_mem 100 MB

### aqui usaremos 20 GB de cache
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
pid_filename /var/run/squid.pid
error_directory /usr/share/squid/errors/Portuguese
visible_hostname servidor.4pef
cache_mgr fabio.torres@ifpa.edu.br


# acl - Padrao na sua versao nao tenho certeza se e
# acl all src all ou
# acl all src 0.0.0.0/0.0.0.0
# ou sem fasa o teste ai blz
#***************************************************

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/24
acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
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 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT


# *** Define a lista de palavras impróprias
acl palavra url_regex -i "/etc/squid/list/palavra.txt"

# *** Define a lista de sites impróprios
acl site dstdomain -i "/etc/squid/list/site.txt"

# *** Define a rede interna (Intranet)
acl intranet src 10.0.0.0/255.0.0.0

# *** Define PC(s) com privilegio total - CUIDADO!
acl admin arp "/etc/squid/list/admin.txt"

# *** Define a lista de PC(s) autorizados ao acesso a Internet
acl internet arp "/etc/squid/list/internet.txt"

# *** Define os formatos de vídeo, áudio e outros de risco
acl video urlpath_regex .wma$ .asf$ .mov$ mpg$ .mpeg$ .avi$
acl audio urlpath_regex .mp3$ .wav$ .mid$
acl risco urlpath_regex .exe$ .pps$ .com$ .bat$ .scr$

# isso aqui pra baixo e para bloquear o usu o internet explore
# *** Define o browser Internet Explorer
acl ie_browser browser ^Mozilla/4.0 .compatible; MSIE

# *** Define PC(s) autorizados a usar o Internet Explorer
acl ie_usuario arp "/etc/squid/list/browser.txt"
#### fim do bloqueio do internet explore

# *** Define PC(s) sem acesso a Internet (bloqueados) 24h/dia
acl bloqueado arp "/etc/squid/list/bloqueado.txt"

# *** Define o horário do expediente
acl exp1_seg-qui time MTWH 08:00-12:00
acl exp2_seg-qui time MTWH 13:30-17:00
acl exp1_sex time F 08:00-12:00

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

# *** Libera dowloads de ate 5 MB
reply_body_max_size 5 MB !admin


http_access deny palavra !admin
http_access deny site !admin
http_access deny video !admin
http_access deny audio !admin
http_access deny risco !admin
http_access deny ie_browser !ie_usuario !admin
http_access deny !internet !admin exp1_seg-qui
http_access deny !internet !admin exp2_seg-qui
http_access deny !internet !admin exp1_sex
http_access deny bloqueado
http_access allow intranet
http_access deny all



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts