Un utilitaire CLI Linux qui achemine de manière transparente tout le trafic système via le réseau Tor en utilisant nftables. Il permet une rotation rapide de l'IP et une activation/désactivation facile des paramètres de proxy globaux pour les tâches de confidentialité.
Fonctionnalités • Prérequis • Installation • Utilisation • Fonctionnement • Vérification • Contribuer
Aucune configuration par application nécessaire - il suffit de sudo ttp start et chaque connexion passe par Tor.
[!CAUTION] TTP est un outil conçu pour favoriser la confidentialité en routant le trafic à travers Tor. Cependant, aucun outil ne peut garantir une anonymisation à 100 %. Votre sécurité dépend également de votre comportement (par exemple, utiliser un navigateur classique plutôt que le Tor Browser, se connecter à des comptes, etc.). Utilisez toujours TTP dans le cadre d'une stratégie de sécurité à plusieurs niveaux.
[!WARNING] Si vous êtes un lanceur d'alerte ou si vous exercez des activités à haut risque, N'UTILISEZ PAS TTP. Utilisez plutôt des outils officiellement audités et fiables comme TailsOS ou directement le Tor Browser. Les auteurs et contributeurs de TTP déclinent toute responsabilité quant à votre sécurité ou aux conséquences de l'utilisation de ce logiciel.
Les anciens scripts de proxy transparent (TorGhost, Anonsurf) écrasent les fichiers de configuration et construisent des ensembles de règles iptables qui échouent en clair : lorsqu'ils tombent en panne, le trafic sort en clair. TTP est conçu dans la logique inverse - il échoue en mode fermé et ne conserve rien sur le disque.
| Échec fermé par construction | Une table nftables isolée inet ttp avec un rejet fourre-tout et policy drop sur le forwarding. En cas de crash, de déclenchement du watchdog ou de sortie anormale, le trafic est soit routé via Tor, soit bloqué - jamais libéré. |
| Rien ne persiste | L'état de session, le torrc, le fichier de verrouillage et les journaux résident uniquement dans tmpfs (/run/ttp/, /run/tor/ttp/). Un redémarrage ne laisse aucun résidu ni verrou obsolète. |
| Aucune configuration par application | TCP et DNS sont interceptés au niveau de la couche réseau. Aucun paramètre SOCKS5, aucune variable d'environnement de proxy, aucun support applicatif requis. |
| DNS sans réécrire votre système | Une superposition mount --bind sur /etc/resolv.conf plutôt qu'une modification, plus un drop-in volatil qui neutralise systemd-resolved, soutenu par un drop au niveau du noyau sur tout trafic vers un résolveur non-loopback. |
| L'absence de fuite est mesurée | Chaque règle de confinement est testée dans un namespace réseau isolé contre l'ensemble de règles réellement généré, et chaque test prouve d'abord qu'il peut voir une fuite avant d'affirmer qu'il n'y en a pas. Voir Vérification. |
transitions) surveille Tor, les chaînes nftables et la superposition DNS via une
double surveillance inotify qui détecte la substitution de cible de lien symbolique. Il répare une fois,
puis applique un killswitch d'urgence.--bypass-user,
--bypass-group) avec la correspondance native UID/GID de nftables, ou exécutez une seule
commande hors de Tor avec ttp bypass <cmd> via une slice cgroups v2.torrc.ttp-tor.service volatil
sur des ports non standard, laissant une instance Tor existante intacte.Choisissez la méthode qui correspond le mieux à vos besoins. Les paquets natifs sont fortement recommandés pour la stabilité du système, la sécurité et une désinstallation propre.
L'installation via des paquets natifs garantit que toutes les dépendances système (tor, nftables) et les optimisations au niveau du noyau (SELinux) sont gérées par le gestionnaire de paquets de votre OS.
Téléchargez le .deb ou le .rpm pour la version souhaitée depuis la dernière release - les paquets sont des assets de release et ne sont pas versionnés dans le dépôt - puis installez-le :
sudo apt install ./transparent-tor-proxy_0.4.9_all.debsudo dnf install ./transparent-tor-proxy-0.4.9-1.noarch.rpmcd packaging && makepkg -siPour obtenir des instructions sur la façon de vérifier l'intégrité et l'authenticité des assets de release, consultez le Guide de vérification des releases.
Si vous êtes développeur ou souhaitez installer depuis le dépôt :
git clone https://github.com/onyks-os/TransparentTorProxy.git
cd TransparentTorProxy
sudo ./scripts/install.sh
[!TIP] Pourquoi utiliser
./install.sh?
Contrairement aux installateurs Python standards, ce script est « intelligent ». Sur les systèmes basés sur Red Hat, il détecte si SELinux est en mode Enforcing et compile dynamiquement un module de politique personnalisé (à partir dettp_tor_policy.te) pour permettre à Tor de se lier aux ports non standard requis par TTP (9041, 9054). Cette optimisation au niveau du noyau ne peut pas être effectuée parpip.
Pour installer TTP via des gestionnaires de paquets spécifiques à Python (pipx ou pip avec environnements virtuels), consultez la Référence des méthodes d'installation alternatives.
TTP est conçu pour être simple et léger. Pour la liste complète des commandes CLI, options, codes de sortie et spécifications techniques, reportez-vous à la Référence des interfaces externes.
La plupart des commandes modifiant le réseau nécessitent les privilèges root (sudo) :
Démarrer le proxy :
sudo ttp start
Arrêter le proxy :
sudo ttp stop
Vérifier l'état de la session en cours :
ttp status
Vérifier le routage Tor et la latence :
ttp check
Demander une nouvelle IP de sortie (rotation des circuits) :
sudo ttp refresh
Pour des configurations plus avancées et des profils de contournement, consultez la Référence des profils de sécurité et d'utilisation avancés ou la Référence des interfaces externes.
Pour confirmer que le tunnel fonctionne correctement et qu'aucune fuite n'est présente :
Vérifier l'IP de sortie Tor :
curl -s https://check.torproject.org/api/ip
Vérifier le routage DNS :
# Should return a valid IP via Tor's DNSPort
dig +short A check.torproject.org
Test de fuite DNS (terminal) :
# This TXT query SHOULD return an EMPTY output
dig +short TXT whoami.ipv4.akahelp.net
Remarque : une sortie vide est le comportement attendu sous Tor. Le résolveur transparent de Tor ne prend pas en charge les enregistrements TXT ; si cette commande renvoie l'IP de votre véritable FAI, vous avez une fuite DNS.
Vérification via le Web : Effectuez toujours des tests supplémentaires sur dnsleaktest.com et ipleak.net.
Pour supprimer complètement TTP du système :
sudo ./scripts/uninstall.sh
TTP route de manière transparente tout le trafic réseau en orchestrant les sous-systèmes standard du noyau Linux, les utilitaires système et les interfaces de contrôle de Tor :
flowchart LR
App["Application"] --> Local["Local Network"]
Local --> DNS["systemd-resolved (Intercepted)"]
DNS --> NFT["nftables (inet ttp table)"]
NFT --> Tor["Tor Daemon"]
Tor --> Internet["Internet"]inet ttp pour intercepter le trafic TCP et DNS, en les redirigeant vers Tor tout en empêchant les fuites IPv6 et DoT/DoH./etc/resolv.conf avec une configuration volatile en RAM via un bind-mount au niveau du noyau pour garantir que les appels DNS sont résolus par Tor.Pour une présentation détaillée des flux d'exécution, des hooks système, des frontières de sécurité et des composants modulaires, veuillez consulter :
TTP est conçu pour toujours restaurer votre réseau, même dans les cas limites :
| Scénario | Ce qui se passe |
|---|---|
ttp stop | Nettoyage sans fuite : applique un verrouillage de démontage, arrête proprement Tor, exécute un abattage actif des sockets, attend 1,5 s, vide le suivi de connexion, restaure le pare-feu et le DNS (via flush et suppression de table), et supprime le fichier de verrouillage |
Ctrl+C / kill | Le gestionnaire de signaux intercepte SIGINT/SIGTERM et exécute le nettoyage normal avant de quitter |
kill -9 / Coupure de courant | Le prochain ttp start détecte le fichier de verrouillage orphelin, efface toute pile de montage obsolète et restaure automatiquement |
| Urgence manuelle | Exécutez sudo ./scripts/restore-network.sh pour vider toutes les règles nftables, réinitialiser le DNS et supprimer le fichier de verrouillage |
[!WARNING]
- Tor Browser : les applications utilisant un proxy SOCKS5 explicite créeront un double saut Tor. Utilisez plutôt un navigateur classique pendant que TTP est actif.
- DNS-over-HTTPS (DoH) : les navigateurs classiques (Firefox, Chrome, Brave, Edge) peuvent utiliser DoH, contournant le DNS système. TTP atténue DoH via une défense à 3 couches : (1) tout le trafic TCP sortant (y compris DoH) est redirigé vers le TransPort de Tor ; (2) les domaines canaris DoH courants sont mappés vers
0.0.0.0danstorrc; (3) les résolveurs IP DoH publics sont bloqués sur le port TCP/UDP 443 (bloquant le DoH HTTP/3 QUIC). Pour une sécurité maximale, désactivez DoH / « DNS sécurisé » dans les paramètres de votre navigateur.- IPv6 : entièrement pris en charge lorsqu'il est disponible. TTP détecte dynamiquement le loopback IPv6 et route le trafic IPv6 via Tor. Si l'hôte ne dispose pas du support du loopback IPv6 OU si l'option
--no-ipv6est passée, TTP abandonne tout le trafic IPv6 sortant pour éviter les fuites.- Variation de l'IP de sortie : différentes connexions peuvent afficher différentes IP de sortie en raison de l'isolation des flux Tor.
Pour une analyse complète des risques résiduels, des frontières de confiance architecturales et du modèle de menace STRIDE, consultez :
TTP utilise un Makefile pour automatiser et standardiser le pipeline de tests. Cela garantit que chaque modification est vérifiée par des tests unitaires et d'intégration avant d'être validée.
[!IMPORTANT] Exécutez toujours
make verifyavant de pousser du code. Si cette commande échoue, le code n'est PAS prêt pour la production.
| Commande | Objectif |
|---|---|
make test | Exécute rapidement les tests unitaires en local (aucun root nécessaire, entièrement mockés). |
make integration-debian | Exécute les tests système complets dans un conteneur Docker privilégié (Debian). |
make integration-all | Exécute les tests d'intégration pour toutes les distributions prises en charge (Debian, Fedora, Arch). |
make verify | Exécute les tests unitaires + tous les tests d'intégration. |
make build | Génère les paquets natifs .deb et .rpm. |
make clean | Supprime tous les artefacts de build, caches et fichiers temporaires. |
L'affirmation de TTP d'absence de fuite est mesurée, non affirmée. Le
Network Sandbox Engine construit
un namespace réseau isolé, y charge l'ensemble de règles réellement généré par TTP,
génère le trafic dont consisterait une fuite, et surveille l'interface veth
de frontière avec un sniffer Scapy.
Chaque test de confinement s'exécute deux fois. assert no leaks est également vrai lorsque le
sniffer n'a jamais démarré, lorsque le nom de l'interface est erroné, ou lorsque le trafic
n'a jamais quitté le processus, donc chaque test exécute d'abord le même stimulus avec le
ruleset vidé et exige que le paquet soit vu. Ce n'est qu'ensuite qu'il affirme
que le ruleset de TTP l'arrête. Un harnais qui ne peut pas observer une fuite échoue au
test plutôt que de le réussir.
Couvert : DNS en clair (UDP et TCP), TCP ordinaire, DoT sur 853, DoH QUIC sur UDP/443, ICMP, UDP arbitraire, IPv6 — plus la direction inverse, qu'un UID contourné peut toujours atteindre le LAN. Un pare-feu qui bloquerait tout réussirait les sept premiers et échouerait au huitième.
# libpcap is required: the sniffer compiles a BPF filter, and Scapy dlopen()s
# the unversioned libpcap.so that only the -devel/-dev package ships.
sudo apt install nftables iproute2 conntrack libpcap0.8 libpcap-dev # Debian/Ubuntu
sudo dnf install nftables iproute2 conntrack libpcap libpcap-devel # Fedora/RHEL
pip install -e ".[nse]"
make test-nse # runs as root; TTP_REQUIRE_NSE=1 so it cannot skip itself
Cela s'exécute en CI à chaque push (le job Zero-leak ruleset verification) et comme
une étape dans scripts/verify.sh avant une release.
Bien que les tests d'intégration Docker soient rapides et atomiques, ils ne capturent pas 100 % des nuances du noyau/systemd. Pour les modifications critiques, il est fortement recommandé de tester dans une vraie VM QEMU :
# Start a specific VM (e.g., arch)
./scripts/vm/start.sh arch
# Sync current code to the VM
./scripts/vm/send.sh
# Snapshot management for easy rollbacks
./scripts/vm/snapshot.sh arch save before-risky-test
Si quelque chose ne va pas, exécutez la commande de diagnostic :
sudo ttp diagnose
├── pyproject.toml # Package metadata and dependencies
├── README.md
├── CONTRIBUTING.md # Contribution guidelines
├── SECURITY.md # Security policy
├── scripts/ # Installation, verification, and VM management scripts
├── assets/ # Branding and demo assets
├── packaging/ # Packaging configurations (.deb, .rpm, Arch PKGBUILD)
├── ttp/ # Main Python source package
│ └── resources/ # Internal package resources (SELinux policies, etc.)
├── tests/ # Unit, integration, and leak testing suites
└── docs/ # Technical documentation, threat models, and ADRs
Les contributions sont les bienvenues, et les domaines où l'aide compte le plus sont étroits et spécifiques :
Commencez par CONTRIBUTING.md, qui documente les deux règles sur lesquelles ce codebase est construit : ne jamais corriger un bug sans ajouter la vérification qui l'aurait attrapé, et un test qui affirme une absence doit d'abord prouver qu'il peut détecter une présence.
| Bugs et demandes de fonctionnalités | GitHub Issues |
| Vulnérabilités de sécurité | SECURITY.md - veuillez ne pas ouvrir d'issue publique |
| Support des versions et EOL | SUPPORT.md |
| Releases et paquets | GitHub Releases · PyPI |
Ce projet est maintenu sur du temps libre. Une étoile aide les autres à le trouver ; le sponsoring aide à le faire perdurer.
MIT. Voir LICENSE pour plus d'informations.