Resolvido: Captive Portal - bypass



  • Olá pessoal,

    Recentemente li um artigo sobre como "burlar" o sistema de autenticação de usuário do CP e assim ter acesso à internet. Gostaria de saber como podemos implementar uma maior segurança nesse sistema de Portal.

    Valeu :)

    bypass captive portal:
    http://www.torrent-invites.com/showthread.php?t=184902



  • @neo_X:

    Gostaria de saber como podemos implementar uma maior segurança nesse sistema de Portal.

    So what do we need before we can get started?
    a public server, reachable from anywhere with PORT 53 (DNS ) open to the internet - Must run UNIX / Your prefered LINUX distribution
    a domain name or subdomain where have the right to create A & NS records , so practically you must be able to set a NS record for your own zone ( Check Wikipedia for explanation on different DNS record types ). I use FreeDNS.net atm.

    To check what resources are avalaible enter:
    dns2tcpc -z my.home.com -k 123 ( Your NS Sever and the key you specified in the conf file )

    O que entendi do tutorial é que você precisar ter acesso a resolução de nomes/icmp sem estar autenticado. Se o seu captive portal não permite isso, então fique tranquilo.

    Faça um lab, teste a ferramenta e veja como o pfsense se sai.



  • Olá Marcelo,

    O meu CP está resolvendo nome/icmp. Fiz um teste que vi no youtube colocando a porta do proxy no navegador e funcionou perfeitamente os acessos, sem autenticar.

    A regra da LAN está assim:
    IPv4*  Lan net  * * * * *

    Uso o Squid 2.x + SquidGuard para fazer o controle do acesso à internet.

    Tem alguma maneira de bloquear esta "resolução" e também impedir o acesso via proxy sem estar autenticado?

    valeu..



  • O squid3-dev tem autenticação e patch para o captive portal.



  • Marcello,

    Testei o squid3 e também o Squidv3-dev ambos habilitei o patch do CP e colocando o proxy no navegador passou direto pelo CP.

    Tem outra configuração a ser feita?

    Obrigado pela ajuda…



  • Você reaplicou as configurações do captive depois de habilitar o patch?
    Veja via ipfw -xSeuCaptive show se o bloqueio da 3128 já está aplicado.



  • Olá Marcelo,

    Fiz alguns testes com o squid3, squid-dev 3 com o Squidguard.

    Dois ambientes:

    1° Com 1 WAN e 1 LAN

    2° Com 2 WAN 2 LAN e 1 Sync (CARP)

    No primeiro ambiente, nas configurações do squid testei a opção patch do Captive Portal, mas só funcionou quando selecionei a interface loopback.

    Ao selecionar a Interface LAN e inserir no browser de internet da máquina cliente as configurações de proxy IP + porta 3128, consigo acesso direto à internet sem passar pela autenticação do Captive Portal.

    Me lembro de ter lido um post seu que o squid3-dev ou squidguard "escuta na interface loopback".

    No segundo ambiente, ao selecionar a interface loopback, consigo fazer a autenticação via CP, mas quando acesso qualquer site o squid bloqueia o site, diz que o caracter "_" é inválido. Vou tentar tirar um print e te enviar.

    Ao aplicar a patch de CP, fiz o restart do CP, squid3 e Squidguard3.

    Obrigado Marcello.



  • LAN 2

    ipfw -x10.10.0.1 show

    
    [2.1.3-RELEASE][root@fwjnd.XXX.local]/root(5): ipfw -x10.10.0.1 show
    00078  113384   17058403 pipe 2024 ip from any to any MAC any 00:26:82:84:ba:5c
    00079  189547  247541649 pipe 2025 ip from any to any MAC 00:26:82:84:ba:5c any
    00080    8302     947172 pipe 2030 ip from any to any MAC any 40:b3:95:71:a1:e6
    00081    9061    8012896 pipe 2031 ip from any to any MAC 40:b3:95:71:a1:e6 any
    00082       0          0 pipe 2092 ip from any to any MAC any 54:ae:27:39:24:3e
    00083       0          0 pipe 2093 ip from any to any MAC 54:ae:27:39:24:3e any
    00084   34749   38595612 pipe 2098 ip from any to any MAC any 60:fa:cd:62:61:84
    00085   21576    3788239 pipe 2099 ip from any to any MAC 60:fa:cd:62:61:84 any
    00086       0          0 pipe 2106 ip from any to any MAC any 64:27:37:9f:94:ad
    00087       0          0 pipe 2107 ip from any to any MAC 64:27:37:9f:94:ad any
    00088    3331     373846 pipe 2120 ip from any to any MAC any 70:11:24:cd:61:52
    00089    3418    1910700 pipe 2121 ip from any to any MAC 70:11:24:cd:61:52 any
    00090    4784     725843 pipe 2136 ip from any to any MAC any 78:a3:e4:71:a1:6f
    00091    4465    2448355 pipe 2137 ip from any to any MAC 78:a3:e4:71:a1:6f any
    00092       0          0 pipe 2158 ip from any to any MAC any 84:8e:0c:3d:40:8d
    00093       0          0 pipe 2159 ip from any to any MAC 84:8e:0c:3d:40:8d any
    00094       0          0 pipe 2194 ip from any to any MAC any c4:85:08:0e:df:3f
    00095       0          0 pipe 2195 ip from any to any MAC c4:85:08:0e:df:3f any
    00096   15175    1919762 pipe 2202 ip from any to any MAC any e0:75:7d:9a:14:96
    00097   15292   10933630 pipe 2203 ip from any to any MAC e0:75:7d:9a:14:96 any
    65291       0          0 allow pfsync from any to any
    65292       0          0 allow carp from any to any
    65301   25364     966008 allow ip from any to any layer2 mac-type 0x0806,0x8035
    65302       0          0 allow ip from any to any layer2 mac-type 0x888e,0x88c7
    65303       0          0 allow ip from any to any layer2 mac-type 0x8863,0x8864
    65307     482      22740 deny ip from any to any layer2 not mac-type 0x0800,0x86dd
    65310  460358   48361818 allow ip from any to { 255.255.255.255 or 10.10.0.1 } in
    65311  416015  228893808 allow ip from { 255.255.255.255 or 10.10.0.1 } to any out
    65312       0          0 allow icmp from { 255.255.255.255 or 10.10.0.1 } to any out icmptypes 0
    65313       0          0 allow icmp from any to { 255.255.255.255 or 10.10.0.1 } in icmptypes 8
    65314       0          0 pipe tablearg ip from table(3) to any in
    65315       0          0 pipe tablearg ip from any to table(4) in
    65316       0          0 pipe tablearg ip from table(3) to any out
    65317       0          0 pipe tablearg ip from any to table(4) out
    65318 1117551  289881930 pipe tablearg ip from table(1) to any in
    65319 1313689 1307126128 pipe tablearg ip from any to table(2) out
    
    65532  291398   31844840 fwd 127.0.0.1,8000 tcp from any to any dst-port 80 in
    65533  244239   36109931 allow tcp from any to any out
    65534  113913    7148994 deny ip from any to any
    65535      13       4340 allow ip from any to any
    [2.1.3-RELEASE][root@fwjnd.xxx.local]/root(6):
    
    


  • o patch do captive portal não está aplicado.

    Não tem nenhuma regra tratando a porta do squid nesse seu ipfw.



  • Olá Marcelo,

    Para funcionar tenho que alterar a regra de LAN:

    LAN * * *  destino any

    para

    LAN * * destino (IP do Firewall) + porta 3128 ?

    No primeiro ambiente de teste, a regra da LAN está any any e o patch só funciona se eu selecionasse a  interface loopback.



  • O patch inclui no captiveportal.inc as regras que não permitem acesso a 3128 antes de autenticar o captive portal.

    quando você marca essa opção no squid, tem que salvar a configuração, entrar no captive portal e salvar lá também para que as novas regras sejam aplicadas.

    Não precisa criar nehuma regra pela interface web.



  • A maneira que conheço para bular o CP quando de usa o CP com Proxy transparente é fixando o IP do proxy e porta do próprio pfsense no navegador do cliente.
    Para evitar isso crie uma regra bloqueando acesso a porta 3128 antes das regras de liberação da LAN.



  • @marcelloc:

    O patch inclui no captiveportal.inc as regras que não permitem acesso a 3128 antes de autenticar o captive portal.

    quando você marca essa opção no squid, tem que salvar a configuração, entrar no captive portal e salvar lá também para que as novas regras sejam aplicadas.

    Não precisa criar nehuma regra pela interface web.

    Obrigado Marcello,

    Habilitei a opção Resolv dns v4 first - Squid e o bloqueio funcionou.

    Enable this option to force dns v4 lookup first. This option is very usefull if you have problems to access https sites.

    Obrigado a todos.



  • Segui os mesmos procedimentos e o patch não é aplicado, abri um novo Post e já encontrei vários posts atualizados, inclusive no forum em ingles, confirmando que o Patch Captive Portal não funciona no pfSense 2.1.x. https://forum.pfsense.org/index.php?topic=79831.msg435539#msg435539



  • Estranho Ivart, fiz vários testes e está funcionando normalmente. No seu firewall só tem uma interface LAN?



  • Já descobri o problema, o patch não funciona no Squid3 somente na versão dev, já corrigi o squid.inc para aplicar o patch correto quando o pfsense for versão 2.1, o problema atual que não consegui achar solução em lugar nenhuma é relativo ao redirecionamento para o CP quando o proxy é fixado no browser do cliente ou na conexão wireless do mobile (IOS/Androis). No browser ainda é possivel colocar na mão o endereço do gateway :8000 para acessar o CP mas no Mobile uma vez configurada a conexão WiFi com o proxy não tem como o cliente fazer o login. Ainda não existe uma solução prática de integração entre o CP e o Squid.



  • @Ivart:

    Já descobri o problema, o patch não funciona no Squid3 somente na versão dev, já corrigi o squid.inc para aplicar o patch correto quando o pfsense for versão 2.1, o problema atual que não consegui achar solução em lugar nenhuma é relativo ao redirecionamento para o CP quando o proxy é fixado no browser do cliente ou na conexão wireless do mobile (IOS/Androis). No browser ainda é possivel colocar na mão o endereço do gateway :8000 para acessar o CP mas no Mobile uma vez configurada a conexão WiFi com o proxy não tem como o cliente fazer o login. Ainda não existe uma solução prática de integração entre o CP e o Squid.

    A unica coisa que consegui fazer com relação a isso é na parte de ignorar o proxy adicionar um site (por exemplo o de onde você trabalha) e o ip do pfsense, e no squid habilitar também a navegação http transparente, fazendo tudo isso após o usuario acessar o site especificado vai abrir a tela de login e autenticar para os outros sites, mas não achei isso muito pratico, estou procurando algo mais user