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
-
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 ?).
-
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.
-
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.
-
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.