Re: [FUG-BR] Portal Cativo

2008-07-04 Por tôpico renato martins
ja passei por isso
seguinte no firewall quando voce tem pipe fica tipo um allow e o firewall
nao vai processar as outras regras ai para isso coloque esse comando ai no
seu firewall
sysctl -w net.inet.ip.fw.one_pass=0 (esse comando tem no man do ipfw e ja
foi bem falado aqui na lista)

com o pass em 0  mesmo depois de um pipe o firewall continua nas processando
as proximas regras


2008/6/29 Jorge Aldo <[EMAIL PROTECTED]>:

> Como havia explicado em um email anterior, criei uma ferramenta de
> portal cativo para FreeBSD
>
> O seguinte script é chamado quando o sistema (captivepinger) da a partida :
>
> #!/bin/sh
>
> ipfw -q -f flush   # Delete all rules
>
> # Set variables
> oif="rl0"  # out interface
> iif="dc0"  # in intertace
> iifaddr="192.168.2.1"  # in interface ip
> lannet="192.168.2.0/24"# LAN subnet
> redirector="1932"  # captive portal redirector
> portal="1934"  # captive portal
> admin="1933"   # captive portal admin page
> squid="3128"   # squid
>
> # Divert to NAT
> /sbin/ipfw add 2 divert 8668 ip4 from any to any via rl0
>
> # Allow estabilished traffic
> /sbin/ipfw add 3 check-state
>
> # Allow anything loopback
> /sbin/ipfw add 4 allow ip from any to any via lo0
>
> # deny external access to our loopback
> /sbin/ipfw add 5 deny ip from any to 127.0.0.0/8
> /sbin/ipfw  add 6 deny ip from 127.0.0.0/8to any
>
> # allow anything outgoing (and returning for internally generated traffic)
> /sbin/ipfw add 7 allow all from any to any via ${oif} keep-state
>
> # allow any port in on our firewall
> /sbin/ipfw add 8 allow ip from ${lannet} to ${iifaddr} via ${iif}
> keep-state
>
> # allow any DNS
> /sbin/ipfw add 9 allow tcp from ${lannet} to any dst-port 53 via ${iif}
> keep-state
> /sbin/ipfw add 9 allow udp from ${lannet} to any dst-port 53 via ${iif}
> keep-state
>
> # by default, send to our captive redirector
> /sbin/ipfw add 65000 fwd ${iifaddr},${redirector} tcp from ${lannet} to
> any dst-port 80 in via ${iif} keep-state
>
> /sbin/ipfw add 65100 deny ip from any to any
> /sbin/ipfw add 65200 allow ip from any to any
>
> - Este outro script eh chamado quando um usuario loga ( ${1} é o id
> no cadastro ${2} é o IP no cadastro ${3} é a banda de subida ${4} é a
> banda de descida, são parametros da linha de comando do script)
>
> #!/bin/sh
>
> # Set variables
> oif="rl0"  # out interface
> iif="dc0"  # in intertace
> iifaddr="192.168.2.1"  # in interface ip
> lannet="192.168.2.0/24"# LAN subnet
> redirector="1932"  # captive portal redirector
> portal="1934"  # captive portal
> admin="1933"   # captive portal admin page
> squid="3128"   # squid
>
> /sbin/ipfw pipe ${1}1 config bw ${4}KBit/s
> /sbin/ipfw pipe ${1}2 config bw ${3}KBit/s
>
> /sbin/ipfw add 1${1}1 pipe ${1}2 ip from ${2} to any in
> /sbin/ipfw add 1${1}1 pipe ${1}1 ip from any to ${2} out
>
> /sbin/ipfw add 1${1}2 fwd 127.0.0.1,${squid} ip from ${2} to any
> dst-port 80 in via ${iif}
>
> /sbin/ipfw add 1${1}3 skipto 65200 ip from ${2} to any in via ${iif}
> /sbin/ipfw add 1${1}3 skipto 65200 ip from any to ${2} out via ${iif}
>
> - Este é o script chamado quando o usario fica offline { ${1} id
> ${2} ip )
>
> #!/bin/sh
>
> # Set variables
> oif="rl0"  # out interface
> iif="vr0"  # in intertace
> iifaddr="192.168.1.1"  # in interface ip
> redirector="1932"  # captive portal redirector
> portal="1934"  # captive portal
> admin="1933"   # captive portal admin page
> squid="3128"   # squid
>
> ipfw delete 1${1}1
> ipfw delete 1${1}2
> ipfw delete 1${1}3
>
> ipfw pipe delete ${1}1
> ipfw pipe delete ${1}2
>
>  fim ---
>
> do jeito que esta ai o usuario é interceptado na entrada e é levado ao
> portal cativo, quando loga, passa a ser interceptado pelo squid e nao
> pelo portal, ate cair
>
> o meu problema é que o controle de banda simplesmente não funciona !
> -
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


[FUG-BR] Portal Cativo

2008-06-30 Por tôpico Jorge Aldo
Como havia explicado em um email anterior, criei uma ferramenta de 
portal cativo para FreeBSD

O seguinte script é chamado quando o sistema (captivepinger) da a partida :

#!/bin/sh

ipfw -q -f flush   # Delete all rules

# Set variables
oif="rl0"  # out interface
iif="dc0"  # in intertace
iifaddr="192.168.2.1"  # in interface ip
lannet="192.168.2.0/24"# LAN subnet
redirector="1932"  # captive portal redirector
portal="1934"  # captive portal
admin="1933"   # captive portal admin page
squid="3128"   # squid

# Divert to NAT
/sbin/ipfw add 2 divert 8668 ip4 from any to any via rl0

# Allow estabilished traffic
/sbin/ipfw add 3 check-state

# Allow anything loopback
/sbin/ipfw add 4 allow ip from any to any via lo0

# deny external access to our loopback
/sbin/ipfw add 5 deny ip from any to 127.0.0.0/8
/sbin/ipfw add 6 deny ip from 127.0.0.0/8 to any

# allow anything outgoing (and returning for internally generated traffic)
/sbin/ipfw add 7 allow all from any to any via ${oif} keep-state

# allow any port in on our firewall
/sbin/ipfw add 8 allow ip from ${lannet} to ${iifaddr} via ${iif} keep-state

# allow any DNS
/sbin/ipfw add 9 allow tcp from ${lannet} to any dst-port 53 via ${iif} 
keep-state
/sbin/ipfw add 9 allow udp from ${lannet} to any dst-port 53 via ${iif} 
keep-state

# by default, send to our captive redirector
/sbin/ipfw add 65000 fwd ${iifaddr},${redirector} tcp from ${lannet} to 
any dst-port 80 in via ${iif} keep-state

/sbin/ipfw add 65100 deny ip from any to any
/sbin/ipfw add 65200 allow ip from any to any

- Este outro script eh chamado quando um usuario loga ( ${1} é o id 
no cadastro ${2} é o IP no cadastro ${3} é a banda de subida ${4} é a 
banda de descida, são parametros da linha de comando do script)

#!/bin/sh

# Set variables
oif="rl0"  # out interface
iif="dc0"  # in intertace
iifaddr="192.168.2.1"  # in interface ip
lannet="192.168.2.0/24"# LAN subnet
redirector="1932"  # captive portal redirector
portal="1934"  # captive portal
admin="1933"   # captive portal admin page
squid="3128"   # squid

/sbin/ipfw pipe ${1}1 config bw ${4}KBit/s
/sbin/ipfw pipe ${1}2 config bw ${3}KBit/s

/sbin/ipfw add 1${1}1 pipe ${1}2 ip from ${2} to any in
/sbin/ipfw add 1${1}1 pipe ${1}1 ip from any to ${2} out

/sbin/ipfw add 1${1}2 fwd 127.0.0.1,${squid} ip from ${2} to any 
dst-port 80 in via ${iif}

/sbin/ipfw add 1${1}3 skipto 65200 ip from ${2} to any in via ${iif}
/sbin/ipfw add 1${1}3 skipto 65200 ip from any to ${2} out via ${iif}

- Este é o script chamado quando o usario fica offline { ${1} id 
${2} ip )

#!/bin/sh

# Set variables
oif="rl0"  # out interface
iif="vr0"  # in intertace
iifaddr="192.168.1.1"  # in interface ip
redirector="1932"  # captive portal redirector
portal="1934"  # captive portal
admin="1933"   # captive portal admin page
squid="3128"   # squid

ipfw delete 1${1}1
ipfw delete 1${1}2
ipfw delete 1${1}3

ipfw pipe delete ${1}1
ipfw pipe delete ${1}2

 fim ---

do jeito que esta ai o usuario é interceptado na entrada e é levado ao 
portal cativo, quando loga, passa a ser interceptado pelo squid e nao 
pelo portal, ate cair

o meu problema é que o controle de banda simplesmente não funciona !
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] Portal Cativo

2008-06-30 Por tôpico Mario Augusto Mania
Cara... veja bem... jah implementei isso.

Primeiro ponto: ping eh problema, maquina com xp com firewall ativado
e pronto, nada de ping.
Solucao: uso ipfw -T e verifico quando foi q o ultimo pacote daquele
cliente passou pelo ipfw, se estorou o timeout que defini (5min), eu
desconecto o cara.

Outra coisa, aqui, fiz tudo em python, mas pretendo migrar para c/c++.

Atenciosamente

m3bsd

2008/6/25 Jorge Aldo <[EMAIL PROTECTED]>:
> Seguinte, desenvolvi uma aplicacao de portal cativo que autentica
> usuarios contra um banco de dados sqlite (bem, depois posso mudar isso
> pra outra tecnologia, não é muito complicado).
>
> O processo se dá em algumas etapas :
>
> 1 - Requisição original é interceptada e enviada para o servico
> redirecionador
> O servico redirecionador analisa o pedido e envia uma página com uma tag
>  campo originalurl da query (para posterior uso) e com a query apontando
> para o servico do portal
>
> 2 - o servico do portal envia uma tela de login (configuravel) para o
> usuario (em https)
>
> 3 - o usuario loga, se por algum motivo não for autenticado, recebe uma
> mensagem de erro.
>
> 4 - se for autenticado, eh enviado para uma nova página de
> redirecionamento que decodifica o endereco originalmente requisitado e o
> redireciona para lá com uma nova
> meta tag.
>
> o servidor mantem um "serviço pingador" que envia alguns pings para as
> maquinas em estado "ativo" pra ver se elas ainda estao no ar. Quando uma
> maquina é desligada, não responde o ping e é marcada novamente como não
> logada.
>
> na partida do servico ele chama um script chamado startall.sh e, para
> cada cadastrada no banco de dados, chama um script start.sh com id e ip
> como parametros
>
> quando um usuario loga, o sistema chama um script chamado login.sh com
> id, ip, bandadesubida e bandadedescida como parametros
>
> quando um usuario eh derrubado (por algum motivo inclusive se nao
> responder a 3 pings seguidos) o sistema chama um script chamado
> logout.sh com id e ip como parametros
>
> meu problema consiste no seguinte :
>
> Preciso fazer esses scripts de forma eficiente, meu objetivo eh
> desenvolver uma boa solução de portal cativo + controle de banda
> individual + squid proxy/cache para pequenos provedores wireless.
>
> não sei nem por onde comecar com esses scripts ! já fiz alguns, estou
> botando eles em campo agora para fazer testes.
>
> Fiz alguns testes nos servicos usando openload e o servidor suportou
> +50k requisições no total (nao travou, eu que cansei de esperar hehe) e
> parece estavel..
>
> Para funcionar, ele de uma regra que faça os pacotes saindo da rede em
> direcao a porta 80 sejam redirecionados para a porta do servico de
> redirecionamento (configurei ele na porta 1932)
>
> creio que o uso simultaneo do squid vai requerer que essa regra de
> redirecionamento seja apagada assim que o usuario fique online,
> substituindo-a por uma nova regra de redirecionamento desta vez
> apontando para o squid (em modo transparente).
>
> Bem, todo esse trabalho eu pretendo publicar na licença BSD, mas ainda
> não posso faze-lo incialmente.
> -
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>



-- 
Atenciosmente

Mario Augusto Mania 
---
[EMAIL PROTECTED]
Cel.: (43) 9938-9629
Msn: [EMAIL PROTECTED]
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


[FUG-BR] Portal Cativo

2008-06-25 Por tôpico Jorge Aldo
Seguinte, desenvolvi uma aplicacao de portal cativo que autentica 
usuarios contra um banco de dados sqlite (bem, depois posso mudar isso 
pra outra tecnologia, não é muito complicado).

O processo se dá em algumas etapas :

1 - Requisição original é interceptada e enviada para o servico 
redirecionador
O servico redirecionador analisa o pedido e envia uma página com uma tag 
http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd