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 :

#!/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:~# 

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.1526025035.txt.gz · Dernière modification: 2018/05/11 09:50 par Anthony Messé