Quentin Demoulière

Mon blog personnel

Déporter les logs du proxy Squid sur PFSense vers un serveur syslog centralisé

Rédigé par Quentin Demouliere - - 3 commentaires

Dans un cadre professionnel, il peut s'avérer utile de centraliser ses logs sur un serveur dédié. Cela permet d'avoir une copie de ceux-ci mais cela permet sourtout de pouvoir les exploiter plus facilement. Dans le cas présent, nous souhaitions déporter les logs de notre firewall PFSense vers un serveur syslog sous Debian GNU/Linux avec Syslog-NG.

Dans un premier temps, il est nécessaire de configurer le daemon syslog-ng afin qu'il soit prêt à récupérer les logs arrivant du pare-feu :

Le fichier à éditer en root est le suivant /etc/syslog-ng/syslog-ng.conf, voici ce que nous y avons rajouté :

source pf-s { udp(port(514)); };

destination pf-d_kern { file("/var/log/pfsense/kernel.log"); };

destination pf-d_mesg { file("/var/log/pfsense/messages.log"); };

destination pf-d_auth { file("/var/log/pfsense/secure.log"); };

destination pf-d_mail { file("/var/log/pfsense/maillog.log"); };

destination pf-d_uucp { file("/var/log/pfsense/spooler.log"); };

destination pf-d_boot { file("/var/log/pfsense/boot.log"); };

destination pf-d_emerg { file("/var/log/pfsense/emerg.log"); };

destination pf-d_sshd { file("/var/log/pfsense/sshd.log"); };

destination pf-d_pptpd { file("/var/log/pfsense/pptpd.log"); };

destination pf-d_daemon { file("/var/log/pfsense/daemon.log"); };

destination pf-d_firewall { file("/var/log/pfsense/firewall.log"); };

filter pf-f_kern        { facility(kern); };

filter pf-f_mesg        { level(info) and not facility(mail,authpriv,kern,local7); };

filter pf-f_auth        { facility(authpriv); };

filter pf-f_mail        { facility(mail); };

filter pf-f_uucp        { facility(uucp); };

filter pf-f_boot        { facility(local7); };

filter pf-f_emerg       { level(emerg); };

filter pf-f_sshd        { program("sshd"); };

filter pf-f_pptpd       { message("pptpd"); };

filter pf-f_daemon      { facility(daemon); };

filter pf-f_firewall    { level(debug); };

log { source(pf-s); filter(pf-f_kern); destination(pf-d_kern); };

log { source(pf-s); filter(pf-f_mesg); destination(pf-d_mesg); };

log { source(pf-s); filter(pf-f_auth); destination(pf-d_auth); };

log { source(pf-s); filter(pf-f_mail); destination(pf-d_mail); };

log { source(pf-s); filter(pf-f_uucp); destination(pf-d_uucp); };

log { source(pf-s); filter(pf-f_boot); destination(pf-d_boot); };

log { source(pf-s); filter(pf-f_emerg); destination(pf-d_emerg); };

log { source(pf-s); filter(pf-f_sshd); destination(pf-d_sshd); };

log { source(pf-s); filter(pf-f_pptpd); destination(pf-d_pptpd); };

log { source(pf-s); filter(pf-f_daemon); destination(pf-d_daemon); };

log { source(pf-s); filter(pf-f_firewall); destination(pf-d_firewall); };

 

Ensuite, il est nécessaire via l'interface Web de configurer le pare-feu afin que celui-ci duplique ses fichiers syslog vers le serveur de centralisation :

 

Il restait ensuite à gérer la problématique des logs du proxy Squid. En effet, Squid est un service qui gère lui même ses journaux (comme Apache par exemple). Nous avons du dire au proxy qu'il devait déléguer sa gestion de journaux au syslog du PFSense qui lui-même les enverrait sur le serveur Syslog-NG.

 

Et enjoy nos logs sont maintenant bien déportés sur notre serveur dédié ! ;)

 

Debian and Unix Addict

3 commentaires

#1 jacques a dit :

C'est particulièrement curieux d'utiliser le protocole syslog pour exporter le log Squid (access.log).

En effet, syslog permet de transférer des logs sous la forme de petits texte (démarrage/arret d'un service, authentification sur un service, ...). Il est construit, par conséquent sur un protocole léger et sans garantie (udp) (mais pas sans efficacité cf NFS).

Alors que access.log est toujours très lourd : j'ai observé des ensembles de milliers de lignes par jour pour une population faible.

De plus, comment recréer le fichier access.log par la suite, puisque c'est le format d'entrée des outils de visualisation type lightsquid, sarg, ...

M'est avis que la meilleure des choses à faire est de transférer le log au moment de la rotation (ce que sait faire un logrotate).

Pour finir, j'évite de mettre le proxy sur le firewall : ce n'est absolument pas sa place !

#2 Quentin Demouliere a dit :

@jacques :
Bonjour,

Vous proposez l'utilisation de logrotate pour le transfert de logs lors de la rotation. Je ne connaissais pas cette fonctionnalité, quel protocole est utilisé par cette dernière ?
Quant à syslog, il est possible de passer par TCP et du chiffrement avec TLS me semble-t-il.

Concernant votre remarque sur le proxy et le firewall, vous avez raison mais c'est la décision qui a été prise à l'époque. Nous sommes dans le cadre d'une petite structure et nous avons choisi PFSense avec l'intégration de Squid et Squid-Guard. De mémoire, un certain nombre d'appliances type firewall (Netasq) embarque ce même type de services et se trouve présent dans pas mal de PME.

De toute façon, nous souhaiterions rapidement basculer sur Kibana/Logstach et ElasticSearch pour exploiter nos logs.
Merci pour votre commentaire.

Quentin

#3 Niamor a dit :

Bonjour Quentin,

J'essaye de reproduire ce que tu as fait avec un pfsense et un serveur syslog-ng.

Tu peux me dire où sont sauvegarder tes access.log ?

Dans /var/log/pfsense ?

Merci

Écrire un commentaire

Quelle est la dernière lettre du mot efza ? :