Escolar Documentos
Profissional Documentos
Cultura Documentos
– versão 3.1.0
Guia de Administração
Copyright © 2008-2011 Inverse inc. (http://inverse.ca)
É dada permissão para copiar, distribuir e/ou modificar este documento sob os
termos da GNU Free Documentation License, Versão 1.2 ou qualquer versão
posterior publicada pela Free Software Foundation; sem Seções Invariantes, sem
Textos de Capa Frontal, e sem Textos de Capa do Verso. Uma cópia da licença
está incluída na seção intitulado "GNU Free Documentation License”.
Versão 3.1.0 – Dezembro 2011
Sumário
Para uma lista de mudanças notáveis desde a última versão ver o arquivo NEWS.
2 Introdução
Características
❏ 802.1X
802.1X sem fio e com fio é suportado através de um módulo FreeRADIUS.
❏ Integração Wireless
PacketFence integra perfeitamente com redes sem fio através de um
❏ Registro
PacketFence suporta um mecanismo de registro opcional semelhante as
soluções de Captive Portal. Ao contrário do que soluções captive portal, o
PacketFence lembra usuários previamente cadastrados e automaticamente
dar-lhes acesso sem outra autenticação. Claro, isso é configurável. Uma
Política de Utilização aceitável pode ser especificada de tal forma que os
usuários não podem permitir o acesso à rede sem antes aceitá-lo.
❏ Acesso a Visitantes
PacketFence suporta uma VLAN especial para convidado fora da caixa.
Configurar sua rede para que a VLAN de convidado só vai para a Internet, a
VLAN de registro e captive portal são os componentes usados para explicar
aos convidados como registrar para o acesso e como funciona o seu acesso.
Isso é geralmente marcado pela organização que oferece o acesso. Vários
meios de registro de convidado são possíveis. PacketFence também suporta
acesso de convidado por criações e importações.
Integração de Rede
Componentes
3 Requisitos de Sistema
Suposições
Serviços de Inicialização
PacketFence cuida do funcionamento e operação dos seguintes serviços:
❏ Servidor Web (httpd)
❏ Servidor DHCP (dhcpd)
❏ Servidor DNS (named)
❏ Servidor FreeRADIUS (radiusd)
❏ Snort Network IDS (snort)
❏ Firewall (iptables)
4 Instalação
Esta seção irá guiá-lo através da instalação do PacketFence juntamente com suas
dependências.
Certifique-se de que seu sistema está atualizado e seu banco de dados está
atualizado:
yum update
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-
2.el5.rf.i386.rpm
rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm
enabled = 0
wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-
4.noarch.rpm
rpm -i epel-release-5-4.noarch.rpm
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-
2.el6.rf.x86_64.rpm
rpm -i rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
enabled = 0
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-
5.noarch.rpm
rpm -i epel-release-6-5.noarch.rpm
RHEL 6.x
Usuários RedHat Enterprise Linux necessitam de um passo adicional na
configuração. Se o usuário não estiver usando o Gerenciamento de Assinatura
RHN da RedHat, o usuário precisa habilitar o o canal opcional executando o
seguinte como root:
Download de software
Instalação de Software
[PacketFence]
name=PacketFence Repository
baseurl=http://inverse.ca/downloads/PacketFence/RHEL$releasever/$basearch
gpgcheck=0
enabled=0
Uma vez definido o repositório, o usuário pode instalar o PacketFence com todas
as dependências necessárias aos serviços (DNS, servidor de banco de dados,
servidor DHCP, servidor RADIUS) usando:
/usr/local/pf/installer.pl
5 Configuração
Primeiro Passo
Em seguida, digite a nova senha duas vezes. Use uma senha forte. O usuário
nunca terá que entrar mais de uma vez.
Uma vez que o PacketFence é iniciado, a interface de administração está
disponível em: https:// <hostname> : 1443 /
Captive Portal
Parâmetros importantes a configurar a respeito do captive portal são os
seguintes:
redirecturl em [trapping]
Configuração do Apache
SELinux
Mesmo que essa característica pode ser pretendida por algumas organizações, o
PacketFence não será executado corretamente se o SELinux está definido para
enforced. Você precisará desativá-lo explicitamente no arquivo em /etc/selinux/
config.
Arquivo simples
Por padrão, o PacketFence olha para /usr/local/pf/conf/user.conf para
encontrar os usuários autorizados a registrar dispositivos. Se o usuário quiser
usar um arquivo diferente, edite /usr/local/pf/conf/authentication/local.pm e
altere o seguinte parâmetro:
my $passwdFile = '/usr/local/pf/conf/user.conf';
my $LDAPUserBase = "ou=People,dc=domain,dc=org";
my $LDAPUserKey = "uid";
my $LDAPUserScope = "one";
my $LDAPBindDN = "cn=ldapuser,dc=domain,dc=org";
my $LDAPBindPassword = "password";
my $LDAPServer = "127.0.0.1";
RADIUS
Edite /usr/local/pf/conf/authentication/radius.pm e faça as alterações
necessárias para os seguintes parâmetros:
my $RadiusServer = 'localhost';
my $RadiusSecret = 'testing123';
auth=local,ldap,radius
Se mais de um método são especificados, PF irá exibir uma lista suspensa para
permitir aos usuários selecionar o método de autenticação preferido.
O nome do método de autenticação exibido no drop-down é controlado pela
variável $name no módulo de autenticação (localizado em conf/authentication/).
Sinta-se livre para modificar os nomes à medida das necessidades da sua
organização.
Esta seção se aplica apenas para a aplicação da VLAN. Usuários planejando fazer
somente a aplicação Inline pode pular esta seção.
Modos de trabalho
Existem três diferentes modos de trabalho:
❏ Testes: pfsetvlan escreve nos arquivos de log o que faria normalmente,
mas não faz nada.
❏ Registro: pfsetvlan automaticamente registra todos os endereços MAC
visto nas portas do switch. Como em modo de teste, nenhuma alteração
VLAN foi realizada.
❏ Produção: pfsetvlan envia o SNMP para escrever a mudança de VLAN nas
portas do switch.
SNMPVersion = 3
SNMPUserNameRead = readUser
SNMPAuthProtocolRead = MD5
SNMPAuthPasswordRead = authpwdread
SNMPPrivProtocolRead = AES
SNMPPrivPasswordRead = privpwdread
SNMPUserNameWrite = writeUser
SNMPAuthProtocolWrite = MD5
SNMPAuthPasswordWrite = authpwdwrite
SNMPPrivProtocolWrite = AES
SNMPPrivPasswordWrite = privpwdwrite
SNMPVersionTrap = 3
SNMPUserNameTrap = readUser
SNMPAuthProtocolTrap = MD5
SNMPAuthPasswordTrap = authpwdread
SNMPPrivProtocolTrap = AES
SNMPPrivPasswordTrap = privpwdread
Configuração do Switch
Radius Secret
Mecanismo de autenticação para alguns, tais como, 802.1X ou autenticação MAC,
o servidor RADIUS precisa ter o dispositivo de rede em sua lista de clientes A
partir do PacketFence 3.0, que agora usa um servidor de banco de dados para
armazenar as informações do cliente RADIUS. A fim de fazê-lo, edite o arquivo de
configuração switch (/usr/local/pf/conf/switches.conf ) e definir os seguintes
parâmetros:
radiusSecret= secretPassPhrase
Esta seção se aplica apenas para a aplicação da VLAN. Usuários planejando fazer
somente a aplicação Inline pode pular esta seção.
Isto permite que o usuário faça fácil segmentação de VLAN por construção.
Se precisar de mais flexibilidade (por SSID, por categoria de nó, etc) dar uma
olhada no "eu preciso de mais flexível atribuição de VLAN" no item Recursos
avançados.
Esta seção se aplica apenas para a aplicação Inline. Usuários planejando fazer
somente a aplicação de VLAN pode pular esta seção.
Em resumo:
❏ portal_redirect=ip – padrão, nenhum HTTPS, nenhuma necessidade de
modificar o DNS
❏ portal_redirect=dns – precisa ser atualizado o seu DNS, o portal estará em
HTTPS
(networks.conf)
❏ network: sub-rede
❏ netmask: Máscara de rede
❏ gateway: endereço IP PacketFence nesta rede
❏ next_hop: usado somente com redes roteadas; o endereço IP do
roteador na rede (Isto é usado para criar rotas estáticas para as redes
roteadas). Veja a Seção de Redes Roteadas)
❏ domain-name: nome DNS
❏ dns: PacketFence endereço IP nesta rede
❏ dhcp_start: iniciando endereços IP do escopo DHCP
❏ dhcp_end: terminando endereços IP do escopo DHCP
❏ dhcp_default_lease_time: tempo padrão de concessão do DHCP
❏ dhcp_max_lease_time: tempo máximo de concessão do DHCP
❏ type: vlan-registration ou vlan-isolation ou inline
❏ named: PacketFence é o DNS para essa rede? (Enabled/Disabled)
configurá-lo para habilitadas menos no tipo Inline onde deve ser
desativado
❏ dhcpd: PacketFence é o servidor DHCP para essa rede?
(Enabled/Disabled) defini-lo para enabled
Ao iniciar o PacketFence gera os arquivos de configuração do DHCP através da
leitura das informações fornecidas em networks.conf:
O arquivo de configuração do DHCP é gerado para var/conf/dhcpd.conf usando
conf/dhcpd.conf como um modelo.
Ajudantes IP (recomendado)
Se o usuário já estiver usando ajudantes IP para a sua produção em DHCP, em
sua produção de VLANs esta aproximação é a mais simples e a única que
trabalha melhor.
Adicione o endereço IP do gerente PacketFence como o último ip helper-address
na declaração. Neste ponto, o PacketFence receberá uma cópia de todos os
pedidos DHCP para essa VLAN e registrará o IP que foi distribuído para o nó
usando um pfdhcplistener daemon.
Certifique-se de que nenhum servidor DHCP está executando na interface na qual
o usuário está enviando os pedidos, senão o PacketFence pode tentar responder
às solicitações de DHCP, o que seria uma coisa ruim.
/etc/sysconfig/network-scripts/ifcfg-eth1 :
DEVICE=eth2
ONBOOT=yes
BOOTPROTO=none
[interface eth2]
mask=255.255.255.0
type=dhcp-listener
gateway=192.168.1.5
ip=192.168.1.1
# Engenharia VLAN
DEVICE=eth0.1010
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.101.4
NETMASK=255.255.255.0
VLAN=yes
[interface eth0.1010]
mask=255.255.255.0
type=dhcp-listener
gateway=10.0.101.1
ip=10.0.101.4
Redes Roteadas
Se o seu isolamento e redes de registo não são localmente acessíveis (na camada
2) sobre a rede, mas roteada para o servidor PacketFence, o usuário terá de
deixar o servidor PacketFence saber disso. PacketFence pode até mesmo fornecer
DHCP e DNS nestas redes roteadas e fornecer uma configuração de interface fácil
de usar.
Para dhcpd, certifique-se que os pedidos dos clientes DHCP estão corretamente
encaminhados (Ajudantes IP nos roteadores remoto) para o servidor PacketFence.
Certifique-se que o usuário seguiu as instruções no Servidor de Configuração
DHCP e DNS (networks.conf) para sua rede localmente acessível.
Então o usuário precisa fornecer a informação encaminhada das redes para o
PacketFence. O usuário pode fazê-lo através do GUI em Administration ->
Networks (ou em conf/networks.conf).
Se considerarmos a arquitetura de rede ilustrado no esquema acima,
conf/networks.conf será parecido com este:
[192.168.2.0]
netmask=255.255.255.0
gateway=192.168.2.1
next_hop=
domain-name=registration.example.com
dns=192.168.2.1
dhcp_start=192.168.2.10
dhcp_end=192.168.2.200
dhcp_default_lease_time=300
dhcp_max_lease_time=600
type=vlan-registration
named=enabled
dhcpd=enabled
[192.168.3.0]
netmask=255.255.255.0
gateway=192.168.3.1
next_hop=
domain-name=isolation.example.com
dns=192.168.3.1
dhcp_start=192.168.3.10
dhcp_end=192.168.3.200
dhcp_default_lease_time=300
dhcp_max_lease_time=600
type=vlan-isolation
named=enabled
dhcpd=enabled
[192.168.20.0]
netmask=255.255.255.0
gateway=192.168.20.254
next_hop=192.168.2.254
domain-name=registration.example.com
dns=192.168.2.1
dhcp_start=192.168.20.10
dhcp_end=192.168.20.200
dhcp_default_lease_time=300
dhcp_max_lease_time=600
type=vlan-registration
named=enabled
dhcpd=enabled
[192.168.30.0]
netmask=255.255.255.0
gateway=192.168.30.254
next_hop=192.168.3.254
domain-name=isolation.example.com
dns=192.168.3.1
dhcp_start=192.168.30.10
dhcp_end=192.168.30.200
dhcp_default_lease_time=300
dhcp_max_lease_time=600
type=vlan-isolation
named=enabled
dhcpd=enabled
Configuração do FreeRADIUS
/etc/raddb/clients.conf
client <useful_device_name> {
ipaddr = <network_device_ip_address>
secret = <radius secret>
}
/etc/raddb/packetfence.pm
/etc/raddb/sql.conf
# Info de Conexão:
server = "localhost"
port = 3306
login = "pf"
password = "pf"
mschap {
use_mppe = yes
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{%
{Stripped-User-Name}:-%{mschap:User-Name:-None}} --challenge=%
{mschap:Challenge:-00} –nt-response=%{mschap:NT-Response:-00}"
}
S a m b a / Ke rb e ro s / Winbind
Instale SAMBA. O usuário pode usar as fontes ou usar o pacote para o seu OS.
Para CentOS, o usuário pode usar:
wget ftp://ftp.sernet.de/pub/samba/3.5/centos/5/x86_64/samba3-3.5.6-
43.el5.x86_64.rpm
wget ftp://ftp.sernet.de/pub/samba/3.5/centos/5/x86_64/samba3-client-
3.5.6-43.el5.x86_64.rpm
wget ftp://ftp.sernet.de/pub/samba/3.5/centos/5/x86_64/samba3-utils-
3.5.6-43.el5.x86_64.rpm
wget ftp://ftp.sernet.de/pub/samba/3.5/centos/5/x86_64/samba3-winbind-
3.5.6-43.el5.x86_64.rpm
wget ftp://ftp.sernet.de/pub/samba/3.5/centos/5/x86_64/libwbclient0-
3.5.6-43.el5.x86_64.rpm
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMAIN.NET
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
[realms]
DOMAIN.NET = {
kdc = adserver.domain.net:88
admin_server = adserver.domain.net:749
default_domain = domain.net
}
[domain_realm]
.domain.net = DOMAIN.NET
domain.net = DOMAIN.NET
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
[global]
workgroup = DOMAIN
server string = pf_server_name
interfaces = 192.168.1.2/24
security = ADS
passdb backend = tdbsam
realm = DOMAIN.NET
encrypt passwords = yes
winbind use default domain = yes
client NTLMv2 auth = yes
preferred master = no
load printers = no
cups options = raw
idmap uid = 10000-45000
idmap gid = 10000-45000
log level = 1 winbind:5 auth:3
kinit administrator
klist
Testes
Teste a sua configuração com radtest usando o seguinte comando e tenha
certeza de obter uma resposta Access-Accept:
Depurar
Primeiro, verifique o syslog, este é no qual os logs do módulo PacketFence estão.
Mensagens syslog são armazenadas geralmente em /var/log/messages.
# radiusd -X
Arquivos de Log
Suposições
Interfaces de Rede
❏ /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BROADCAST=192.168.1.255
IPADDR=192.168.1.5
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet
❏ /etc/sysconfig/network-scripts/ifcfg-eth0.2
DEVICE=eth0.2
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.2.1
NETMASK=255.255.255.0
VLAN=yes
❏ /etc/sysconfig/network-scripts/ifcfg-eth0.3
DEVICE=eth0.3
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.3.1
NETMASK=255.255.255.0
VLAN=yes
❏ /etc/sysconfig/network-scripts/ifcfg-eth0.5
DEVICE=eth0.5
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.5.1
NETMASK=255.255.255.0
VLAN=yes
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
Receptor de Trap
PacketFence usa snmptrapd como o receptor de trap. Ele armazena o nome da
comunidade usada pelo switch para enviar traps no arquivo de configuração
switch (/usr/local/pf/conf/switches.conf ):
[default]
SNMPCommunityTrap = public
Configuração de Switch
Em cada interface
switches.conf
[default]
SNMPCommunityRead = public
SNMPCommunityWrite = private
SNMPommunityTrap = public
SNMPVersion = 1
vlans = 1,2,3,4,10
normalVlan = 1
registrationVlan = 2
isolationVlan = 3
macDetectionVlan = 4
VoIPEnabled = no
[192.168.1.100]
type = Cisco::Catalyst_2900XL
mode = production
uplink = 24
[192.168.1.101]
type = Cisco::Catalyst_2960
mode = production
uplink = 25
normalVlan = 10
radiusSecret=useStrongerSecret
pf.conf
[general]
domain=yourdomain.org
#Coloque seus servidores externos/Infra de DNS aqui
dnsservers=4.2.2.2,4.2.2.1
dhcpservers=192.168.2.1,192.168.3.1,192.168.5.1
[trapping]
registration=enabled
detection=enabled
range=192.168.2.0/24,192.168.3.0/24,192.168.5.0/24
[registration]
auth=ldap
[interface eth0]
mask=255.255.255.0
type=management
gateway=192.168.1.1
ip=192.168.1.5
[interface eth0.2]
mask=255.255.255.0
type=internal
enforcement=vlan
gateway=192.168.2.1
ip=192.168.2.1
[interface eth0.3]
mask=255.255.255.0
type=internal
enforcement=vlan
gateway=192.168.3.1
ip=192.168.3.1
[interface eth0.5]
mask=255.255.255.0
type=internal
enforcement=inline
gateway=192.168.5.1
ip=192.168.5.1
[interface eth1]
mask=255.255.255.0
type=monitor
gateway=192.168.1.5
ip=192.168.1.1
networks.conf
[192.168.2.0]
netmask=255.255.255.0
gateway=192.168.2.1
next_hop=192.168.2.254
domain-name=registration.example.com
dns=192.168.2.1
dhcp_start=192.168.2.10
dhcp_end=192.168.2.200
dhcp_default_lease_time=300
dhcp_max_lease_time=600
type=vlan-registration
named=enabled
dhcpd=enabled
[192.168.3.0]
netmask=255.255.255.0
gateway=192.168.3.1
next_hop=192.168.3.254
domain-name=isolation.example.com
dns=192.168.3.1
dhcp_start=192.168.3.10
dhcp_end=192.168.3.200
dhcp_default_lease_time=300
dhcp_max_lease_time=600
type=vlan-isolation
named=enabled
dhcpd=enabled
[192.168.5.0]
netmask=255.255.255.0
gateway=192.168.5.1
next_hop=
domain-name=inline.example.com
dns=4.2.2.2,4.2.2.1
dhcp_start=192.168.5.10
dhcp_end=192.168.5.254
dhcp_default_lease_time=300
dhcp_max_lease_time=600
type=inline
named=disabled
dhcpd=enabled
Para ver outro parâmetro importante opcional que pode ser alterado para fazer a
aplicação Inline, veja a seção Configuração da aplicação Inline.
A fim de ter o modo Inline funcionando corretamente, o usuário precisa habilitar o
encaminhamento de ip em seus servidores. Para fazê-lo permanentemente, olhar
no /etc/sysctl.conf, e definir a seguinte linha:
7 Componentes Opcionais
Snort
Instalação
Configuração
Violações
[1234]
desc=Descrição de violação
priority=8
url=/content/index.php?template=<template>
redirect_url=/proxies/tools/stinger.exe
enable=Y
trigger=Detect::2200032,Scan::11808
actions=email,log,trap
vlan=isolationVlan
whitelisted_categories=
[defaults]
priority=4
max_enable=3
actions=email,log
auto_enable=Y
enable=N
grace=120
button_text=Enable Network
snort_rules=local.rules,bleeding-attack_response.rules,bleeding-
exploit.rules,bleeding-p2p.rules,bleeding-scan.rules,bleeding-virus.rules
vlan=isolationVlan
whitelisted_categories=
antes deles serem bloqueados e ter que chamar o help desk. Isso é útil para
usuários que apenas "clicam" em páginas de violação.
❏ auto_enable: Especifica se um host pode se auto corrigir uma violação
(ativar o botão de rede) ou se eles não podem nem devem ligar para o help
desk.
❏ grace: Número de minutos antes da violação poder reaparecer. Isso é útil
para permitir os hosts um tempo (no exemplo, 2 minutos) para fazer o
download de ferramentas para corrigir a sua emissão, ou desligamento de
sua aplicação peer-to-peer.
❏ button_text: Texto apresentado no formulário violação aos hosts.
Exemplo de Violação
No nosso exemplo, queremos isolar as pessoas usando o Limewire. Aqui,
assumimos que o Snort está instalado e configurado para enviar alertas para o
PacketFence. Agora precisamos configurar o isolamento no PacketFence.
Habilitar violação Limewire em /usr/local/pf/conf/violations.conf e configurá-la
para executar um script externo
[2001808]
desc=P2P (Limewire)
priority=8
url=/content/index.php?template=p2p
actions=log,trap
enable=Y
max_enable=1
trigger=Detect::2001808
Instalação
Por favor, visite http://www.nessus.org/download/ para baixar e instalar o pacote
Nessus para o seu sistema operacional. O usuário também vai precisar se
registrar para o HomeFeed (ou o ProfessionalFeed) a fim de obter os plugins.
Configuração
Para que uma dada varredura do Nessus gere uma violação dentro do
PacketFence, o usuário tem de configurar duas seções:
❏ pf.conf
Aduste as configurações na seção scan como o seguinte:
[scan]
ssl=enabled
pass=userPassword
user=nessusUsername
port=1241
host=127.0.0.1
registration=enabled
nessusclient_file=basic-policy.nessus
nessusclient_policy=basic-policy
❏ violations.conf
O usuário precisa criar uma seção nova da violação e tem que especificar
trigger=Scan::<violationId>
Integração NessusClient
Varredura em registro
Para executar uma verificação do sistema antes de dar acesso a um host na rede
você precisa habilitar os parâmetros scan.registration em pf.conf.
Também é recomendado ajustar scan.duration para refletir o tempo gasto na
verificação. Uma barra de progresso com esta duração será mostrado para o
usuário enquanto ele está esperando. Por padrão, vamos definir esta variável
para 60s.
Oinkmaster
Configuração
Aqui estão os passos para fazer o trabalho de Oinkmaster. Vamos supor que o
usuário já baixou o arquivo mais recente oinkmaster:
Atualização de Regras
A fim de obter atualizações periódicas para as regras Snort para o PacketFence,
nós simplesmente precisamos criar uma entrada no crontab com as informações
corretas. O exemplo a seguir demonstra uma entrada no crontab para buscar as
atualizações diariamente às 23:00 PM:
Identificação
Como mencionamos anteriormente, cada dispositivo de rede flutuante tem que
ser identificado. Há duas maneiras de fazê-lo:
❏ editando conf/floating_network_device.conf
❏ através do GUI da Web, na guia Configuration -> Floating Network
Device.
Gerência de Convidado
Utilização
Auto-registro de Convidado
Auto-registro é habilitado por padrão. Faz parte do portal captive e pode ser
acessado na página de registro clicando no link 'Sign up'.
Pré-registro de Convidado
https://ADMIN_IP:1443/guests/manage
Configuração
Auto-registro de Convidado
[guests_self_registration]
modes=sms,email
category=guest
access_duration=7d
email_activation_timeout=10m
allow_localdomain=enabled
[guests_self_registration]
modes=
Pré-registro de Convidado
/usr/local/pf/conf/documentations.conf.
[guests_pre_registration]
access_duration_choices=1h,3h,12h,1d,2d,3d,5d
default_access_duration=12h
category=guest
[registration]
auth=preregistered_guests
Pacotes
Adicionando as funcionalidades SoH requer configuração específica RADIUS.
Garantir que o usuário tenha pelo menos a verão 3.1 do pacote packetfence-
freeradius2.
Instalação
Por padrão, nós desligamos SoH. Para ativar o suporte, simplesmente
descomente as seguintes linhas em /etc/raddb/eap.conf.
soh=yes
soh-virtual-server = “soh-server”
No lado do cliente, para ativar SoH para EAP, faça o seguinte (Windows 7, por
exemplo):
https://ADMIN_IP:1443/soh
Exemplo de Política
Vamos examinar uma situação exemplo. Suponha que o usuário queira exibir uma
página de re-mediação para os clientes que não tem um antivírus ativado.
As três etapas gerais são: criar uma classe de violação para a condição, então
crie um filtro SoH para adicionar a violação quando o 'antivírus é desativado', e
finalmente recarregar as violações.
[4000001]
desc=No anti-virus enabled
url=/remediation.php?template=noantivirus
actions=trap,email,log
enabled=Y
Configurar o recurso
Para ativar essa característica, o usuário precisa simplesmente adicionar 3
opções em seu pf.conf.
• provisioning.autoconfig – habilita ou desabilita a característica
• provisioning.ssid – este é o SSID que você deseja que o usuário se conecte
no momento do registro
• provisioning.category – Ativar essa característica a uma categoria
específica ou uma qualquer.
[provisioning]
autoconfig=enabled
ssid=HiddenSecure
category=any
Geração de Perfil
Após o registro, em vez de mostrar a página de lançamento padrão, o usuário
estará mostrando uma outra versão da página dizendo que o perfil sem fio foi
gerado com um link sobre ele. Para instalar o perfil, o usuário precisa
simplesmente clicar no link e seguir as instruções em seu dispositivo. É tão
simples.
[vlan]
trap_limit_threshold = 100
trap_limit_action =
Iptables
Rotações de Log
Logrotate
Esta é a maneira mais fácil de girar seus logs. Na verdade, um script logrotate de
trabalho é fornecido com o pacote PacketFence. Este script está localizado em /
usr/local/pf/addons, e é configurado para fazer uma rotação de log
semanalmente. Basta adicioná-lo à sua cronjobs logrotate existente.
Log4perl
Desta forma, log4perl é um pouco mais complexa para se conseguir, mas ainda é
bastante simples. Existem 3 pacotes que você precisa obter de RPMForge:
❏ perl-Log-Dispatcher
❏ perl-Log-Dispatcher-FileRotate
❏ perl-Date-Manip
Uma vez que o usuário baixou os pacotes, o usuário precisará modificar o arquivo
de configuração de log (conf/log.conf) algo com o exemplo a seguir. Note-se que
log4perl é quase o mesmo que log4j, então o usuário deve ser capaz de
encontrar um monte de documentação on-line.
log4perl.appender.LOGFILE=Log::Dispatch::FileRotate
log4perl.appender.LOGFILE.filename=/usr/local/pf/logs/packetfence.log
log4perl.appender.LOGFILE.mode=append
log4perl.appender.LOGFILE.autoflush=1
log4perl.appender.LOGFILE.size=51200000
log4perl.appender.LOGFILE.max=5
log4perl.appender.LOGFILE.layout=PatternLayout
log4perl.appender.LOGFILE.layout.ConversionPattern=%d{MMM dd HH:mm:ss}
%X{proc}(%X{tid}) %p: %m (%M)%n
Alta Disponibilidade
❏ deixar pelo menos 30G de espaço em disco para uma nova partição.
NÃO criar essa partição durante o processo de instalação, vamos fazê-lo mais
tarde.
Particionamento
Após a instalação, o usuário precisa criar a partição extra para o drbd. Usando o
fdisk, crie uma nova partição e salve a tabela. O usuário provavelmente
precisará reiniciar seu servidor após esta etapa.
disponíveis no site do DRBD assim o usuário tem uma melhor idéia de como ele
funciona ...
Aqui assumimos o nome da partição é mysql.
Carregar o módulo DRBD no kernel:
modprobe drbd
global {
usage-count yes;
}
common {
protocol C;
}
resource mysql {
syncer {
rate 100M;
al-extents 257;
}
startup {
degr-wfc-timeout 120; # 2 minutos.
}
disk {
on-io-error detach;
}
device /dev/drbd0;
disk YOUR_PARTITION_DEVICE;
meta-disk internal;
em pf1_server_name {
address x.x.x.x:7788;
}
em pf2_server_name {
address y.y.y.y:7788;
}
}
sendo:
❏ mysql é o nome da partição que o usuário criou ao instalar o OS
❏ pf1_server_name e pf2_server_name pelos nomes de servidor real.
❏ x.x.x.x e y.y.y.y pelos endereços IP dedicados ao DRBD em cada servidor
(use uma placa de rede dedicada para isso, não a principal com todos os IP's)
❏ YOUR_PARTITION_DEVICE é o dispositivo a ser usado para a partição do
MySQL (ou seja, /dev/sda2)
/etc/init.d/drbd start
...
mkfs.ext3 /dev/drbd0
...
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
Configuração do MySQL
Por p a dr ã o o My SQ L c o l o c a s e u s d a d o s e m /var/lib/my s ql . A fi m d e r e pli c a r
o s d a do s e n tre o s doi s s e r v idore s , m o nt a m o s a p a r ç ã o DRBD s o b /var/lib/
m y s ql.
Quando o primeiro MySQL iniciar, a partição deve ser montada.
A fim de fazê-lo:
No servidor master (o servidor que está a trabalhar), diga ao DRBD para se tornar
o nó principal com:
NOTA: my s ql s e n d o o no m e d a p a r ç ã o DRBD.
...
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:145068 nr:4448 dw:149516 dr:10490 al:31 bm:14 lo:0 pe:0 ua:0 ap:0
ep:1 wo:d oos:0
Iniciar o MySQL
/usr/bin/mysql_secure_installation
Configuração do Heartbeat
Criar /etc/ha.d/ha.cf com o seguinte conteúdo:
bcast eth0
bcast eth1
keepalive 2
warntime 30
deadtime 60
auto_failback off
initdead 120
node pf1.example.org
node pf2.example.org
use_logd yes
case "$2" in
start)
echo -n "Montando $1"
/sbin/ifup $1
echo "."
;;
stop)
echo -n "Desmontando $1"
/sbin/ifdown $1
echo "."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
e torná-lo executável:
auth 1
1 sha1 10b245aa92161294df5126abc5b3b71d
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility daemon
Iniciar o Heartbeat:
Configuração HA RADIUS
Se o usuário configurou o FreeRADIUS com a sua configuração sem fio e o usuário
configurou a redundância, o usuário pode configurar o FreeRADIUS para
responder a pedidos exclusivamente chegando ao IP virtual. A fim de fazê-lo, o
usuário precisa modificar a configuração do RADIUS e adicione o RADIUS aos
recursos gerenciados.
Configuração do RADIUS
listen {
type = auth
ipaddr = [VIP_IPV4_ADDRESS]
port = 0
}
listen {
ipaddr = [VIP_IPV4_ADDRESS]
port = 0
type = acct
}
Configuração do Heartbeat
9 Otimização de desempenho
Otimizações no MySQL
# uptime
11:36:37 up 235 days, 1:21, 1 user, load average: 1.25, 1.05, 0.79
# iostat 5
avg-cpu: %user %nice %sys %iowait %idle
0.60 0.00 3.20 20.20 76.00
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 32.40 0.00 1560.00 0 7800
avg-cpu: %user %nice %sys %iowait %idle
0.60 0.00 2.20 9.20 88.00
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 7.80 0.00 73.60 0 368
avg-cpu: %user %nice %sys %iowait %idle
0.60 0.00 1.80 23.80 73.80
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 31.40 0.00 1427.20 0 7136
avg-cpu: %user %nice %sys %iowait %idle
0.60 0.00 2.40 18.16 78.84
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 27.94 0.00 1173.65 0 5880
Como o usuário pode ver, a carga é 1.25 e o IOWait está atingindo um máximo de
20% - isso não é bom. Se sua espera IO é baixo, mas o seu MySQL está tomando
mais de 50% de CPU isso não é bom. Verifique seu instalador MySQL para as
seguintes variáveis:
# /etc/init.d/packetfence stop
Desligando PacketFence ...
[...]
# /etc/init.d/mysql stop
Parando o MySQL: [ OK ]
[mysqld]
# Coloque o buffer pool size para 50-80% da memória do seu computador
innodb_buffer_pool_size=800M
innodb_additional_mem_pool_size=20M
innodb_flush_log_at_trx_commit=2
# Permitir mais conexões
max_connections=700
# Coloque o tamanho do cache
key_buffer_size=900M
table_cache=300
query_cache_size=256M
# habilite log de consultas lentas
log_slow_queries = ON
# /etc/init.d/mysqld start
Iniciando o MySQL: [ OK ]
# /etc/init.d/packetfence start
Iniciando o PacketFence...
[...]
# uptime
12:01:58 up 235 days, 1:46, 1 user, load average: 0.15, 0.39, 0.52
# iostat 5
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 8.00 0.00 75.20 0 376
Isso irá afiar o PacketFence para um desligamento, assim o usuário quer evitar
isso a todo custo. Uma maneira de fazer isso é aumentar o número máximo de
conexões (veja acima), para descarga periodicamente de hosts ou para permitir
mais erros de conexão. Ver http://dev.mysql.com/doc/refman/5.0/en/blocked-
host.html para mais detalhes.
10 Perguntas Freqüentes
Introdução
Além do dilema de isolamento VoIP, é a técnica que provou ser confiável e que
tem o apoio da maioria dos fornecedores de switch.
O usuário precisa criar uma VLAN de registro (com um servidor DHCP, mas não há
encaminhamento para outras VLANs) em que o PacketFence irá colocar os
dispositivos não registrados. Se você quer isolar os computadores que têm
violações em aberto em uma VLAN separada, uma VLAN de isolamento também
precisa ser criada.
linkUp/linkDown traps
Esta é a configuração mais básica e ela precisa de uma terceira VLAN: a VLAN de
detecção de MAC. Não deve haver nada nesta VLAN (nenhum servidor DHCP) e
não devem ser encaminhados para qualquer lugar, é apenas uma VLAN vazia.
Quando um host se conecta a uma porta do switch, o switch envia uma trap de
linkUp para o PacketFence. Uma vez que leva algum tempo até que o switch
aprenda o endereço MAC do dispositivo recém-conectado, o PacketFence
imediatamente coloca a porta na VLAN de detecção de MAC em que o dispositivo
irá enviar pedidos de DHCP (sem resposta) para que o switch aprenda seu
endereço MAC. Então pfsetvlan enviará periodicamente consultas SNMP para o
switch até que o switch aprenda o MAC do dispositivo. Quando o endereço MAC é
conhecido, pfsetvlan verifica seu status (existente? registrado? quaisquer
violações?) no banco de dados e coloca a porta na VLAN apropriada. Quando um
dispositivo é desconectado, o switch envia um trap 'linkDown' para o PacketFence
que coloca a porta para a VLAN de detecção de MAC.
Quando um computador carrega, a inicialização da NIC gera várias alterações de
estado de link. E todo momento o switch envia um trap linkUp e um linkDown
para o PacketFence. Desde então, o PacketFence tem de agir em cada um desses
traps, isso gera, infelizmente, algumas cargas desnecessárias sobre pfsetvlan. A
fim de otimizar o tratamento de trap, o PacketFence pára cada segmento para
uma trap "linkUp" quando recebe um trap " linkDown" na mesma porta. Mas,
usando somente traps linkUp/linkDown não é a opção mais escalável. Por
exemplo, em caso de falha de energia, se centenas de computadores iniciarem ao
mesmo tempo, o PacketFence receberia uma grande quantidade de traps quase
que instantaneamente e isso pode resultar na latência de conexão de rede ...
Introdução
Antes da verão 3.0 do PacketFence, não foi possível suportar dispositivos não
gerenciáveis, tais como, switch de nível de entrada do consumidor ou pontos de
acessos. Agora, com o novo modo Inline, o PacketFence pode ser usado em banda
para esses dispositivos. Assim em outras palavras, o PacketFence se tornará o
gateway dessa rede Inline, e o tráfego NAT usando IPTables para à Internet (ou
para outra seção da rede). Vamos ver como ele funciona.
Configuração de dispositivo
Controle de Acesso
Limitações
Aplicação Inline por causa de sua natureza tem diversas limitações que uma
pessoa deve estar ciente.
❏ Todos atrás de uma interface Inline está na mesma camada 2 LAN
❏ Todos os pacotes de usuários autorizados passa pelo servidor PacketFence
aumentando a carga dos servidores consideravelmente: Planeje
antecipadamente a capacidade
❏ Todos os pacotes de usuários autorizados passa pelo servidor PacketFence: é
um ponto único de falha para acesso à Internet
❏ Não manipula redes roteadas
É por isso que é considerado como um homem pobre de fazer um controle de
acesso. Temos evitado por um longo tempo por causa das limitações acima
mencionadas. Dito isto, podendo executar tanto aplicação Inline e VLAN no
mesmo servidor ao mesmo tempo é uma vantagem real: ele permite que os
usuários mantenham o máximo de segurança, enquanto eles implementam
hardware de rede novo e mais capaz, fornecendo um caminho de migração limpa
para aplicação de VLAN.
13 Apêndice A: Ferramentas de
Administração
pfcmd
# /usr/local/pf/bin/pfcmd
Uso: pfcmd <command> [Opções]
Por favor, veja "pfcmd help <command>" para obter detalhes sobre cada
opção
pfcmd_vlan
# /usr/local/pf/bin/pfcmd_vlan
Uso:
pfcmd_vlan command [opções]
Comando:
-deauthenticate de-autenticar um cliente dot1
-getAlias mostrar a descrição da porta do switch
especificada
-getAllMACs mostrar todos MAC's em todas as portas do switch
-getHubs mostrar portas do switch com vários MAC's
-getIfOperStatus mostrar o status operacional da porta especificada
no switch
-getIfType mostrar o ifType na porta especificada do switch
-getLocation mostrar em que porta do switch o MAC é encontrado
-getMAC mostrar todos os MAC's na porta do switch
especificado
-getType mostrar tipo de switch
-getUpLinks mostrar os upLinks do switch especificado
-getVersion mostrar versão do OS no switch
-getVlan mostrar a VLAN na porta especificada do switch
-getVlanType mostrar o tipo de porta especificada
-help breve mensagem de ajuda
-isolate definir a porta do switch para a VLAN de
isolamento
-man documentação completa
-reAssignVlan rê-atribuir uma porta do switch a VLAN
-resetVlanAllPort redefinir VLAN em todas as portas sem UpLink no
switch especificado
-resetVlanNetwork redefinir VLAN em todas as portas sem UpLink de
todos os switches gerenciados
-setAlias definir a descrição da porta do switch
especificado
-setDefaultVlan definir a porta do switch para a VLAN padrão
-setIfAdminStatus definir o status de administrador da porta
especificada do switch
-setVlan definir VLAN na porta especificada do switch
-setVlanAllPort definir VLAN em todas as portas sem UpLink do
switch especificado
Opções:
-alias descrição da porta do switch
-ifAdminStatus ifAdminStatus
-ifIndex porta do switch ifIndex
-mac endereço MAC
-showMACVendor mostrar o fornecedor MAC
-showPF mostrar informações adicionais disponíveis no PF
-switch descrição do switch
-verbose nível de detalhamento de log
0: mensagens fatal
1 : mensagens de alerta
2 : mensagens de informação
A Web Admin GUI, acessível usando https na porta 1443, mostra as mesmas
informações disponíveis usando pfcmd.
Apêndice B : Manual de
14
Configuração do FreeRADIUS 2
Uma vez que nós fornecemos um pacote RPM que contém pré-construídos
arquivos de configuração RADIUS, esses arquivos não precisam mais serem
modificados à mão. No entanto, considere esta seção como uma referência.
/etc/raddb/sites-enabled/default
authorize {
preprocess
eap {
ok = return
}
files
expiration
logintime
perl
}
authenticate {
Auth-Type MS-CHAP {
mschap
}
eap
}
post-auth {
perl
}
/etc/raddb/sites-enabled/inner-tunnel
authorize {
preprocess
eap {
ok = return
}
files
expiration
logintime
perl
}
authenticate {
Auth-Type MS-CHAP {
mschap
}
eap
}
post-auth {
perl
}
/etc/raddb/users
Adicione as seguintes linhas onde definimos que sem EAP-messages devem, por
padrão, levar a uma aceitação de autenticação.
cd /etc/raddb/certs
make
/etc/raddb/eap.conf
eap {
default_eap_type = peap
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
max_sessions = 2048
md5 {
}
tls {
certdir = ${confdir}/certs
cadir = ${confdir}/certs
private_key_file = /usr/local/pf/conf/ssl/server.key
certificate_file = /usr/local/pf/conf/ssl/server.crt
dh_file = ${certdir}/dh
random_file = ${certdir}/random
cipher_list = "DEFAULT"
make_cert_command = "${certdir}/bootstrap"
cache {
enable = no
lifetime = 24 # hours
max_entries = 255
}
}
ttls {
default_eap_type = md5
copy_request_to_tunnel = yes
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
}
peap {
default_eap_type = mschapv2
copy_request_to_tunnel = yes
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
}
mschapv2 {
}
}
15 Apêndice C: Configuração
legada do FreeRADIUS 1.x
/etc/raddb/clients.conf
client 192.168.0.3 {
secret = secretKey
shortname = AP1242
}
/etc/raddb/radiusd.conf
perl {
module = ${confdir}/rlm_perl_packetfence.pl
}
authorize {
preprocess
eap
files
perl
}
post-auth {
perl
}
mschap {
authtype = MS-CHAP
use_mppe = yes
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%
{mschap:User-Name:-None} --challenge=%{mschap:Challenge:-00} --nt-
response=%{mschap:NT-Response:-00}"
}
/etc/raddb/eap.conf
eap {
default_eap_type = peap
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
md5 {
}
leap {
}
gtc {
auth_type = PAP
}
tls {
private_key_file = /usr/local/pf/conf/ssl/keyfile.key
certificate_file = /usr/local/pf/conf/ssl/certfile.crt
CA_file = /usr/local/pf/conf/ssl/CAfile.crt
dh_file = /dev/null
random_file = /dev/urandom
}
peap {
default_eap_type = mschapv2
}
mschapv2 {
}
}
/etc/raddb/users
Adicione as seguintes linhas onde definimos que sem EAP-messages devem, por
padrão, levar a uma aceitação de autenticação.
/etc/raddb/rlm_perl_packetfence.pl
Testes
Depurar
# radiusd -X
16 Informações Adicionais
Suporte Comercial e
17
Informações de Contato