4 votes

Comment bloquer tous les ports à l'exception de 443 sur MacOS Catalina ?

Je suis conscient que cela va briser beaucoup de fonctionnalités intégrées sur MacOS, mais pour des raisons de test, je veux bloquer temporairement tous les ports tcp entrants / sortants sur MacOS Catalina, à l'exception de 443.

Comment puis-je faire en sorte qu'il soit facile de l'activer ou de le désactiver une fois qu'il est mis en place ?

12voto

Douglas Points 10417

Le pare-feu applicatif d'Apple est conçu pour comporter de nombreuses exceptions afin de fonctionner avec ses services, de sorte que les préférences du système nécessiteront de nombreux clics. Je vais suggérer une méthode plus proche de la ligne de commande pour réaliser ce changement important dans l'accès aux ports pour le pare-feu intégré de pf (pas besoin de logiciel supplémentaire).

Voici une règle simple qui bloque tout le trafic à l'exception des ports 80 et 443 (http et https). Je ne conseille pas de l'enregistrer dans votre /etc/pf.conf au cas où les choses tourneraient mal - un simple redémarrage (si vous avez pf (qui doit être chargé au démarrage), ce qui arrangera les choses. J'ai utilisé le nom de fichier ~/pf_rules01.conf Vous pouvez l'appeler comme vous voulez.

Créer le fichier de règles

# Set the interface to be used
if="en0"

# Default Deny Policy
block all

# Skip the loop back interface
set skip on lo

# Set http(80) & https (443) ports #
web_ports = "{80 443}"

# Pass in only web traffic
pass in quick on $if proto tcp to any port $web_ports keep state
pass out quick on $if proto tcp to any port $web_ports keep state

Tester le fichier

Avant d'activer le nouvel ensemble de règles (gardez à l'esprit que vous devez en particulier a demandé que tous les protocoles soient bloqués sauf le 443), vous pouvez vérifier s'il y a des erreurs de syntaxe à l'aide de la commande :

$ sudo pfctl -n -f /path/to/rulefile
  • Les -n raconte pfctl pour analyser les règles
  • Les -f spécifie le fichier à charger ; la valeur par défaut est /etc/pf.conf

Activer pf

Si tout va bien, activez l'ensemble de règles à l'aide de l'option -e drapeau

$ sudo pfctl -e -f /path/to/rulefile

Test...

À partir d'une autre machine, lancez la commande telnet <machinename || IPaddress> 80 de l'hébergeur de votre serveur web. Si tout fonctionne, vous obtiendrez quelque chose de similaire à ce qui suit :

Trying 192.168.1.123...
Connected to testmachine.home.
Escape character is '^]'.

Succès ! Vous pouvez également essayer de faire pointer votre navigateur sur l'adresse et si vous obtenez une réponse du serveur, cela fonctionne.

Mises en garde

  1. Cela bloque tout le trafic à l'exception de 80 et 443 (http et https). Si vous vous connectez en SSH à cette boîte, vous devez volonté perdre votre connexion parce qu'il ne passe pas SSH (port 22) en entrée ou en sortie (peut-être passer 22 aussi ?).

  2. en0 est mon adaptateur réseau (câblé). La vôtre peut être différente. Pour obtenir une liste de vos interfaces réseau, utilisez la commande ifconfig commande. Elles se trouvent généralement en tête de la sortie, en commençant par en0 , en1 etc.

  3. Ceci a été testé sur un serveur FreeBSD fonctionnant sous dhttpd (pas Apache). Vous ne pouvez pas tester si vous n'avez pas quelque chose écouter et répondre sur les ports qui vous intéressent.

    En général, je ne fais pas tourner de serveur web sur mon Mac, mais dans des VMs pour des raisons de portabilité, de sécurité et de stabilité. Cependant, je n'ai pas l'habitude de faire tourner un serveur web sur mon Mac, pf est basé sur BSD et les règles et commandes sont identiques.

  4. Si vous souhaitez désactiver cette fonction, il vous suffit d'exécuter la commande suivante sudo pfctl -d et il désactivera le pf pare-feu.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X