Outils pour utilisateurs

Outils du site


anthony_messe:anthony_messe

Ceci est une ancienne révision du document !


Stage d'Anthony Messé

Du 2018-04-09 au 2018-06-15.

Comptes rendus hebdomadaires

Sujet du stage

Mise en place d'un serveur mandataire redirigeant le trafic vers Tor.

Explications

On souhaite rediriger un certain trafic (par exemple issu d'une carte réseau particulière) vers Tor. Pour cela on utilise des cartes Banana Pi M1+. Cela doit être fait de manière transparente : le client du point d'accès wifi ne doit avoir aucune action à effectuer (à part se connecter, bien sûr).

Objectif du projet

Aujourd'hui, de plus en plus de lieux publics (restaurants, médiathèques, écoles…) proposent à leurs clients/membres un accès wifi (avec authentification ou non). Ces établissements doivent cependant faire face aux actions illégales réalisées par les clients (téléchargement d'oeuvres non-libres, piratage…) et les expose à des poursuites judiciaires et de lourdes amendes. Ce projet, en faisant passer le trafic par le réseau Tor, permettrait aux établissements cités plus haut de continuer à proposer à leur clients un accès internet, sans avoir à se soucier du contenu téléchargé, ou du site consulté.

Tests avec KVM

Pour mes premiers tests j'ai utilisé une machine virtuelle sous KVM. J'ai donc dû apprendre à la configurer et l'utiliser correctement. J'ai ainsi pu tester l'installation de Tor : quels sont les paquets à installer et les fichiers à configurer pour un bon fonctionnement du projet. J'ai cependant rencontré des difficultés pour effectuer des copier/coller entre la VM et la machine hôte, ainsi que par rapport à la connectivité entre ces dernières. J'ai donc directement commencé à travailler sur la BPi (Banana Pi).

Mise en place du projet

Vous pouvez avoir un aperçu des spécifications de ce micro-ordinateur. Dans un premier temps on configure la carte SD et on installe l'OS dessus (vous pouvez aussi utiliser un SSD et y installer l'OS ). J'ai utilisé une version officielle et “propre” de Debian (voir la documentation sur la carte SD). J'ai installé les outils de base. J'ai d'abord testé l'utilisation de la carte wifi intégrée à la BPi, mais j'ai rencontré des problèmes et me suis donc orienté vers un dongle wifi USB.

Déploiement manuel

Avec IPv4 et une classe C

On configure l'AP et le serveur dhcp. Il faut ensuite installer Tor. On redirige le trafic avec un script iptables et on automatise son lancement au démarrage de la BPi. Notre point d'accès étant public, nous sommes soumis à la règlementation et devons donc conserver les logs.

Avec IPv4 et une classe A

On configure l'AP et le serveur dhcp. Il faut ensuite installer Tor. On redirige le trafic avec un script iptables et on automatise son lancement au démarrage de la BPi. Notre point d'accès étant public, nous sommes soumis à la règlementation et devons donc conserver les logs.

Avec IPv6

Il est tout à fait possible de configurer un serveur DHCPv6 pour distribuer des adresses IPv6. Cependant il s'agit d'une solution incomplète pour deux raisons :

  • Les appareils Android ne prennent pas en charge le DHCPv6 (voir ce lien pour plus d'informations)
  • IPv6 n'est pris en charge que partiellement par Tor (voir ce lien par exemple).
  • Il y a trop peu de relais IPv6 dans le monde

Automatisation du déploiement avec Ansible

Pour cela, on suppose que la cible (sur laquelle on veut déployer le projet) possède une adresse ip correctement configurée, et est accessible via SSH.

On commence par l'installer et configurer les hosts. Il peut être bien de vérifier l'accès à ces derniers. en tant que root et non-root. Il faut ensuite comprendre le fonctionnement des modules, par exemple pour installer des paquets. Pour une utilisation plus avancée qu'avec les lignes de commande, on peut utiliser les playbooks simples ou avec des rôles (recommandé). Durant mon utilisation d'Ansible, j'ai rencontré des difficultés auxquelles j'ai dû apporter des solutions.

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/access_point_logs
mkdir -p /tmp/access_point_logs
echo "Récupération des logs..."
cat /var/log/syslog.1 | grep -e hostapd -e DST -e dnsmasq| grep -v CRON > /tmp/access_point_logs/$_date.log
cd /tmp/access_point_logs
echo "Compression..."
gzip $_date.log -f
echo "Copie..."
cp $_date.log.gz /root/access_point_logs/
rm $_date.log.gz

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

Suppléments

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 

Ressources

anthony_messe/anthony_messe.1527508282.txt.gz · Dernière modification: 2018/05/28 13:51 par Anthony Messé