
Guide organisé sur la sécurité et la confidentialité de macOS avec des instructions pratiques pour la modélisation des menaces, le chiffrement du disque, la configuration du pare-feu, l'authentification sécurisée et le durcissement du réseau.
Ce guide est une collection de techniques pour améliorer la sécurité et la confidentialité de macOS sur les Mac Apple silicon. Il s'adresse aux utilisateurs expérimentés qui souhaitent appliquer des pratiques de sécurité couramment utilisées par les organisations, mais convient également aux utilisateurs novices intéressés par la confidentialité et la sécurité.
Pour les Mac gérés par une organisation, consultez le macOS Security Compliance Project, maintenu par le U.S. National Institute of Standards and Technology.
Ce guide est fourni « tel quel » - sans garantie d'aucune sorte. Vous êtes seul responsable des conséquences de son application.
Appliquez les bonnes pratiques de sécurité générales :
Créez un modèle de menace
Maintenez le système et les logiciels à jour
softwareupdate. Aucune des deux ne nécessite un compte Apple.Chiffrez les données sensibles
Garantissez la disponibilité des données
La première étape la plus importante pour améliorer réellement la sécurité et la confidentialité est de créer un modèle de menace : une description générale de ce que vous voulez protéger, de qui pourrait tenter d'y accéder, de comment ils pourraient le faire, et des mesures de protection qui méritent des compromis en matière d'utilisabilité. Cela permet de comprendre les adversaires potentiels et leurs motivations, ce qui conduit à des défenses plus solides.
Les actifs peuvent inclure un téléphone, un ordinateur portable, des identifiants et des informations personnelles, comme l'historique de navigation.
Listez-les par ordre d'importance, en commençant par ceux qui méritent le plus d'être protégés.
Définissez contre qui vous vous défendez. Commencez par définir la motivation que chaque adversaire pourrait avoir à attaquer des actifs importants. Le gain financier est un puissant facteur de motivation pour de nombreux attaquants, par exemple.
Pour chaque adversaire, listez ce qu'il peut et ne peut pas faire, en les classant du moins capable au plus capable. Par exemple, un voleur occasionnel agit de manière opportuniste : des mesures de base comme le verrouillage de l'écran et un stockage chiffré avec des mots de passe forts suffisent généralement à le dissuader. Un adversaire plus sophistiqué et déterminé peut nécessiter d'éteindre complètement l'appareil lorsqu'il n'est pas utilisé afin d'effacer les identifiants de la mémoire, ainsi que des mécanismes d'authentification plus forts.
Choisissez la meilleure mesure d'atténuation pour chaque menace. Par exemple, évitez d'écrire vos mots de passe sur papier si un colocataire risque de les trouver, ou chiffrez le stockage pour protéger ses données en cas de vol.
La sécurité doit être équilibrée avec l'utilisabilité : chaque mesure doit contrer une capacité de l'adversaire pour justifier la gêne occasionnée. Cessez d'ajouter des défenses lorsque les risques restants sont acceptables pour une situation donnée. Revoyez le modèle lorsque vos appareils, vos données, vos déplacements, votre travail ou vos adversaires changent.
Le tableau suivant est un exemple de modèle de menace simple :
En savoir plus sur la modélisation des menaces.
Le matériel Apple silicon offre des fonctions de sécurité matérielles, notamment la protection des clés basée sur l'Enclave sécurisée et des options de sécurité de démarrage plus strictes. Il constitue généralement la plateforme préférée pour les protections abordées dans ce guide.
Certains Mac à base d'Intel, en particulier les modèles dotés d'un matériel de l'ère T2 vulnérable, sont affectés par des vulnérabilités matérielles qu'une mise à jour de macOS ne peut pas entièrement corriger.
Évitez le matériel non-Apple exécutant macOS et les systèmes qui ne prennent pas en charge la dernière version de macOS, car Apple ne corrige pas toutes les vulnérabilités des versions héritées.
Les accessoires Apple reçoivent généralement des mises à jour de micrologiciel via macOS et prennent en charge les fonctions de sécurité Bluetooth actuelles. Par exemple, la confidentialité Bluetooth Low Energy (BLE) utilise des adresses d'appareil rotatives pour réduire le suivi ; les accessoires tiers peuvent ne pas prendre en charge cette fonction.
Il existe plusieurs façons d'installer macOS.
Installez la dernière version prise en charge de macOS ; les versions plus récentes de macOS incluent des correctifs de sécurité et d'autres améliorations non disponibles dans les versions précédentes.
Lors de l'installation, les Mac Apple silicon contactent le service d'activation d'Apple pour confirmer que l'appareil n'est pas signalé comme perdu ou volé. Découvrez comment ce processus fonctionne.
Un compte Apple est facultatif pour une utilisation de base de macOS, mais requis pour l'App Store et de nombreux services Apple. Examinez les réglages de confidentialité des données avant d'activer des fonctionnalités.
Activez le chiffrement de bout en bout pour iCloud et vérifiez les données du compte Apple.
L'App Store est une plateforme de distribution de logiciels où les applications sont examinées par Apple.
Les applications de l'App Store sont tenues d'utiliser App Sandbox et Hardened Runtime (des fonctions de sécurité qui limitent ce que les applications peuvent faire, rendant certaines attaques plus difficiles). Elle propose également des mises à jour logicielles automatiques.
L'utilisation de l'App Store nécessite un compte Apple, ce qui peut présenter un risque pour la confidentialité.
La virtualisation permet à un autre système d'exploitation de s'exécuter dans une machine virtuelle isolée. Sur Apple silicon, macOS peut exécuter des invités macOS pris en charge et Windows 11 pour ARM à l'aide d'applications telles que les suivantes :
[!WARNING] VMware nécessite un compte Broadcom et l'acceptation des conditions avant le téléchargement. Parallels nécessite un compte, des informations de paiement et d'autres données - voir l'avis de confidentialité.
Apple Container est un outil en ligne de commande permettant d'exécuter des conteneurs Linux sur macOS. Contrairement aux environnements d'exécution de conteneurs qui partagent une seule machine virtuelle Linux, Apple Container exécute chaque conteneur dans une machine virtuelle isolée et légère, grâce aux capacités de virtualisation de macOS. Cela offre une frontière d'isolation plus stricte entre les charges de travail et le système d'exploitation hôte.
Lors du premier démarrage de macOS, l'assistant de configuration exige la création d'un compte principal.
Définissez un mot de passe long et unique. Laissez le champ d'indice de mot de passe vide.
Évitez les noms personnellement identifiables : le nom de l'ordinateur (comme « MacBook de John Appleseed ») est diffusé sur les réseaux locaux et visible par d'autres appareils.
Le nom du système peut être configuré dans Réglages Système > À propos ou avec les commandes scutil :```bash
sudo scutil --set ComputerName MacBook
sudo scutil --set HostName MacBook
sudo scutil --set LocalHostName MacBook
# Comptes administrateur et utilisateur
Le premier compte créé est un compte administrateur. Les administrateurs peuvent modifier les réglages à l'échelle du système et exécuter des commandes avec [sudo](https://en.wikipedia.org/wiki/Sudo), qui accorde temporairement des privilèges élevés. Tout programme exécuté par l'administrateur pourrait obtenir le même accès ; sudo peut également présenter des [vulnérabilités](https://bogner.sh/2014/03/another-mac-os-x-sudo-password-bypass/).
Il est considéré comme une [bonne pratique](https://help.apple.com/machelp/mac/10.12/index.html#/mh11389) d'utiliser un compte standard dédié pour le travail quotidien et de n'utiliser le compte administrateur que pour l'installation, la configuration et les mises à jour des logiciels et du système.
Il n'est pas nécessaire de se connecter avec le compte administrateur via l'écran de connexion de macOS. Lorsqu'une commande Terminal nécessite des privilèges administrateur, le système demande une authentification et Terminal continue d'utiliser ces privilèges. À cette fin, Apple fournit des [recommandations](https://support.apple.com/102099) pour masquer le compte administrateur et son répertoire personnel.
## Mises en garde
- Seuls les administrateurs peuvent installer des applications dans le répertoire `/Applications` à l'échelle du système. Le Finder et l'Installer demandent à un utilisateur standard de saisir les identifiants d'un administrateur lorsque l'approbation est requise. Certaines applications peuvent être installées dans `~/Applications` ; les applications qui ne nécessitent pas d'accès administrateur doivent être installées dans le répertoire de l'utilisateur. Les applications de l'App Store sont toujours installées dans `/Applications` et ne nécessitent aucune authentification supplémentaire.
- Un utilisateur standard n'est généralement pas autorisé à utiliser `sudo`. Lorsque des privilèges administrateur sont requis, macOS demande les identifiants d'un administrateur, ou la tâche peut être exécutée à partir d'un compte administrateur.
- Les Réglages Système et plusieurs utilitaires système (par exemple, Diagnostic Wi-Fi) nécessitent une autorisation d'administrateur pour fonctionner pleinement. Certains Réglages Système doivent être déverrouillés en sélectionnant l'icône de cadenas. Certaines applications demandent simplement une authentification à l'ouverture, tandis que d'autres doivent être ouvertes directement à partir d'un compte administrateur pour accéder à toutes les fonctions (par exemple, Console).
- Certaines applications tierces supposent que l'utilisateur actuel est un administrateur et ne fonctionneront pas à partir d'un compte standard.
- Voir le [problème 167](https://github.com/drduh/macOS-Security-and-Privacy-Guide/issues/167) pour d'autres considérations.
## Configuration
Les comptes peuvent être créés et gérés dans les Réglages Système. Sur les systèmes existants, il est généralement plus facile de créer un deuxième compte administrateur, puis de faire passer le compte d'origine d'un compte administrateur à un compte standard. Les systèmes nouvellement installés devraient plutôt ajouter un compte standard après la configuration.
La rétrogradation d'un compte peut être effectuée à partir du nouveau compte administrateur dans les Réglages Système.
Voir aussi [cet article](https://superuser.com/a/395738) pour plus d'informations sur la façon dont macOS détermine l'appartenance à un groupe.
# Micrologiciel
Vérifiez que la sécurité du micrologiciel est définie sur [Sécurité complète](https://support.apple.com/guide/mac-help/mchl768f7291/mac) pour empêcher toute altération du système. Il s'agit du réglage par défaut.
# FileVault
Les Mac à processeur Apple silicon utilisent par défaut un chiffrement du stockage basé sur le matériel. [FileVault](https://support.apple.com/guide/mac-help/protect-data-on-your-mac-with-filevault-mh11785/mac) exige de plus le mot de passe d'un utilisateur autorisé pour déverrouiller le volume de démarrage après un redémarrage.
Sur Apple silicon, l'autorisation FileVault protège également le [micrologiciel](https://support.apple.com/102384), ce qui empêche le démarrage à partir d'un autre disque que le disque de démarrage désigné, l'accès au mode [Recovery](https://support.apple.com/guide/mac-help/macos-recovery-a-mac-apple-silicon-mchl82829c17/15.0/mac/15.0#mchl5abfbb29) et sa [réactivation](https://support.apple.com/108900) avec le mode de mise à jour du micrologiciel de l'appareil (DFU).
FileVault vous demandera de définir une clé de récupération, qui doit être conservée dans un endroit sûr si elle est utilisée. FileVault offre également une option permettant d'utiliser iCloud pour la récupération.
Vérifier l'état de FileVault :```bash
fdesetup status
Mode Verrouillage réduit considérablement la surface d'attaque en désactivant les fonctionnalités du système et des applications couramment exploitées dans les attaques sophistiquées.
Lorsque le mode Verrouillage est activé, Safari propose une option pour exclure les sites web de confiance des restrictions.
Il existe plusieurs types de pare-feu disponibles pour macOS.
[!NOTE] Si un logiciel malveillant obtient le contrôle administrateur, il peut désactiver ou contourner les politiques de pare-feu ; ne vous fiez pas à un pare-feu local comme protection solide contre une compromission complète du système.
Le pare-feu intégré offre une protection de base et bloque uniquement les connexions entrantes. Il ne peut ni surveiller ni bloquer les connexions sortantes.
Il peut être contrôlé via l'onglet Pare-feu de Réseau dans Réglages Système, ou avec la commande suivante :```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
### Mode furtif
Les attaquants analysent fréquemment les réseaux pour identifier les systèmes à cibler. Lorsque le [mode furtif](https://support.apple.com/guide/mac-help/use-stealth-mode-to-keep-your-mac-more-secure-mh17133/mac) est activé, les réponses ne sont pas envoyées aux tentatives de connexion sur les ports fermés, ce qui rend le système plus difficile à détecter.
Activez le mode furtif :```bash
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
Par défaut, le pare-feu autorise les connexions entrantes pour les logiciels signés par Apple ou par un développeur identifié. La désactivation de ces règles amène macOS à demander avant d'autoriser une application à accepter des connexions entrantes :```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned off sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsignedapp off
### Recharger le pare-feu
Après avoir modifié les paramètres avec `socketfilterfw`, rechargez le service de pare-feu pour appliquer la nouvelle configuration :```bash
sudo pkill -HUP socketfilterfw
Confirmez l'état du pare-feu :```bash
for firewallFlag in
--getglobalstate
--getblockall
--getallowsigned
--getstealthmode
--listapps
do /usr/libexec/ApplicationFirewall/socketfilterfw "$firewallFlag"
done
Ou en utilisant [system profiler](https://ss64.com/mac/system_profiler.html):```bash
system_profiler SPFirewallDataType
L’activation du pare-feu de la couche application et la désactivation des connexions entrantes pour les logiciels intégrés empêchent AirDrop de fonctionner. Pour qu’AirDrop fonctionne, accordez des exceptions de pare-feu à sharingd et rapportd :```bash
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/rapportd
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/sharingd
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/libexec/rapportd
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/libexec/sharingd
## Pare-feu tiers
Des applications telles que [Little Snitch](https://www.obdev.at/products/littlesnitch/index.html), [Radio Silence](https://radiosilenceapp.com/) et [LuLu](https://objective-see.com/products/lulu.html) offrent un équilibre entre convivialité et sécurité.
Ces programmes sont capables de surveiller et de bloquer les connexions entrantes et sortantes. Cependant, ils peuvent nécessiter une [extension système](https://support.apple.com/HT210999) propriétaire.
Si les invitations fréquentes à autoriser ou bloquer deviennent envahissantes, autorisez temporairement les connexions tout en les enregistrant ([mode Silent Allow](https://help.obdev.at/littlesnitch6/concepts-opmodes) dans Little Snitch). Examinez la configuration pour comprendre et contrôler l'activité réseau.
## Filtre de paquets
macOS inclut également [pf](https://en.wikipedia.org/wiki/PF_(firewall)), un pare-feu de filtrage de paquets configuré en ligne de commande. Il est puissant mais considérablement plus complexe que le pare-feu d'application intégré.
pf peut également être contrôlé à l'aide d'une application graphique telle que [Murus](https://www.murusfirewall.com/).
De nombreux [livres](https://nostarch.com/book-of-pf-4e) et [guides](https://www.openbsd.org/faq/pf/) couvrent le pare-feu pf. L'exemple suivant montre comment configurer une politique de base.
### Exemple de configuration pf
Ajoutez les règles suivantes à un fichier nommé `pf.rules` :```console
# Define interface
wifi = "en0"
# Global options
set block-policy drop
set skip on lo0
set state-policy if-bound
set ruleset-optimization basic
# Normalize
scrub in on $wifi all fragment reassemble
# Define tables
table <blocklist> persist
# Deny and log blocked traffic
block log all
block quick from no-route to any
antispoof quick for $wifi
# Enforce blocklist
block log quick on $wifi from <blocklist> to any
block log quick on $wifi from any to <blocklist>
# Allow DHCP
pass out on $wifi proto udp from any port 68 to any port 67 keep state
pass in on $wifi proto udp from any port 67 to any port 68 keep state
# Allow outbound TCP
pass out on $wifi proto tcp from ($wifi) to any flags S/SA keep state
# Allow outbound UDP
pass out on $wifi proto udp from ($wifi) to any keep state
# Allow outbound ICMP (ping)
pass out on $wifi proto icmp from ($wifi) to any keep state
Un exemple avancé de configuration de pf est disponible dans pf/pf.rules.
Pour contrôler le pare-feu :
| Commande | Tâche |
|---|---|
sudo pfctl -e -f pf.rules | activer le pare-feu avec le fichier de configuration |
sudo pfctl -t blocklist -T add 1.2.3.4 | ajouter l'adresse IPv4 à la table blocklist |
sudo pfctl -d | désactiver le pare-feu |
Pour surveiller le pare-feu :
pf peut bloquer des plages d'adresses réseau, par exemple appartenant à une organisation entière. Interrogez Merit RADb pour obtenir la liste des réseaux utilisés par un système autonome (un grand réseau exploité par une seule organisation), comme Facebook :```bash whois -h whois.radb.net '!gAS32934'
Ajoutez la liste des réseaux renvoyée à la liste noire :```bash
sudo pfctl -t blocklist -T add $(whois -h whois.radb.net '!gAS32934' | sed -n '2p')
Confirmez que les adresses ont été ajoutées :```console $ sudo pfctl -t blocklist -T show No ALTQ support in kernel ALTQ related functions disabled 31.13.24.0/21 31.13.64.0/24 157.240.0.0/16 ...
Confirmez que le trafic réseau est bloqué vers ces adresses (les requêtes DNS fonctionneront toujours):```console
$ dig a +short facebook.com
157.240.2.35
$ curl --connect-timeout 5 -I https://facebook.com/
* Trying 157.240.2.35...
* TCP_NODELAY set
* Connection timed out after 5002 milliseconds
* Closing connection 0
curl: (28) Connection timed out after 5002 milliseconds
$ sudo tcpdump -tqni pflog0 'host 157.240.2.35'
IP 192.168.1.1.62771 > 157.240.2.35.443: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.443: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.443: tcp 0
The firewall drops the initial packets needed to start the TCP connection, so the connection times out.
See drduh/config/scripts/pf-blocklist.sh for more inspiration.
Many system and user background services are managed by launchd.
Administrator accounts can modify services and extensions in System Settings.
To read a service configuration:```bash defaults read /System/Library/LaunchAgents/com.apple.Finder
> [!IMPORTANT]
> Les services système sont protégés par [SIP](https://github.com/drduh/macOS-Security-and-Privacy-Guide#system-integrity-protection) ; désactiver SIP pour modifier les services système peut compromettre la sécurité et provoquer une instabilité du système.
Pour afficher l'état des services :```bash
find /var/db/com.apple.xpc.launchd \
-type f -print -exec defaults read {} \; 2>/dev/null
Consultez la gestion des scripts avec launchd et launchd.info pour plus d'informations.
Les suggestions Siri et Spotlight peuvent envoyer certaines requêtes ou informations d'utilisation à Apple, selon les fonctionnalités activées. Dans Réglages Système, recherchez Siri et Spotlight, puis désactivez les suggestions en ligne et configurez les catégories à exclure de l'indexation ou des suggestions. Consultez la politique Recherche et confidentialité d'Apple pour plus d'informations.
Si un programme n'est pas disponible via l'App Store, envisagez d'utiliser Homebrew.
[!IMPORTANT] Certains processus d'installation ou de gestion de Homebrew peuvent demander la gestion des applications ou l'accès complet au disque. N'accordez ces autorisations que lorsqu'elles sont pleinement comprises et nécessaires.
Exécutez périodiquement brew upgrade sur des réseaux de confiance et sécurisés pour installer les mises à jour logicielles. Pour obtenir des informations sur un paquet avant l'installation, exécutez brew info <package> et consultez sa formule en ligne. Activez les options de sécurité supplémentaires, comme HOMEBREW_NO_INSECURE_REDIRECT=1
Selon les analyses anonymes de Homebrew, Homebrew collecte des statistiques d'utilisation anonymes et les transmet à une instance InfluxDB auto-hébergée.
Pour désactiver les analyses de Homebrew, exécutez brew analytics off ou définissez HOMEBREW_NO_ANALYTICS=1 dans le fichier de démarrage du shell.
macOS offre des « profils de configuration DNS » pour configurer un DNS chiffré, le filtrage et DNSSEC.
Les profils DNS peuvent être créés ou obtenus auprès de fournisseurs tels que Quad9, AdGuard et NextDNS.
Utilisez le fichier hosts pour bloquer les domaines associés aux logiciels malveillants, à la publicité et à d'autres services indésirables.
Pour bloquer un domaine par un enregistrement A, ajoutez l'une des lignes suivantes à /etc/hosts:```
0 example.com
0.0.0.0 example.com
127.0.0.1 example.com
> [!NOTE]
> IPv6 utilise des enregistrements AAAA plutôt que des enregistrements A : bloquez les connexions IPv6 en incluant des entrées `::1 example.com`.
De nombreuses listes de domaines sont disponibles en ligne. Avant d'en ajouter une à `/etc/hosts`, assurez-vous que chaque entrée commence par `0`, `0.0.0.0` ou `127.0.0.1`, et conservez l'entrée `127.0.0.1 localhost`.
Listes de hosts populaires :
- [StevenBlack/hosts](https://github.com/StevenBlack/hosts)
- [Sinfonietta/hostfiles](https://github.com/Sinfonietta/hostfiles)
- [someonewhocares.org](https://someonewhocares.org/hosts/zero/hosts)
Pour télécharger une liste et l'ajouter au fichier hosts, utilisez la commande [tee](https://man7.org/linux/man-pages/man1/tee.1.html) :```bash
curl https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts |
sudo tee -a /etc/hosts
Little Snitch prend également en charge les listes de blocage.
Pour chiffrer le trafic DNS, envisagez DNSCrypt/dnscrypt-proxy. Lorsqu'il est configuré avec un résolveur de confiance, DNSCrypt chiffre les requêtes DNS. DNSSEC peut en outre valider les réponses DNS signées lorsque cela est pris en charge.
Installez DNSCrypt avec Homebrew et suivez les instructions pour configurer et démarrer dnscrypt-proxy :```bash
brew install dnscrypt-proxy
Lors de l'utilisation de DNSCrypt avec Dnsmasq, localisez le fichier de configuration DNSCrypt en exécutant :```bash
brew info dnscrypt-proxy | grep dnscrypt-proxy.toml | head -1
Cette commande devrait afficher un chemin tel que /opt/homebrew/etc/dnscrypt-proxy.toml.
Par défaut, dnscrypt-proxy écoute sur 127.0.0.1:53 et envoie les requêtes à un ou plusieurs fournisseurs DNS configurés. Modifiez la configuration et changez listen_addresses pour utiliser un port autre que 53, comme 5355:```toml
listen_addresses = ['127.0.0.1:5355', '[::1]:5355']
Démarrer DNSCrypt :```bash
sudo brew services restart dnscrypt-proxy
Confirmez que DNSCrypt est en cours d'exécution :```console $ sudo lsof +c 15 -Pni UDP:5355 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dnscrypt-proxy 15244 nobody 7u IPv4 0x1337f85ff9f8beef 0t0 UDP 127.0.0.1:5355 dnscrypt-proxy 15244 nobody 10u IPv6 0x1337f85ff9f8beef 0t0 UDP [::1]:5355 dnscrypt-proxy 15244 nobody 12u IPv4 0x1337f85ff9f8beef 0t0 UDP 127.0.0.1:5355 dnscrypt-proxy 15244 nobody 14u IPv6 0x1337f85ff9f8beef 0t0 UDP [::1]:5355
De plus, ces règles pf bloquent le trafic DNS conventionnel vers le port 53 en dehors de l'interface de boucle locale, afin de réduire le risque de [fuites DNS](https://dnsleaktest.com/) :```console
block drop quick on !lo0 proto udp from any to any port = 53
block drop quick on !lo0 proto tcp from any to any port = 53
dnsmasq peut mettre en cache les réponses, empêcher les requêtes en amont pour les noms non qualifiés, et bloquer des domaines de premier niveau entiers.
Utilisez-le en combinaison avec DNSCrypt pour chiffrer le trafic DNS.
Si vous n'utilisez pas DNSCrypt, choisissez au minimum un résolveur DNS autre que celui fourni par le FAI. Deux alternatives populaires sont Google DNS et OpenDNS.
Installez Dnsmasq :```bash brew install dnsmasq
Téléchargez et modifiez [drduh/config/dnsmasq.conf](https://github.com/drduh/config/blob/main/dnsmasq.conf) ou le fichier de configuration par défaut.
Consultez [drduh/config/domains](https://github.com/drduh/config/tree/main/domains) pour des exemples de listes de domaines pouvant être ajoutées afin de bloquer des destinations spécifiques.
Installez et lancez le programme (sudo est requis pour se lier au [port privilégié](https://unix.stackexchange.com/questions/16564/why-are-the-first-1024-ports-restricted-to-the-root-user-only) 53):```bash
sudo brew services start dnsmasq
Pour définir dnsmasq comme serveur DNS local, ouvrez Réglages système > Réseau et sélectionnez la connexion réseau actuellement utilisée (comme le Wi-Fi), puis ouvrez l'onglet DNS, sélectionnez +, et ajoutez 127.0.0.1, ou utilisez :```bash
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
Confirmez que Dnsmasq est configuré :```console
$ scutil --dns | head
DNS configuration
resolver #1
search domain[0] : whatever
nameserver[0] : 127.0.0.1
flags : Request A records, Request AAAA records
reach : 0x00030002 (Reachable,Local Address,Directly Reachable Address)
$ networksetup -getdnsservers "Wi-Fi"
127.0.0.1
[!NOTE] Certaines applications VPN remplacent les paramètres DNS lors de la connexion. Voir issue 24 et drduh/config/scripts/macos-dns.sh.
macOS inclut un ensemble d'autorités de certification (AC) racines de confiance gérées par des entreprises, des gouvernements et d'autres organisations du monde entier. Une AC de confiance peut émettre des certificats que macOS et les navigateurs peuvent accepter pour les connexions HTTPS, faisant du magasin de racines de confiance une partie critique de la frontière de confiance du système.
Inspectez les racines du système pour comprendre le magasin de racines de confiance fourni par Apple à l'aide de Trousseau d'accès ou de l'outil en ligne de commande security et du fichier /System/Library/Keychains/SystemRootCertificates.keychain. Le Trousseau d'accès peut également être lancé avec la commande :```bash
open "/System/Library/CoreServices/Applications/Keychain Access.app"
Examinez également les certificats qui ont pu être ajoutés par un utilisateur, un administrateur, un client VPN, un produit de sécurité ou une application de gestion des appareils mobiles dans les trousseaux **connexion**, **Éléments locaux** et **Système**.
Pour désactiver un certificat sélectionné, modifiez son réglage de confiance sur **Ne jamais faire confiance** et fermez la fenêtre pour confirmer. Cela peut réduire le risque d’attaques [MITM](https://wikipedia.org/wiki/Man-in-the-middle_attack), dans lesquelles un certificat frauduleux est utilisé pour [intercepter silencieusement](https://en.wikipedia.org/wiki/DigiNotar#Issuance_of_fraudulent_certificates) le trafic chiffré.
> [!WARNING]
> La suppression ou la modification des réglages de confiance des autorités de certification peut casser des sites web, les mises à jour logicielles, les réseaux d’entreprise, les VPN, les portails captifs et d’autres services.
Consultez les listes des [certificats de confiance disponibles](https://support.apple.com/103723) et des [certificats bloqués](https://support.apple.com/103247#blocked) d’Apple pour obtenir des informations à jour sur le magasin de confiance.
# Privoxy
Envisagez d’utiliser [Privoxy](https://www.privoxy.org/) comme proxy local pour filtrer le trafic web.
Installez et démarrez Privoxy à l’aide de Homebrew :```bash
brew install privoxy
brew services start privoxy
Alternativement, un paquet d'installation signé pour Privoxy est disponible sur leur site web ou Sourceforge. Le paquet signé est plus sécurisé que la version Homebrew et bénéficie du support du projet Privoxy.
Par défaut, Privoxy écoute sur le port TCP local 8118.
Définissez le proxy HTTP du système pour l'interface réseau active sur 127.0.0.1 et le port 8118:```bash
sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8118
Définir le proxy **HTTPS** du système :```bash
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8118
Le proxy peut également être défini dans Réglages Système > Réseau > Détails > Proxies.
Confirmez que le proxy est défini :```console $ scutil --proxy { ExceptionsList : { 0 : *.local 1 : 169.254/16 } FTPPassive : 1 HTTPEnable : 1 HTTPPort : 8118 HTTPProxy : 127.0.0.1 HTTPSEnable : 1 HTTPSPort : 8118 HTTPSProxy : 127.0.0.1 }
Bien que la plupart du trafic web soit chiffré, Privoxy peut filtrer les requêtes par nom d'hôte. Par exemple, les règles suivantes bloquent tout le trafic à l'exception du trafic vers .net, github.com et les domaines Apple :```console
{ +block{all} }
.
{ -block }
.apple.
.github.com
.net
Pour bloquer les domaines Facebook :```console { +block{facebook} } .cdninstagram. .facebook*. .fb. .fbcdn*. .fbinfra. .fbsbx. .fbstatic*. .fbsv. .fburl. .instagr.am .tfbnw. .thefacebook. fb*.akamaihd.net
Voir [drduh/config/privoxy/config](https://github.com/drduh/config/blob/main/privoxy/config) et [drduh/config/privoxy/user.action](https://github.com/drduh/config/blob/main/privoxy/user.action) pour d'autres exemples Privoxy. Privoxy n'a **pas** besoin d'être redémarré après la modification des règles de filtrage.
Pour vérifier que le trafic est bloqué ou redirigé, utilisez [curl](https://en.wikipedia.org/wiki/CURL) ou ouvrez l'interface Privoxy à <http://p.p> dans un navigateur :```console
$ ALL_PROXY=127.0.0.1:8118 curl example.com -IL | head
HTTP/1.1 403 Request blocked by Privoxy
Content-Length: 9001
Content-Type: text/html
Cache-Control: no-cache
Pragma: no-cache
$ ALL_PROXY=127.0.0.1:8118 curl github.com -IL | head
HTTP/1.1 302 Local Redirect from Privoxy
Location: https://github.com/
Content-Length: 0
HTTP/1.1 200 Connection established
HTTP/2 200
content-type: text/html; charset=utf-8
[!NOTE] Les applications et services peuvent ignorer les paramètres de proxy. pf peut rediriger le trafic via un proxy sans configurer chaque application séparément.
Les navigateurs web présentent des risques importants pour la sécurité et la confidentialité, car ils téléchargent et exécutent du contenu Internet non fiable.
Une frontière de sécurité clé du navigateur est la politique de même origine (SOP), qui empêche un site web de lire les données d'un autre site web. Un contournement peut exposer des données ou des actions d'autres sites dans le même profil de navigateur.
Certaines attaques de navigateur reposent sur la persuasion de l'utilisateur à installer des logiciels, accorder des permissions ou utiliser une extension malveillante. Soyez particulièrement prudent face aux téléchargements inattendus, aux invites d'extension et aux demandes d'exécution de commandes dans Terminal.
Les extensions de navigateur présentent également un risque de sécurité important : une extension malveillante ou de mauvaise qualité peut compromettre tout ce qui se trouve dans le navigateur, y compris les identifiants. L'utilisation d'extensions de navigateur doit être limitée à celles qui sont absolument nécessaires, publiées uniquement par des développeurs de confiance.
Utilisez des profils de navigateur séparés pour différentes identités et différents objectifs. Si cela est pratique, désactivez JavaScript et ne l'autorisez que sur les sites de confiance en utilisant les permissions de site du navigateur.
Mozilla Firefox, Google Chrome, Safari et Tor Browser sont des navigateurs populaires, chacun avec des fonctionnalités uniques et des objectifs individuels.
Firefox a modernisé de grandes parties de sa base de code grâce aux projets Quantum et Photon. Quantum comprend le déplacement de certains composants de C++ vers Rust, un langage de programmation conçu pour améliorer la sécurité mémoire et la sécurité de concurrence.
Firefox offre un modèle de sécurité comparable à celui de Chrome, y compris un programme de bug bounty pour la divulgation responsable des vulnérabilités. Firefox suit un cycle de publication de quatre semaines.
Voir drduh/config/firefox.user.js et arkenfox/user.js pour les configurations recommandées. Voir aussi NoScript, une extension qui permet le blocage sélectif des scripts.
Firefox se concentre sur la confidentialité des utilisateurs. Il prend en charge la protection contre le pistage en mode de navigation privée. La protection contre le pistage peut être activée pour le compte par défaut, bien qu'elle puisse dégrader l'expérience de navigation sur certains sites web. Firefox en mode de protection strict contre le pistage randomisera les empreintes du navigateur pour se défendre contre le pistage. Firefox propose des profils utilisateur séparés. La navigation peut également être compartimentée à l'aide de Multi-Account Containers.
Firefox ne prend en charge les extensions web que via l'API WebExtension, qui est très similaire à celle de Chrome. La soumission d'extensions web dans Firefox est gratuite. Les extensions web dans Firefox sont la plupart du temps open source, bien que certaines extensions web soient propriétaires.
Google Chrome est basé sur le projet Chromium open source. Chrome inclut certains composants propriétaires, des mises à jour automatiques, un lecteur PDF, la prise en charge des codecs multimédia, le rapport de plantage et l'intégration du compte Google. Consultez les paramètres de confidentialité de Chrome et les politiques de confidentialité de Google pour plus d'informations.
Chrome offre une synchronisation du compte entre plusieurs appareils, y compris les identifiants; les données sont chiffrées avec le mot de passe du compte.
Chrome détient la plus grande part d'utilisation mondiale et est la plateforme cible privilégiée de la majorité des développeurs. Les principales technologies sont basées sur les composants open source de Chrome, comme node.js qui utilise le moteur V8 de Chrome et le framework Electron, basé sur Chromium et node.js. La vaste base d'utilisateurs de Chrome en fait la cible la plus attrayante pour les acteurs malveillants et les chercheurs en sécurité. Malgré des attaques constantes, Chrome a conservé un bilan de sécurité impressionnant au fil des ans. Ce n'est pas un mince exploit.
Chrome offre des profils séparés, un sandboxing robuste, des mises à jour fréquentes, et possède un palmarès impressionnant. De plus, Google offre un programme de bug bounty très lucratif pour signaler des vulnérabilités, ainsi que sa propre équipe Project Zero. Cela signifie qu'un grand nombre de personnes très talentueuses et motivées auditent et sécurisent en permanence le code de Chrome.
Envisagez de désactiver l'optimisation V8 (les fonctionnalités de performance du moteur JavaScript) dans les paramètres du navigateur - voir cette explication pour les compromis de sécurité.
Bloquez les traqueurs avec uBlock Origin Lite.
Désactivez la prélecture DNS (voir DNS Prefetching and Its Privacy Implications). Chrome peut tenter de résoudre le DNS en utilisant les serveurs de noms publics 8.8.8.8 et 8.8.4.4 de Google.
Voir Chromium Security et Chromium Privacy pour plus d'informations. Lisez la politique de confidentialité de Google pour comprendre comment les informations personnelles sont collectées et utilisées.
Safari est le navigateur intégré d'Apple et est intégré à macOS, offrant des améliorations de l'efficacité énergétique sur le matériel Apple.
Safari possède à la fois des composants open source et propriétaires. Safari est basé sur le moteur web open source WebKit, qui est omniprésent dans l'écosystème macOS. WebKit est utilisé par des applications Apple telles que Mail, Livres et l'App Store. Le moteur Blink de Chrome est un fork de WebKit et les deux moteurs partagent un certain nombre de similitudes.
Safari prend en charge certaines fonctionnalités uniques qui profitent à la sécurité et à la confidentialité des utilisateurs. Les bloqueurs de contenu permettent de créer des règles de blocage de contenu sans utiliser JavaScript. Cette approche basée sur des règles améliore considérablement l'utilisation de la mémoire, la sécurité et la confidentialité. Safari 11 a introduit la prévention intelligente du pistage, qui supprime les données de pistage stockées dans Safari après une période de non-interaction de l'utilisateur avec le site du traqueur. Safari peut randomiser l'empreinte du navigateur pour réduire le pistage. Safari ne prend pas en charge certaines fonctionnalités telles que WebUSB ou l'API Battery, intentionnellement pour des raisons de sécurité et de confidentialité. Les onglets privés de Safari ont des cookies et un cache isolés qui sont détruits lorsque vous fermez l'onglet. Safari prend également en charge les profils, qui équivalent aux conteneurs Multi-Account de Firefox pour séparer les cookies et la navigation. Safari peut être rendu nettement plus sûr avec le mode confinement, qui peut être désactivé par site. En savoir plus sur la prévention du pistage dans Safari.
Les extensions web dans Safari ont une option supplémentaire pour utiliser du code natif dans l'environnement sandbox de Safari, en plus des API WebExtension. Les extensions web dans Safari sont également distribuées via l'App Store d'Apple. La soumission à l'App Store présente l'avantage supplémentaire que le code des extensions web est audité par Apple. En revanche, la soumission à l'App Store a un coût élevé. La souscription développeur annuelle coûte 100 USD (contrairement aux 5 USD de Chrome et à la soumission gratuite de Firefox). Le coût élevé est prohibitif pour la majorité des développeurs open source. Par conséquent, Safari a très peu d'extensions parmi lesquelles choisir. Cependant, gardez à l'esprit le coût élevé lors de l'installation d'extensions. Il est attendu que la plupart des extensions web aient un moyen de monétiser leur utilisation pour couvrir les coûts de développement. Évitez les extensions web sans code open source disponible pour examen.
Safari synchronise les préférences et les mots de passe des utilisateurs avec iCloud Keychain. L'affichage d'un mot de passe enregistré nécessite une authentification avec le mot de passe du compte de l'appareil actuel ou une autre méthode d'authentification configurée.
Safari implémente les nouvelles fonctionnalités web plus lentement que Chrome ou Firefox, mais les correctifs de sécurité sont livrés rapidement via les mises à jour du système.
Voir aussi el1t/uBlock-Safari pour désactiver les balises d'audit d'hyperliens.
Les sites web déduisent des informations sur le navigateur et l'appareil à partir des paramètres, des polices, de la taille de l'écran, de la langue, de l'adresse IP et du comportement du navigateur. Ces informations contribuent à l'empreinte numérique du navigateur.
Pour plus d'informations sur la navigation soucieuse de la sécurité et sur les données envoyées par le navigateur, voir les ressources HowTo: Privacy & Security Conscious Browsing, browserleaks.com, Am I Unique? et EFF Cover Your Tracks.
Pour réduire le suivi intersites, bloquez les cookies tiers.
Soyez également conscient de WebRTC, qui peut révéler une ou des adresses IP locales ou publiques (si connecté à un VPN). Dans Firefox et Chrome/Chromium, cette fonctionnalité peut être désactivée avec uBlock Origin. Le mode confinement désactive également WebRTC dans Safari.
Tor est un réseau d'anonymat qui peut offrir une confidentialité supplémentaire lors de la navigation. Tor Browser est un navigateur modifié basé sur Firefox, configuré pour utiliser le réseau Tor.
Téléchargez Tor Browser depuis le Tor Project, les fichiers dmg et asc pour la vérification :```console
$ cd ~/Downloads
$ file tor-browser-macos-* tor-browser-macos-15.0.17.dmg: XZ compressed data, checksum NONE tor-browser-macos-15.0.17.dmg.asc: PGP signature Signature (old)
$ gpg --verify tor-browser-macos-*.asc [...] gpg: Can't check signature: No public key
$ gpg --auto-key-locate nodefault,wkd --locate-keys [email protected] gpg: key 0x4E2C6E8793298290: public key "Tor Browser Developers (signing key) [email protected]" imported gpg: Total number processed: 1 gpg: imported: 1 pub rsa4096/0x4E2C6E8793298290 2014-12-15 [C] [expires: 2027-07-15] Key fingerprint = EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290 uid [ unknown] Tor Browser Developers (signing key) [email protected] sub rsa4096/0x157432CF78A65729 2024-07-15 [S] [expires: 2026-10-26] Key fingerprint = CAAE 408A EBE2 288E 96FC 5D5E 1574 32CF 78A6 5729
$ gpg --verify tor-browser-macos-*.asc gpg: assuming signed data in 'tor-browser-macos-15.0.17.dmg' gpg: Signature made Sun Jun 28 15:35:20 2026 PDT gpg: using RSA key CAAE408AEBE2288E96FC5D5E157432CF78A65729 gpg: Good signature from "Tor Browser Developers (signing key) [email protected]" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290 Subkey fingerprint: CAAE 408A EBE2 288E 96FC 5D5E 1574 32CF 78A6 5729
Assurez-vous que `Good signature from "Tor Browser Developers (signing key) <[email protected]>"` apparaît dans la sortie. L’avertissement est attendu, car la clé n’a pas été vérifiée personnellement et ajoutée à un trousseau de confiance.
Voir [Comment puis-je vérifier la signature de Tor Browser ?](https://support.torproject.org/tbb/how-to-verify-signature/) pour plus d’informations.
Pour terminer l’installation de Tor Browser, ouvrez l’image disque et faites-la glisser vers le dossier Applications, ou utilisez les commandes :```bash
hdiutil mount tor-browser-macos-15.0.17.dmg
cp -r /Volumes/Tor\ Browser/Tor\ Browser.app/ ~/Applications/
Vérifiez que l'application a été signée par l'Apple Developer ID du Tor Project (MADPSAYN6T) :```console
$ spctl --assess -vv ~/Applications/Tor\ Browser.app
/Users/user1/Applications/Tor Browser.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
$ pkgutil --check-signature ~/Applications/Tor\ Browser.app Package "Tor Browser.app": Status: signed by a certificate trusted by macOS Certificate Chain: 1. Developer ID Application: The Tor Project, Inc (MADPSAYN6T) Expires: 2028-10-11 17:57:46 +0000 SHA256 Fingerprint: 76 3C 89 02 ED CB AD 8E 59 86 1E 93 D3 05 5B 28 F9 04 0C 96 03 8B 16 28 9F 38 64 ED 53 45 B4 DA ------------------------------------------------------------------------ 2. Developer ID Certification Authority Expires: 2031-09-17 00:00:00 +0000 SHA256 Fingerprint: F1 6C D3 C5 4C 7F 83 CE A4 BF 1A 3E 6A 08 19 C8 AA A8 E4 A1 52 8F D1 44 71 5F 35 06 43 D2 DF 3A ------------------------------------------------------------------------ 3. Apple Root CA Expires: 2035-02-09 21:40:36 +0000 SHA256 Fingerprint: B0 B1 73 0E CB C7 FF 45 05 14 2C 49 F1 29 5E 6E DA 6B CA ED 7E 2C 68 C5 BE 91 B5 A1 10 01 F0 24
La commande `codesign` peut également être utilisée pour examiner la signature de code d'une application :```console
$ codesign -dvv ~/Applications/Tor\ Browser.app
Executable=/Users/user1/Applications/Tor Browser.app/Contents/MacOS/firefox
Identifier=org.torproject.torbrowser
Format=app bundle with Mach-O universal (x86_64 arm64)
CodeDirectory v=20500 size=805 flags=0x10000(runtime) hashes=14+7 location=embedded
Signature size=9054
Authority=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jun 28, 2026 at 14:01:57
Notarization Ticket=stapled
Info.plist entries=27
TeamIdentifier=MADPSAYN6T
Runtime Version=15.5.0
Sealed Resources version=2 rules=13 files=208
Internal requirements count=1 size=188
Pour afficher les détails complets du certificat d'une application signée, extrayez avec codesign et décodez avec openssl :```console
$ codesign -d --extract-certificates ~/Applications/Tor\ Browser.app
Executable=/Users/user1/Applications/Tor Browser.app/Contents/MacOS/firefox
$ file codesign* codesign0: Certificate, Version=3 codesign1: Certificate, Version=3 codesign2: Certificate, Version=3 Certificate, Version=02
$ openssl x509 -inform der -in codesign0 -subject -issuer -startdate -enddate -noout subject= /UID=MADPSAYN6T/CN=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)/OU=MADPSAYN6T/O=The Tor Project, Inc/C=US issuer= /CN=Developer ID Certification Authority/OU=G2/O=Apple Inc./C=US notBefore=Oct 11 17:57:47 2023 GMT notAfter=Oct 11 17:57:46 2028 GMT
$ openssl x509 -inform der -in codesign0 -fingerprint -noout SHA256 Fingerprint=76:3C:89:02:ED:CB:AD:8E:59:86:1E:93:D3:05:5B:28:F9:04:0C:96:03:8B:16:28:9F:38:64:ED:53:45:B4:DA
Le navigateur Tor peut utiliser des méthodes de connexion spéciales appelées [pluggable transports](https://support.torproject.org/tor-browser/circumvention/) pour rendre le trafic plus difficile à identifier ou à bloquer. Cela peut être fait en configurant un [relais](https://support.torproject.org/relays/) ou en utilisant un [pont](https://bridges.torproject.org/) existant.
Le réseau Tor offre [l'anonymat](https://www.privateinternetaccess.com/blog/2013/10/how-does-privacy-differ-from-anonymity-and-why-are-both-important/), ce qui n'est pas nécessairement la même chose que la confidentialité. Le réseau ne défend pas contre un observateur mondial capable d'analyser le trafic et d'en corréler les flux. Voir aussi [Seeking Anonymity in an Internet Panopticon](https://bford.info/pub/net/panopticon-cacm.pdf) et [Traffic Correlation on Tor by Realistic Adversaries](https://www.ohmygodel.com/publications/usersrouted-ccs13.pdf).
Voir la [spécification du protocole Tor](https://spec.torproject.org/tor-spec/) pour plus d'informations.
Voir aussi le [Invisible Internet Project (I2P)](https://geti2p.net/en/about/intro) et sa [comparaison avec Tor](https://geti2p.net/en/comparison/tor).
# VPN
Choisissez un fournisseur VPN ou une solution auto-hébergée dotée d'un protocole moderne et documenté ainsi que de clients bien audités. Évitez les protocoles obsolètes tels que [PPTP](https://en.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol#Security) au profit d'[OpenVPN](https://en.wikipedia.org/wiki/OpenVPN) ou de [WireGuard](https://www.wireguard.com/) [sur une machine virtuelle Linux](https://github.com/mrash/Wireguard-macOS-LinuxVM) ou via un ensemble d'[outils multiplateformes](https://www.wireguard.com/xplatform/).
Certains clients VPN peuvent envoyer le trafic via l'interface réseau disponible suivante lorsque la connexion est interrompue ou déconnectée. Voir [scy/8122924](https://gist.github.com/scy/8122924) pour un exemple de la façon de n'autoriser le trafic que via le VPN.
Consultez des guides pour configurer un VPN [IPsec](https://en.wikipedia.org/wiki/Ipsec) sur une machine virtuelle ([hwdsl2/setup-ipsec-vpn](https://github.com/hwdsl2/setup-ipsec-vpn)) ou un conteneur Docker ([hwdsl2/docker-ipsec-vpn-server](https://github.com/hwdsl2/docker-ipsec-vpn-server)).
Il peut être intéressant de considérer la situation géographique du fournisseur VPN. Voir la discussion plus approfondie dans [issue 114](https://github.com/drduh/macOS-Security-and-Privacy-Guide/issues/114).
Voir aussi cette [vue d'ensemble technique](https://blog.timac.org/2018/0717-macos-vpn-architecture/) du client VPN L2TP/IPsec intégré à macOS et du client [IKEv2](https://en.wikipedia.org/wiki/IKEv2).
# PGP/GPG
PGP est un standard de chiffrement et de signature de données, en particulier pour les e-mails. Il peut protéger le contenu des messages entre des correspondants qui échangent et vérifient correctement leurs clés, mais il ne protège pas les métadonnées telles que les destinataires et les objets des e-mails.
GPG (GNU Privacy Guard) est un programme open source sous licence GPL, conforme à la norme PGP. Il peut vérifier les signatures logicielles et chiffrer des fichiers [de manière symétrique](https://en.wikipedia.org/wiki/Symmetric-key_algorithm) ou à l'aide de [clés publiques](https://en.wikipedia.org/wiki/Public-key_cryptography).
Installez GnuPG avec Homebrew (`brew install gnupg`) ou installez [GPG Suite](https://gpgtools.org/).
Téléchargez [gpg.conf](https://github.com/drduh/YubiKey-Guide/blob/main/config/gpg.conf) pour utiliser les paramètres recommandés :```bash
curl -o ~/.gnupg/gpg.conf \
https://raw.githubusercontent.com/drduh/YubiKey-Guide/main/config/gpg.conf
Consultez drduh/YubiKey-Guide pour générer et gérer les identifiants.
Le courriel n'est pas conçu pour offrir une confidentialité forte par défaut : le contenu des messages peut être conservé par les fournisseurs de services, copié dans les boîtes aux lettres des destinataires, transféré ou exposé en cas de compromission du compte. Les métadonnées (notamment le destinataire, l'objet, les horodatages et les informations du serveur de messagerie) restent généralement visibles même lorsque le contenu du message est chiffré.
Thunderbird est un client de messagerie gratuit et open source prenant en charge les standards IMAP, POP, CalDAV et CardDAV. C'est un choix approprié pour accéder aux courriels et conserver des copies locales plutôt que de dépendre exclusivement du serveur distant d'un fournisseur.
Thunderbird inclut la prise en charge du chiffrement des courriels OpenPGP, qui peut protéger le contenu des messages et fournir des signatures cryptographiques. Vérifiez toujours les empreintes des clés publiques par un canal indépendant avant de vous fier à une clé pour des communications sensibles.
La fonctionnalité de messages archivés peut déplacer les messages hors des serveurs de messagerie distants vers les Dossiers locaux, améliorant ainsi la confidentialité.
XMPP est un protocole ouvert développé par l'IETF qui prend en charge la messagerie fédérée multiplateforme. Il existe de nombreuses options de clients. Envisagez d'utiliser l'un des clients basés sur le navigateur pour profiter du bac à sable du navigateur.
Selon le fournisseur, vous n'aurez peut-être besoin que d'un nom d'utilisateur et d'un mot de passe pour créer un compte.
XMPP n'est pas chiffré de bout en bout (E2EE) par défaut ; utilisez OMEMO avec un client compatible.
Signal est une application de messagerie E2EE populaire dont le protocole double-ratchet est utilisé par de nombreuses autres applications, notamment WhatsApp, Google Messages et Facebook Messenger.
Pour utiliser l'application de bureau Signal, Signal doit d'abord être installé sur un téléphone.
Consultez le guide Signal de l'EFF pour des conseils supplémentaires.
iMessage est l'application de messagerie propriétaire d'Apple. Elle nécessite un compte Apple pour être utilisée.
Activez la vérification de la clé de contact et vérifiez vos contacts.
iMessage peut être utilisé avec un numéro de téléphone ou une adresse courriel.
[!WARNING] Par défaut, la sauvegarde iCloud est activée, ce qui stocke des copies des clés de chiffrement des messages sur les serveurs d'Apple sans E2EE. Désactivez la sauvegarde iCloud ou activez la Protection avancée des données pour éviter cela. Rappelez aux destinataires de messages de faire de même.
Consultez Methods of malware persistence on Mac OS X et Malware Persistence on OS X Yosemite pour apprendre comment les logiciels malveillants macOS courants persistent.
Pour des exemples de capacités avancées de logiciels malveillants macOS, consultez le matériel de Hacking Team. Pour une analyse plus approfondie, consultez root installation for MacOS, support driver for Mac Agent et RCS Agent for Mac.
Voir aussi A Brief Analysis of an RCS Implant Installer et reverse.put.as.
Les applications de l'App Store ou notarisées par Apple peuvent réduire le risque de logiciels malveillants, mais aucun de ces processus ne garantit la sécurité. Apple effectue des contrôles automatisés sur les applications notarisées, et les applications de l'App Store passent par un examen. Sinon, obtenez les logiciels auprès de sources identifiées par le développeur comme officielles, et vérifiez que le site Web ou le téléchargement en ligne de commande utilise HTTPS.
Vérifiez si une application utilise App Sandbox:```bash
codesign --display --entitlements -
/System/Applications/Calculator.app 2>&1 |
grep -A2 com.apple.security.app-sandbox
Avec l'App Sandbox activée, la sortie doit être :```console
[Key] com.apple.security.app-sandbox
[Value]
[Bool] true
Activity Monitor peut également indiquer si elle est activée avec la colonne "Sandbox" affichée :```bash
defaults write com.apple.ActivityMonitor "UserColumnsPerTab v6.0"
-dict-add 0 '(Command, CPUUsage, CPUTime, Threads, IdleWakeUps, Architecture, GPUUsage, GPUTime, PID, UID, Sandbox, restricted)'
Le logiciel de l’App Store est tenu d’utiliser l’App Sandbox. Des applications comme Google Chrome utilisent leur propre [sandbox](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md) et peuvent ne pas utiliser l’App Sandbox.
> [!NOTE]
> Le sandboxing limite l’accès par défaut d’une application, mais les droits et les autorisations accordées par l’utilisateur peuvent étendre cet accès.
## Hardened Runtime
Vérifier si une application utilise [Hardened Runtime](https://developer.apple.com/documentation/security/hardened_runtime) :```bash
codesign --display --verbose /path/to/application.app
Si Hardened Runtime est activé, flags=0x10000(runtime) apparaîtra dans la sortie.
Listez toutes les applications avec cette fonctionnalité activée :```bash for app in /Applications/.app /System/Applications/.app; do if codesign -dvv "$app" 2>&1 | grep -q 'flags=0x10000(runtime)'; then echo "$app" fi done
**Moniteur d’activité** a la possibilité d’afficher une colonne « Restricted » qui indique qu’un programme est restreint d’injecter du code via le [lieur dynamique](https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.html) de macOS.
Le runtime durci est un prérequis pour la notarisation des applications distribuées.
## Antivirus
Pour analyser des fichiers et des applications, envisagez de les téléverser sur [VirusTotal](https://www.virustotal.com/gui/home/upload), en gardant à l’esprit que cela les rend visibles publiquement.
macOS inclut un logiciel antivirus intégré appelé [XProtect](https://support.apple.com/guide/security/protecting-against-malware-sec469d47bd8), qui s’exécute en arrière-plan et met à jour automatiquement les signatures utilisées pour détecter les logiciels malveillants. Si un logiciel malveillant est détecté, XProtect tente de le supprimer et de le mettre en quarantaine.
Vérifiez l’état des mises à jour de XProtect :```bash
xprotect version
Des applications telles que BlockBlock ou hazcod/maclaunch peuvent aider à prévenir ou détecter les logiciels malveillants persistants.
Les logiciels antivirus peuvent aider à détecter les logiciels malveillants courants, mais ils peuvent aussi augmenter la surface d'attaque car ils s'exécutent souvent avec des privilèges système étendus. Certains produits peuvent également envoyer des données de télémétrie ou des échantillons au fournisseur.
Voir Sophail: Applied attacks against Antivirus, Analysis and Exploitation of an ESET Vulnerability, Popular Security Software Came Under Relentless NSA and GCHQ Attacks, et How Israel Caught Russian Hackers Scouring the World for U.S. Secrets.
Gatekeeper vérifie la notarisation et la provenance des logiciels.
Gatekeeper avertit lors de l'ouverture d'une application non notarisée. Il peut être contourné en sélectionnant l'application listée dans System Settings > Privacy & Security après une tentative échouée.
Vérifier si Gatekeeper est activé :```bash spctl --status --verbose
# Protection de l'intégrité du système
Pour vérifier que la protection de l'intégrité du système est activée, utilisez la commande `csrutil status`, qui doit renvoyer : `System Integrity Protection status: enabled.` Sinon, [activez SIP](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) en utilisant le [mode de récupération](https://support.apple.com/102518).
# Métadonnées et artefacts
macOS associe des métadonnées ([attributs étendus APFS](https://en.wikipedia.org/wiki/Extended_file_attributes#macOS)) aux fichiers.
Certains attributs de métadonnées peuvent être consultés et supprimés avec les commandes [`mdls`](https://ss64.com/mac/mdls.html) et [`xattr`](https://ss64.com/mac/xattr.html). Les fichiers de préférences (`plist`) peuvent être lus et modifiés avec [`defaults`](https://ss64.com/mac/defaults.html).
Les métadonnées système et applicatives se trouvent dans :
- `~/Library/Preferences/`
- `~/Library/Containers/<APP>/Data/Library/Preferences`
- `/Library/Preferences`
Informations Bluetooth :
- `/Library/Preferences/com.apple.Bluetooth.plist`
Cache des travaux d'impression :
- `/var/spool/cups`
Appareils iOS précédemment connectés :
- `/Users/$USER/Library/Preferences/com.apple.iPod.plist`
- `/Library/Preferences/com.apple.iPod.plist`
Préférences du Finder :
- `~/Library/Preferences/com.apple.finder.plist`
- `~/Library/Preferences/com.apple.sidebarlists.plist`
Données de diagnostic :
- `/var/db/CoreDuet`
- `/var/db/diagnostics`
- `/var/db/systemstats`
- `/var/db/uuidtext`
- `/var/log/DiagnosticMessages`
Suggestions d'orthographe et de langue :
- `~/Library/LanguageModeling`
- `~/Library/Spelling`
- `~/Library/Suggestions`
État des applications :
- `~/Library/Saved\ Application\ State`
- `~/Library/Containers/<APPNAME>/Data/Library/Saved\ Application\ State`
Métadonnées d'enregistrement automatique :
- `~/Library/Containers/<APP>/Data/Library/Autosave\ Information`
- `~/Library/Autosave\ Information`
Analyses Siri :
- `~/Library/Assistant/SiriAnalytics.db`
Historique de QuickTime Player :
- `~/Library/Containers/com.apple.QuickTimePlayerX/Data/Library/Preferences/com.apple.QuickTimePlayerX.plist`
Métadonnées diverses :
- `~/Library/Containers/com.apple.appstore/Data/Library/Preferences/com.apple.commerce.knownclients.plist`
- `~/Library/Preferences/com.apple.commerce.plist`
- `~/Library/Preferences/com.apple.QuickTimePlayerX.plist`
# Authentification
L'application [Mots de passe](https://support.apple.com/guide/passwords/the-passwords-app-mchl901b1b95/mac) crée des [identifiants sécurisés](https://support.apple.com/guide/security/automatic-strong-passwords-secc84c811c4/web). Elle prend en charge les [passkeys](https://fidoalliance.org/passkeys/), qui sont des identifiants conçus pour résister au hameçonnage lorsqu'ils sont utilisés avec des services compatibles.
[KeePassXC](https://keepassxc.org/) est un gestionnaire de mots de passe open source et multiplateforme à considérer. Il prend en charge une authentification forte avec des jetons matériels compatibles et une extension de navigateur pour saisir automatiquement les identifiants.
Des mots de passe mémorisables peuvent être créés avec [Diceware](https://secure.research.vt.edu/diceware/).
Assurez-vous que les comptes en ligne ont activé l'[authentification multifacteur](https://en.wikipedia.org/wiki/Multi-factor_authentication). Privilégiez une authentification résistante au hameçonnage, comme les jetons matériels ou les passkeys avec les services pris en charge. Les applications d'authentification sont préférables aux codes SMS, mais toute MFA est meilleure qu'une authentification par mot de passe seul.
[YubiKey](https://www.yubico.com/products/) est un jeton d'authentification matériel populaire. Il peut également stocker des clés pour des tâches de chiffrement, de signature et d'authentification - voir [drduh/YubiKey-Guide](https://github.com/drduh/YubiKey-Guide).
GnuPG peut également gérer les mots de passe et d'autres fichiers chiffrés - voir [drduh/Purse](https://github.com/drduh/Purse) et [drduh/pwd.sh](https://github.com/drduh/pwd.sh).
# Sauvegarde
Chiffrez les fichiers localement avant de les sauvegarder sur des supports externes ou des services en ligne.
Suivez le [modèle de sauvegarde 3-2-1](https://www.cisa.gov/sites/default/files/publications/data_backup_options.pdf) : conservez trois copies des données importantes, stockez-les sur au moins deux types de supports différents, et gardez au moins une copie dans un emplacement physique distinct.
## Time Machine
[Time Machine](https://support.apple.com/104984) est l'outil intégré pour gérer les sauvegardes sur macOS. Utilisez un disque externe ou un stockage réseau pour créer des sauvegardes [chiffrées](https://support.apple.com/guide/mac-help/keep-your-time-machine-backup-disk-secure-mh21241).
## GnuPG
[GnuPG](https://www.gnupg.org/) peut être utilisé avec un mot de passe ou une clé publique, la clé privée étant stockée sur [YubiKey](https://github.com/drduh/YubiKey-Guide).
Compressez et chiffrez un répertoire à l'aide d'un mot de passe :```bash
tar zcvf - ~/Downloads |
gpg -c > ~/Downloads/backup-$(date +%F-%H%M%S).tar.gz.gpg
Déchiffrer et décompresser le répertoire :```bash gpg -o ~/Downloads/decrypted-backup.tar.gz -d ~/Downloads/backup-*.tar.gz.gpg tar zxvf ~/Downloads/decrypted-backup.tar.gz
## Utilitaire de disque
Des volumes chiffrés peuvent être créés à l'aide de l'[Utilitaire de disque](https://support.apple.com/guide/disk-utility/toc) ou de `hdiutil` :```bash
hdiutil create ~/Downloads/encrypted.dmg -encryption -size 50M -volname "secretStuff"
hdiutil mount ~/Downloads/encrypted.dmg
cp -v ~/Documents/passwords.txt /Volumes/secretStuff
hdiutil eject /Volumes/secretStuff
Tresorit et restic peuvent également présenter un intérêt.
Les noms de réseaux Wi-Fi, appelés SSID, et le comportement de sondage des appareils peuvent révéler des informations sur les réseaux à proximité et précédemment utilisés. Les réseaux cachés n'offrent pas de confidentialité significative et peuvent amener les appareils à les sonder activement.
Définissez une adresse Wi-Fi privée pour réduire le suivi réseau.
Réglez la sécurité du réseau sans fil sur WPA3. Suivez les recommandations d'Apple pour configurer les réglages recommandés pour les routeurs et les points d'accès.
Pour les connexions SSH à distance, utilisez une clé SSH unique protégée par une phrase de passe ou un jeton matériel, vérifiez les clés d'hôte du serveur et évitez l'authentification par mot de passe. Consultez drduh/config/ssh_config pour les options client recommandées.
Un tunnel SSH peut acheminer le trafic en toute sécurité via un autre ordinateur, à l'instar d'un VPN. Pour utiliser Privoxy exécuté sur un hôte distant sur le port 8118 :```bash ssh -C -L 5555:127.0.0.1:8118 [email protected] sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 5555 sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 5555
Ou pour utiliser une connexion SSH comme [proxy SOCKS](https://www.mikeash.com/ssh_socks.html) :```bash
ssh -NCD 3000 [email protected]
Par défaut, macOS n'a pas activé la connexion à distance (serveur SSH).
Pour activer SSH et autoriser les connexions entrantes, utilisez Réglages Système > Général > Partage ou la commande :```bash sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Désactiver l'authentification par mot de passe et envisager d'appliquer un [durcissement](https://stribika.github.io/2015/01/04/secure-secure-shell.html) supplémentaire à la configuration du serveur SSH. Voir [drduh/config/sshd_config](https://github.com/drduh/config/blob/main/sshd_config) pour les options recommandées.
Confirmer que le serveur SSH est en cours d'exécution :```bash
sudo lsof -Pni TCP:22
Ne laissez pas l'ordinateur sans surveillance dans des endroits non sûrs. Un attaquant expérimenté ayant un accès physique sans surveillance pourrait installer un keylogger matériel pour enregistrer les frappes clavier, y compris les mots de passe. Utiliser un Mac avec un clavier intégré ou un clavier Bluetooth rend cela plus difficile, car de nombreuses versions prêtes à l'emploi de cette attaque sont conçues pour être branchées entre un clavier USB et l'ordinateur.
Pour réduire les conséquences d'un vol pendant l'utilisation d'un Mac, envisagez d'utiliser buskill/buskill-app ou Lennolium/swiftGuard.
Envisagez d'acheter un écran/filtre de confidentialité pour une utilisation en public.
Vernis à ongles et des scellés de détection d'effraction peuvent être appliqués sur les composants pour détecter toute altération.
Surveillez les journaux système avec Console ou la commande log stream.
Affichez tous les journaux système des 5 dernières minutes au format syslog classique :```bash log show --last 5m --style syslog
Sortie sous forme de tableau JSON :```bash
log show --last 5m --style json
Générez un JSON délimité par des retours à la ligne (un objet JSON par ligne); requis pour jq:```bash log show --last 5m --style ndjson
Filtrez les messages par sous-système, par exemple depuis `com.apple.SoftwareUpdate`:```bash
log show --last 1h --style json \
--predicate 'subsystem == "com.apple.SoftwareUpdate"'
Filtrer les messages par contenu, par exemple contenant failed:```bash
log show --last 1h --predicate 'eventMessage CONTAINS "failed"'
Filtrage des messages insensible à la casse :```bash
log show --last 1h --predicate 'eventMessage CONTAINS[c] "error"'
Comptez les messages d'erreur distincts avec jq:```bash
log show --last 1h --style ndjson
--predicate 'eventMessage CONTAINS[c] "error"' |
jq -r '.eventMessage' | sort | uniq -c | sort -nr | head -100
Exporter les journaux vers une archive, qui peut être ouverte avec Console :```bash
log collect --last 1h --output ~/Downloads/logs-$(date +%F-%H%M).logarchive
La Protection de l'intégrité du système interfère avec DTrace et doit être partiellement désactivée avant utilisation.
iosnoop surveille les entrées/sorties disqueopensnoop surveille l'ouverture des fichiersexecsnoop surveille les processuserrinfo surveille les appels système échouésdtruss surveille tous les appels systèmeVoir man -k dtrace pour plus d'informations.
Listez les processus en cours avec le Moniteur d'activité ou la commande ps.
Listez les connexions réseau ouvertes :```bash sudo lsof -Pni
Listez le contenu de diverses structures de données liées au réseau :```bash
sudo netstat -n -p tcp
sudo netstat -n -p udp | sort | uniq
Wireshark peut être utilisé en ligne de commande avec tshark.
Remplacez en0 par l'interface active affichée par networksetup -listallhardwareports.
[!IMPORTANT] Capturez le trafic uniquement sur les réseaux et systèmes que vous êtes autorisé à surveiller.
Surveillez le DNS :```bash
/Applications/Wireshark.app/Contents/MacOS/tshark -i en0
-Y "dns.flags.response == 1" -Tfields
-e frame.time_delta
-e dns.qry.name
-e dns.a
-Eseparator=,
Surveiller HTTP:```bash
/Applications/Wireshark.app/Contents/MacOS/tshark -i en0 \
-Y "http.request or http.response" -Tfields \
-e ip.dst \
-e http.request.full_uri \
-e http.request.method \
-e http.response.code \
-e http.response.phrase \
-Eseparator=/s
Surveiller les certificats TLS :```bash
/Applications/Wireshark.app/Contents/MacOS/tshark -i en0
-Y "ssl.handshake.certificate" -Tfields
-e ip.src
-e x509sat.uTF8String
-e x509sat.printableString
-e x509sat.universalString
-e x509sat.IA5String
-e x509sat.teletexString
-Eseparator=/s -Equote=d
# Divers
## Économiseur d'écran
Verrouiller l'écran dès que l'économiseur d'écran démarre :```bash
defaults write com.apple.screensaver askForPassword -int 1
defaults write com.apple.screensaver askForPasswordDelay -int 0
Désactivez Données de diagnostic et d’utilisation.
Désactivez le rapporteur de plantage (la boîte de dialogue qui apparaît après le plantage d’une application et invite à signaler le problème à Apple) :```bash defaults write com.apple.CrashReporter DialogType none
## Media player
Use [QuickTime Player](https://en.wikipedia.org/wiki/Quicktime_player), the built-in media application, for playing music and video files. It uses [App Sandbox](https://developer.apple.com/documentation/security/app_sandbox/protecting_user_data_with_app_sandbox), [Hardened Runtime](https://developer.apple.com/documentation/xcode/configuring-the-hardened-runtime), and benefits from the [Signed System Volume](https://support.apple.com/guide/security/signed-system-volume-security-secd698747c9/web) as part of the base system.
## File handlers
Manage [default file handlers](https://support.apple.com/guide/mac-help/choose-an-app-to-open-a-file-on-mac-mh35597) to reduce risk of opening certain file types.
Change the default app for script files so that opening them displays their contents instead of executing them.
In Finder, locate and select any .sh file, right-click on it and select Get Info or press <kbd>Command</kbd> + <kbd>I</kbd>. In the "Open with" section, select TextEdit from the dropdown menu. If it is not listed, select "Other..." and Applications > TextEdit.app. Select "Change All..." and confirm by selecting Continue.
## Finder options
Show hidden files and the Library folder in Finder:```bash
defaults write com.apple.finder AppleShowAllFiles -bool true
chflags nohidden ~/Library
Afficher toutes les extensions de fichiers:```bash defaults write NSGlobalDomain AppleShowAllExtensions -bool true
Ne définissez pas l'enregistrement des documents sur iCloud par défaut :```bash
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
Définissez un umask personnalisé:```bash sudo launchctl config user umask 077
Redémarrez, puis créez un fichier/répertoire et vérifiez les permissions (macOS permet par défaut l'accès en lecture pour 'groupe/autres'):```console
$ ls -ld umask*
drwx------@ 2 user1 staff 64 Jul 26 12:00 umask.dir
-rw-------@ 1 user1 staff 32 Jul 26 12:00 umask.txt
Activez la saisie sécurisée au clavier dans Terminal (cela peut interférer avec des applications telles que TextExpander).
Désactivez les annonces multicast Bonjour (cela désactive également les fonctionnalités AirPlay et AirPrint) :```bash
sudo defaults write /Library/Preferences/com.apple.mDNSResponder
NoMulticastAdvertisements -bool YES
Désactivez les fonctionnalités [Handoff](https://support.apple.com/guide/mac-help/change-airdrop-handoff-settings-mchl6a407f99) et [Bluetooth](https://support.apple.com/guide/mac-help/turn-bluetooth-on-or-off-blth1008).
## Sudoers
macOS inclut cette ligne dans `/etc/sudoers` :```bash
Defaults env_keep += "HOME MAIL"
Cela empêche sudo de modifier HOME lors de l'élévation des privilèges. Par conséquent, les programmes exécutés avec sudo peuvent utiliser les fichiers de configuration du répertoire personnel de l'utilisateur appelant. Envisagez de retirer HOME de env_keep sauf si ce comportement est spécifiquement requis.
Pour conserver la commodité de l'utilisateur root ayant le répertoire personnel d'un utilisateur non root, ajoutez une ligne d'exportation à /var/root/.zshrc, par ex. :```bash
export HOME=/Users/user1
# Logiciels associés
Logiciel | Catégorie | Description
:-: | :-: | :-
[lynis](https://github.com/CISOfy/lynis) | Scanner d'audit | Outil d'audit de sécurité multiplateforme qui vérifie la configuration du système et suggère des améliorations de durcissement.
[zentral](https://github.com/zentralopensource/zentral) | Plateforme de surveillance et de configuration | Serveur de gestion de parc pour les terminaux macOS ; collecte l'inventaire, les événements, les audits et les résultats osquery. Idéal pour les environnements gérés.
[osquery](https://github.com/osquery/osquery) | Moteur de surveillance | Expose l'état du système d'exploitation sous forme de tables SQL, permettant des vérifications reproductibles des processus, des utilisateurs, des éléments de démarrage, des connexions réseau, et plus encore.
[pareto-mac](https://github.com/paretoSecurity/pareto-mac) | Scanner d'audit | Application de barre de menus qui vérifie un Mac par rapport aux recommandations de sécurité de référence communes.
# Ressources supplémentaires
- [Aperçu de la sécurité et de la confidentialité d'iCloud](https://support.apple.com/102651)
- [Guide d'autodéfense contre la surveillance de l'EFF](https://ssd.eff.org/)
- [beerisgood/macOS_Hardening](https://github.com/beerisgood/macOS_Hardening)
- [Blog de rétro-ingénierie macOS](https://reverse.put.as/)
- [Ressources de rétro-ingénierie](http://samdmarshall.com/re.html)
- [Blog de Malwarebytes](https://www.malwarebytes.com/blog)
- [Blog d'Objective-See](https://objective-see.com/blog.html)
- [Benchmarks CIS](https://www.cisecurity.org/benchmark/apple_os/)
- [Open Source d'Apple](https://opensource.apple.com/)
- [iOS, l'avenir de macOS, la liberté, la sécurité et la confidentialité dans un environnement mondial de plus en plus hostile](https://gist.github.com/iosecure/357e724811fe04167332ef54e736670d)
Cliquez prudemment
| Adversaire | Motivation | Capacités | Mesures d'atténuation |
|---|
| Colocataire | Voir les conversations privées ou l'historique de navigation | Proximité immédiate ; peut voir l'écran ou observer les identifiants | Utiliser l'authentification biométrique (empreinte ou visage), utiliser un filtre de confidentialité, garder le téléphone verrouillé quand il n'est pas utilisé |
| Voleur | Déverrouiller le téléphone, voler des informations personnelles, vider les comptes bancaires et revendre le téléphone | Observer la saisie du mot de passe, voler un appareil connecté laissé sans surveillance | Garder l'appareil physiquement en sa possession à tout moment, verrouiller les appareils lorsqu'ils ne sont pas utilisés, éviter de saisir le mot de passe en public, utiliser Find My ou des services similaires pour suivre ou désactiver à distance les appareils volés |
| Criminel | Gain financier | Ingénierie sociale (manipulation d'un utilisateur pour lui faire révéler des informations ou prendre des actions dangereuses), logiciels malveillants facilement disponibles, réutilisation de mots de passe, exploitation de vulnérabilités | Isoler les logiciels, activer les fonctions de sécurité du système, maintenir les mises à jour logicielles automatiques |
| Entreprise | Marketing basé sur les données utilisateur | Collecte de télémétrie et de données comportementales | Bloquer les connexions réseau, réinitialiser les identifiants spécifiques à l'appareil, éviter d'ajouter des données de paiement |
| État-nation/APT | Surveillance ciblée | Surveillance passive de l'infrastructure Internet, analyse avancée du chiffrement | Utiliser des logiciels open-source, des identifiants diceware robustes, du matériel avec élément sécurisé, éteindre les appareils lorsqu'ils ne sont pas utilisés, alertes tripwire/honeypot/canary tokens |
| Commande | Tâche |
|---|
sudo pfctl -t blocklist -T show | afficher la blocklist |
sudo pfctl -s rules | afficher les règles actives |
sudo pfctl -s states | afficher la table d'états |
sudo ifconfig pflog0 create | créer l'interface de journalisation des paquets |
sudo tcpdump -ni pflog0 | surveiller les paquets bloqués |
| Command | Task |
|---|
launchctl list | view user jobs |
sudo launchctl list | view system jobs |
launchctl list com.apple.Finder | examine a service |
systemextensionsctl list | list system extensions |
ls /System/Library/LaunchDaemons | list system daemons |
ls /System/Library/LaunchAgents | list system agents |