Outils pour utilisateurs

Outils du site


anthony_messe:banana_pi:logs_des_connexions

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
anthony_messe:banana_pi:logs_des_connexions [2018/05/15 14:15]
Anthony Messé
anthony_messe:banana_pi:logs_des_connexions [2018/06/14 13:01] (Version actuelle)
Anthony Messé
Ligne 1: Ligne 1:
 +Lien vers [[anthony_messe:​anthony_messe|l'​accueil]]
 +
 ====== Logger les connexion du point d'​accès ====== ====== Logger les connexion du point d'​accès ======
  
-===== Récupération automatique des logs =====+On va logger les connexions de l'AP et les transmettre en temps réel à une autre machine grâce au protocole RELP.
  
-On va ajouter la ligne suivante dans la crontab ​+====== Configuration du client ======
  
-  0 1 * * * /bin/sh /​root/​logs_analyzer.sh +Le client est ici la BPi.
-> Ainsi le script s'​exécutera une fois par jour à 1h+
  
-On crée le script +On installe ​le paquet nécessaire au bon fonctionnement du protocole RELP
-  nano logs_analyzer.sh+
  
-On le chmod +  apt install rsyslog-relp
-  chmod +x logs_analyzer.sh+
  
-Collez-y les lignes ci-dessous : +Editez le fichier ​/etc/rsyslog.conf 
-<​code=bash>​ + 
-#!/bin/sh +  ​nano ​/etc/rsyslog.conf 
-_date=`date +%Y-%m-%d` + 
-mkdir -p /root/access_point_logs +Ajoutez les lignes suivantes à la fin du fichier 
-mkdir -p /​tmp/​access_point_logs + 
-echo "​Récupération des logs..."​ +<code
-cat /​var/​log/​syslog.1 | grep -e hostapd -e DST -e dnsmasq| grep -v CRON /​tmp/​access_point_logs/​$_date.log +#On charge le module relp (output) 
-cd /​tmp/​access_point_logs +module(load="omrelp") 
-echo "Compression...+#On log avec le protocole relp vers une adresse et un port précis 
-gzip $_date.log -f +action(type="​omrelp"​ target="192.168.16.11" ​port="​20514"​ tls="​on"​)
-echo "Copie..." +
-cp $_date.log.gz /​root/​access_point_logs/​ +
-rm $_date.log.gz+
 </​code>​ </​code>​
  
 +> //​192.168.16.11//​ étant l'​adresse de la machine qui va collecter les logs (le serveur).
  
-Il est nécessaire de compresser les données ​pour économiser de la place. En effet, comme on peut le voir ci dessous, les données compressées prennent 20 fois moins de place+Ce qui nous donne au final pour le fichier /​etc/​rsyslog.conf du client  
-<code=bash+ 
-root@debian:​~ls -l -h +<​code>​ 
-total 31M +module(load="​imuxsock"​) ​provides support for local system logging 
--rw-r--r-- 1 root root  31M mai    9 13:10 access_point.log +module(load="​imklog"​) ​  # provides kernel logging support 
--rwxrwxrwx 1 root sys  2,4K mai    9 12:04 iptables.sh + 
-root@debian:​~gzip access_point.log  +# Use traditional timestamp format
-root@debian:~ls -l -h +$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 
-total 1,5M + 
--rw-r--r-- 1 root root 1,5M mai    9 13:10 access_point.log.gz +Set the default permissions for all log files. 
--rwxrwxrwx 1 root sys  2,4K mai    9 12:04 iptables.sh +$FileOwner ​root 
-root@debian:​~+$FileGroup adm 
 +$FileCreateMode 0640 
 +$DirCreateMode 0755 
 +$Umask 0022 
 + 
 +Where to place spool and state files 
 +$WorkDirectory /​var/​spool/​rsyslog 
 + 
 +#On charge le module relp (output) 
 +module(load="​omrelp"​) 
 +#On log avec le protocole relp vers une adresse et un port précis 
 +action(type="​omrelp"​ target="​192.168.16.11"​ port="​20514"​ tls="​on"​)
 </​code>​ </​code>​
  
-===== Résultat ​=====+On redémarre rsyslog et on vérifie son état 
 + 
 +  systemctl restart rsyslog && systemctl status rsyslog 
 + 
 +===== Configuration du serveur ​===== 
 + 
 +On installe le paquet nécessaire au bon fonctionnement du protocole RELP 
 + 
 +  apt install rsyslog-relp 
 + 
 +Editez le fichier /​etc/​rsyslog.conf 
 + 
 +  nano /​etc/​rsyslog.conf 
 + 
 +Ajoutez les lignes suivantes à la fin du fichier
  
-Au final, on peut observer le contenu en fichier en faisant un cat. 
-Voici un exemple ce ce qu'on trouve à l'​intérieur 
 <​code>​ <​code>​
-May  4 09:14:25 debian kernel: [21983.824425] New input connection: IN=wlx503eaa3d7d6c OUTMAC=50:​3e:​aa:​3d:​7d:​6c:​cc:​b0:​da:​67:​65:​31:​08:​00 SRC=10.255.255.50 DST=10.255.255.254 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=8195 DF PROTO=TCP SPT=55915 DPT=9040 WINDOW=17520 RES=0x00 SYN URGP=0 ​ +#On charge le module relp (input
-May  4 09:14:31 debian kernel: [21989.958539] New input connection: IN=wlx503eaa3d7d6c OUTMAC=50:​3e:​aa:​3d:​7d:​6c:​cc:​b0:​da:​67:​65:​31:​08:​00 SRC=10.255.255.50 DST=10.255.255.254 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=23855 DF PROTO=TCP SPT=55916 DPT=9040 WINDOW=17520 RES=0x00 SYN URGP=0 ​ +module(load="​imrelp"​ ruleset="​relp"​) 
-May  4 09:17:13 debian kernel: [22151.745982] New input connection: IN=wlx503eaa3d7d6c OUTMAC=ff:​ff:​ff:​ff:​ff:​ff:​cc:​b0:​da:​67:​65:​31:​08:​00 SRC=10.255.255.50 DST=10.255.255.255 LEN=229 TOS=0x00 PREC=0x00 TTL=128 ID=17657 PROTO=UDP SPT=138 DPT=138 LEN=209 ​ +#On écoute sur un port 
-May  4 09:18:17 debian hostapd: wlx503eaa3d7d6c:​ WPA rekeying GTK +input(type="​imrelp"​ port="​20514"​ tls="​off"​) 
-May  4 09:18:17 debian hostapd: wlx503eaa3d7d6c:​ STA cc:​b0:​da:​67:​65:​31 WPA: sending 1/2 msg of Group Key Handshake +#On redirige les logs vers un fichier précis en fonction de l'ip de l'​équipement 
-May  4 09:18:17 debian hostapd: wlx503eaa3d7d6c:​ STA cc:​b0:​da:​67:​65:​31 WPA: received EAPOL-Key frame (2/2 Group+template(name="​DynFile"​ type="​string"​ string="/​var/​log/​remote/​system-%FROMHOST-IP%.log") 
-May  4 09:18:17 debian hostapd: wlx503eaa3d7d6c:​ STA cc:​b0:​da:​67:​65:​31 WPA: group key handshake completed ​(RSN+#Règle appelée avec le module relp 
-May  4 09:19:36 debian kernel: [22295.592654] New input connection: IN=wlx503eaa3d7d6c OUT= MAC=50:​3e:​aa:​3d:​7d:​6c:​cc:​b0:​da:​67:​65:​31:​08:​00 SRC=10.255.255.50 DST=10.255.255.254 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=24462 DF PROTO=TCP SPT=55917 DPT=9040 WINDOW=17520 RES=0x00 SYN URGP=0 ​+ruleset(name="​relp"​){ 
 +  ​action(type="​omfile"​ dynaFile="​DynFile"​
 +}
 </​code>​ </​code>​
  
-===== Conclusion =====+Ce qui nous donne au final pour le fichier complet :
  
-On a bien rempli les obligations légales qui étaient : +<​code>​ 
-  * Les informations relatives à l'​appareil utilisé +module(load="​imuxsock"​) # provides support for local system logging 
-Il suffit de se rendre sur https://aruljohn.com/macet de renseigner l'​adresse mac de l'​équipement +module(load="​imklog"​) ​  # provides kernel logging support 
-Au final on obtient par exemple ​//OnePlus Tech (Shenzhen) Ltd//. + 
-  La date horaire et durée des communications +# Use traditional timestamp format. 
-  Les informations d'​authentification ​ +$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 
-On récupère ​l'adresse MAC et l'adresse ​IP associée ​(on est donc en mesure de dire qui s'est rendu sur tel ou tel site+ 
-  ​* L'​adresse IP cible des communications +# Set the default permissions for all log files. 
-Avec les logs iptables+$FileOwner root 
 +$FileGroup adm 
 +$FileCreateMode 0640 
 +$DirCreateMode 0755 
 +$Umask 0022 
 + 
 +# Where to place spool and state files 
 +$WorkDirectory /​var/​spool/​rsyslog 
 + 
 +
 +# First some standard log files. ​ Log by facility. 
 +
 +auth,​authpriv.                /​var/​log/​auth.log 
 +*.*;​auth,​authpriv.none ​         -/var/log/​syslog 
 +#cron.*                         /var/log/​cron.log 
 +daemon.* ​                       -/var/log/​daemon.log 
 +kern.* ​                         -/var/log/kern.log 
 +lpr.                          -/​var/​log/​lpr.log 
 +mail.                         ​-/​var/​log/​mail.log 
 +user.* ​                         -/​var/​log/​user.log 
 + 
 +
 +# Emergencies are sent to everybody logged in. 
 +
 +*.emerg ​                        :​omusrmsg:​* 
 + 
 +#On charge le module relp (input) 
 +module(load="​imrelp"​ ruleset="​relp"​) 
 +#On écoute sur un port 
 +input(type="​imrelp"​ port="​20514"​ tls="​off"​) 
 +#On redirige les logs vers un fichier précis en fonction de l'ip de l'équipement 
 +template(name="​DynFile"​ type="​string"​ string="/​var/​log/​remote/​system-%FROMHOST-IP%.log"​) 
 +#Règle appelée avec le module relp 
 +ruleset(name="​relp"​){ 
 +  ​action(type="​omfile"​ dynaFile="​DynFile"​) 
 +
 +</​code>​ 
 + 
 + 
 +===== Rotation auto des logs sur le serveur ===== 
 + 
 +Créez un fichier logrotate et collez-y le contenu suivant 
 + 
 +  nano /​etc/​logrotate.d/​relp_ap_logs 
 + 
 +<​code>​ 
 +/​var/​log/​remote/​*.log { 
 +    daily 
 +    rotate 365 
 +    compress 
 +    dateformat %Y-%m-%d  
 +
 +</​code>​
  
 ===== Ressources ===== ===== Ressources =====
  
-  * https://​access.redhat.com/​solutions/​70465+  * 
anthony_messe/banana_pi/logs_des_connexions.1526386530.txt.gz · Dernière modification: 2018/05/15 14:15 par Anthony Messé