Ceci est une ancienne révision du document !
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
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 :
#!/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