Conectividade Social e Squid

Publicado por Alex A. Felicioni em 22/08/2008

[ Hits: 25.106 ]

 


Conectividade Social e Squid



Tive um problema em uma empresa tentando configurar o Conectividade Social da Caixa para acessar via proxy, mas infelizmente nenhuma das dicas que encontrei funcionou. Além disso, todas as soluções usavam iptables e não o Squid, ou seja, não era uma solução para o Squid.

Neste tutorial vou mostrar como configurar o Squid (sem iptables) para liberar o acesso do Conectividade Social.

Configurando o squid.conf

Bom, antes de mais nada, devo dizer que uso Debian Etch 4 e que tudo foi feito e testado nesta distribuição. Caso use outra distribuição você deve fazer as devidas adaptações. Outro ponto importante é que não vou ensinar a instalar e configurar o Squid, mesmo porque está cheio de tutoriais ótimos na internet, vou apenas focar em como liberar o Conectividade Social. Então vamos lá!

Em primeiro lugar temos que ter em mente que o Conectividade Social é um programa em Java que roda sobre o IE da MS (isso é um absurdo, pois - até onde sei - não funciona em outros navegadores e SOs) e portanto obedece as configurações de internet do mesmo.

Abra o seu squid.conf com seu editor favorito, no meu caso eu uso o vim (tem que estar logado como root).

# vim /etc/squid/squid.conf

(isso porque no Debian o squid.conf fica dentro de /etc/squid)

Para ficar tudo organizado, procure a parte das de ACLs e acrescente as linhas:

acl conectividade src "/etc/squid/conectividade" # cria variável que conterá os ips da caixa
acl conectividade1 dstdomain "/etc/squid/conectividade1" #cria variável que conterá a url da caixa

No mesmo arquivo, procure a parte das http_access e inclua as seguintes linhas:

http_access allow conectividade
http_access allow conectividade1

Salve o arquivo e saia.

ATENÇÃO: Se você usa autenticação, essas duas linhas não deve pedí-las, do contrário não funcionará.

Agora vamos criar as listas de ips e url da caixa.

Criando a lista de ips da caixa

Depois de configurar o squid.conf, vamos criar dois arquivos, um vai conter a lista de ips da caixa econômica federal e a outra as urls.

# vim /etc/squid/conectividade

Será criado um novo arquivo em branco, digite neste arquivo os ips da caixa econômica federal, sempre apenas 1 em cada linha, são eles:

200.201.174.207
200.201.174.204
Salve o arquivo e saia.

Agora crie o arquivo que conterá a url do conectividade social.

# vim /etc/squid/conectividade1

Será criado um novo arquivo em branco, este conterá a url do conectividade social, digite:

.obsupgdp.caixa.gov.br

Salve o arquivo e saia.

Agora digite no shell para ativar as novas configurações:

# /etc/init.d/squid reload

Pronto, o conectividade estará funcionando e sem precisar usar o iptables.

Outras dicas deste autor

Squid + Iptables: Liberando acesso de programas que não funcionam na internet compartilhada

Squid + SARG: Gerando relatórios pelo nome de usuário autenticado

Leitura recomendada

Colocando o XRDP para funcionar

Entendento o comando chown

Iniciando no Linux com Ubuntu

Configuração do Bind no Fedora 10

Compartilhando internet com controle de banda

  

Comentários
[1] Comentário enviado por persiohartmann em 22/08/2008 - 11:47h

Opa!

Cara, essa configuração também funciona utilizando o Squid em modo Proxy Transparente?

Abraços!

[2] Comentário enviado por alexfelicioni em 22/08/2008 - 23:23h

Nunca tentei, só uso o squid como proxy normal.
mas creio que não, pois o conectividade também usa portas SSL e estas não funcionam com proxy transparente devido à criptografia.
mas se você tiver um AD, configure uma GPO para configurar automaticamente o proxy e travar as configurações. Eu fiz assim nesta empresa.

[3] Comentário enviado por alexfelicioni em 22/08/2008 - 23:28h

Ahh, esquecí de dizer no artigo que para funcionar, as linhas "http_access allow conectividade" e " http_access allow conectividade1" devem ficar antes das demais http_access. e coloquem a palavra "all" no fim de cada uma destas linhas.
fica assim " http_access allow conectividade all" e http_access allow conectividade1 all"
eu esqueci de colocar isso na dica.

[4] Comentário enviado por heroes em 02/10/2008 - 13:26h

Olá, venho enfrentando esse problemas e testando varias regras no iptables, vou testar essa forma pelo squid, mas minha divida eh a seguinte o conectividade na tranca por causao do redirecionamento que eh feito no iptables forçando todo o trafego para porta 3128...??? como regras no squid podem liberar isso...???

Vou testar aqui na minha empresa... o tutorial eh bem elaborado...

Abraços

[5] Comentário enviado por alexfelicioni em 18/10/2008 - 17:25h

Olá,

Não conheço ninguem que conceguiu fazer o conectividade social funcionar com proxy transparente, o que eu recomendo é que ao invéz d proxi transpatente, voces utilizem as gpo's do 20003 para bloquear a configuração de proxy do ie e bloqueiem o micro para os usuários não instalarem outro navegador.

para quem não tem w2003 server, use o gpedit.msc do winxp.

valeu.

[6] Comentário enviado por Nisso em 04/12/2008 - 20:24h

Olá sou iniciante com Linux,realizei o procedimento acima para tentar liberar acesso a conectividade,porém como está configurado como proxy transparente não funciona,,,removi as linhas que havia adicionado no squid.conf,porém agora não tenho mais conexão com a internet, é necessário tb excluir os arquivos conectividade e conectividade1 que foram criados ? como faço para apagá-los ?

Desculpe a ignorância,sou novato !

[7] Comentário enviado por lm em 05/12/2008 - 17:12h

Bom, aqui o problema é que funcionava e parou de uma hora para outra em algumas máquinas, alis duas máquinas, por coincidencia as máquinas do DP.
Testei no resto e funcionou normal. Nas que não funcionam aparece a seguinte mensagem. Problema com a troca da chave ou coisa parecida, então não é problema no squid ou redirecionameno de porta.
Alguem pode me ajudar por favor.
Biragado.

[8] Comentário enviado por alexfelicioni em 06/12/2008 - 00:06h

Nisso, pareo o serviço do squid, e apague o arquivo /var/cache/squid/swap.state.
esse arquivo pode ficar corrompido ou bloqueado quando voce reinicia o squid.
após apagá-lo, inicie novamento o serviço do squid e ele será criado novamente.


/etc/init.d/squid stop
rm /var/spool/squid/swap.state
/etc/init.d/squid/start

caso não funcione, digite

tail -f /var/log/squid/cache.log

e poste o resultado

e depois

tail -f /var/log/squid/access.log e poste o resultado.
mas isso deve resolver

[9] Comentário enviado por alexfelicioni em 06/12/2008 - 00:09h

amigo, poste a mensagem completa para eu analizar. e faça os mesmos comandos do post acima, fica mais fácil de entender o problema e achar uma solução.

faloww.

[10] Comentário enviado por Nickless em 03/02/2009 - 17:14h

Cara vc salvou meu dia heheh.... essa dica pode ser usada tb com o programa CAT??

valew

[11] Comentário enviado por alexfelicioni em 15/04/2009 - 22:12h

Cara, não sei, nunca tentei. Mas creio que a lógica seja a mesma, claro que se deve acrescentar o ip do cat e o domínio junto com os do conectividade social. mas tenta aí. Se os programas usarem HTTP para conexão, com certeza funciona.

Valeu..

[12] Comentário enviado por maneuzinho em 13/05/2009 - 08:48h

Rapido, simples e muito facil amigo está de parabéns me ajudou muito essa dica brigadão!
t++
vlw vlw =D

[13] Comentário enviado por maumauns em 29/01/2010 - 16:45h

acabei de utilizar esse tuto na prefeitura que trabalho e resolveu meu problema, meus parabens meu caro. Vlw

[14] Comentário enviado por ton.work em 30/08/2010 - 19:00h

Olá, sei que esse post tem muito tempo só que testei e não funciou, e acho que não configurei direito meu firewall e squid, por favor fiz certo ou preciso adicionar algo?

#########################################
Firewall
#########################################
#!/bin/bash

## VARIABLES ##

IFWAN=`ifconfig | sed -n "1p" | awk {'print $1'}` # Filtra Saida do comando 'ifconfig' - Automatiza a implantação do Script
IPWAN=`ifconfig | sed -n "2p" | awk {'print $3'}`
IFLAN=`ifconfig | sed -n "11p" | awk {'print $1'}`
IPLAN=`ifconfig | sed -n "12p" | awk {'print $3'}`
LAN=192.168.1.10/24

## PROGRAMS ##

IPT=`which iptables`
EC=`which echo`
MODUP=`which modprobe`

## FIREWALL START ##

START_FW(){
echo " [ Firewall Starting ... ]"

# LOAD MODULES

$MODUP ip_tables
$MODUP ip_conntrack
$MODUP iptable_filter
$MODUP iptable_mangle
$MODUP iptable_nat
$MODUP ipt_LOG
$MODUP ipt_limit
$MODUP ipt_state
$MODUP ipt_REDIRECT
$MODUP ipt_owner
$MODUP ipt_REJECT
$MODUP ipt_MASQUERADE
$MODUP ip_conntrack_ftp
$MODUP ip_nat_ftp
######
#liberando acesso interno da rede
iptables -A INPUT -p tcp --syn -s 192.168.1.10/255.255.255.0 -j ACCEPT &&
iptables -A OUTPUT -p tcp --syn -s 192.168.1.10/255.255.255.0 -j ACCEPT &&
iptables -A FORWARD -p tcp --syn -s 192.168.1.10/255.255.255.0 -j ACCEPT &&

#compartilhando a web na rede interna
iptables -t nat -A POSTROUTING -s 192.168.1.10/255.255.255.0 -o eth1 -j MASQUERADE &&
echo 1 > /proc/sys/net/ipv4/ip_forward &&
######
# POLICES THIS FIREWALL

$IPT -t filter -P INPUT DROP
$IPT -t filter -P FORWARD DROP
$IPT -t filter -P OUTPUT ACCEPT

# ENABLE LOOPBACK

$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A OUTPUT -o lo -j ACCEPT

# ENABLE IMPORTANT PORTS

$IPT -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT
$IPT -t filter -A INPUT -m state --state RELATED -j ACCEPT
DOOROPEN=`cat "/server/firewall/portasabertas.conf"`
for n in $DOOROPEN; do
PROTOCOL=`$EC $n | cut -d '@' -f 1`
DOOR=`$EC $n | cut -d '@' -f 2`
if [ "$PROTOCOL" = "tcp" ]; then
$IPT -t filter -A INPUT -p tcp --dport $DOOR -j ACCEPT
elif [ "$PROTOCOL" = "udp" ]; then
$IPT -t filter -A INPUT -p udp --dport $DOOR -j ACCEPT
fi
done

# BLOCK SITES FROM INTRANET

$IPT -t filter -A FORWARD -m state --state ESTABLISHED -j ACCEPT
$IPT -t filter -A FORWARD -m state --state RELATED -j ACCEPT
SITES=`cat "/server/firewall/sitesdesativados.conf"`
for n in $SITES ; do
$IPT -t filter -A FORWARD -s $LAN -d $n -j DROP
$IPT -t filter -A FORWARD -s $n -d $LAN -j DROP
done

# PING OF DEATH

echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
$IPT -N PING
$IPT -A INPUT -p icmp --icmp-type echo-request -j PING
$IPT -A PING -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A PING -j DROP

# SYN-FLOOD

echo "0" > /proc/sys/net/ipv4/tcp_syncookies
$IPT -N syn-flood
$IPT -A INPUT -i $IFWAN -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP

# BRUTE-SSH

$IPT -N BRUTE-SSH
$IPT -A INPUT -i $IFWAN -p tcp --dport 22 -j BRUTE-SSH
$IPT -A BRUTE-SSH -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A BRUTE-SSH -j DROP

# ANTI-SPOOFINGS

$IPT -A INPUT -s 10.0.0.0/8 -i $IFWAN -j DROP
$IPT -A INPUT -s 127.0.0.0/8 -i $IFWAN -j DROP
$IPT -A INPUT -s 172.16.0.0/12 -i $IFWAN -j DROP
$IPT -A INPUT -s 192.168.1.0/16 -i $IFWAN -j DROP

# SHEALT SCAN

$IPT -A FORWARD -p tcp --tcp-flags SYN,ACK, FIN, -m limit --limit 1/s -j ACCEPT

# ENABLE FORWARDING

DOORCROSS=`cat "/server/firewall/portasfoward.conf"`
for n in $DOORCROSS; do
STAT=`$EC $n | cut -d '@' -f 1`
PROTO=`$EC $n | cut -d '@' -f 2`
PORT_IN=`$EC $n | cut -d '@' -f 3`
IPTARGET=`$EC $n | cut -d '@' -f 4`
PORT_OUT=`$EC $n | cut -d '@' -f 5`
if [ "$STAT" = "0" ]; then
$IPT -t filter -A FORWARD -p $PROTO --dport $PORT_IN -j ACCEPT
$IPT -t filter -A FORWARD -p $PROTO --sport $PORT_IN -j ACCEPT
$IPT -t nat -A PREROUTING -p $PROTO --dport $PORT_IN -j DNAT --to $IPTARGET
$IPT -t nat -A POSTROUTING -d $IPTARGET -j SNAT --to $IPLAN
elif [ "$STAT" = "1" ]; then
$IPT -t filter -A FORWARD -p $PROTO --dport $PORT_IN -j ACCEPT
$IPT -t filter -A FORWARD -p $PROTO --sport $PORT_IN -j ACCEPT
$IPT -t nat -A PREROUTING -p $PROTO --dport $PORT_IN -j DNAT --to $IPTARGET:$PORT_OUT
$IPT -t nat -A POSTROUTING -d $IPTARGET -j SNAT --to $IPLAN
fi
done

# ENABLE PROXY

#$IPT -t nat -A PREROUTING -i $IFLAN -p tcp --dport 80 -j REDIRECT --to-port 3128
#$IPT -t nat -A PREROUTING -s $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.10/24 --dport 80,443 -j REDIRECT --to-ports 3128
#ENABLE MASQUERADE

DOORMASQ=`cat "/server/firewall/portasmascaradas.conf"`
for n in $DOORMASQ; do
PROTO=`$EC $n | cut -d '@' -f 1`
PORT=`$EC $n | cut -d '@' -f 2`
if [ "$PROTO" = 'tcp' ]; then
$IPT -t filter -A FORWARD -p tcp --dport $PORT -j ACCEPT
$IPT -t filter -A FORWARD -p tcp --sport $PORT -j ACCEPT
$IPT -t nat -A POSTROUTING -o $IFWAN -p tcp --dport $PORT -j MASQUERADE
elif [ "$PROTO" = 'udp' ]; then
$IPT -t filter -A FORWARD -p udp --dport $PORT -j ACCEPT
$IPT -t filter -A FORWARD -p udp --sport $PORT -j ACCEPT
$IPT -t nat -A POSTROUTING -o $IFWAN -p udp --dport $PORT -j MASQUERADE
fi
done

echo " [ OK ]"
}

STOP_FW(){
echo " [ Firewall Stopping ... ]"
## CLEAN RULES NETFILTER ##

$IPT -t filter -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t filter -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -t filter -Z
$IPT -t nat -Z
$IPT -t mangle -Z

## DISABLE ROUTING ##

$EC "0" > /proc/sys/net/ipv4/ip_forward

echo " [ OK ]"
}

case "$1" in
"start") START_FW ;;
"stop") STOP_FW ;;
"restart") STOP_FW; START_FW ;;
*) echo
$EC " [ FIREWALL: start, stop ou restart. ]"
$EC " [ Uso incorreto do firewall, restart em ]"
$EC " [ 3 segundos. ]"
echo
sleep 3
/server/firewall/sh.firewall.conf restart
esac

###########################################
squid
###########################################

http_port 3128
visible_hostname SW
error_directory /usr/share/squid/errors/Portuguese/

cache_mem 285 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 700 MB
minimum_object_size 5 KB
cache_swap_low 85
cache_swap_high 90
cache_dir ufs /var/spool/squid 40000 16 256
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 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 21 80 443 563 70 210 280 488 59 777 901 1025-65535
acl conectividade src "/etc/squid/conectividade"
acl conectividade1 dstdomain "/etc/squid/conectividade1"
acl purge method PURGE
acl CONNECT method CONNECT



http_access allow conectividade all
http_access allow conectividade1 all
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 especial src 192.168.1.197 192.168.1.196 192.168.1.205
acl almoco time 12:00-13:30
acl orkut dstdomain orkut.com www.orkut.com
http_access allow orkut especial
http_access allow orkut almoco
http_access deny orkut

acl bloqueados url_regex -i "/etc/squid/bloqueados"
http_access deny bloqueados

# Bloqueia acessos de fora da rede local antes de passar pela autenticação:
acl redelocal src 192.168.1.0/24
http_access deny !redelocal

# Outras regras de restrição vão aqui, de forma que o acesso seja negado
# antes mesmo de passar pela autenticação:
acl bloqueados url_regex -i "/etc/squid/bloqueados"
http_access deny bloqueados

# Autentica o usuário:
auth_param basic realm Squid
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
acl autenticados proxy_auth REQUIRED
http_access allow autenticados

# Libera o acesso da rede local e do localhost para os autenticados,
# bloqueia os demais:
http_access allow localhost
http_access allow redelocal
http_access deny all

[15] Comentário enviado por kwizatz em 28/09/2011 - 10:54h

Ótima dica!
REsolveu meu problema, q nao estava dando certo com o iptables! Só o endereço para colocar no arquivo conectividade1 q aqui nao deu certo, mas funcionou sem ele!
Valeu!!

[16] Comentário enviado por dan-freitas em 22/10/2015 - 12:55h

Bom Dia,

Essa dica so resolve o problema do site da chave da conectividade social ou resolve tb o problema do programa conectividade social pelo sefip para envio de RE onde diz que ta sem internet se colocar so as configuracoes de proxy?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts