Audit de service
Une grande partie de la sécurité consiste à analyser nos systèmes, à comprendre les surfaces d'attaque disponibles et à verrouiller au mieux les composants.
L'audit de service est un moyen de savoir quels services s'exécutent sur un système donné, quels ports ils utilisent pour la communication et quels protocoles sont acceptés. Ces informations peuvent vous aider à configurer les services qui doivent être accessibles au public, les paramètres du pare-feu, ainsi que la surveillance et les alertes.
Comment l'audit des services améliore-t-il la sécurité?
Les serveurs peuvent exécuter des processus à des fins internes et pour gérer des clients externes. Chaque service en cours d'exécution, qu'il soit destiné à être interne ou public, représente une surface d'attaque étendue pour les utilisateurs malveillants. Plus vous exécutez de services, plus le risque de vulnérabilité affectant votre logiciel est grand.
Une fois que vous avez une bonne idée des services réseau exécutés sur votre machine, vous pouvez commencer à analyser ces services. Lorsque vous effectuez un audit de service, posez-vous les questions suivantes sur chaque service en cours d'exécution:
Ce service doit-il fonctionner?
Le service s'exécute-t-il sur des interfaces réseau sur lesquelles il ne devrait pas s'exécuter?
Le service doit-il être lié à une interface de réseau public ou privé?
Mes règles de pare-feu sont-elles structurées pour transmettre le trafic légitime à ce service?
Mes règles de pare-feu bloquent-elles le trafic qui n'est pas légitime?
Ai-je une méthode pour recevoir des alertes de sécurité sur les vulnérabilités pour chacun de ces services?
Ce type d'audit de service doit être une pratique standard lors de la configuration d'un nouveau serveur dans votre infrastructure. Effectuer des audits de service tous les quelques mois vous aidera également à détecter tous les services dont les configurations peuvent avoir été modifiées involontairement.
Comment effectuer des audits de service
Pour auditer les services réseau en cours d'exécution sur votre système, utilisez la commande pour répertorier tous les ports TCP et UDP en cours d'utilisation sur un serveur. Un exemple de commande qui montre le nom du programme, le PID et les adresses utilisées pour écouter le trafic TCP et UDP est:
sudo ss -plunt
Vous recevrez une sortie similaire à celle-ci:
Les colonnes principales qui nécessitent votre attention sont les colonnes Netid, Local Address: Port et Process name. Si l'adresse locale: port est 0.0.0.0, le service accepte les connexions sur toutes les interfaces réseau IPv4. Si l'adresse est, [::] le service accepte les connexions sur toutes les interfaces IPv6. Dans l'exemple de sortie ci-dessus, SSH et Nginx écoutent tous les deux sur toutes les interfaces publiques, sur les piles réseau IPv4 et IPv6.
Avec cet exemple de sortie, vous pouvez décider si vous souhaitez autoriser SSH et Nginx à écouter sur les deux interfaces, ou uniquement sur l'une ou l'autre. En règle générale, vous devez désactiver les services qui s'exécutent sur des interfaces inutilisées. Par exemple, si votre site ne doit être accessible que via IPv4, vous empêcheriez explicitement un service d'écouter sur les interfaces IPv6 pour réduire le nombre de services exposés.
Mises à jour sans assistance
Garder vos serveurs à jour avec des correctifs est indispensable pour garantir un bon niveau de sécurité de base. Les serveurs obsolètes et les versions non sécurisées des logiciels sont responsables de la majorité des compromis, mais des mises à jour régulières peuvent atténuer les vulnérabilités et empêcher les attaquants de prendre pied sur vos serveurs.
Les mises à jour traditionnelles nécessitent qu'un administrateur vérifie et installe manuellement les mises à jour des différents packages sur leur serveur; cela peut prendre beaucoup de temps et il est possible d'oublier ou de rater une mise à jour majeure. En revanche, les mises à jour sans assistance permettent au système de mettre à jour automatiquement une majorité de packages.
Comment les mises à jour sans assistance améliorent-elles la sécurité?
L'implémentation de mises à jour sans surveillance réduit le niveau d'effort requis pour assurer la sécurité de vos serveurs et raccourcit la durée pendant laquelle vos serveurs peuvent être vulnérables aux bogues connus. En cas de vulnérabilité affectant le logiciel de vos serveurs, vos serveurs seront vulnérables pendant le temps qu'il vous faudra pour exécuter les mises à jour. Des mises à niveau quotidiennes sans surveillance garantiront que vous ne manquerez aucun paquet et que tout logiciel vulnérable sera corrigé dès que des correctifs seront disponibles.
En conjonction avec l'audit de service mentionné précédemment, l'exécution automatique des mises à jour peut réduire considérablement votre exposition aux attaques et réduire le temps passé à maintenir la sécurité de votre serveur.
Comment mettre en œuvre des mises à jour sans assistance
plupart des distributions de serveurs proposent désormais des mises à jour sans assistance en option. Par exemple, sur Ubuntu, un administrateur peut exécuter:
sudo apt install unattended-upgrades
Remarque: Ces mécanismes mettront uniquement à jour automatiquement les logiciels installés via le gestionnaire de paquets de votre système. Assurez-vous que tous les logiciels supplémentaires que vous exécutez, comme des applications Web, sont soit configurés pour des mises à jour automatiques, soit vérifiés manuellement régulièrement.
Désactiver les index de répertoire
La plupart des serveurs Web sont configurés par défaut pour afficher les index de répertoires lorsqu'un utilisateur accède à un répertoire dépourvu de fichier d'index. Par exemple, si vous deviez créer un répertoire appelé download s sur votre serveur Web sans aucune configuration supplémentaire, tous les fichiers seraient visibles par toute personne parcourant le répertoire. Dans de nombreux cas, ce n'est pas un problème de sécurité, mais il est très possible que quelque chose de confidentiel soit exposé. Par exemple, si vous deviez créer un répertoire d'index sur votre serveur Web pour votre site Web, le répertoire peut contenir le fichier de la page d'accueil de votre site Web et un fichier de configuration contenant les informations d'identification de la base de données principale du site Web. Sans désactiver les index du répertoire, les deux fichiers du dossier seraient visibles par toute personne parcourant le répertoire.
Comment la désactivation des index de répertoire améliore-t-elle la sécurité?
Les index de répertoires ont des objectifs légitimes, mais ils exposent souvent involontairement des fichiers aux visiteurs. La désactivation des index de répertoire par défaut pour votre serveur Web élimine le risque de perte accidentelle de données, de fuite ou d'exploitation en rendant les fichiers de répertoire invisibles pour les visiteurs. Les visiteurs peuvent toujours accéder aux fichiers s'ils existent dans le répertoire, mais la désactivation de l'indexation rend les fichiers beaucoup plus difficiles à découvrir involontairement.
Dans la plupart des cas, la désactivation des index d'annuaire consiste à ajouter une ligne à la configuration de votre serveur Web.
Nginx désactive les index de répertoires par défaut, donc si vous utilisez Nginx, vous ne devriez pas avoir besoin d'apporter de modifications.
La page DirectoryListings sur le wiki Apache explique comment désactiver les listes de répertoires. Assurez-vous d'utiliser l' Options -Indexes.
Sauvegarder fréquemment
Bien qu'elles ne soient pas strictement une mesure de sécurité, les sauvegardes peuvent être cruciales pour sauvegarder les systèmes et les données compromis, et pour analyser comment le système a été compromis. Par exemple, si votre serveur est compromis par un ransomware (un outil malveillant ou un virus qui crypte les fichiers et ne les décrypte que si l'attaquant reçoit une somme d'argent), un manque de sauvegardes peut signifier que votre seul choix est de payer pour obtenir votre retour des données. Si vos systèmes et données sont sauvegardés régulièrement et en toute sécurité, vous pourrez accéder et récupérer vos données sans interagir avec le système compromis.
Comment les sauvegardes fréquentes améliorent-elles la sécurité?
Des sauvegardes fréquentes permettent de récupérer les données en cas de suppression accidentelle et en cas d'attaque où vos données sont supprimées ou corrompues. Dans les deux cas, ils contribuent à atténuer le risque de perte de données en conservant des copies des données antérieures à une suppression accidentelle ou avant qu'une attaque ne se produise.
En plus des cas de ransomwares, des sauvegardes régulières peuvent aider à l'analyse médico-légale des attaques à long terme. Si vous n'avez pas d'historique de vos données, il peut être difficile, voire impossible, de déterminer quand une attaque a commencé et quelles données ont été compromises.
Comment mettre en œuvre des sauvegardes fréquentes
Lors de la mise en œuvre de sauvegardes pour vos systèmes, considérez la récupération des données compromises ou supprimées comme l'objectif. Posez-vous la question: si mon serveur disparaît demain, quelles mesures doivent être prises pour le remettre en marche et fonctionner en toute sécurité avec le moins de travail possible?
Voici quelques autres questions à prendre en compte lors de l'élaboration d'un plan de reprise après sinistre:
La dernière sauvegarde doit-elle toujours être utilisée? En fonction de la fréquence à laquelle vos données changent et du moment où une compromission ou une suppression se produit, cela peut réduire le risque de passer par défaut à une sauvegarde plus ancienne.
Quel est le processus réel de restauration de la sauvegarde?
Avez-vous besoin de créer un nouveau serveur ou de restaurer le serveur existant?
Combien de temps pouvez-vous survivre sans ce serveur en action?
Avez-vous besoin de sauvegardes hors site ?
Comments