VEUILLEZ NOTER : Je n'ai pas envie d'en faire une guerre de mots ! Je comprends que de nombreuses personnes ont des convictions bien ancrées sur ce sujet, en grande partie parce qu'elles ont investi beaucoup d'efforts dans leurs solutions de pare-feu, et aussi parce qu'elles ont été endoctrinées pour croire en leur nécessité.
Cependant, je cherche des réponses de personnes qui sont experts en matière de sécurité. Je pense qu'il s'agit d'une question importante, et que la réponse ne profitera pas seulement à moi-même et à l'entreprise pour laquelle je travaille. Je fais fonctionner notre réseau de serveurs depuis plusieurs années sans aucun compromis, sans aucun pare-feu. Aucune des compromissions de sécurité que nous ont aurait pu être évité avec un pare-feu.
Je suppose que je travaille ici depuis trop longtemps, car lorsque je parle de "serveurs", j'entends toujours "services offerts au public", et non "bases de données de facturation internes secrètes". En tant que tel, toute règle que nous serait dans un pare-feu devrait permettre l'accès à l'ensemble de l'Internet. De plus, nos serveurs d'accès public sont tous dans un centre de données dédié, séparé de nos bureaux.
Quelqu'un d'autre a posé une question similaire, et ma réponse a été votée en nombre négatif. Cela m'amène à penser que soit les personnes qui ont voté n'ont pas vraiment compris ma réponse, soit je ne comprends pas suffisamment la sécurité pour faire ce que je fais actuellement.
C'est mon approche de la sécurité des serveurs :
-
Suivez les instructions de mon système d'exploitation directives de sécurité avant en connectant mon serveur à Internet.
-
Utilisez des wrappers TCP pour limiter l'accès à SSH (et à d'autres services de gestion) à un petit nombre d'adresses IP.
-
Surveillez l'état de ce serveur avec Munin . Et corriger les problèmes de sécurité flagrants inhérents à Munin-node dans sa configuration par défaut.
-
Nmap mon nouveau serveur (également avant de connecter mon serveur à Internet). Si je devais mettre un pare-feu sur ce serveur, il s'agirait de l'ensemble exact de ports sur lesquels les connexions entrantes devraient être limitées.
-
Installez le serveur dans la salle des serveurs et donnez-lui une adresse IP publique.
-
Assurez la sécurité du système en utilisant la fonction de mise à jour de sécurité de mon système d'exploitation.
Ma philosophie (et la base de la question) est qu'une sécurité forte basée sur l'hôte supprime la nécessité d'un pare-feu. La philosophie générale en matière de sécurité indique qu'une sécurité forte basée sur l'hôte est toujours nécessaire même si vous avez un pare-feu (cf. directives de sécurité ). La raison en est qu'un pare-feu qui transmet des services publics à un serveur permet tout autant à un attaquant qu'aucun pare-feu. C'est le service lui-même qui est vulnérable, et puisque l'offre de ce service à l'ensemble de l'Internet est une condition de son fonctionnement, il n'est pas nécessaire d'en restreindre l'accès.
S'il y a son des ports disponibles sur le serveur qui n'ont pas besoin d'être accédés par l'ensemble de l'Internet, alors ce logiciel a dû être arrêté à l'étape 1, et a été vérifié à l'étape 4. Si un attaquant réussit à s'introduire dans le serveur par le biais d'un logiciel vulnérable et ouvre lui-même un port, il peut (et il le fait) tout aussi facilement déjouer n'importe quel pare-feu en établissant une connexion sortante sur un port aléatoire à la place. Le but de la sécurité n'est pas de se défendre après une attaque réussie - il a déjà été prouvé que c'était impossible - mais d'empêcher les attaquants d'entrer en premier lieu.
Il a été suggéré qu'il y a d'autres considérations de sécurité que les ports ouverts - mais pour moi, cela revient à défendre sa foi. Les vulnérabilités du système d'exploitation/de la pile TCP devraient être les mêmes, qu'il y ait ou non un pare-feu, car les ports sont transmis directement à ce système d'exploitation/cette pile TCP. De même, le fait d'installer votre pare-feu sur le serveur lui-même plutôt que sur le routeur (ou pire, aux deux endroits) semble ajouter des couches de complexité inutiles. Je comprends la philosophie "la sécurité vient en couches", mais il arrive un moment où c'est comme construire un toit en empilant un nombre X de couches de contreplaqué les unes sur les autres, puis en perçant un trou à travers toutes ces couches. Une autre couche de contreplaqué ne va pas arrêter les fuites par ce trou que vous faites exprès.
Pour être honnête, la seule façon dont je vois un pare-feu être utile pour les serveurs est s'il a des règles dynamiques empêchant toutes les connexions à tous les serveurs de la part d'attaquants connus - comme les RBL pour le spam (ce qui, par coïncidence, est à peu près ce que fait notre serveur de messagerie). Malheureusement, je ne trouve aucun pare-feu qui fasse cela. La meilleure solution suivante est un serveur IDS, mais cela suppose que l'attaquant n'attaque pas d'abord vos serveurs réels et qu'il prenne la peine de sonder l'ensemble de votre réseau. avant d'attaque. En outre, ces derniers sont connus pour produire un grand nombre de faux positifs.