Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Erreur ! Le fichier /var/log/portalauth.log reste vide suite à une sauvegarde

    Scheduled Pinned Locked Moved Français
    5 Posts 4 Posters 825 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      kaizen2a
      last edited by

      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]
      
      1 Reply Last reply Reply Quote 0
      • K
        kaizen2a
        last edited by

        Je vois que pas mal de monde regarde le topic mais personne ne prends le temps de me répondre ….

        1 Reply Last reply Reply Quote 0
        • B
          baalserv
          last edited by

          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

          Si la connerie humaine fournissait de l'énergie, la Terre serait sauvée …

          1 Reply Last reply Reply Quote 0
          • J
            jdh
            last edited by

            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

            Albert EINSTEIN : Si vous ne pouvez pas l'exprimer simplement, c'est que vous ne le comprenez pas assez bien. (If you can’t explain it simply, you don’t understand it well enough.)

            1 Reply Last reply Reply Quote 0
            • C
              ccnet
              last edited by

              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.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post
              Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.