Bloquer efficacement les sites pornographiques sur iPhone et Mac : guide technique
Stack multi-couches gratuite et difficile à contourner pour bloquer les sites pornographiques sur Mac et iPhone : /etc/hosts avec verrou immuable, Cloudflare 1.1.1.3 family-safe, Screen Time, Cold Turkey. Outils natifs Apple et open source uniquement.
Auteur
Reprendre le contrôle de son attention passe parfois par des barrières techniques. Bloquer l'accès aux sites pornographiques sur son Mac et son iPhone peut sembler simple en théorie : il existe une dizaine d'applications payantes qui promettent un blocage total. En pratique, la plupart sont contournables en quelques minutes (VPN, navigation privée, DoH, changement de DNS, désinstallation). Ce guide présente une stack multi-couches, gratuite et difficile à contourner, basée uniquement sur des outils natifs Apple et open source. Compter une heure de mise en place pour les deux appareils.
Pourquoi un seul outil ne suffit pas
Un blocage efficace repose sur plusieurs lignes de défense indépendantes. Bloquer uniquement au niveau du navigateur ? Suffit d'installer Brave ou Firefox. Filtrer le DNS Wi-Fi du domicile ? Suffit de passer en 4G. Installer une appli de blocage ? Suffit de la désinstaller. La règle est simple : chaque couche doit pouvoir tenir seule même si une autre tombe.
Le modèle proposé combine cinq couches sur Mac et trois sur iPhone. Toutes utilisent des fonctions documentées d'Apple ou des projets open source maintenus.
Mac : la stack complète
Couche 1 — Fichier /etc/hosts avec blocklist communautaire
Le fichier /etc/hosts est le premier endroit que macOS consulte pour résoudre un nom de domaine, avant tout serveur DNS. Y ajouter des entrées qui pointent vers 0.0.0.0 rend le domaine injoignable au niveau du système, peu importe le navigateur, l'application, ou le serveur DNS configuré.
Le projet open source StevenBlack/hosts sur GitHub maintient une liste consolidée de plus de 150 000 domaines pornographiques, mise à jour quotidiennement. Pour l'appliquer :
sudo cp /etc/hosts /etc/hosts.backup
curl -sL https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn/hosts \
| sudo tee -a /etc/hosts > /dev/null
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
Test : curl pornhub.com doit échouer instantanément. Si la commande revient avec un code HTTP, le cache DNS n'est pas vidé — relancer le flush.
Couche 2 — Verrou immuable sur /etc/hosts
Sans protection supplémentaire, n'importe quel utilisateur avec accès sudo peut éditer le fichier. Le flag système schg (system immutable) empêche toute modification, même par root, sauf à booter en mode Recovery et désactiver SIP (System Integrity Protection).
sudo chflags schg /etc/hosts
Pour vérifier : ls -lO /etc/hosts doit afficher le flag schg. Pour modifier le fichier plus tard, il faudra d'abord retirer le verrou avec sudo chflags noschg /etc/hosts.
Couche 3 — Couvrir l'IPv6
Piège peu connu : /etc/hosts avec 0.0.0.0 bloque seulement IPv4. Si un site répond aussi en IPv6 (la plupart des gros sites le font via Cloudflare), il reste joignable. La solution est d'ajouter des entrées miroir avec l'adresse nulle IPv6 :: :
sudo chflags noschg /etc/hosts
grep '^0\.0\.0\.0' /etc/hosts | awk '{print ":: " $2}' | sudo tee -a /etc/hosts > /dev/null
sudo chflags schg /etc/hosts
Couche 4 — Screen Time Apple et iCloud Private Relay
Apple inclut nativement un filtre de contenu adulte dans Screen Time. Bien que basique, il ajoute une couche supplémentaire sur Safari et toutes les applications WebKit. Configuration : Réglages Système → Temps d'écran → Contenu et confidentialité → Contenu Web → Limiter les sites pour adultes. Verrouiller ensuite Screen Time avec un code différent du code de session.
Point critique souvent oublié : iCloud Private Relay, inclus avec iCloud+, route le trafic Safari via deux proxys Apple et chiffre les requêtes DNS. C'est exactement le genre de fonctionnalité qui contourne /etc/hosts. Pour la désactiver : Réglages Système → Compte Apple → iCloud → Private Relay → désactivé.
Couche 5 — Cold Turkey Blocker en surcouche applicative
Cold Turkey Blocker (version gratuite) ajoute trois protections que /etc/hosts ne couvre pas : filtrage par mot-clé dans l'URL, blocage des applications, et surtout le mode Frozen Turkey qui rend l'application impossible à désinstaller pendant un blocage actif. Installation :
brew install --cask cold-turkey-blocker
Configuration : créer un bloc nommé "Adult", ajouter la catégorie Adult Sites prédéfinie, programmer un blocage 24/7, puis activer Frozen Turkey dans les réglages. L'extension navigateur doit être installée sur Chrome, Brave et Firefox pour activer le filtrage par mot-clé.
Couche 6 — Désactiver DNS over HTTPS dans les navigateurs
Les navigateurs modernes (Chrome, Firefox, Brave) peuvent activer DNS over HTTPS (DoH) en interne, ce qui contourne complètement /etc/hosts et le DNS système. À vérifier dans chacun :
- Chrome :
chrome://settings/security→ Use secure DNS → désactivé - Brave :
brave://settings/security→ Use secure DNS → désactivé - Firefox :
about:preferences#privacy→ DNS over HTTPS → Off - Safari : aucune action nécessaire, utilise le DNS système
iPhone : la stack complète
iOS ne donne pas accès à /etc/hosts. La stratégie repose sur un Configuration Profile qui force toutes les requêtes DNS via un résolveur filtrant, plus Screen Time pour verrouiller les changements.
Couche 1 — Configuration Profile DoH avec Cloudflare 1.1.1.3
Cloudflare propose gratuitement 1.1.1.3, un résolveur DNS qui bloque automatiquement les contenus adultes et les malwares. Contrairement à un changement de DNS classique dans les réglages Wi-Fi, un Configuration Profile DoH s'applique system-wide, en cellular comme en Wi-Fi, et chiffre les requêtes pour qu'aucun intermédiaire ne puisse les manipuler.
Le profile minimal contient un payload com.apple.dnsSettings.managed pointant vers https://family.cloudflare-dns.com/dns-query. On peut le télécharger directement depuis le site officiel one.one.one.one/family/, ou en générer un personnalisé avec Apple Configurator 2 (gratuit sur le Mac App Store).
Installation : envoyer le fichier .mobileconfig sur l'iPhone via AirDrop ou mail, puis Réglages → Profil téléchargé → Installer. Vérification : Réglages → Général → VPN, DNS et gestion d'appareil.
Couche 2 — Screen Time avec code de verrouillage
Sans verrou Screen Time, le profile est supprimable en trois tap. C'est l'étape qui transforme un blocage cosmétique en barrière réelle.
- Réglages → Temps d'écran → Utiliser un code Temps d'écran (différent du code de déverrouillage, idéalement non mémorisé pour soi-même)
- Contenu et confidentialité → activé
- Restrictions de contenu → Contenu Web → Limiter les sites pour adultes
- Modifications de compte → Interdire (empêche la suppression du profile)
- VPN → Interdire les modifications (empêche d'installer un VPN bypass)
- Données cellulaires → Interdire les modifications
- Modifications du code → Interdire
Couche 3 — Blacklist manuelle dans Screen Time
Le filtre Cloudflare couvre 99% des sites mais peut laisser passer certains nouveaux domaines. Pour les ajouter manuellement : Réglages → Temps d'écran → Restrictions de contenu → Contenu Web → Limiter les sites pour adultes → Ne jamais autoriser → Ajouter un site.
Les limites à connaître
Aucun système de blocage n'est inviolable. Les contournements suivants restent possibles, par ordre de difficulté croissante :
- VPN système full-tunnel (WireGuard, Tailscale) sur Mac : peut router le trafic DNS via le tunnel et contourner
/etc/hosts. Sur iPhone, l'option Interdire les modifications de VPN dans Screen Time bloque l'installation de nouveaux VPN. - Boot en mode Recovery + désactivation de SIP sur Mac : permet de retirer le verrou
schget d'éditer le fichier hosts. Demande de connaître le mot de passe administrateur et d'avoir physiquement l'ordinateur. - Restauration complète de l'iPhone via DFU : efface tout, profile compris. Demande d'être prêt à perdre toutes ses données.
- Mode supervision Apple Configurator 2 : pour un verrou absolu, on peut superviser son propre iPhone via Apple Configurator 2 sur Mac, ce qui rend le profile DoH non-supprimable sauf via wipe complet. Le coût : un reset total de l'iPhone à la mise en place.
Maintenance et automatisation
La blocklist StevenBlack est mise à jour quotidiennement avec de nouveaux domaines. Un script de refresh mensuel suffit pour rester à jour :
#!/bin/bash
sudo chflags noschg /etc/hosts
sudo sed -i '' '/# === PORN BLOCKER START ===/,/# === PORN BLOCKER END ===/d' /etc/hosts
TMP=$(mktemp)
curl -sL https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn/hosts -o "$TMP"
echo "# === PORN BLOCKER START ===" | sudo tee -a /etc/hosts > /dev/null
grep '^0\.0\.0\.0' "$TMP" | sudo tee -a /etc/hosts > /dev/null
grep '^0\.0\.0\.0' "$TMP" | awk '{print ":: " $2}' | sudo tee -a /etc/hosts > /dev/null
echo "# === PORN BLOCKER END ===" | sudo tee -a /etc/hosts > /dev/null
sudo chflags schg /etc/hosts
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
À programmer en tâche cron mensuelle, ou simplement à lancer manuellement à intervalle régulier.
Conclusion
Un blocage solide repose sur la multiplication des couches indépendantes, pas sur un seul outil miracle. La stack présentée tient face à 99% des tentatives de contournement quotidiennes, pour un coût de zéro euro et environ une heure de configuration. Pour aller plus loin, signer un Configuration Profile macOS avec un compte Apple Developer permet de verrouiller aussi le DNS système et de désactiver le mode Recovery. Mais à ce stade, on entre dans une logique de produit commercial — pour un usage personnel, la stack ci-dessus suffit largement.