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 !
Nous allons utiliser l'objet VFS full_audit, qui permet de tracer tous les accès à un partage.
É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.
É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
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.
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.
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.
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...
É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...
Éditez le fichier /etc/rsyslog.d/30-distant.conf, et rajoutez la ligne suivante :
LOCAL0.* @@serveurlog:10514
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" ~
Éditez le fichier /etc/cups/cupsd.conf, et modifiez la directivesuivante :
PageLog syslog
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" ~
Les messages sont envoyés sans configuration particulière vers Syslog.
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" ~
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.
É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).
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.
É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.
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