3. Configurations spécifiques des serveurs distants

Configuration générale de rsyslog

Par défaut, tous les messages envoyés à syslog vont être redirigés vers le serveur de traces. Pour cela, rajoutez un fichier de configuration pour rsyslog (dans tous les serveurs) :

cat /etc/rsyslog.d/30-distant.conf
$WorkDirectory /var/log/queue # destination queue directory 
$ActionQueueType LinkedList # de-couple this action queue 
$ActionQueueFileName svlog # set a file for this action; enables disk mode 
$ActionResumeRetryCount -1 # infinite retries on failure 
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down 
# stockage vers le serveur svlog 
auth,authpriv.* @@serveurlog:10514 
*.*;auth,authpriv.none @@serveurlog:10514

Les premières lignes permettent de conserver les traces dans un fichier temporaire, si le serveur central de logs ne fonctionne pas.

Les deux dernières lignes permettent de rediriger les messages adressés à auth.log et syslog vers le serveur distant.

Ce fichier sera complété ensuite, selon les configurations spécifiques de chaque serveur.

Après modification de ce fichier, n'oubliez pas de relancer le service rsyslog !

Samba

Nous allons utiliser l'objet VFS full_audit, qui permet de tracer tous les accès à un partage.

Modifications apportées dans SAMBA

Éditez le fichier /etc/samba/smb.conf, et rajoutez les lignes suivantes :

[global]
(...) 
# Audit settings 
full_audit:prefix = %u|%I|%S 
full_audit:failure = connect 
#full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath 
full_audit:success = connect 
full_audit:facility = local5 
full_audit:priority = notice 
(…) 
[partage...] 
vfs objects = full_audit

La dernière ligne doit être intégrée dans chaque partage à auditer.

Dans la configuration retenue, les informations sont envoyées à Syslog avec la facilité local5.

La ligne commentée permet de visualiser toutes les opérations qui peuvent être auditées. Dans l'exemple ci-dessus, seules les connexions sont enregistrées, qu'elles aboutissent ou non.

Configurer le serveur de logs

Éditez le fichier /etc/rsyslog.d/30-specifique.conf, et rajoutez les lignes suivantes :

:syslogtag, contains, "smbd_audit" /var/log/sambaaudit.log
:syslogtag, contains, "smbd_audit" ~ 
# Traces de connexion samba 
local5.notice /var/log/sambaaudit.log

Openldap

Par défaut, Openldap génère des logs pour chaque opération réalisée dans l'annuaire (directives logfile et loglevel dans le fichier /etc/ldap/slapd.conf). Néanmoins, ces traces sont volumineuses et ne sont pas forcément assez sélectives.

Il existe d'autres outils qui permettent d'enregistrer un certain nombre d'opérations dans des fichiers au format LDIF (ou en base de données LDAP). Nous avons utilisé le module auditlog, qui permet de tracer toute modification d'enregistrement dans un fichier externe.

Activer le module

Dans le fichier /etc/ldap/slapd.conf, dans les directives globales, rajouter la ligne :

moduleload auditlog

Dans les directives spécifiques au serveur, rajoutez les lignes :

overlay auditlog
auditlog /var/lib/ldap/audit.log

et redémarrez le service ldap.

Rajouter une rotation des logs

Rajoutez le fichier /etc/logrotate.d/ldapaudit :

# Rotation de l'audit LDAP
/var/lib/ldap/audit.log { 
rotate 7 
daily 
compress 
create

lastaction

scp /var/lib/ldap/audit.log.1.gz serveurlog:/var/log/audit.log.`date +%Y%m%d`.gz

endscript 
}

Le module ne permet pas d'enregistrer les logs via syslog : vous devrez les recopier régulièrement vers le serveur de logs. C'est ce que fait, ici, la directive lastaction. À vous de l'adapter en fonction de vos besoins.

MySQL

Intégrer le stockage des événements dans Syslog

Depuis la version 5.1.20, il est facile de stocker les erreurs dans Syslog. Pour cela, éditez le fichier /etc/msysql/my.cnf, et rajoutez, dans la section [mysqld_safe] (ou [safe_mysqld]) :

syslog
syslog-facility = local3

Redémarrez Mysql. Vous pourrez traiter à part les messages d'erreur émis par mysql en analysant la « facilité ».

Par défaut, seules les erreurs seront enregistrées. Attention lors de la manipulation des paramètres : le volume des traces peut vite être important...

PostGreSQL

Intégrer le stockage des événements dans Syslog

Éditez le fichier de configuration de postgresql (/etc/postgresql/8.4/main/postgresql.conf), et rajoutez les lignes suivantes :

syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'

Par défaut, seules les erreurs seront enregistrées. Attention lors de la manipulation des paramètres : le volume des traces peut vite être important...

Modifier rsyslog

Éditez le fichier /etc/rsyslog.d/30-distant.conf, et rajoutez la ligne suivante :

LOCAL0.* @@serveurlog:10514

Configurer le serveur de logs

Dans le serveur de logs, éditez le fichier /etc/rsyslog.d/30-specifique.conf, et rajoutez les lignes :

:syslogtag, contains, "postgres" /var/log/postgres.log
:syslogtag, contains, "postgres" ~

CUPS

Éditer le fichier de configuration de cups

Éditez le fichier /etc/cups/cupsd.conf, et modifiez la directivesuivante :

PageLog syslog

Configurer le serveur de logs

Dans le serveur de logs, éditez le fichier /etc/rsyslog.d/30-specifique.conf, et rajoutez les lignes :

:syslogtag, contains, "cupsd" /var/log/cupspage.log
:syslogtag, contains, "cupsd" ~

NAGIOS

Les messages sont envoyés sans configuration particulière vers Syslog.

Configurer le serveur de logs

Dans le serveur de logs, éditez le fichier /etc/rsyslog.d/30-specifique.conf, et rajoutez les lignes :

:syslogtag, contains, "nagios3" /var/log/nagios3.log
:syslogtag, contains, "nagios3" ~

APACHE2

Par défaut, Apache n'utilise pas SYSLOG pour le stockage des traces. Deux types de messages sont utilisés : l'un pour les erreurs, et l'autre pour les connexions et le téléchargement des pages.

Configurer l'envoi des messages d'erreur à Syslog

Éditez le fichier /etc/apache2/apache2.conf, et remplacez la ligne :

#ErrorLog /var/log/apache2/error.log
ErrorLog syslog 
LogLevel error

Les erreurs seront enregistrées dans Syslog avec le nom local7 (nom par défaut utilisé par Apache pour communiquer avec Syslog – peut être modifié par des directives adaptées).

Configurer l'enregistrement des connexions

Toujours dans le fichier /etc/apache2/apache2.conf, remplacez la ligne :

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
# Define an access log for VirtualHosts that don't define their own logfile 
#CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined 
CustomLog "|logger -p local7.info -t apache2_access" vhost_combined

On utilise alors le composant logger1, qui va créer une entrée spécifique syslog (local7.info), en utilisant le format par défaut vhost_combined.

Attention : cette directive, stockée dans le fichier apache2.conf, est générale. Elle peut être écrasée pour un vhost particulier, selon votre configuration.

Configurer rsyslog

Éditez le fichier /etc/rsyslog.d/30-distant.conf, et rajoutez les lignes suivantes :

local7.* @@serveurlog:10514
# Integration des logs apache localement 
local7.info /var/log/apache2/other_vhosts_access.log 
local7.err /var/log/apache2/error.log

Ainsi, on conserve les traces localement, ce qui permet aux outils d'audit (par exemple, awstats2) de fonctionner normalement.

Configurer le serveur de logs

Dans le serveur de logs, éditez le fichier /etc/rsyslog.d/30-specifique.conf, et rajoutez les lignes :

:syslogtag, contains, "apache2_access" /var/log/apache2_access.log
:syslogtag, contains, "apache2_access" ~ 
:syslogtag, contains, "apache2" /var/log/apache2_error.log 
:syslogtag, contains, "apache2" ~

Les accès seront enregistrés dans le fichier apache2_access.log, les erreurs dans le fichier apache2_error.log

1http://debianfr.net/content/centralisation-des-journaux-apache2-syslog

2http://awstats.sourceforge.net/

2. Configurer le serveur de logs Mettre en place un serveur central de logs avec RSYSLOG 4. Configurer Awstats depuis le serveur de logs