3 votes

Comment bloquer les tentatives de force brute dans OS X 10.11 ?

Mon système fonctionnant sous OS X 10.11 se fait constamment harceler par des tentatives de connexion ssh échouées par des bots. J'utilise un mot de passe sécurisé et le compte Root n'est pas accessible via ssh, mais même ainsi, cela pèse sur le temps de l'unité centrale et me rend nerveux.

Existe-t-il un bon moyen de bannir les adresses IP qui se trompent trop souvent de mot de passe tout en me permettant de me connecter en mode ssh ? Je ne sais pas si c'est possible, mais c'est une bonne idée d'avoir une interface graphique pour ne pas avoir à utiliser la ligne de commande.

J'ai essayé d'utiliser sshguard, mais je n'arrive pas à le faire fonctionner. Il y a des discussions à différents endroits sur le fait qu'il ne fonctionne pas correctement sous OS X 10.10, et je n'ai pas trouvé de solution.

D'autres sites ont recommandé l'utilisation d'un VPN afin que les personnes extérieures ne puissent pas s'introduire dans votre système, mais ce n'est pas une option pour moi. Il est important que je puisse me connecter en ssh à partir de systèmes arbitraires dans le monde, et la mise en place de VPN sur ces systèmes n'est généralement pas faisable.

1voto

Martin KS Points 121

J'ai fait des recherches pour ouvrir SSH de cette manière sur d'autres systèmes *nix, et la plupart suggèrent deux choses. Je suis désolé mais je ne sais pas comment faire l'une ou l'autre sur MacOS.

  • Fail2Ban - qui bannit les IP qui ont trop de tentatives de connexion infructueuses
  • plutôt qu'une connexion SSH par mot de passe. Je crois que vous pouvez emporter votre clé avec vous si vous voulez utiliser des machines publiques.

0voto

jhvkn Points 11

Je cours sshblack (trouvé via le site de Sebastian Hagedorn site ) ainsi qu'un porte-manteau en MacOS Sierra Le syslog étant accessible via la commande 'log show', vous devrez ajuster les paramètres de configuration du log ci-dessous si vous êtes sur une version antérieure de l'OS ou utiliser fail2ban en suivant les instructions données plus haut. Utilisez également l'authentification par clé avec les mots de passe désactivés ( Comment configurer une connexion SSH sans mot de passe ? - ajouter une phrase de passe). Ensuite, je télécharge les listes de blocage quotidiennement et bloquer les IP dans le pare-feu . Il devrait être en sécurité maintenant...

Paramètres : /etc/pf.conf

# sshblack
block drop log quick from <ssh-block> to any

sshblack.pl

##  In sshblack
my($LOG) = '/usr/bin/log show --style syslog --last 5s\|';
my($ADDRULE) = '/sbin/pfctl -t ssh-block -T add ipaddress';
my($DELRULE) = '/sbin/pfctl -t ssh-block -T delete ipaddress';
my($REASONS) = '(maximum authentication attempts exceeded|Invalid user|authentication failed|Auth fail)'; 

Ajouter un délai de 5 secondes à la boucle

Remplacer par ceci (~ligne 190) :

sleep(5);

Vous obtenez une erreur dans le journal, mais cela semble fonctionner correctement de toute façon.

Pour ajouter des listes de blocage qui se mettent à jour automatiquement, procédez comme suit : Installez wget (qui nécessite brassage ) :

brew install wget

Dans /etc/pf.conf

table <blocklist> persist file "/usr/local/etc/all.txt"
block drop log quick from <blocklist> to any

Créer un LaunchDaemon :

sudo nano /Library/LaunchDaemons/blocklist.de.allips.plist

avec le contenu :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>blocklist.de.allips.plist</string>
    <key>Program</key>
    <string>/bin/bash</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
    <string>/bin/mkdir -p /usr/local/etc ; /usr/local/bin/wget -N -P /usr/local/etc rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt ; /usr/local/bin/wget -N -P /usr/local/etc https://lists.blocklist.de/lists/all.txt ; pfctl -t blocklist -T replace -f /usr/local/etc/all.txt</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>47250</integer>
    <key>ServiceDescription</key>
    <string>Blocklist.de PF Update</string>
    <key>StandardErrorPath</key>
    <string>/var/log/blocklists.log</string>
    <key>StandardOutPath</key>
    <string>/var/log/blocklists.log</string>
</dict>
</plist>

Charger la plist

sudo launchctl load -w /Library/LaunchDaemons/blocklist.de.allips.plist

Cette configuration sshd peut également être utile en combinaison avec l'authentification par clé mentionnée ci-dessus :

Fichier : /etc/ssh/sshd_config

PermitRootLogin no
ChallengeResponseAuthentication no
UsePAM no
PasswordAuthentication no
LoginGraceTime 20
MaxAuthTries 1
MaxSessions 5

Un peu d'histoire : J'ai exécuté les scripts de blocage scripts (bloquant environ 50000 IP) et pendant environ 5 jours, sshblack a encore détecté ~160 IP avec des tentatives de connexion échouées à SSHD ou SMTPD. C'est pourquoi j'ai opté pour le Portknocking, maintenant les attaquants SSH sont bloqués par le firewall.

Edit : J'ai parcouru mon sshd-log et j'ai remarqué que j'avais oublié une "raison" dans le log. Je l'ai ajouté ci-dessus (le dernier).

Quelques statistiques :

Échec des connexions ssh (avec les listes de blocage d'adresses activées)
Date Nombre d'ips uniques
13-Mar - 31
14-Mar - 29
15-Mar - 30
16-Mar - 39
17-Mar - 43
18-Mar - 41
19-Mar - 35
20-Mar - 44
21-Mar - 24
22-Mar - 18
23-Mar - 17
24-Mar - 20
25-Mar - 7 (le portknocking est activé pendant cette date)

Total 378

La plupart d'entre eux ont été bannis après trois tentatives infructueuses.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X