Outils pour utilisateurs

Outils du site


anthony_messe:banana_pi:logs_des_connexions

Ceci est une ancienne révision du document !


Logger les connexion du point d'accès

Activation des logs dans iptables

Il faut simplement activer les logs après avoir flush les tables.

iptables -A INPUT -i $_interface_wifi -m state --state NEW -j LOG --log-prefix "New input connection: "
iptables -I OUTPUT -m owner --uid-owner $_tor_uid -j LOG --log-prefix "New output connection: "

Ce qui nous donne au final (par exemple pour une classe A)

#!/bin/sh
#Variables
_trans_port="9040"
_dns_port="5353"
_interface_wifi="wlx503eaa3d7d6c"
_tor_uid=`id -u debian-tor`
_router="10.255.255.254" #Adresse du router (adresse de la machine ayant le point d'accès wifi)
_reseau_wifi="10.0.0.0/8"
_unreachable="192.168.16.20/24" #Adresse dont on empêche l'accès
_eth0_ip=`ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'`

#On efface toutes les règles iptables
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

#On met les policy
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP

#On redirige le traffic TCP vers Tor
iptables -t nat -A PREROUTING -i $_interface_wifi -p tcp --syn -j REDIRECT --to-ports $_trans_port
#On redirige les requêtes DNS vers Tor
iptables -t nat -A PREROUTING -i $_interface_wifi -p udp --dport 53 -j REDIRECT --to-ports $_dns_port

#On log le trafic entrant
iptables -A INPUT -i $_interface_wifi -m state --state NEW -j LOG --log-prefix "New input connection: "
#On autorise les requêtes DHCP à entrer
iptables -A INPUT -i $_interface_wifi -p udp --dport 67:68 --sport 67:68 -j ACCEPT
#On autorise les connexion SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -j ACCEPT
#On autorise les connexions déja établies
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
#On autorise la boucle locale
iptables -A INPUT -i lo -j ACCEPT
#On autorise les requêtes vers le routeur et le port DNS
iptables -A INPUT -d $_router -i $_interface_wifi -p udp -m udp --dport $_dns_port -j ACCEPT
#On autorise les requêtes vers le routeur pour le traffic TCP
iptables -A INPUT -d $_router -i $_interface_wifi -p tcp -m tcp --dport $_trans_port --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT

#On log le trafic sortant
iptables -I OUTPUT -m owner --uid-owner $_tor_uid -j LOG --log-prefix "New output connection: "
#On drop le paquet si il n'est pas dans l état new, established, ou related
iptables -A OUTPUT -m state --state INVALID -j DROP
#On autorise ls connexions déja établies
iptables -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT
#On autorise les requêtes DHCP à sortir
iptables -A OUTPUT -o $_interface_wifi -p udp --dport 67:68 --sport 67:68 -j ACCEPT
#On autorise le traffic issu de la carte et de l'utilisateur root
iptables -A OUTPUT ! -s $_reseau_wifi -m owner --uid-owner 0 -j ACCEPT

Récupération automatique des logs

On va ajouter la ligne suivante dans la crontab

0 1 * * * /bin/sh /root/logs_analyzer.sh

On crée le script

nano logs_analyzer.sh

On le chmod

chmod +x logs_analyzer.sh

Collez-y les lignes ci-dessous :

---
- name: Suppression du script de logs
  file:
    path: /root/logs_analyzer.sh
    state: absent
- name: Création du script de logs
  copy:
     content: "#!/bin/sh\n_date=`date +%Y-%m-%d`\nmkdir -p /root/logs_wifi\necho "\nRécupération des logs..."\ncat /var/log/syslog | grep -e hostapd -e DST| grep -v CRON > /tmp/$_date.log\ncd /tmp\necho "Compression..."\ngzip $_date.log -f\necho "Copie..."\ncp $_date.log.gz /root/logs_wifi/\nrm $_date.log.gz"
     dest: /root/logs_analyzer.sh
     force: no
     group: sys
     owner: root
     mode: 0777
- cron:
    name: "ap_logs"
    state: absent
- cron:
    name: "ap_logs"
    minute: "0"
    hour: "1"
    job: "/bin/sh /root/logs_analyzer.sh"

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.

root@debian:~# ls -l -h
total 31M
-rw-r--r-- 1 root root  31M mai    9 13:10 access_point.log
-rwxrwxrwx 1 root sys  2,4K mai    9 12:04 iptables.sh
root@debian:~# gzip access_point.log 
root@debian:~# ls -l -h
total 1,5M
-rw-r--r-- 1 root root 1,5M mai    9 13:10 access_point.log.gz
-rwxrwxrwx 1 root sys  2,4K mai    9 12:04 iptables.sh
root@debian:~# 

Résultat

Au final, on peut observer le contenu en fichier en faisant un cat. Voici un exemple ce ce qu'on trouve à l'intérieur

May  4 09:14:25 debian kernel: [21983.824425] 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=8195 DF PROTO=TCP SPT=55915 DPT=9040 WINDOW=17520 RES=0x00 SYN URGP=0 
May  4 09:14:31 debian kernel: [21989.958539] 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=23855 DF PROTO=TCP SPT=55916 DPT=9040 WINDOW=17520 RES=0x00 SYN URGP=0 
May  4 09:17:13 debian kernel: [22151.745982] New input connection: IN=wlx503eaa3d7d6c OUT= MAC=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 
May  4 09:18:17 debian hostapd: wlx503eaa3d7d6c: WPA rekeying GTK
May  4 09:18:17 debian hostapd: wlx503eaa3d7d6c: STA cc:b0:da:67:65:31 WPA: sending 1/2 msg of Group Key Handshake
May  4 09:18:17 debian hostapd: wlx503eaa3d7d6c: STA cc:b0:da:67:65:31 WPA: received EAPOL-Key frame (2/2 Group)
May  4 09:18:17 debian hostapd: wlx503eaa3d7d6c: STA cc:b0:da:67:65:31 WPA: group key handshake completed (RSN)
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 

Conclusion

On a bien rempli les obligations légales qui étaient :

  • Les informations relatives à l'appareil utilisé

Il suffit de se rendre sur https://aruljohn.com/mac/ et de renseigner l'adresse mac de l'équipement Au final on obtient par exemple OnePlus Tech (Shenzhen) Ltd.

  • La date horaire et durée des communications
  • Les informations d'authentification

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

Avec les logs iptables

Ressources

anthony_messe/banana_pi/logs_des_connexions.1526022725.txt.gz · Dernière modification: 2018/05/11 09:12 par Anthony Messé