https://wiki.pedrono.fr/index.php?title=SYSLOG_-_Description_d%27un_serveur_de_log_Syslog-NG&feed=atom&action=historySYSLOG - Description d'un serveur de log Syslog-NG - Historique des versions2024-03-28T14:52:02ZHistorique des versions pour cette page sur le wikiMediaWiki 1.30.1https://wiki.pedrono.fr/index.php?title=SYSLOG_-_Description_d%27un_serveur_de_log_Syslog-NG&diff=171&oldid=prevAdmin : a renommé Description d'un serveur de log Syslog-NG en SYSLOG - Description d'un serveur de log Syslog-NG: Unification nommage articles2009-03-05T15:57:38Z<p>a renommé <a href="/index.php/Description_d%27un_serveur_de_log_Syslog-NG" class="mw-redirect" title="Description d'un serveur de log Syslog-NG">Description d'un serveur de log Syslog-NG</a> en <a href="/index.php/SYSLOG_-_Description_d%27un_serveur_de_log_Syslog-NG" title="SYSLOG - Description d'un serveur de log Syslog-NG">SYSLOG - Description d'un serveur de log Syslog-NG</a>: Unification nommage articles</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<tr style="vertical-align: top;" lang="fr">
<td colspan="1" style="background-color: white; color:black; text-align: center;">← Version précédente</td>
<td colspan="1" style="background-color: white; color:black; text-align: center;">Version du 5 mars 2009 à 15:57</td>
</tr><tr><td colspan="2" style="text-align: center;" lang="fr"><div class="mw-diff-empty">(Aucune différence)</div>
</td></tr></table>Adminhttps://wiki.pedrono.fr/index.php?title=SYSLOG_-_Description_d%27un_serveur_de_log_Syslog-NG&diff=18&oldid=prevJules : Nouvelle page : = Introduction = Cet article décrit la création d'un serveur de logs centralisé. Cette machine permet donc de déporter les logs de chaque serveur, et ainsi d'améliorer la séc...2008-09-10T09:04:40Z<p>Nouvelle page : = Introduction = Cet article décrit la création d'un serveur de logs centralisé. Cette machine permet donc de déporter les logs de chaque serveur, et ainsi d'améliorer la séc...</p>
<p><b>Nouvelle page</b></p><div>= Introduction =<br />
<br />
Cet article décrit la création d'un serveur de logs centralisé.<br />
<br />
Cette machine permet donc de déporter les logs de chaque serveur, et ainsi d'améliorer la sécurité globale du SI: si une machine déporte tous ses logs sur un serveur syslog sur le réseau, un intrus pourra toujours entrer sur cette machine mais ne pourra en principe pas effacer ses traces comme cela se fait d'habitude.<br />
<br />
= Plateforme =<br />
<br />
La machine est une machine virtuelle gérée par la plateforme ESX.<br />
<br />
Cette machine fonctionne sous Ubuntu Server:<br />
<br />
root@hikaru:/etc/logrotate.d# lsb_release -a<br />
No LSB modules are available.<br />
Distributor ID: Ubuntu<br />
Description: Ubuntu 7.04<br />
Release: 7.04<br />
Codename: feisty<br />
<br />
= Solution technique de loggage =<br />
<br />
Le serveur de log centralisé utilise ''syslog-ng'' et ''php-syslog-ng''.<br />
<br />
[http://www.balabit.com/network-security/syslog-ng/ La page consacrée à syslog-ng chez l'éditeur]<br />
<br />
[http://code.google.com/p/php-syslog-ng/ La page permettant le téléchargement de php-syslog-ng]<br />
<br />
Le service de loggage standard sur linux, syslog, aurait pu être utilisé.<br />
<br />
Le choix de syslog-ng a été motivé par la capacité de l'outil à stocker ses logs en base de donnée (MySQL dans ce cas), et à s'associer à php-syslog-ng pour consulter ces logs en temps réel.<br />
<br />
= Installation =<br />
<br />
Quelques liens vers des howto sur le net:<br />
* SYSLOG-NG<br />
** [http://www.quietearth.us/articles/2006/09/27/Logging-remote-host-to-specific-logfile-with-syslogng Un howto]<br />
** [http://doc.ubuntu-fr.org/syslog-ng Un howto spécifique Ubuntu]<br />
* PHP-SYSLOG-NG<br />
** [http://nms.gdd.net/index.php/Installation_Guide Howto officiel d'installation]<br />
** [http://www.planetit.ws/linux/ubuntu/install-centralized-syslog-server-with-web-interface.html Un howto pour syslog-ng + php-syslog-ng]<br />
<br />
= Configuration =<br />
<br />
Pour le fichier complet de configuration au mois de juillet 2008, cf [[Fichier de configuration de PHP-Syslog-NG]].<br />
<br />
Les extraits suivant sont spécifiques à notre mise en place:<br />
<br />
* Définition d'une source:<br />
<br />
source s_net {<br />
unix-stream("/dev/log");<br />
udp();<br />
}; '''=> cette source permet de récupérer les infos de loggage arrivant sur le port UDP 514'''<br />
<br />
* Définition de filtres:<br />
<br />
#filter f_syslog { not facility(auth, authpriv); };<br />
filter f_syslog { not facility(auth, authpriv, local4, local5); };<br />
'''=> on exclut les facilities 4 et 5 de syslog, sinon tout part dans le fichier de log syslog.'''<br />
# all messages of info, notice, or warn priority not coming form the auth,<br />
# authpriv, cron, daemon, mail, and news facilities<br />
#filter f_messages {<br />
# level(info,notice,warn)<br />
# and not facility(auth,authpriv,cron,daemon,mail,news);<br />
#};<br />
filter f_messages {<br />
level(info,notice,warn)<br />
and not facility(auth,authpriv,cron,daemon,mail,news,local4,local5);<br />
};<br />
'''=> on exclut les facilities 4 et 5 de messages, sinon tout part dans le fichier de log messages.'''<br />
filter f_chapi { host( "10.5.1.3" ); };<br />
filter f_chapo { host( "10.5.1.6" ); };<br />
filter f_chapu { host( "10.5.1.12" ); };<br />
filter f_asa { host( "192.168.1.1" ); };<br />
'''=> on déclare des filtres par IP pour les hôtes loggant sur le serveur de log centralisé.'''<br />
#LOCAL4 stats.log<br />
#LOCAL5 portal.log<br />
filter f_ent_stats { facility(local4); };<br />
filter f_ent_portal { facility(local5); };<br />
'''=> 2 filtres pour lié la facility local4 aux stats et local5 aux log de fonctionnement.'''<br />
<br />
<br />
* Définition de destinations:<br />
<br />
#destination df_ent_portal_chapo { file("/var/log/ent/portal_chapo.log"); };<br />
#destination df_ent_portal_chapu { file("/var/log/ent/portal_chapu.log"); };<br />
#destination df_ent_portal_chapi { file("/var/log/ent/portal_chapi.log"); };<br />
'''=> les destinations d'origine, 1 fichier de logs de fonctionnement par instance d'ESUP.'''<br />
<br />
destination df_ent_portal { file("/var/log/ent/portal.log"); };<br />
destination df_ent_stats { file("/var/log/ent/stats_$YEAR-$MONTH.log" template("${MSG}\n")); };<br />
'''=> les destinations en vigueur pour les logs de fonctionnement et de stats d'ESUP.'''<br />
<br />
destination df_asa { file("/var/log/asa_inside"); };<br />
'''=> le fichier de log destiné à recevoir les logs du firewall INSA.'''<br />
<br />
destination d_mysql {<br />
program("/usr/bin/mysql -usyslogadmin -ppwdPSNsla syslog"<br />
template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n")<br />
template-escape(yes));<br />
};<br />
'''=> 1 exemple de destination en base de donnée, utilisée pour les logs ESUP au départ mais mis de coté pour l'instant.'''<br />
<br />
* Définition de logs:<br />
<br />
log {<br />
source(s_net);<br />
filter(f_chapo);<br />
filter(f_ent_portal);<br />
#destination(df_ent_portal_chapo);<br />
destination(df_ent_portal);<br />
# destination(d_mysql);<br />
};<br />
log {<br />
source(s_net);<br />
filter(f_chapu);<br />
filter(f_ent_portal);<br />
#destination(df_ent_portal_chapu);<br />
destination(df_ent_portal);<br />
# destination(d_mysql);<br />
};<br />
log {<br />
source(s_net);<br />
filter(f_chapi);<br />
filter(f_ent_portal);<br />
#destination(df_ent_portal_chapi);<br />
destination(df_ent_portal);<br />
# destination(d_mysql);<br />
};<br />
'''=> on applique les filtres pour les IP de chap(x), et on leur désigne la destination fichier portal.log. Pour info, on n'utilise plus pour l'instant le stockage en base.'''<br />
<br />
log {<br />
source(s_net);<br />
filter(f_chapi);<br />
filter(f_ent_stats);<br />
# destination(df_ent_stats_chapi);<br />
destination(df_ent_stats);<br />
};<br />
log {<br />
source(s_net);<br />
filter(f_chapu);<br />
filter(f_ent_stats);<br />
# destination(df_ent_stats_chapu);<br />
destination(df_ent_stats);<br />
};<br />
log {<br />
source(s_net);<br />
filter(f_chapo);<br />
filter(f_ent_stats);<br />
#destination(df_ent_stats_chapo);<br />
destination(df_ent_stats);<br />
};<br />
'''=> on applique les filtres pour les IP de chap(x), et on leur désigne la destination fichier stats_(année)-(mois).log. Pour info, on n'utilise plus pour l'instant le stockage en base.'''<br />
<br />
log {<br />
source(s_net);<br />
filter(f_asa);<br />
destination(df_asa);<br />
};<br />
'''=> on applique le filtre pour l'IP du firewall et on lui désigne un fichier de destination.'''<br />
<br />
= Problèmes connus =<br />
<br />
Quelques problèmes ont été rencontrés lors de la mise en place de ce serveur de log centralisé.<br />
<br />
Il est à noter que ce serveur fait aussi office de serveur de base MySQL et qu'il est utilisé pour l'instant par les 3 machines du cluster ESUP.<br />
<br />
Pour optimiser le stockage en base de donnée, et ne pas occuper tout l'espace disque avec de trop nombreuses lignes de log, l'installation de php-syslog-ng précise qu'il faut lancer à intervalle régulier par la cron un traitement php destiné à supprimer les doublons dans la base.<br />
<br />
Un extrait de la crontab:<br />
@daily php /var/www/psn/scripts/logrotate.php >> /var/log/psnlogrotate.log<br />
@daily find /var/www/psn/html/jpcache/ -atime 1 -exec rm -f '{}' ';'<br />
<br />
#*/5 * * * * php /var/www/psn/scripts/reloadcache.php >> /var/log/apache2/psnreloadcache.log<br />
#*/5 * * * * php /var/www/psn/scripts/SqueezeDB-v2.0.php >> /var/log/apache2/psnsqueezedb.log<br />
<br />
Après quelques jours de fonctionnement, il est apparu que ce traitement php occupait toutes les ressources du serveur, provoquant des ralentissements sensibles qui perturbaient le bon fonctionnement de ESUP (problèmes liés aux lenteurs d'accès à la base ESUP).<br />
<br />
C'est la raison pour laquelle les traitements php dans l'extrait de crontab ci-dessus ont été desactivés.<br />
<br />
Lorsque l'on décidera de déporter sur ce serveur des logs "classiques" d'autres serveurs (type logs apache, postfix, ssh, ...), la fonctionnalité apportée par la consultation via le web des logs avec php-syslog-ng reprendra tout son sens, il faudra alors se poser la question suivante: '''comment faire fonctionner SqueezeDB sans surcharger le serveur?'''<br />
<br />
[[Category:Systeme]]<br />
[[Category:Linux]]<br />
[[Category:Syslog]]<br />
[[Category:Securite]]<br />
[[Category:Howto]]</div>Jules