Conectividade Social - CAIXA - regras de firewall

Atualizado em: 23/07/2006



Sobre este documento

Regras e dicas para configurar acesso ao site da CAIXA para acesso ao serviço chamado de Conectividade Social, transmissão de arquivos e serviços relacionados ao FGTS e GPS.

Os comandos e dicas podem não atender as suas necessidades, não ser compatível com sua instalação, use como referencia, tente adaptar ao seu ambiente.

Página principal sobre Squid, indicações, FAQ, tutoriais, modelos de configuração, squid.conf, modelos de acl e mais dicas em: http://www.zago.eti.br/squid/A-menu-squid.html


CAIXA - Conectividade Social

Liberar todas estações da rede para acessar Conectividade Social.

Explicando; Geralmente este serviço é utilizado pelo departamento pessoal ou contador da empresa para entrega do SEFIP, pedir extratos do FGTS e outros serviços relacionados ao FGTS e guia do INSS, remessa de arquivos e etc...

Quem utiliza este serviço, tem um disquete fornecido pela CAIXA, contém uma chave que é necessária na conexão e transmissão de arquivos, existem diversos serviços da CAIXA, nem todos requer esta chave e muitos acabam fazendo uma grande confusão deste serviço com os demais, em resumo, se algum usuário da rede reclama que não consegue acessar a caixa, procure saber se tem um disquete com a chave e se o assunto é SEFIP, GEFIP, FGTS ou INSS, caso afirmativo, esta conexão não poderá passar pelo proxy (Squid).

Suporte da Caixa, quem usa proxy ou firewall no Linux nem pense em ligar para o suporte da Caixa, na minha opinião só atrapalha ainda mais, serve somente para confundir, perder tempo no telefone e passar raiva.

Mais problemas, este serviço é criptografado e passa pela porta 80, coisa de "doido", mas é assim que funciona, no site da CAIXA tem um manual extenso em PDF, depois de 10 tentativas desisti de seguir o que é recomendado, tem instruções para mexer em tudo, principalmente no I.E e não precisa de nada disto, também tentei pelo suporte por telefone, mais perda de tempo sem chegar a lugar algum, nem experiencia obtive, também requerer um JAVA especial, outra coisa muito confusa, não pode ser JAVA da SUM, tem que ser o Microsoft.

Solução; Esta conexão não pode passar pelo proxy, consegui somente com regras no firewall para fazer NAT e excluir do redirecionamento o acesso ao site da CAIXA, a seguir algumas regras que utilizo.

Pelo menos para funcionar e testar o serviço, utilize uma estação com win98, com este não vai ter problemas nem precisa mexer nas configurações que a CAIXA indica, em outras versões do windows vai ter problemas com JAVA, portanto é muito importante testar com win98 para tentar isolar o problema, acessando pelo win98 voce já sabe que as regras de firewall estão OK e qualquer problema fica restrito às configurações da estação windows e JAVA.

Não tem win98?, então não use o JAVA da sum, nem tente usar, remova-o caso já tenha instalado, faça donwload e instale o JAVA da MS.

Primeiro teste, na regra que redireciona o trafego da porta 80 para o proxy, exclua o IP da estação que deseja testar, no meu firewall utilizo esta regra para excluir do redirecionamento a maquina com ip 192.168.1.53.

/usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s \! 192.168.1.53 -p tcp -m multiport --dport 80,443 -j REDIRECT --to-ports 3128

Esta regra tira do proxy a maquina com IP 192.168.1.53, passa direto, portanto utilize somente para testar o acesso, na primeira conexão vai baixar alguns programas da caixa e instalar tudo de forma transparente, tem .dat no meio, mas precisa disto para funcionar.

Funcionou! então está Ok, prossiga com a configuração do firewall para liberar somente o acesso à CAIXA.

Não funcionou, então verifique se a maquina acessa outros sites, caso falhe então falta a regra que faz NAT, inclua esta regra no teu firewall, prossiga somente depois que navegar normalmente em outros sites.

Quando navegar normalmente e falhar somente com o programa da Conectividade Social, então é problema com JAVA, não use o da SUM tem que ser o da MS, isto é uma briga a parte, se utilizar WIN98 SE já vem com JAVA que funciona, não precisa fazer nada, nem mexer no I.E como indicado na documentação, utlize win98 pelo menos para testar e isolar o problema, ou melhor descobrir que o problema não está no firewall mas sim no Windows e CAIXA.

Suspeite também do provedor, muito raro mas tem provedores que fazem cache para economizar banda, sem voce saber, sua conexão pode passar por algum Squid no provedor, uma maneira de testar e tentar isolar este problema, instale um modem nesta maquina e acesse a net via modem discado, desta forma tem que acessar sem problema algum, caso ainda falhe então é problema na instalação do windows, tente também com outro provedor, sem firewall e outras medidas de proteção, sempre que tentei pelo IG com win98 sem proteção alguma, acessou normalmente, como é muito grande o risco de contaminar a maquina, procure usar instalações de testes, a estação que acessar pelo modem discado também acessa passando pelo NAT, caso falhe, então entre em contato com o provedor para saber se usam algum proxy e retirar seu IP ou conexão do proxy.

Depois de acessar sem problema, já sabe que a estação está OK e resta somente refinar as regra de firewall, colocar a maquina de novo no proxy (voltar a sua configuração normal) e tirar do proxy somente o acesso com destino ao IP da CAIXA, segue 3 exemplos que utlizo em minhas redes, adote somente um destes exemplos.

Estas regras tem que ser colocadas no firewall, tem que ser antes da regra que redireciona o trafégo para a porta 80

# opção 1 - passou a falhar a prtir de out/2005 - estou usando a opção 3

  #INTERNA=eth1 # placa ligada à rede interna
  #CAIXA=200.201.174.0/24 # IP da CAIXA a ser liberado para toda a rede.
  $iptables -t nat -A PREROUTING -i $INTERNA -d 200.201.174.0/24 -j ACCEPT
  $iptables -t filter -A FORWARD -i $INTERNA -d 200.201.174.0/24 -j ACCEPT

# opção 2 - copia da net - não lembro de onde.

  CAIXA="200.252.47.0/24 200.201.160.0/20"
  for ip in $CAIXA
  do
  $iptables -t nat -A PREROUTING -p tcp -d $ip -j ACCEPT
  $iptables -A FORWARD -p tcp -d $ip -j ACCEPT
  done

# opção 3

  # ambiente utilizado e testado, estação win98 configurada para acessar internet via Squid, 
  # em propriedades do TCP está configurado o gateway e DNS, no I.E cofigurado em 
  # conexões para acessar via proxy, no Squid esta maquina está anjaulada para acessar somente
  # sites .gov.br e .caixa.gov.br, com as regras abaixo acessa CS sem problemas.
  # não tive tempo de analizar, veja que libera acesso a toda rede 200.201 e pode acessar algo
  # além da caixa, embora funcione, procure evita-la.
  $iptables -t nat -A PREROUTING -p tcp -d 200.201.0.0/16 -j ACCEPT
  $iptables -A FORWARD -p tcp -d 200.201.0.0/16 -j ACCEPT

No inicio do script de firewall são definidas as variaves; $INTERNA=eth1 # placa de rede interna ligada ao HUB $EXTERNA=eth0 # placa de rede externa ligada ao modem ADSL

Após a regra da CAIXA vem regra do redirecionamento, NAT e forward, exemplo;

  /usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s \! 192.168.1.53 -p tcp -m multiport  --dport 80,443 -j REDIRECT --to-ports 3128
  
  $iptables -A POSTROUTING -t nat -o $EXTERNA -j MASQUERADE
  echo "1" > /proc/sys/net/ipv4/ip_forward

Opção 4 a mais indicada por liberar somente o IP da Caixa

Nas regras abaixo pode substituir a variável mrede pelo IP da rede interna, ou ajuste a variável conforme classe da rede.

  MREDE = 192.168.1.0/24
  $iptables -A FORWARD -s $MREDE -p tcp -d 200.201.174.207 --dport 80 -j ACCEPT
  $iptables -A FORWARD -s $MREDE -p tcp -d 200.201.174.204 --dport 80 -j ACCEPT
  $iptables -A FORWARD -s $MREDE -p tcp -d 200.201.174.204 --dport 2631 -j ACCEPT

Liberar pelo Squid não consegui, até tentei, pelo que entendi, precisa de proxy Socks e não encontrei maneira de configurar isto no Squid, acho que o Squid não faz proxy Socks. Segue o relato do teste que obtive melhor resultado mas não funciona, via proxy com ACL "no_cache deny" e "always_direct", até acessa o site sem gerar registros no log do Squid, gera a guia e no momento de receber o protocolo, falha e retorna a mensagem de erro dizendo que não está conectada na net, também registra no logs do Squid esta mensagem.

  1128631778.966      0 192.168.1.72 TCP_DENIED/400 1519 GET /cns/feriados/cns_Retorna_DataEHoraH.asp - NONE/- text/html

Não tive mais tempo e paciencia, parei por aqui e liberei pelo iptables, fica o registro pra quem quiser descobrir a solução e enviar pro FAQ.

ambiente e configuração utilizada, estação win98 com instalação padrão e I.E. atualizado, navegando pelo proxy, enjaulada para acessar somente sites do sintegra e .gov.br, propriedades do ambiente de rede configurado o gateway e DNS, I.E. em propriedades (conexões) configurado para acessar internet via proxy, (IP do proxy e porta 3128), acrescentei a seguintes regras no squid.conf

    acl cscaixa url_regex "/etc/squid/cscaixa.txt"
    no_cache deny cscaixa
    always_direct  allow cscaixa

dentro de /etc/squid/cscaixa.txt tem somente .caixa.gov.br, resultado;

    [root@speedy squid]# cat /etc/squid/cscaixa.txt
    .caixa.gov.br

Para ilustrar, veja a parte do Squid com as regras acima.

  --corta--
  # IP's dos funcionários q tem acesso total
  acl ip_liberados src "/etc/squid/ip_liberados.txt"
  # Arquivo c/ IP's dos funcionários restrito
  acl ip_restrito src "/etc/squid/ip_restrito.txt"
  # lista de sites do ip_restrito
  acl ip_restrito_sites dstdomain "/etc/squid/ip_restrito_sites.txt"
  # Arquivo c/ IP's dos funcionários que acessa bancos
  acl bancos src "/etc/squid/ip_bancos.txt"
  # bancos liberados pra bancos.txt
  acl BANCOS_SITES dstdomain "/etc/squid/ip_bancos_sites.txt"
  acl ipinterno dst 192.168.1.0/24
  acl iplivre dst 200.165.60.137/32
  acl iplivream dst 200.242.61.4
  #Default configuration:
  http_access allow livregeral all
  http_access allow manager localhost
  http_access deny manager
  http_access deny !Safe_ports
  http_access deny CONNECT !SSL_ports
  # acl pra sites direto, não passar pelo cache
  acl cscaixa url_regex "/etc/squid/cscaixa.txt"
  no_cache deny cscaixa
  always_direct  allow cscaixa
  acl NOCACHE url_regex "/etc/squid/direto.txt" \?
  no_cache deny NOCACHE
  # acl pra bloquear palavras nos endereços e liberar excessões
  acl negapalavra url_regex "/etc/squid/negapalavra.txt"
  acl liberapalavra url_regex "/etc/squid/liberapalavra.txt"
  --corta--

Configurar cliente I.E

Na documentação da caixa tem explicação bem detalhada sobre a configuração do I.E, são muitos passos para detalhar aqui, o caminho é configurar para não usar proxy para alguns endereços e neste caso para acesso à Caixa, ou ficar alternando a configuração toda vez que for acessar via proxy ou não.

Considere configurar o I.E para não usar proxy e acessar somente o site da Caixa, para navegação normal, instale o Firefox que é muito melhor.

Indicações de tutoriais e FAQ

Mais dicas sobre Conectividade Social e FAQ com mensagens da Linux-br
http://www.zago.eti.br/firewall/modelos-governo.txt

FAQ e documentação sobre iptables
http://www.zago.eti.br/firewall/A-menu-firewall.html

Excluir sites do proxy?
Criar regras pra Conectividade Social?
Excelente tutorial, ensina criar regras pra sites especificos, entre eles Conectividade Social, pode se aplicar a qualquer site que tenha problemas em passar pelo squid, ensina analizar os logs pra descobrir quais os endereços que acusam problema, depois é só criar as regras, tutorial bem explicativo e com exemplos regras pra iptables.
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1988

Página principal sobre Squid
http://www.zago.eti.br/squid/A-menu-squid.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html