[Anterior: Problemas com FTP] [Conteúdo] [Próximo: Redundância de Firewall com CARP e pfsync]
O authpf carrega as regras do usuários em uma única âncora. A âncora é nomeada combinando o nome de usuário UNIX e o ID de processo (PID - "Process ID") do authpf em um formato "nome_de_usuário(PID)". Cada âncora de usuário é guardada dentro da âncora authpf, a qual é ancorada no conjunto de regras principal. O "caminho da âncora totalmente qualificado" então torna-se:
conjunto_de_regras_principal/authpf/nome_de_usuário(PID)
As regras que o authpf carrega podem ser configuradas por usuário ou globalmente.
Exemplos de uso do authpf incluem:
O authpf registra o nome de usuário e endereço IP de cada usuário que se autentica, bem como o horário de início e fim de sua sessão, via syslogd(8). Utilizando essa informação, um administrador pode determinar quem estava em sessão e quando, e também pode calcular o tráfego utilizado por cada usuário, podendo fazer cobranças com base nesses dados.
O authpf não é executado se o arquivo de configuração /etc/authpf/authpf.conf não estiver presente. O arquivo pode até estar vazio (com tamanho zero), mas deve existir para que o authpf termine sua execução imediatamente após o momento em que um usuário se autenticar com sucesso.
As seguintes diretivas de configuração podem ser colocadas no authpf.conf:
anchor "authpf/*"
O lugar onde a regra anchor for especificada dentro do conjunto de regras é onde o PF sai do conjunto de regras principal para avaliar as regras do authpf.
O primeiro arquivo contém regras que são carregadas apenas quando o usuário $USER (que é substituído pelo nome do usuário) inicia sessão. A configuração de regras por usuário é utilizada quando um usuário em específico -- como um administrador -- exige um conjunto de regras diferente do padrão. O segundo arquivo contém as regras padrão que são carregadas para quaisquer usuários que não possuam seu próprio arquivo authpf.rules. Se o arquivo específico do usuário existir, ele sobrescreve as regras do arquivo padrão. Pelo menos um dos arquivos deve existir, caso contrário o authpf não funciona.
Regras possuem a mesma sintaxe, como em qualquer outro conjunto de regras PF, com uma exceção: o authpf permite o uso de duas macros predefinidas:
É prática recomendada usar a macro $user_ip para permitir tráfego através do gateway vindo apenas do computador do usuário autenticado.
Em adição à macro $user_ip, o authpf faz uso da tabela authpf_users (se existir) para armazenar o endereço IP de todos os usuários autenticados. Tenha certeza de definir a tabela antes de usá-la:
table <authpf_users> persist
pass in on $ext_if proto tcp from <authpf_users> \
to port smtp
Essa tabela somente deve ser usada em regras que se pretende aplicar a todos os usuários autenticados.
De outro modo, é possível também permitir o acesso apenas a usuários específicos colocando seus nomes de usuário no arquivo /etc/authpf/authpf.allow. Se o arquivo /etc/authpf/authpf.allow não existe ou seu conteúdo for um "*", então o authpf permite o acesso a qualquer usuário que conseguir iniciar sessão via SSH, desde que não tenha sido explicitamente banido.
Caso o authpf não consiga determinar se um nome de usuário tem ou não permissão de acesso, ele mostra uma breve mensagem e então desconecta o usuário. Uma entrada em /etc/authpf/banned/ sempre sobrescreve uma entrada em /etc/authpf/authpf.allow.
Sempre que um usuário se autentica com sucesso no authpf, uma saudação que indica que o usuário está autenticado é mostrada.
Hello charlie. You are authenticated from host "64.59.56.140"
Essa mensagem pode ser suplementada colocando-se uma mensagem personalizada no /etc/authpf/authpf.message. O conteúdo desse arquivo será mostrado depois da mensagem de bem-vindo padrão.
Existem algumas formas de se definir o authpf como um shell do usuário:
Classes de início de sessão são criadas no arquivo login.conf(5). O OpenBSD possui uma classe de início de sessão definida como:
authpf:\
:welcome=/etc/motd.authpf:\
:shell=/usr/sbin/authpf:\
:tc=default:
Os usuários são designados para uma classe de início de sessão através da edição do campo class da entrada do usuário no banco de dados passwd(5). Uma maneira de se fazer isso é com o comando chsh(1).
# ps -ax | grep authpf
23664 p0 Is+ 0:00.11 -authpf: charlie@192.168.1.3 (authpf)
Aqui o usuário charlie iniciou sessão a partir da máquina 192.168.1.3. Ao enviar um sinal SIGTERM ao processo authpf, o usuário pode ser forçado a encerrar sua sessão. O authpf remove quaisquer regras inseridas para o usuário e derruba todas conexões, com o estado mantido na tabela de estados, que esse usuário tiver aberto.
# kill -TERM 23664
O arquivo /etc/authpf/authpf.rules contém as seguintes
regras:
wifi_if = "wi0"
pass in quick on $wifi_if proto tcp from $user_ip to port { ssh, http, \
https }
|
O usuário administrativo charlie deve ter acesso aos
servidores SMTP e POP3, além de poder navegar na Web e usar
SSH. As regras a seguir estão definidas no arquivo
/etc/authpf/users/charlie/authpf.rules:
wifi_if = "wi0"
smtp_server = "10.0.1.50"
pop3_server = "10.0.1.51"
pass in quick on $wifi_if \
proto tcp from $user_ip to $smtp_server port smtp
pass in quick on $wifi_if \
proto tcp from $user_ip to $pop3_server port pop3
pass in quick on $wifi_if \
proto tcp from $user_ip to port { ssh, http, https }
|
O conjunto de regras principal -- localizado em /etc/pf.conf --
é configurado a seguir:
# Macros
wifi_if = "wi0"
ext_if = "fxp0"
dns_servers = "{ 10.0.1.56, 10.0.2.56 }"
table <authpf_users> persist
# Filtros
block drop all
pass out quick on $ext_if inet proto { tcp, udp, icmp } \
from { $wifi_if:network, $ext_if }
pass in quick on $wifi_if inet proto tcp \
from $wifi_if:network to $wifi_if port ssh
pass in quick on $wifi_if inet proto { tcp, udp } \
from <authpf_users> to $dns_servers port domain
anchor "authpf/*" in on $wifi_if
|
O conjunto de regras é bem simples e faz o seguinte:
A ideia por trás do conjunto de regras principal é bloquear tudo e permitir a passagem da menor quantidade possível de tráfego. O tráfego saindo pela interface externa é liberado, mas é bloqueada pela política negar por padrão a entrada na interface sem fio. Uma vez autenticado, é permitido ao tráfego do usuário atravessar a interface sem fio e seguir através do gateway para o resto da rede. A palavra-chave quick é usada de forma que o PF não precise avaliar cada conjunto de regras nomeado quando uma nova conexão atravessa o gateway.
[Anterior: Problemas com FTP] [Conteúdo] [Próximo: Redundância de Firewall com CARP e pfsync]