Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. Ola pessoal!
    Queria saber se alguem pode me indicar um bom tutorial de CAPTIVE usando NoCAT so que detalhe, quero continuar usando minhas regras de iptables.
    Se alguem souber algo do genero fico agradecido.

  2. Amigo não tive sucesso com NoCAT, tentei varias vezes sem sucesso, porem se vc tiver interesse tenho um sistema que fiz aqui pra usar em conjunto com o SGCU ( :: Vigo Tecnologia :: ), o sistema de captive portal redireciona o cliente pra pagina de autenticação, verificando no banco de dados do SGCU o login, senha, IP, MAC e status (Ativo ou Bloqueado no sistema financeiro do SGCU), apos o login ser efetuado com sucesso executa as regras de firewall iptables travando mac x ip e liberando o acesso a internet do cliente, se o cliente estiver com boletos em aberto ele não consegui autenticar, e recebe uma mensagem de aviso durante o login.

    Estou trabalhando em um sistema pra uso da comunidade com cadastro de clientes, planos de acesso e captive portal , porem ele anda meio parado ja que estou meio sem tempo, se tiver interesse em ajudar sera muito bem vindo =)

    Segue abaixo o script pra redirecionar o cliente pra pagina de autenticação

    #!/bin/bash

    ### Define as variaveis
    IPT=/sbin/iptables
    IPCLIENTE='/etc/rc.d/firewall-ips'

    #### Ativa o roteamento
    echo "1" > /proc/sys/net/ipv4/ip_forward

    #### Limpa as regras
    $IPT -F
    $IPT -X
    $IPT -Z
    $IPT -F -t nat
    $IPT -X -t nat
    $IPT -Z -t nat

    #### Define a politica padrao
    $IPT -P INPUT ACCEPT
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT ACCEPT

    #### Libera o interface
    $IPT -A INPUT -i lo -j ACCEPT
    $IPT -A OUTPUT -o lo -j ACCEPT

    #### Filtros
    # Bloquear Netbios
    $IPT -A INPUT -p udp --dport 137:139 -j DROP
    $IPT -A INPUT -p tcp --dport 137:139 -j DROP
    $IPT -A INPUT -p tcp --dport 445 -j DROP

    $IPT -A FORWARD -p udp --dport 137:139 -j DROP
    $IPT -A FORWARD -p tcp --dport 137:139 -j DROP
    $IPT -A FORWARD -p tcp --dport 445 -j DROP

    #### Redireciona toda a rede
    grep "^" $IPCLIENTE | while read IP;
    do

    $IPT -t nat -N "PRE-$IP"
    $IPT -t nat -A "PRE-$IP" -p tcp -s $IP --dport 80 -j REDIRECT --to-port 82
    $IPT -t nat -A PREROUTING -p tcp -s $IP --dport 80 -j "PRE-$IP"
    #### Bloqueia as conexões de entrada destinado ao IP do cliente da porta 0 ate 1024
    $IPT -A FORWARD -s 0/0 -d $IP -p tcp --dport 0:1024 -j DROP

    done

    #### Ativa os modulos do Kernel
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ip_queue
    modprobe ip_tables
    modprobe ipt_LOG
    modprobe ipt_MARK
    modprobe ipt_MASQUERADE
    modprobe ipt_REDIRECT
    modprobe ipt_REJECT
    modprobe ipt_TCPMSS
    modprobe ipt_TOS
    modprobe ipt_limit
    modprobe ipt_mac
    modprobe ipt_mark
    modprobe ipt_multiport
    modprobe ipt_owner
    modprobe ipt_state
    modprobe ipt_tcpmss
    modprobe ipt_tos
    modprobe iptable_filter
    modprobe iptable_mangle
    modprobe iptable_nat

    Pra usar crie um arquivo neste caso com o nome de firewall-ips e coloque o endereço IP de cada cliente 1 por linha

    Agora segue as configurações do virtual host no apache, lembrando que no caso tenho o DNS em cada firewall,

    #### Configurar o APACHE PRA RODA NA PORTA 82
    Listen 82

    #### Virtual host
    <VirtualHost *:82>
    DocumentRoot "/var/www/login/"
    <Directory "/var/www/login/">
    allow from all
    Options +Indexes
    </Directory>
    CheckSpelling On
    Options +FollowSymLinks
    RewriteEngine on
    # 192\.168\.100\.1 alterar pelo IP da interface do servidor conectado a rede dos clientes
    RewriteCond %{HTTP_HOST} !^200\.200\.200\.2 [NC]
    RewriteCond %{HTTP_HOST} !^$

    # 192.168.100.1 alterar pelo IP da interface do servidor conectado a rede dos clientes
    RewriteRule ^(.*)$ "http://200.200.200.2:82/index.php?&url=%{HTTP_HOST}" [L]
    </VirtualHost>

    Pagina de autenticação index.html
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <form name="form1" method="post" action="login.php">
    <p>Bem vindo clique no bot&atilde;o Acessar para efetuar sua conex&atilde;o com a internet
    <input name="site" type="hidden" id="site" value="<? echo $_REQUEST['url'] ?>" />
    </p>
    <p>
    <input type="submit" name="Submit" value="Acessar">
    </p>
    </form>
    </body>
    </html>

    Script de autenticação login.php
    <?php

    // IP da placa de rede conectada a internet
    $servidor="200.200.200.2";
    //Site do provedor ou site pra onde o cliente sera redireciona
    $siteprovedor="www.meuprovedor.com.br";
    //Porta do Squid
    $squid="8080";

    // Pega os dados do Formulario de Login
    $site = $_POST['site'];

    // Pega o IP do Cliente
    $ip = $_SERVER['REMOTE_ADDR'];

    // Pega o Mac Address da tabela ARP do servidor
    $mac = trim(shell_exec("/usr/bin/sudo /sbin/arp -n | grep $ip | awk '{print $3}'"));

    // Data e hora
    $data = date("d.m.y");
    $hora = date("H:i:s");

    //Gera log
    $logfile = "/var/log/weblogin/weblogin.log";
    $abrir = fopen($logfile, "a");

    // Remove as regras de redirecionamento pra Pagina de Login
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -D PREROUTING -p tcp -s $ip --dport 80 -j PRE-$ip");
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -D PRE-$ip -p tcp -s $ip --dport 80 -j REDIRECT --to-port 82");
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -X PRE-$ip");

    // Regras pra travar MAC x IP
    shell_exec("/usr/bin/sudo /sbin/iptables -A FORWARD -d 0/0 -s $ip -m mac --mac-source $mac -j ACCEPT");
    shell_exec("/usr/bin/sudo /sbin/iptables -A FORWARD -s 0/0 -d $ip -mstate --state ESTABLISHED,RELATED -j ACCEPT");
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $servidor");

    // Regras Conectividade Social
    shell_exec("/usr/bin/sudo /sbin/iptables -A INPUT -p tcp -s $ip -m mac --mac-source $mac -d 200.201.173.0/24 --dport 80 -j ACCEPT");
    shell_exec("/usr/bin/sudo /sbin/iptables -A INPUT -p tcp -s $ip -m mac --mac-source $mac -d 200.201.174.0/24 --dport 80 -j ACCEPT");
    shell_exec("/usr/bin/sudo /sbin/iptables -A INPUT -p tcp -s $ip -m mac --mac-source $mac -d 200.201.166.0/24 --dport 80 -j ACCEPT");
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -A PREROUTING -p tcp -s $ip -m mac --mac-source $mac -d 200.201.173.0/24 --dport 80 -j ACCEPT");
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -A PREROUTING -p tcp -s $ip -m mac --mac-source $mac -d 200.201.174.0/24 --dport 80 -j ACCEPT");
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -A PREROUTING -p tcp -s $ip -m mac --mac-source $mac -d 200.201.166.0/24 --dport 80 -j ACCEPT");

    // Redireciona o trafego da porta 80 pra porta do proxy Squid
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -A PREROUTING -s $ip -m mac --mac-source $mac -p tcp --dport 80 -j REDIRECT --to-port $squid");

    // Grava a conexão
    $error_log = "CONEXAO EFETUADA COM SUCESSO - $data - $hora - Usuario: $login IP: $ip MAC: $mac \r\n";
    fwrite($abrir, $error_log);
    fclose($abrir);

    // Redireciona o Cliente pro site que ele estava tentando abrir
    header("Location:http://$site");
    // Redireciona o Cliente pro site do provedor
    // header("Location:http://$siteprovedor");
    ?>

    Falow

    Espero ter ajudado
    Última edição por cleciorodrigo; 27-04-2007 às 12:54.



  3. veio nessas linhas de iptables o que representa esse "PRE-" ?
    shell_exec("/usr/bin/sudo /sbin/iptables -t nat -D PREROUTING -p tcp -s $ip --dport 80 -j PRE-$ip");
    Desculpa a pergunta e pq disconheco ele!
    Mas que esse seu post me abriuuu a kbeca abriu.... isso ai da pra desengatar muita coisa

  4. Cara, esse seu sistema deve ser algo realmente inedito, porem o mais engraçado é que o mesmo é muito parecido (podem comparar os codigos) com o sistema que fiz a muito tempo atras a esta publicado em vários sites...
    http://www.abramulti.com.br/downloads/siscap.pdf



  5. Citação Postado originalmente por cleciorodrigo Ver Post

    Estou trabalhando em um sistema pra uso da comunidade com cadastro de clientes, planos de acesso e captive portal , porem ele anda meio parado ja que estou meio sem tempo, se tiver interesse em ajudar sera muito bem vindo =)

    Segue abaixo o script pra redirecionar o cliente pra pagina de autenticação

    ....

    Falow

    Espero ter ajudado
    Parabéns pela inciativa de postar, amigo! Isso tá ficando cada vez mais raro! Parabéns mais uma vez pela iniciativa...






Tópicos Similares

  1. Respostas: 66
    Último Post: 22-09-2008, 07:47
  2. Pegar pagina inicial do cliente sem hotspot e pppoe
    Por cleciorodrigo no fórum Redes
    Respostas: 4
    Último Post: 27-01-2008, 17:12
  3. Alterar página inicial do HotSpot Mikrotik
    Por macvitor no fórum Redes
    Respostas: 3
    Último Post: 04-02-2007, 22:58
  4. Página inicial do provedor
    Por renatoabaetenet no fórum Redes
    Respostas: 17
    Último Post: 25-12-2005, 10:01
  5. manipular a pagina inicial do usuário
    Por pratcdp no fórum Servidores de Rede
    Respostas: 0
    Último Post: 17-08-2005, 13:33

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L