Ceci est une ancienne révision du document !
On utilise les lignes ci-dessous
#On log le trafic entrant iptables -A INPUT -i $_interface_wifi -m state --state NEW -j LOG --log-prefix "New input connection: " #On log le trafic sortant 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
On va ajouter la ligne suivante dans la crontab
0 1 * * * /bin/sh /root/logs_analyzer.sh
> Ainsi le script s'exécutera une fois par jour à 1h
On crée le script
nano logs_analyzer.sh
On le chmod
chmod +x logs_analyzer.sh
Collez-y les lignes ci-dessous :
#!/bin/sh _date=`date +%Y-%m-%d` mkdir -p /root/logs_wifi echo "\nRécupération des logs..." cat /var/log/syslog | grep -e hostapd -e DST| grep -v CRON > /tmp/$_date.log cd /tmp echo "Compression..." gzip $_date.log -f echo "Copie..." cp $_date.log.gz /root/logs_wifi/ rm $_date.log.gz rm /var/log/syslog touch /var/log/syslog
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:~#
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
On a bien rempli les obligations légales qui étaient :
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.
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)
Avec les logs iptables