Je suis en train de mettre en place un serveur LAMP et je dois empêcher SSH / FTP / etc. tentatives de connexion brute-force de réussir. J'ai vu de nombreuses recommandations pour denyhosts et fail2ban, mais peu de comparaisons des deux. J'ai aussi lu qu'une règle IPTables peut remplir la même fonction.
Pourquoi devrais-je choisir l'une de ces méthodes plutôt qu'une autre? Comment les utilisateurs de serverfault traitent-ils ce problème?
la source
meilleur moyen d'empêcher les connexions par force brute?
Ne les laissez pas accéder à votre machine en premier lieu! Il existe de nombreux moyens d'arrêter les tentatives de force brute avant qu'elles n'atteignent votre hôte, voire au niveau SSH.
Cela dit, protéger votre système d'exploitation avec quelque chose comme fail2ban est une excellente idée. Fail2ban est légèrement différent de DenyHosts, bien qu'ils jouent dans le même espace. Fail2ban utilise iptables.
http://en.wikipedia.org/wiki/Fail2ban
Il existe un certain nombre de techniques de sécurité importantes à prendre en compte pour empêcher les connexions par force brute:
SSH:
Application:
la source
J'utilise les règles iptables pour limiter les nouvelles connexions à partir de la même adresse IP (SSH principalement, mais cela fonctionnerait aussi bien pour FTP). À mon avis, l’avantage par rapport à "fail2ban" et à d’autres outils de ce type est que la route iptables est totalement en mode noyau et ne repose sur aucun outil en mode utilisateur pour analyser / analyser les fichiers journaux.
Des centaines de connexions ssh échouées
Si vous le pouvez, limiter les adresses source pouvant accéder aux protocoles en question vous aidera évidemment.
Avec SSH, vous devriez vraiment utiliser l'authentification par certificat et ne pas accepter les mots de passe de toute façon.
la source
Une autre excellente façon de protéger SSH (je l’utilise depuis au moins une décennie) consiste à utiliser les bibliothèques récentes dans iptables de manière native (en fonction de votre distribution).
Fondamentalement, il peut être utilisé comme un port frappant, intégré à iptables. Cela vous évitera beaucoup de maux de tête. Tant que vous pouvez vous connecter TCP (telnet est un moyen. J'ai également utilisé des clients SSH et les a pointés vers le port. Tout ce qui permettra une connexion TCP à un numéro de port spécifié. Je vous regarde Putty!) De la client initiant la connexion ssh, vous pouvez l'utiliser.
Ci-dessous, vous trouverez un exemple où iptables ouvrira le port 22 sur votre hôte lorsque vous utiliserez telnet de votre hôte vers le serveur sur le port 4103. Vous pourrez ensuite utiliser un telnet pour mettre en communication 4102 ou 4104 afin de fermer l’ouverture. La raison pour les deux 4102 et 4104 est de garder une simple analyse TCP de l'ouverture 22. Seul un TCP Connect (telnet) au port 4103 vous permettra d'entrer.
Prendre plaisir!
Oh et je suis en faveur de Fail2Ban. Plus de flexibilité et j'aime bien que l'interdiction se produise dans iptables plutôt que dans tcpwrappers.
SSH PORTKNOCKING
la source
Une autre différence entre Fail2ban et Denyhosts est que Denyhosts peut partager la liste de blocage avec d'autres utilisateurs Denyhosts. Avec Fail2ban, vous ne pouvez bloquer que les adresses IP que votre serveur a déjà vues. Avec Denyhosts, une tentative brutale peut même ne jamais parvenir sur votre serveur, si quelqu'un d'autre l'a vue, et la liste de blocage est téléchargée sur votre serveur avant l'attaquant. arrive à votre ordinateur.
Une autre différence est que Fail2ban utilise iptables, tandis que Denyhosts utilise tcpwrappers. D'autres ont déjà mentionné cette différence, mais quelques notes méritent d'être mentionnées.
iptables est limité dans le nombre d'adresses IP que vous pouvez bloquer efficacement. C'est probablement l'une des raisons pour lesquelles Fail2ban ne dispose pas d'un mécanisme permettant de partager des listes de blocage.
Un autre effet est que lorsque iptables est remplacé par nftables, Fail2ban cessera probablement de fonctionner ou doit être réécrit. Denyhosts continuera probablement à travailler.
Donc, les deux ont des avantages et des inconvénients. J'aime les deux; Pour ma part, j'utilise Denyhosts parce que d'habitude, je ne veux que protéger SSH et j'aime partager la liste de blocage.
la source
Une chose à noter à propos de Fail2Ban est qu’il semble utiliser environ 10 Mo de mémoire de plus que DenyHosts. Donc, si vous utilisez un VPS de 128 Mo, vous voudrez peut-être examiner cela. De plus, fail2ban prêt à l'emploi est uniquement configuré sur SSH, ce qui signifie qu'en l'absence de modification de la configuration, DenyHosts fait la même chose avec moins de mémoire.
la source
denyhosts est pour ssh. fail2ban est plus complet (HTTP, FTP, etc.). Les deux utilisent iptables dans les coulisses.
la source
Au lieu de jouer avec la configuration fastidieuse d'iptables ou de fail2ban, pourquoi ne pas laisser la communauté ouverte faire tout le travail pour vous et utiliser CSF / LFD à la place? Je peux le recommander au-dessus de toutes les autres options mentionnées. Voir http://configserver.com/cp/csf.html pour savoir ce qu’il peut faire pour vos serveurs. CSF ne nécessite pas de panneau de configuration, il offre une interface utilisateur simple, pour ceux qui ne veulent pas le faire par shell. Et c'est beaucoup de scripts Perl non-résidents stables et fiables.
la source
fail2ban ne semble pas disposer d'un mécanisme permettant de reconnaître une connexion ssh réussie et de réinitialiser le nombre d'échecs.
Le filtre standard pour sshd (au moins sur mon installation Debian), calcule un nombre d'échecs pour chaque clé ssh que le client présente que le serveur rejette. Certains utilisateurs présentent de nombreuses clés à chaque connexion et sont régulièrement verrouillés, même si leur connexion a réussi une fois que quelques clés ont été utilisées.
À la suite de ce qui précède, je pense actuellement à abandonner fail2ban. À cet égard du moins, nierhosts est préférable. Cependant, ce n’est apparemment plus une bonne option et n’est plus pris en charge par les versions plus récentes de debian (des discussions à l’ adresse https://www.chrissearle.org/2015/06/16/replacing-denyhosts-with-fail2ban-for- debian / )
Je n'ai pas de bonne solution ici.
la source
En fait, je pense que denyHost est capable d’empêcher de nombreux autres services que le service sshd. Dans son fichier de configuration -
/etc/denyhosts.conf
, il y a quelques lignes de code dites:Donc, si nous définissons une
BLOCK_SERVICE
variableALL
comme ci-dessus, nous pouvons regarder notre service SSH.la source
Denyhosts version 3.0: chaque fois qu’une adresse IP apparaît dans un fichier journal, Denyhosts ouvre le fichier hosts.deny et lit le tout pour faire correspondre l’adresse. À chaque fois. Rien n'est mis en cache en mémoire. Si vous avez un très gros fichier hosts.deny et que vous êtes soumis à de nombreuses sondes (de nombreuses entrées de fichier journal), Denyhosts devient un gros consommateur de CPU qui relit et relit le fichier hosts.deny pour chaque adresse IP affichée. Pas bon.
Si vous activez le support iptables, Denyhosts créera des listes énormes et lentes d’adresses IP bloquées. Denyhosts n'utilise pas ipset ou nftables pour créer des cartes IP efficaces.
la source