Erreur ! Le fichier /var/log/portalauth.log reste vide suite à une sauvegarde
-
Bonjour,
J'ai mis en place le service de portail captif intégré au pfsense et je propose donc un Wifi à mes invités. Quand un utilisateur se connecte au portail captif, les informations de celui-ci sont stockées dans le fichier /var/log/portalauth.log et cela fonctionnait jusqu'à ce matin.
Afin de garder une trace de l'activité de chacun des utilisateurs utilisant le service (en cas de demande d'une autorité), j'ai créer quelques scripts permettant de sauvegarder les logs suivants :
- /var/log/portalauth.log : Fichier contenant la date & l'heure de connexion, l'adresse MAC de l'utilisateur et l'adresse IP associée
Jul 10 08:04:21 pfsense logportalauth[6777]: ACCEPT unauthenticated, XX:XX:XX:XX:XX:XX, YYY.YYY.YYY.YYY
- /var/squid/logs/access.log : Fichier contenant l'historique des utilisateurs
1436479176.965 68 172.21.8.69 TCP_MISS/304 239 GET http://[url] - DIRECT/[IP] - Voici les scripts me permettant de réaliser ces fonctions : - Script /usr/local/bin/rotate_portalauth.sh : Ce script permet de sauvegarder chaque jour le fichier /var/log/portalauth.log en portalauth.log.YYYYmmdd [code] #!/bin/sh #---------------------------------------------------------------------------------------------------- # # Nom : /usr/local/bin/rotate_portalauth.sh # Auteur : kaizen2a # Date : 2015/07/09 # Version : 1.0 # # /usr/local/bin/rotate_portalauth.sh # - Rotation du fichier /var/log/portalauth.log tous les jours a 23h00 au format # /var/log/portalauth.log.YYYYmmdd # #---------------------------------------------------------------------------------------------------- # Mode debug #set -x #### # Commandes MV=`/bin/mv -f` DATE=`/bin/date +%Y%m%d` #### # Variables FILE_PORTALAUTH=/var/log/portalauth.log BACKUP_PORTALAUTH=${FILE_PORTALAUTH}.${DATE} #### # Programme # Creation d'une copie du fichier /var/log/portalauth.log en /var/log/portalauth.log.YYYYmmdd ${MV} ${FILE_PORTALAUTH} ${BACKUP_PORTALAUTH} # Remise a zero du fichier /var/log/portalauth.log echo "" > ${FILE_PORTALAUTH} [/code] - Script /usr/local/bin/rotate_access.sh : Ce script permet de sauvegarder chaque jour le fichier /var/squid/logs/access.log en access.log.YYYYmmdd [code] #!/bin/sh #---------------------------------------------------------------------------------------------------- # # Nom : /usr/local/bin/rotate_access_log.sh # Auteur : kaizen2a # Date : 2015/07/09 # Version : 1.0 # # /usr/local/bin/rotate_access_log.sh # - Rotation du fichier /var/squid/logs/access.log tous les jours a 23h00 au format # /var/squid/logs/access.log.YYYYmmdd # #---------------------------------------------------------------------------------------------------- # Mode debug #set -x #### # Commandes DATE=`/bin/date +%Y%m%d` #### # Variables PATH=/var/squid/logs FILE_ACCESS=${PATH}/access.log BACKUP_ACCESS=${FILE_ACCESS}.${DATE} #### # Programme # Creation d'une copie du fichier /var/squid/logs/access.log en /var/squid/logs/access.log.YYYYmmdd mv ${FILE_ACCESS} ${BACKUP_ACCESS} # Remise a zero du fichier /var/squid/logs/access.log echo "" > ${FILE_ACCESS} [/code] - Script /usr/local/bin/archivage_logs_cnil.sh : Ce script permet d'archiver les logs (portalauth.log.YYYYmmdd et access.log.YYYYmmdd) dans le dossier /logs-cnil/cnil-YYYYmmdd/ [code] #!/bin/sh #---------------------------------------------------------------------------------------------------- # # Nom : /usr/local/bin/archivage_logs_cnil.sh # Auteur : kaizen2a # Date : 2015/07/09 # Version : 1.0 # # /usr/local/bin/archivage_logs_cnil.sh # - Deplacement du fichier access.log.YYYYmmdd dans le dossier /logs-cnil/cnil-YYYYmmdd # - Deplacement du fichier portalauth.log.YYYYmmdd dans le dossier /logs-cnil/cnil-YYYYmmdd # - Creation d'une archive du dossier /logs-cnil/cnil-YYYYmmdd # #---------------------------------------------------------------------------------------------------- # Mode debug #set -x #### # Commandes DATE=`/bin/date +%Y%m%d` TAR=`/usr/bin/tar` #### # Variables FILE_PORTALAUTH_LOG=/var/log/portalauth.log.${DATE} FILE_ACCESS_LOG=/var/squid/logs/access.log.${DATE} FOLDER_CNIL=/logs-cnil/cnil-${DATE} #### # Programme # Creation du dossier /logs-cnil/cnil-${DATE} si il n'existe pas if [ ! -d ${FOLDER_CNIL} ]; then mkdir ${FOLDER_CNIL} fi # Deplacement du fichier access.log.XX dans le dossier /logs-cnil/cnil-YYYYmmdd mv ${FILE_ACCESS_LOG} ${FOLDER_CNIL} # Deplacement du fichier portalauth.log.YYYYmmdd dans le dossier /logs-cnil/cnil-YYYYmmdd ${MV} ${FILE_PORTALAUTH_LOG} ${FOLDER_CNIL} # Creation d'une archive du dossier /logs-cnil/cnil-YYYYmmdd ${TAR} -czf ${FOLDER_CNIL} ${FOLDER_CNIL}.tar.gz [/code] - Script /usr/local/bin/clear_dhcpd_leases.sh : Ce script permet de vider les leases DHCP présent dans les fichiers /var/dhcpd/var/db/dhcpd.leases et /var/dhcpd/var/db/dhcpd.leases~ [code] #!/bin/sh #---------------------------------------------------------------------------------------------------- # # Nom : /usr/local/bin/clear_dhcpd_leases.sh # Auteur : kaizen2a # Date : 2015/07/09 # Version : 1.0 # # /usr/local/bin/clear_dhcpd_leases.sh # - Suppression des leases dhcpd enregistres dans le fichier /var/dhcpd/var/db/dhcpd.leases~ # - Suppression des leases dhcpd enregistres dans le fichier /var/dhcpd/var/db/dhcpd.leases # #---------------------------------------------------------------------------------------------------- # Mode debug #set -x #### # Variables PATH=/var/dhcpd/var/db FILE_DHCPD="dhcpd.leases" FILE_DHCPD_TILD="dhcpd.leases~" #### # Programme echo "" > ${PATH}/${FILE_DHCPD} echo "" > ${PATH}/${FILE_DHCPD_TILD} [/code] - Script /usr/local/bin/rotate_logs.sh : Ce script exécute les scripts précédents [code] #!/bin/sh #---------------------------------------------------------------------------------------------------- # # Nom : rotate_logs.sh # Auteur : /usr/local/bin/kaizen2a # Date : 2015/07/09 # Version : 1.0 # # /usr/local/bin/rotate_logs.sh # - Execution du script /usr/local/bin/rotate_portalauth.sh # - Execution du script /usr/local/bin/rotate_access_log.sh # - Execution du script /usr/local/bin/archivage_logs_cnil.sh # - Execution du script /usr/local/bin/clear_dhcpd_leases.sh # #---------------------------------------------------------------------------------------------------- # Mode debug #set -x #### # Variables SCRIPT_ROTATE_PORTALAUTH="/usr/local/bin/rotate_portalauth.sh" SCRIPT_ROTATE_ACCESS="/usr/local/bin/rotate_access_log.sh" SCRIPT_ARCHIVAGE="/usr/local/bin/archivage_logs_cnil.sh" SCRIPT_CLEAR_DHCP_LEASES="/usr/local/bin/clear_dhcpd_leases.sh" #### # Programme # Execution du script /usr/local/bin/rotate_portalauth.sh ${SCRIPT_ROTATE_PORTALAUTH} # Execution du script /usr/local/bin/rotate_access_log.sh ${SCRIPT_ROTATE_ACCESS} # Execution du script /usr/local/bin/archivage_logs_cnil.sh ${SCRIPT_ARCHIVAGE} # Execution du script /usr/local/bin/clear_dhcpd_leases.sh ${SCRIPT_CLEAR_DHCP_LEASES} [/code] L'exécution de ce script est gérée par le cron de l'utilisateur root : [code] # 09/07/2015 - Rotation des fichiers de logs (portalauth.log et access.log) du portal captif, avec archivage et suppression des leases DHCP tous les jours a 23h59 59 23 * * * /usr/local/bin/rotate_logs.sh [/code] Et tous les soirs à minuit le PFSENSE redémarre. [code] # 09/07/2015 - Redemarrage du pfsense tous les jours a 00h00 0 0 * * * /sbin/reboot [/code] Concernant les informations de mon PFSENSE : [b]Version [/b]: [b]2.1.5-RELEASE [/b] (amd64) built on Mon Aug 25 07:44:45 EDT 2014 [url]FreeBSD 8.3-RELEASE-p16[/url] Ce matin, je suis aller vérifier la bonne exécution de mes scripts et la surprise, le fichier /var/log/portalauth.log reste vide. Cependant via l'interface graphique dans " Status -> Captive Portal -> [Zone]" je vois bien les utilisateurs connectés. Est ce que quelqu'un a déjà rencontré ce problème ? ou avec vous des pistes afin de corriger cette erreur. Merci d'avance. Cordialement, kaizen2a [/url]
-
Je vois que pas mal de monde regarde le topic mais personne ne prends le temps de me répondre ….
-
Bonjour,
Idée et/ou piste … peut être :
Pf n'aime pas que l'on lui supprime ses fichiers de log ---> peut être les re-créer vide après leurs suppression ;)
cdt
-
Quelques réflexions :
- le stockage de logs, et à fortiori d'archives de logs, n'est pas souhaitable sur un firewall.
- l'exécution de cron n'est pas souhaitable sur un firewall.
- placer un proxy sur firewall est discutable … (pour moi 'pas souhaitable')
- la rotation de logs access.log de squid n'est pas chose aisée : il est à conseiller d'utiliser 'squid -k'
- plutôt que 'mv', il est parfois préférable de faire 'cp' puis '>', ce qui évite d'effacer le fichier
-
ou avec vous des pistes afin de corriger cette erreur.
Dans le sens de ce qui est indiqué précédemment, une solution sûre est bien évidement d'externaliser les logs hors du firewall pour une exploitation un peu sérieuse. Il y a peu j'ai détaillé les risques qu'il y a à faire ce type de modification. Il n'y a que des inconvénients avec ce type de manipulation. A proscrire.