66 votes

Quelles mesures prenez-vous pour sécuriser un serveur Debian ?

J'installe un serveur Debian qui est connecté directement à l'Internet. Je veux évidemment le rendre aussi sûr que possible. J'aimerais que vous me fassiez part de vos idées pour le sécuriser et des programmes que vous utilisez pour cela.

Je veux qu'une partie de cette question couvre ce que vous utilisez comme pare-feu. Juste iptables configuré manuellement ou utilisez-vous un logiciel pour vous aider ? Quel est le meilleur moyen ? Tout bloquer et n'autoriser que ce qui est nécessaire ? Existe-t-il de bons tutoriels pour les débutants sur ce sujet ?

Changez-vous votre port SSH ? Utilisez-vous un logiciel comme Fail2Ban pour empêcher les attaques par force brute ?

50voto

pQd Points 29251

Obligatoire :

  • installation du système avec le mode expert, seuls les paquets dont j'ai besoin
  • pare-feu écrit à la main avec une politique par défaut sur iptables'input : drop, permettant l'accès à SSH, HTTP ou n'importe quel autre serveur donné.
  • Fail2Ban pour SSH [ et parfois FTP / HTTP / autre - selon le contexte ].
  • désactiver les connexions root, forcer l'utilisation de l'utilisateur normal et de sudo
  • noyau personnalisé [ juste une vieille habitude ]
  • mise à jour programmée du système

Selon le niveau de paranoïa en plus :

  • politique d'abandon sur la sortie sauf pour quelques destinations/ports autorisés
  • integrit pour vérifier si certaines parties du système de fichiers n'ont pas été modifiées [avec somme de contrôle conservée en dehors de la machine], par exemple Tripwire
  • scan planifié au moins avec nmap du système depuis l'extérieur
  • vérification automatique des journaux à la recherche de schémas inconnus [mais c'est surtout pour détecter les dysfonctionnements du matériel ou les pannes mineures].
  • l'exécution programmée de chkrootkit
  • attribut immuable pour /etc/passwd l'ajout de nouveaux utilisateurs est donc légèrement plus difficile
  • /tmp monté avec noexec
  • knocker de port ou autre moyen non standard d'ouvrir des ports SSH [par exemple, la visite d'une page web "secrète" sur un serveur web permet une connexion SSH entrante pendant une période limitée à partir d'une adresse IP qui a vu la page. Si vous êtes connecté, -m state --satete ESTABLISHED se charge de permettre le flux de paquets tant que vous utilisez une seule session SSH].

Des choses que je ne fais pas moi-même mais qui ont du sens :

  • grsecurity pour le noyau
  • syslog à distance pour que les journaux ne puissent pas être écrasés lorsque le système est compromis
  • alerte sur toute connexion SSH
  • configurer rkhunter et le configurer pour qu'il fonctionne de temps en temps.

18voto

Xerxes Points 4113

Juste une remarque sur le pare-feu de votre machine...

  • Utilisez une liste blanche et non une liste noire, c'est-à-dire bloquez tout, n'autorisez que ce dont vous avez besoin et refusez tout le reste.

  • N'utilisez pas d'interfaces graphiques ou d'icônes, ni de logiciels qui essaient de faire le travail d'écriture de votre pare-feu à votre place. Si vous le faites, vous permettrez au logiciel de faire des suppositions à votre place - vous n'avez pas besoin de prendre ce risque et vous ne devriez pas le faire. Configurez-le vous-même, si vous n'êtes pas sûr, désactivez-le - vous verrez bien assez tôt s'il est nécessaire. S'il s'agit d'un système déjà opérationnel et que vous ne pouvez pas perturber le trafic (en le bloquant accidentellement), lancez tcpdump (vidage du fichier) et prenez des échantillons - étudiez-les plus tard, puis déterminez ce qui est valable et ce qui ne l'est pas.

  • Personnellement, je ne vois pas l'intérêt de faire tourner un service sur un port non standard, les outils ne sont pas si stupides de nos jours pour supposer que parce que quelque chose tourne sur le port 22 par exemple, alors il doit s'agir de ssh, et pas autrement - par exemple amap et nmap 's -A option. Cela dit, vous pouvez (et devriez probablement si vous êtes inquiet) modifier vos services pour qu'ils se cachent des regards indiscrets, par exemple, ce qui suit permettrait à l'attaquant de connaître la version exacte de OpenSSH que vous exécutez, ils peuvent alors chercher des exploits pour cette version exacte. Si vous cachez de telles choses, vous leur rendez la tâche plus difficile.

    \[root@ud-olis-1 uhtbin\]# telnet localhost 22
    Trying 127.0.0.1...
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is '^\]'.
    SSH-2.0-OpenSSH\_3.9p1
  • Maintenez tous vos services publics à jour et mettez en place les derniers correctifs de sécurité.

  • Ne stockez pas de DONNÉES sur le serveur de la passerelle lui-même, au moins vous gagnerez du temps lorsqu'ils réussiront à s'introduire dans cette machine, et vous perdrez un service ou deux, et un peu de temps, mais pas de données.

En fin de compte, vous ne parviendrez jamais à rendre quoi que ce soit sûr à 100% - c'est tout simplement impossible - l'objectif est donc de rendre le système aussi sûr que possible - si cela demande trop d'efforts pour casser votre système, c'est suffisant, et la plupart des script-petits enfants passeront au système suivant.

  • iptables est la voie à suivre pour tout système Linux - mais configurez-le vous-même.

N'utilisez jamais de "logiciel de sécurité" qui ne soit pas basé sur des normes ouvertes - ils sont condamnés à être mal écrits et seront piratés (ce n'est pas une question de "si", mais de "quand"). Les sources et les protocoles ouverts sont ouverts à l'examen du public et convergent pour devenir un produit mature et fiable ; les logiciels fermés reposent principalement sur la confiance des auteurs dans la qualité et la sécurité de leur produit. ils c'est-à-dire un petit nombre d'yeux contre une terre pleine d'yeux.

J'espère que cela vous aidera :)

12voto

hakan Points 1011
  • désactiver le login root

  • désactiver la connexion par mot de passe (autoriser uniquement la connexion par clé publique)

  • changer le port SSH

  • utiliser denyhosts (ou similaire)

  • écrire votre propre iptbles script (ainsi vous contrôlez exactement ce qui est autorisé et pouvez laisser tomber tout le reste)

  • imposer l'utilisation de communications sécurisées SSL/TLS et s'assurer de disposer de certificats valides, non expirés et signés

  • activer la vérification stricte des certificats pour tous les services externes (par exemple lors de l'authentification des utilisateurs avec un serveur LDAP sur une autre machine)

9voto

KPWINC Points 11174

6voto

BrewinBombers Points 1122

Comme point de départ général, je suis les repères/guides de la Centre pour la sécurité Internet qui sont des compilations complètes des meilleures pratiques en matière de sécurité. Il ne semble pas que leur référence Debian ait été mise à jour depuis un certain temps, mais une vue d'ensemble des étapes est disponible :

  • Appliquer les derniers correctifs/packages du système d'exploitation
  • Activer la comptabilité système / noyau / processus.
  • Activez le MAC (par exemple, SELinux ou AppArmor).
  • Activez le pare-feu basé sur l'hôte (iptables).
  • Vérifier APT sources.list (les clés sont correctes, les sources sont fiables).
  • Réduisez les services réseau, désactivez tout ce qui n'est pas nécessaire et mettez un pare-feu sur ce qui l'est.
  • Utilisez les TCPWrappers pour restreindre davantage l'accès au système.
  • N'utilisez que des protocoles de réseau chiffrés, désactivez les services non chiffrés (telnet, ftp, etc.).
  • Configurer l'accès à distance en SSH uniquement.
  • Désactiver les mots de passe de connexion des utilisateurs et exiger une authentification par clé.
  • Désactiver le partage de systèmes de fichiers (NFS, SMB).
  • Activez la journalisation à distance / centralisée du système (et examinez régulièrement les journaux !).
  • Définissez un mot de passe de niveau BIOS/firmware.
  • Définissez un mot de passe pour le chargeur de démarrage.
  • Configurez les sauvegardes du système, disposez d'un plan de reprise après sinistre et TESTEZ que les sauvegardes sont valides, et que le personnel connaît les procédures de reprise après sinistre !

Il existe de nombreuses ressources sur ces différents paramètres, y compris les commandes spécifiques et les fichiers de configuration à mettre en œuvre sur le système dans les repères CISecurity.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X