====== Stage d'Anthony Messé ====== Du 2018-04-09 au 2018-06-15. [[:Anthony Messé:Comptes rendus hebdomadaires]] {{:anthony_messe:rapport_de_stage_anthony_messe.pdf|Rapport de stage (version pdf)}} ===== 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). {{ :anthony_messe:schema-redirection-iptables.png?500 }} ==== 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 [[anthony_messe:wifi_public_reglementation|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é. {{ :anthony_messe:avce_sans_tor.png?500 }} ===== Tests avec KVM ===== Pour mes premiers tests j'ai utilisé une [[anthony_messe:kvm|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 [[anthony_messe:banana_pi:specifications_de_la_carte|spécifications]] de ce micro-ordinateur. Dans un premier temps on [[anthony_messe:banana_pi:configuration_carte_sd|configure la carte SD]] et on installe l'OS dessus (vous pouvez aussi [[anthony_messe:banana_pi:ssd_preparation|utiliser un SSD]] et [[anthony_messe:banana_pi:ssd_installation_os|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 [[ anthony_messe:banana_pi:configuration_de_base|outils de base]]. J'ai d'abord testé l'utilisation de la [[anthony_messe:banana_pi:wifi_integre|carte wifi intégrée ]] à la BPi, mais j'ai rencontré des problèmes et me suis donc orienté vers un [[anthony_messe:banana_pi:wifi_dongle|dongle wifi USB]]. ===== Déploiement manuel ===== ==== Avec IPv4 et une classe C ==== On [[anthony_messe:banana_pi:ap_wifi_ipv4_classe_c|configure l'AP]] et le [[anthony_messe:banana_pi:dhcpv4_classe_c|serveur dhcp]]. Il faut ensuite [[anthony_messe:banana_pi:tor|installer Tor]]. On redirige le trafic avec un [[anthony_messe:banana_pi:iptables_ipv4_classe_c|script iptables]] et [[anthony_messe:banana_pi:lancement_script_au_demarrage|on automatise son lancement]] au démarrage de la BPi. Notre point d'accès étant public, nous sommes soumis à la [[anthony_messe:wifi_public_reglementation|règlementation]] et devons donc [[anthony_messe:banana_pi:logs_des_connexions|conserver les logs]]. ==== Avec IPv4 et une classe A ==== On [[anthony_messe:banana_pi:ap_wifi_ipv4_classe_a|configure l'AP]] et le [[anthony_messe:banana_pi:dhcpv4_classe_a|serveur dhcp]]. Il faut ensuite [[anthony_messe:banana_pi:tor|installer Tor]]. On redirige le trafic avec un[[anthony_messe:banana_pi:iptables_ipv4_classe_a| script iptables]] et [[anthony_messe:banana_pi:lancement_script_au_demarrage|on automatise son lancement]] au démarrage de la BPi. Notre point d'accès étant public, nous sommes soumis à la [[anthony_messe:wifi_public_reglementation|règlementation]] et devons donc [[anthony_messe:banana_pi:logs_des_connexions|conserver les logs]]. ==== Avec IPv6 ==== Il est tout à fait possible de configurer un [[anthony_messe:banana_pi:dhcpv6|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 [[https://fr.wikipedia.org/wiki/Support_de_l%27IPv6_par_syst%C3%A8me_d%27exploitation|ce lien]] pour plus d'informations) * Il y a trop peu de relais IPv6 dans le monde ===== Automatisation du déploiement avec Ansible (IPv4 classe C) ===== 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 [[anthony_messe:ansible:installation_et_configuration|l'installer et configurer les hosts]]. Il peut être bien de [[anthony_messe:ansible:hosts_verification|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 [[anthony_messe:ansible:installer_des_paquets|installer des paquets]]. Pour une utilisation plus avancée qu'avec les lignes de commande, on peut utiliser les [[anthony_messe:ansible:playbook|playbooks simples]] ou [[anthony_messe:ansible:roles|avec des rôles]] (recommandé). Durant mon utilisation d'Ansible, j'ai rencontré des [[anthony_messe:ansible:problemes|difficultés]] auxquelles j'ai dû apporter des solutions. ===== Ressources ===== * Fournie par Trinity Pointard : https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy#AnonymizingMiddlebox * Failles dans WPA2 https://forum.ubuntu-fr.org/viewtopic.php?id=2016193