pf-graph‎ > ‎

instalação

===== Softwares Necessários =====

Para o agente que irá acompanhar os logs dos servidores e trasmiti-los a um banco de dados, você deverá ter instalado:

  * libfile-tail-perl (File::Tail)
  * libparse-syslog-perl (Parse::Syslog)
  * libdbd-mysql-perl (DBD::mysql)
  * libdigest-crc32-perl (String::CRC32)


  aptitude install libfile-tail-perl libparse-syslog-perl libdbd-sqlite3-perl libdigest-crc-perl

Para os scripts web você deve necessariamente ter:

  * [[pf-graph:chartdirector|ChartDirector]]
  * libgd-graph3d-perl

===== Criação de tabelas no Banco de Dados =====

Criar tabelas no SQL (testado no MySQL. Aguardo notícias sobre tentativas em outros bancos de dados).

<code>

 CREATE DATABASE pf-graph;

 USE pf-graph;

# remova o auto_increment para o sqlite
 CREATE TABLE maillog (id INTEGER PRIMARY KEY AUTO_INCREMENT,  
                          timestamp INTEGER,
                          host       TEXT,
                          program TEXT,
                          pid INTEGER,
                          text TEXT);

 CREATE TABLE mailtraffic (timestamp INTEGER,
                          sender VARCHAR(255), rcpts TEXT, 
                          bytes_rcvd INTEGER);

 CREATE TABLE blockedmail (timestamp INTEGER,
                          clientdns VARCHAR(255), clientip 
                          VARCHAR(15), sender varchar(255),
                          rcpts BLOB, helo VARCHAR(32), 
                          restriction_applied VARCHAR(32), 
                          detail VARCHAR(255),
                          INDEX (sender));
</code>

Inicie a tabela de maillog para cada host que recebe e-mail:

<code>
INSERT INTO maillog (host, text) VALUES("host1", "inicializando tabela");
INSERT INTO maillog (host, text) VALUES("host2", "inicializando tabela");
</code>

Crie um usuário que tenha privilégios suficientes nestas tabelas, ou no banco. (Por fazer)

===== Configuração mod_perl =====

Sugiro fortemente utilizar o pf-graph com o mod_perl, do Apache.

Minha configuração para o Apache2 é:

<code>
<VirtualHost xxx.xxx.xxx.xxx:80>
        ServerAdmin yves.junqueira@gmail.com
        ServerName blabla.blaabla.blabla
        DocumentRoot /var/www/  # indiferente para esta configuração

        ErrorLog /var/log/apache2/error-pfgraph.log
        Alias /pf-graph /var/www/pf-graph

        <Directory /var/www/pf-graph/bin>
          RedirectMatch ^/$ /index.pl
          SetHandler perl-script
          PerlResponseHandler ModPerl::Registry
          PerlOptions +ParseHeaders
          Options +ExecCGI
        </Directory>
</VirtualHost>
</code>

Também é necessário ter as seguintes linhas em algum lugar da configuração do Apache:
<code>
PerlModule Apache2
</code>

<code>
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
PerlWarn On  # apenas sugestão
</code>

No Ubuntu, pelo menos, basta apenas criar um link para os arquivos corretos em /etc/apache2/mods-enabled.

Sugiro também proteger o acesso ao pf-graph com usuário e senha. Exemplo:

<code>
<Directory /var/www/pf-graph>
Order Deny,Allow
Deny from all
AuthLDAPAuthoritative on
AuthType Basic
AuthName "PF-Graph - Acesso REstrito"
AuthUserFile "/etc/apache2/pfgraph.users"
require valid-user
Allow from 127.0.0.1 10.22.12.22
Satisfy Any
</Directory>
</code>

===== Configuração =====

Copie o arquivo pfgraph.conf pra o diretório "/etc", e edite seu conteúdo apropriadamente, seguindo os exemplos.

Recomendo fortemente que este arquivo tenha suas permissões alteradas:

  # chmod 660 /etc/pfgraph.conf

===== Tail-Mail =====

O programa responsável por coletar os logs é o tail-mail.

Ele irá rodar nos servidores de e-mail, enviando os logs a um banco de dados remoto ou local.

Você precisa primeiro ter uma cópia do pfgraph.conf no /etc desses servidores, e ter os softwares necessários instalados (veja acima).

Copie o tail-mail para um diretório acessível, como "/usr/local/sbin".

Depois, basta rodar o tail-mail. Ele irá para o background como daemon, gravando mensagens no syslog. Verifique se as tabelas estão sendo preenchidas, ou se houve algum falha na inicialização do tail-mail. ((Caso queira, você pode configurar o cron para verificar regularmente se o tail-mail está rodando. Para isso, crie um script batch "/usr/local/sbin/tm-check.sh" com o seguinte conteúdo:

<code>
#!/bin/bash

pidof -x tail-mail > /dev/null 2>&1 || (echo "Iniciando tail-mail"; /usr/local/sbin/tail-mail > /dev/null 2>&1 &)

</code>

Depois, adicione a seguinte linha ao /etc/crontab:
*/1 * * * * root  /usr/local/sbin/tm-check.sh))

===== Notas finais =====
Entendo que este manual deve estar incompleto, incorreto ou incompreensível, mas espero que alguém consiga seguir esses passos e que todos comentem os problemas e sucessos na instalação.

Em caso de dúvidas, deixe um comentário em meu [[http://www.cetico.org/blog|techlog]] que eu responderei quanto antes possível.

- Yves Junqueira, Julho 2005
Comments