|
![]() ![]() |
Para implementar isso é necessário ter conhecimentos de:
Sempre que um um usuário efetua login ou logout o MyAuth verifica a existência de um arquivo na pasta /myauth/session/ com o nome do usuário com permissões de execução. Ao ser acionado para login ou logou, o script é executado com os seguintes parâmetros:
Exemplo: O usuário "joao" efetuou o login, o MyAuth verifica a existência do arquivo /myauth/session/joao com permissão de execução, se o arquivo existir com permissão de execução ele é executado da seguinte maneira: root@servidor:/# /myauth/session/joao login 192.168.1.231 00:01:AB:CF:ED:A0Quando o usuário "joao" efetuar logout ou for desconectado a seguinte linha de comando será executada: root@servidor:/# /myauth/session/joao logout 192.168.1.231 00:01:AB:CF:ED:A0 No script /myauth/session/joao você deverá programar as regras para o usuário. Por padrão, o MyAuth já cria uma tabela no NETFILTER (iptables) com o nome do usuário e o prefixo "FW", ou seja, no exemplo acima o usuário "joao" teria uma tabela propria chamada FWjoao onde todos os pacotes passariam por ela. As regras na tabela "FW" + "nome do usuário" devem ser inseridas fazendo verificação de IP pois todos os pacotes passam por ela, inclusive os pacotes de outros usuários. Quando o usuário é desconectado ou efetua logout o MyAuth automaticamente remove todas as regras e remove a tabela "FW" + "nome do usuário" do NETFILTER. Como exemplo, criaremos para o usuário "joao" um script quer bloqueia o acesso de serviços de e-mail: root@servidor:/# mcedit /myauth/session/joao chain=FWjoao action=$1 ip=$2 mac=$3 if [ "$action" = "login" ]; then # bloquear SMTP iptables -t filter -A $chain -s $ip -p tcp --dport 25 -j DROP # bloquear POP3 iptables -t filter -A $chain -s $ip -p tcp --dport 110 -j DROP # bloquear IMAP iptables -t filter -A $chain -s $ip -p tcp --dport 143 -j DROP fiAgora que o script está pronto, deve-se dar a ele permissão de execução: root@servidor:/# chmod +x /myauth/session/joao Está pronto. Se o usuário estiver on-line, é possivel executar o script manualmente. Criando grupos de acesso manualmente No MyAuth não é possível fazer grupos de acesso a serviços mas manualmente é possível. Sempre que o MyAuth é iniciado ele verifica se os arquivos /myauth/bin/rc.local e /etc/rc.d/rc.firewall existem e se são executáveis, se existirem e forem executáveis ele os executará após terminar de se iniciar. No arquivo /etc/rc.d/rc.firewall você poderá criar tabelas personalizadas no NETFILTER (iptables) que serão usadas para agilizar o serviço na hora de bloquear determinados serviços para usuários. No exemplo abaixo, criaremos 2 tabelas personalizadas para acessos a alguns serviços. root@servidor:/# touch /etc/rc.d/rc.firewall root@servidor:/# chmod +x /etc/rc.d/rc.firewall root@servidor:/# mcedit /etc/rc.d/rc.firewall #!/bin/sh # Grupos de bloqueio ----------------------------------------- # criar grupo 1 que nao pode acessar E-mail e nem fazer PING iptables -N Grupo1 iptables -F Grupo1 # bloquear acesso a e-mail iptables -A Grupo1 -p tcp --dport 25 -j DROP # SMTP iptables -A Grupo1 -p tcp --dport 110 -j DROP # POP3 iptables -A Grupo1 -p tcp --dport 143 -j DROP # IMAP # bloquear Ping iptables -A Grupo1 -p icmp -j DROP # criar grupo 2 que so pode navegar normalmente, o resto # será bloqueado iptables -N Grupo2 iptables -F Grupo2 # liberar navegação iptables -A Grupo2 -p tcp -m multiport --port 80 -j RETURN # HTTP iptables -A Grupo2 -p tcp -m multiport --port 443 -j RETURN # HTTPS iptables -A Grupo2 -p udp -m multiport --port 53 -j RETURN # DNS # bloquear o resto iptables -A Grupo2 -j DROP Reinicie o MyAuth ou execute o arquivo para iniciar as tabelas criadas (o MyAuth deve estar em execução). root@servidor:/# sh /etc/rc.d/rc.firewallAgora vamos editar 2 arquivos de usuários, o usuário "pedro" ficará no Grupo1 (não acessa e-mail): root@servidor:/# touch /myauth/session/pedro root@servidor:/# chmod +x /myauth/session/pedro root@servidor:/# mcedit /myauth/session/pedro chain=FWpedro action=$1 ip=$2 mac=$3 if [ "$action" = "login" ]; then # incluir no Grupo1 iptables -t filter -A $chain -s $ip -j Grupo1 iptables -t filter -A $chain -d $ip -j Grupo1 fi O usuário "marcos" ficará no Grupo2 (apenas navegação): root@servidor:/# touch /myauth/session/marcos root@servidor:/# chmod +x /myauth/session/marcos root@servidor:/# mcedit /myauth/session/marcos chain=FWmarcos action=$1 ip=$2 mac=$3 if [ "$action" = "login" ]; then # incluir no Grupo1 iptables -t filter -A $chain -s $ip -j Grupo2 iptables -t filter -A $chain -d $ip -j Grupo2 fi |