L'analyse de sécurité de l'infrastructure d'hébergement - Karitchi/woodytoys-admin2-b2-q2-y22_23 GitHub Wiki
Biermez Nicolas groupe 2TM1-4
Identification des biens à protéger
Le serveur
: L'accès au serveur via ssh doit uniquement être possible pour les administrateurs.Le réseau
: Le serveur doit être en mesure de rejeter tout trafic réseau suspect/interdit.Les fichiers de configurations docker
: Si des conteneurs "se perdent" d'une manière ou d'une autre, il nous faut les fichiers de configurations nécessaires pour remettre l'entièreté de l'infrastructure docker en marche.Les fichiers de configurations de chaque service
: Si pour une raison ou une autre, des fichiers de configurations "se perdent" il faut que nous puissions les restaurer.
Identification des menaces / failles
-
Accès non autorisé
: Des attaquants pourraient tenter d'accéder illégalement à la VM en exploitant des vulnérabilités ou en utilisant des techniques d'ingénierie sociale pour obtenir des informations d'identification. -
Vulnérabilités dans les services tiers
: Si la VM utilise des services tiers, il est possible que ces services aient des vulnérabilités qui pourraient être exploitées pour compromettre la VM. -
Mauvaise configuration de sécurité
: Une mauvaise configuration des paramètres de sécurité de la VM, des règles de pare-feu, des autorisations d'accès ou des contrôles de sécurité pourrait ouvrir des failles de sécurité et permettre des accès non autorisés ou des compromissions. -
Vulnérabilités de logiciels et de systèmes d'exploitation
: Les logiciels et les systèmes d'exploitation peuvent avoir des vulnérabilités connues qui pourraient être exploitées par des attaquants. -
Malwares et virus
: Les malwares et les virus peuvent infecter la VM, entraînant la compromission des données ou la perturbation du système. -
Vulnérabilités dans les conteneurs Docker
: Les conteneurs Docker utilisés dans la VM peuvent avoir des vulnérabilités qui pourraient être exploitées pour compromettre le système. -
Fuites d'informations sensibles
: Les données sensibles stockées dans la VM peuvent être exposées en raison de mauvaises configurations de sécurité, de vulnérabilités ou de violations de la confidentialité. -
Attaques de tous genre
: Attaques par force brute et compromission des identifiants d'accès, attaques de déni de service (DDoS), attaques par injection de code, attaques de phishing, attaques de script entre sites (XSS), attaques de débordement de tampon, attaques de vol de session, accès non autorisé aux données ou aux systèmes, vulnérabilités de configuration, attaques de canaux latéraux, compromission des identifiants d'accès,...
Prioritisation des risques (impact * probabilité)
Il me parait assez compliqué de créer une liste exhaustive de tous ces risques, ils doivent tous être pris en compte. Selon moi, toutes ces menaces peuvent être très impactantes et probables.
Identification et sélection des contre-mesures
Accès non autorisé
:
- Il faut utiliser des pratiques solides de gestion des identités et des accès, telles que l'utilisation de mots de passe forts, l'authentification multifactorielle (MFA) et la rotation régulière des mots de passe.
- Il est nécessaire de mettre en place un contrôle d'accès basé sur les rôles (RBAC) pour limiter les privilèges d'accès aux ressources de la VM.
- Il est recommandé de surveiller les journaux d'activité et de mettre en place des systèmes de détection d'intrusion pour détecter les tentatives d'accès non autorisées.
- Sensibilisez les utilisateurs à l'importance de la sécurité des informations d'identification et à la reconnaissance des techniques d'ingénierie sociale.
Vulnérabilités dans les services tiers
:
- Il est essentiel de sélectionner des services tiers réputés et bien établis qui mettent en œuvre des pratiques de sécurité solides.
- Il faut maintenir à jour les versions des services tiers utilisées pour bénéficier des correctifs de sécurité.
- Il est recommandé d'effectuer régulièrement des évaluations de sécurité pour identifier les éventuelles vulnérabilités dans les services tiers.
- Surveillez les annonces de sécurité des fournisseurs de services tiers et appliquez les correctifs et les recommandations de sécurité recommandées.
Mauvaise configuration de sécurité
:
- Il est important de suivre les meilleures pratiques de sécurité recommandées par le fournisseur de cloud (Google Cloud Platform, par exemple) pour configurer correctement les paramètres de sécurité de la VM.
- Il faut limiter les connexions réseau entrantes uniquement aux ports nécessaires et configurer correctement les règles de pare-feu pour bloquer les accès non autorisés.
- Il est recommandé d'effectuer des évaluations régulières de sécurité pour identifier les configurations incorrectes et les erreurs de sécurité.
- Mettez en place des contrôles d'audit et de surveillance pour détecter toute violation de la configuration de sécurité.
Vulnérabilités de logiciels et de systèmes d'exploitation
:
- Mettre à jour régulièrement les logiciels et les systèmes d'exploitation avec les derniers correctifs de sécurité.
- Surveiller les avis de sécurité et les bulletins de vulnérabilités pour être informé des vulnérabilités connues et appliquer les correctifs appropriés.
- Utiliser des logiciels pour automatiser le processus de mise à jour (si la situations le permet, c'est à dire si il n'est pas trop grave que les logiciels mis à jours automatiquement "casse" après un mise à jour).
Vulnérabilités dans les conteneurs Docker
:
- Utiliser des images de conteneurs sécurisées provenant de sources fiables.
- Maintenir les images de conteneurs à jour en appliquant les correctifs de sécurité.
- Configurer correctement les politiques de sécurité des conteneurs et limiter les privilèges d'accès.
Fuites d'informations sensibles
:
- Appliquer des contrôles d'accès stricts pour limiter l'accès aux données sensibles.
- Chiffrer les données sensibles.
- Mettre en place des mécanismes de détection des fuites d'informations, comme la surveillance des journaux et l'utilisation de solutions de prévention des pertes de données (DLP).
Attaques de tous genres
:
- Utiliser des mots de passe forts/clés ssh et utiliser l'authentification à deux facteurs quand c'est possible.
- Mettre en place des mécanismes de protection contre les attaques par déni de service (DDoS), tels que des pare-feu applicatifs Web (WAF) et des services de mitigation des DDoS.
- Valider et filtrer toutes les entrées utilisateur pour prévenir les attaques par injection de code.
- Implémenter des mécanismes de sécurité tels que des filtres de sécurité HTTP, des en-têtes de sécurité stricts et des pare-feu pour prévenir les attaques de script entre sites (XSS) et les attaques de débordement de tampon.
- Contrôler et surveiller les accès aux données et aux systèmes pour empêcher les accès non autorisés.
- Suivre les bonnes pratiques de configuration de sécurité de chaque logiciel pour réduire les vulnérabilités de configuration.
- Utiliser des techniques de séparation des privilèges pour minimiser les risques de compromission des identifiants d'accès.
- Mettre en œuvre des solutions de détection des attaques, comme des systèmes de détection d'intrusion (IDS) et de prévention d'intrusion (IPS).
Documentation des éléments de configuration des contre-mesures
-
ssh
: le fichier de configuration ssh (/etc/ssh/sshd_config) à été modifié pour interdire les connections en tant qu'utilisateur root et les connections avec mot de passe, les clés publiques des différents administrateurs ont été ajoutées dans le fichier /home/user/.ssh/authorized_keys. -
https
: le traffic de tous les services web passe par les dns de cloudflare et est redirigé vers nginx proxy manager. Cela nous permet d'avoir des connections sécurisées avec https et de ne devoir ouvrir que le port 443 de nginx proxy manager pour rendre l'entièreté des services web public accessibles. -
réseaux docker
: Tous les services public sont sur leur propre réseau bridge docker. Nginx proxy manager se trouve sur son propre réseau et sur celui des services public, ce qui permet à nginx proxy manager de communiquer avec ces services même sans ports ouverts. Le conteneur b2b se trouve sur son réseau et sur celui de mariadb, ce qui lui permet de communiquer avec mariadb sans devoir ouvrir de ports. -
mise à jour
: Le serveur et l'entièreté des conteneurs sont mis à jours régulièrement, ce qui nous permet de profiter des derniers patchs de sécurité. -
bots et ddos
: Grâce à cloudflare, nous profitons d'une protections contre les attaques de bots et de ddos. -
ip
: Grâce au proxy cloudflare, nous cachons l'adresse ip réelle de notre serveur. -
mot de passe
: L'entièreté des mots de passe utilisés pour les différents services sont longs et ont étés générés avec un gestionnaire de mot de passe. -
ports gcp
: Seuls les port nécessaires ont été ouverts sur google cloud platform.
Documentation des risques résiduels (menaces contre lesquelles il n'est pas possible de mettre en oeuvre des contre-mesures)
-
Nouvelles vulnérabilités
: De nouvelles vulnérabilités sont découvertes régulièrement dans les logiciels, les systèmes d'exploitation et les protocoles. Même en appliquant les correctifs de sécurité et les mises à jour, il est possible que de nouvelles vulnérabilités se manifestent avant qu'elles ne soient corrigées. -
Complexité du système
: Les environnements informatiques peuvent être complexes, avec de nombreux composants interconnectés. La complexité peut entraîner des vulnérabilités ou des erreurs de configuration qui pourraient être exploitées par des attaquants. -
Facteurs humains
: Les erreurs humaines, telles que des erreurs de configuration, des mots de passe faibles, des clics sur des liens malveillants ou des pratiques de sécurité négligentes, peuvent ouvrir des voies d'attaque pour les attaquants. -
Ressources et budgets limités
: Les contraintes de ressources et de budgets peuvent limiter la capacité à mettre en place des mesures de sécurité avancées ou à maintenir une surveillance constante du système. -
Ingénierie sociale
: Les attaquants peuvent utiliser des techniques d'ingénierie sociale pour manipuler les utilisateurs et obtenir des informations sensibles ou accéder aux systèmes d'une manière non technique. -
Évolution des attaques
: Les attaquants développent constamment de nouvelles techniques et méthodes d'attaque. Il peut être difficile de prévoir toutes les nouvelles formes d'attaques et de se défendre contre elles.
sources
- https://phoenixnap.com/kb/server-security-tips
- https://www.freecodecamp.org/news/server-security-tips/
- https://liquidweb.com/blog/secure-server/
- https://www.youtube.com/watch?v=ZhMw53Ud2tY&t
- https://www.youtube.com/watch?v=Jnxx_IAC0G4
- https://www.youtube.com/watch?v=Bx_HkLVBz9M&t
prompt google bard
q: how to properly secure a linux server
a: Here are some steps on how to properly secure a Linux server:
- Update your server. The first thing you should do to secure your server is to update the local repositories and upgrade the operating system and installed applications by applying the latest patches. This will help to protect your server from known vulnerabilities.
- Change the default SSH port. The default SSH port is 22. This is a well-known port that is often targeted by attackers. To make it more difficult for attackers to connect to your server, you should change the default SSH port.
- Enable a firewall. A firewall can help to protect your server from unauthorized access. By default, most firewalls deny all incoming connections and allow all outgoing connections. This means that any application on your server can reach the internet, but anything trying to reach your server cannot connect. You can adjust the firewall rules to allow specific incoming connections, such as for SSH or HTTP.
- Change the root password. The root user has full access to the server, so it is important to use a strong password for this account. You should also avoid using the root user account for everyday tasks. Instead, create a separate user account with limited privileges and use that account for most tasks.
- Use strong passwords. Strong passwords are essential for security. A strong password should be at least 12 characters long and should include a mix of upper and lowercase letters, numbers, and symbols. You should also avoid using common words or phrases as passwords.
- Enable two-factor authentication (2FA). 2FA adds an extra layer of security by requiring you to enter a code from your phone in addition to your password. This makes it much more difficult for attackers to gain access to your account, even if they have your password.
- Keep your software up to date. Software updates often include security patches that can help to protect your server from known vulnerabilities. It is important to install software updates as soon as they are available.
- Back up your data. It is important to back up your data regularly in case of a security breach or other disaster. This way, you will not lose your data if your server is compromised.
By following these steps, you can help to secure your Linux server and protect it from attack.