J'installe un serveur Debian qui est connecté directement à Internet. Évidemment, je veux le rendre aussi sûr que possible. J'aimerais que vous les gars/filles ajoutiez vos idées pour le sécuriser et quels programmes 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 une sorte de logiciel pour vous aider? Quelle est la meilleure façon? Tout bloquer et autoriser uniquement ce qui est nécessaire? Existe-t-il peut-être de bons tutoriels pour les débutants sur ce sujet?
Modifiez-vous votre port SSH? Utilisez-vous des logiciels comme Fail2Ban pour empêcher les attaques par bruteforce?
Obligatoire:
En fonction du niveau de paranoïa en plus:
integrit
pour vérifier si certaines parties du système de fichiers ne sont pas modifiées [avec une somme de contrôle conservée en dehors de la machine], par exemple Tripwire/etc/passwd
il est donc un peu plus difficile d'ajouter de nouveaux utilisateurs-m state --satete ESTABLISHED
prend soin d'autoriser 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:
Juste une note sur le pare-feu de votre machine ...
amap
et nmap
's -A
option. Cela dit, vous pouvez (et probablement le cas échéant) modifier vos services pour vous cacher des regards indiscrets, par exemple, ce qui suit permettrait à l'attaquant de connaître la version exacte de OpenSSH
que vous exécutez, ils peut alors rechercher des exploits pour cette version exacte. Si vous cachez de telles choses, vous leur rendriez la tâche plus difficile.[root @ ud-olis-1 uhtbin] # telnet localhost 22 Essayer 127.0.0.1 ... Connecté à localhost.localdomain (127.0.0.1). Le caractère d'échappement est '^]'. SSH-2.0-OpenSSH_3.9p1
En bout de ligne, vous ne réussirez jamais à sécuriser quoi que ce soit à 100% - ce n'est tout simplement pas possible - donc l'objectif est de le rendre aussi sécurisé que possible - si c'est juste trop d'efforts pour casser votre système, c'est assez bon, et la plupart des lamer les script-kiddies 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 "logiciels de sécurité" qui ne sont pas basés sur des normes ouvertes - ils sont voués à être mal écrits et seront piratés (pas une question de "si", mais de "quand"). L'open source et les protocoles ouverts sont ouverts à l'examen du public et convergent pour devenir un produit mature et fiable; Les logiciels à source fermée reposent principalement sur la confiance en soi des auteurs quant à la qualité/sécurité d'un produit ils le pensent - c'est-à-dire un petit nombre d'yeux contre une terre pleine d'yeux.
J'espère que cela pourra aider :)
utiliser denyhosts (ou similaire)
écrivez votre propre script iptbles (afin que vous contrôliez exactement ce qu'il faut autoriser et que vous puissiez supprimer tout le reste)
forcer l'utilisation de communications sécurisées SSL/TLS et s'assurer d'avoir des certificats valides, non expirés et signés
Commencer ici:
Comme point de départ général, je suis le référentiel/guides du Center for Internet Security , qui sont des compilations complètes des meilleures pratiques de sécurité. Il ne semble pas que leur benchmark Debian ait été mis à jour depuis un certain temps, mais un aperçu général des étapes est le suivant:
Il existe de nombreuses ressources sur tous ces différents paramètres, y compris les commandes spécifiques et les fichiers de configuration à implémenter sur le système dans les benchmarks CISecurity.
Je suggérerais de ne pas connecter une machine directement à Internet. Placez une sorte de pare-feu entre la machine et Internet. Cela vous permet de faire de la sécurité et de la surveillance du réseau sans mettre plus de charge sur le serveur. Personnellement, je trouve que la segmentation du réseau et des fonctions simplifie fréquemment le dépannage du réseau, bien qu'à l'occasion, la complexité supplémentaire rend l'analyse plus difficile.
La politique de pare-feu la plus sûre, mais la plus ennuyeuse à gérer, consiste à tout refuser et à autoriser explicitement uniquement le trafic que vous devez autoriser. C'est ennuyeux, car il faut fréquemment mettre à jour la politique de pare-feu à mesure que le réseau change.
Je suggère également d'utiliser une sorte de pare-feu d'interface sur le serveur - la défense en profondeur est la clé. L'utilisation de ports non standard pour les services liés à l'administration ne fait pas de mal. fail2ban est très bien. Poursuivez les questions plus spécifiques sur les applications de sécurité sur Serverfault pour trouver plus d'idées.
La sécurité est comme la blague sur les deux randonneurs et l'ours - même si l'on ne peut jamais atteindre une sécurité parfaite, il est utile d'être une cible plus difficile que les autres gars.
Certaines personnes ont pointé le Securing Debian Manual . Cela devrait convenir parfaitement à tout sauf aux besoins militaires.
Beaucoup de gens pensent qu'être ridiculement paranoïaque est cool ou professionnel ou quelque chose. Ce n'est pas , c'est juste ennuyeux pour les autres administrateurs et carrément répressif pour vos utilisateurs. La plupart des choses que vous verrez recommandées ne sont que de faux travaux pour se sentir utiles pour l'administrateur paranoïaque, mais pas réellement utiles, car la véritable violation de la sécurité est susceptible d'être causée par un système pas suffisamment mis à jour et/ou par une source interne.
Cela dit, je considère comme l'un de mes principes de ne faire confiance à rien sur le réseau local, pas plus qu'à Internet. Par conséquent, je configure tout pour exiger une authentification même sur le réseau local. Je crypte et authentifie tout le trafic entre chacun des ordinateurs utilisant IPsec.
Je suis en train de passer au chiffrement complet du disque pour tous mes serveurs.
J'installe uniquement les services que j'utilise. Je n'ai pas de pare-feu; Je configure les services dont j'ai besoin pour exiger une authentification ou les limite (par la propre configuration du programme ou par des wrappers TCP) à certaines IP. La seule chose que j'ai jamais eu besoin de bloquer en utilisant iptables était memcached
, car il n'avait pas de fichier de configuration et n'utilisait pas de wrappers TCP.
J'utilise de bons mots de passe générés aléatoirement pour mes comptes et je fais confiance à mon serveur SSH (et à tous les autres services) pour empêcher l'accès à ceux qui ne connaissent pas le mot de passe. fail2ban
est uniquement pour ceux qui ont un espace limité pour les fichiers journaux, IMO. (Vous devez avoir suffisamment de mots de passe pour pouvoir leur faire confiance.)
Parcourez ce guide pratique de Nice sur www.debian.org/doc/manuals/securing-debian-howto/
Personnellement, je change le port ssh et j'utilise fail2ban + denyhosts. Et je bloque tout ce qui n'est pas nécessaire. Plus vous bloquez, moins vous devez vous inquiéter.