Pfstat no OpenBSD 4.x

Publicado por Andre Luiz Facina em 09/01/2009

[ Hits: 7.923 ]

 


Pfstat no OpenBSD 4.x



O pfstat é um pequeno utilitário do OpenBSD que realiza a coleta de informações de uma interface e com base nas informações coletadas ele gera gráficos estatísticos sobre vários eventos e que posteriormente podem ser visualizados pelo browser para análises e auditorias.

Como podem ver, são várias informações que o pfstat pode coletar, entre elas o número de pacotes bloqueados e liberados, states das conexões, número de pacotes que entraram e saíram da interface, congestionamento, dentre outras informações.

Instalação

A instalação do pfstat é muito simples, podendo ser feita via ports ou via pkg_add:

1) ports:

# cd /usr/ports/net/pfstat/
# make
# make install


2) pkg_add:

# export PKG_PATH="http://mirrors.uol.com.br/pub/OpenBSD/4.4/packages/i386/"
# pkg_add pfstat


Configuração

1) packet filter - o pfstat requer que a opção de logging esteja ativada no Packet Filter (loginterface), essa opção deve ser configurada para a interface que deseja monitorar.

Para habilitar o logging da interface inclua no arquivo /etc/pf.conf a opção "set loginterface" seguido do nome da interface:

set loginterface pppoe0

Recarregar as regras do PF:

# pfctl -f /etc/pf.conf

2) pfstat - o arquivo de configuração do pfstat geralmente se encontra em /etc/pfstat.conf e a configuração também é muito simples. Abaixo um exemplo do pfstat.conf:

# Gráfico com a quantidade em bytes de pacotes (IPv4)
# que entraram ( in ) e saíram ( out ) pela interface pppoe0

# Bytes in and out #

# O parâmetro "collect" define os dados que serão coletados, nesse caso a quantidade em
# bytes de pacotes liberados (pass) do tipo IPv4 que entraram e saíram pela interface pppoe0.


collect 1 = interface "pppoe0" pass bytes in ipv4 diff
collect 2 = interface "pppoe0" pass bytes out ipv4 diff

# Local onde os gráficos serão salvos ( estatísticas do dia )
image "/var/www/htdocs/pfstat/pfstat_day.jpg" {

# Define o período do gráfico ( um dia )
        from 1 days to now

# Define a aparência e tamanho do gráfico
        width 980 height 200
        left
                graph 1 "in" "bytes/s" color 0 192 0 filled,
        right
                graph 2 "out" "bytes/s" color 0 0 255
}

# Local onde os gráficos serão salvos ( estatísticas da semana )
image "/var/www/htdocs/pfstat/pfstat_week.jpg" {

# Define o período do gráfico ( uma semana )
        from 1 weeks to now

# Define a aparência e tamanho do gráfico
        width 980 height 200
        left
                graph 1 "in" "bytes/s" color 0 192 0 filled,
        right
                graph 2 "out" "bytes/s" color 0 0 255
}

# Mesmo gráfico, mas com as estatísticas de um mês
image "/var/www/htdocs/pfstat/pfstat_month.jpg" {
        from 1 months to now
        width 980 height 200
        left
                graph 1 "in" "bytes/s" color 0 192 0 filled,
        right
                graph 2 "out" "bytes/s" color 0 0 255
}

#######################################################

# Gráfico com o número de pacotes ( IPv4 ) que foram liberados ( pass ) e pacotes
# que foram bloqueados ( block ) tanto para entrada ( in ),
# quanto para saída ( out ) na interface pppoe0.

## Pass/Block packets per second In/Out ##

collect 3 = interface "pppoe0" pass packets in ipv4 diff
collect 4 = interface "pppoe0" pass packets out ipv4 diff
collect 5 = interface "pppoe0" block packets in ipv4 diff
collect 6 = interface "pppoe0" block packets out ipv4 diff

# Estatísticas do dia
image "/var/www/htdocs/pfstat/pfstat-packets_day.jpg" {
        from 1 days to now
        width 980 height 200
        left
                graph 3 "pass in"   "packets/s" color 0 192 0 filled,
                graph 4 "pass out"  "packets/s" color 0 0 255
        right
                graph 5 "block in"  "packets/s" color 255 0 0,
                graph 6 "block out" "packets/s" color 192 192 0
}

# Estatísticas da semana
image "/var/www/htdocs/pfstat/pfstat-packets_week.jpg" {
        from 1 weeks to now
        width 980 height 200
        left
                graph 3 "pass in"   "packets/s" color 0 192 0 filled,
                graph 4 "pass out"  "packets/s" color 0 0 255
        right
                graph 5 "block in"  "packets/s" color 255 0 0,
                graph 6 "block out" "packets/s" color 192 192 0
}

# Estatísticas do mês
image "/var/www/htdocs/pfstat/pfstat-packets_month.jpg" {
        from 1 months to now
        width 980 height 200
        left
                graph 3 "pass in"   "packets/s" color 0 192 0 filled,
                graph 4 "pass out"  "packets/s" color 0 0 255
        right
                graph 5 "block in"  "packets/s" color 255 0 0,
                graph 6 "block out" "packets/s" color 192 192 0
}

########################################################

# Terceiro gráfico, com as estatísticas de pacotes
# fragmentados e de congestionamento

collect 7 = global counters fragment       diff
collect 8 = global counters congestion     diff

# Estatísticas do dia
image "/var/www/htdocs/pfstat/pfstat-errors_day.jpg" {
       from 1 days to now
       width 980 height 200
        left
               graph 7 "frag" "/s" color 192 0 192,

        right
               graph 8 "cong" "/s" color 0 192 192,
}

# Estatísticas da semana
image "/var/www/htdocs/pfstat/pfstat-errors_week.jpg" {
        from 1 weeks to now
        width 980 height 200
        left
                graph 7 "frag" "/s" color 192 0 192,
        right
                graph 8 "cong" "/s" color 0 192 192,
}

# Estatísticas do mês
image "/var/www/htdocs/pfstat/pfstat-errors_month.jpg" {
        from 1 months to now
        width 980 height 200
        left
                graph 7 "frag" "/s" color 192 0 192,
        right
                graph 8 "cong" "/s" color 0 192 192,
}

# EOF

Executando o Pfstat

O pfstat irá executar uma tarefa a cada minuto para recolher informação sobre a interface. Estes dados serão colocados no arquivo /var/db/pfstat.db e a melhor maneira de executá-lo é a partir do crontab.

Existem três comandos que necessitam ser executados:
  • "pfstat -q -d /var/db/pfstat.db" - executar a cada minuto para colatar estatísticas da interface;
  • "pfstat -p -d /var/db/pfstat.db" - executar de hora em hora no horário comercial para gerar novos gráficos;
  • "pfstat -t 30 -d /var/db/pfstat.db" - executar uma vez por dia, geralmente de madrugada, para limpar a base de dados e manter apenas os últimos 30 dias de informações.

Exemplo do pfstat no crontab:

* * * * * /usr/local/bin/pfstat -q -d /var/db/pfstat.db
10 6-18 * * * /usr/local/bin/pfstat -p -d /var/db/pfstat.db
25 3 * * * /usr/local/bin/pfstat -t 30 -d /var/db/pfstat.db

Pronto, se o Apache estiver instalado e configurado, todos os gráficos poderão ser acessados via browser e ao estilo do MRTG. =p

Outras dicas deste autor

Alteração de encoding em sistemas Debian

AIX - Identificando processos zumbis

Montando imagens ISO no OpenBSD

Reforçando os serviços básicos com SSL

Convertendo uma chave privada OpenSSL para uma chave pública/privada do OpenSSH

Leitura recomendada

Otimizando os locais (países) para português e Brasil no Sabayon Linux

Cinnamon no Ubuntu 12.04

Compartilhando conexão no Mandriva One e superior via modo texto

Criando uma imagem Docker a partir de uma máquina virtual

Instalação de pacotes oldstable no Debian Stable

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts