Automatische IPTables-Regeln für Bruteforce

Automatische IPTables-Regeln für Bruteforce

Ich bin ein Neuling in der Netzwerkadministration, bedenken Sie also bitte, dass ich noch nicht so viel Erfahrung habe.

Ich habe einen Ubuntu-Root-Server mit Plesk-Panel.

Gestern bemerkten meine Freunde und ich, dass die Sprachqualität auf unserem TS3 sehr schlecht wurde. Ich schickte ein paar Pings an den Server und es gab einen sehr hohen Paketverlust. Danach googelte ich ein bisschen und fand heraus, dass es eine gibt auth.log. Ich lud sie herunter und scrollte ein bisschen herum, bis ich das hier fand:

May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102 
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102

Es scheint, als hätte jemand mehrmals versucht, sich über SSH anzumelden. Ich habe ein bisschen gescrollt und gesehen, dass dieser Jemand versucht, viele verschiedene Benutzernamen zu verwenden:student, tech, psi, news,...

Hunderte dieser Logins wurden in der Datei angezeigt.

Ich habe mir die Verkehrsstatistik auf der Website meines Rechenzentrums angesehen. Sie lag bei nur 17 MB pro Stunde. Ich habe ein 100-Mbit-Backbone, also scheint die Datenübertragung selbst nicht das Problem zu sein.

Im Moment kann ich auf keinerlei Weise auf den Server zugreifen.

Meine Frage ist: Wie kann ich wieder Zugriff erhalten, wie kann ich diesen Angriff unterdrücken und nachfolgende Angriffe verhindern?

Antwort1

Wie erhalte ich Zugang?

Es ist unklar, warum Sie nicht auf Ihr Konto zugreifen können.

Wenn Ihr Computer angegriffen wird oder stark ausgelastet ist, sollten Sie mit Ihrem Anbieter über die Beschränkung des Zugriffs (IP-Einschränkungen) oder die Offline-Schaltung des Servers (Trennung der Internetverbindung) sprechen.

Möglicherweise benötigen Sie auch Out-of-Band-Zugriff, bei dem Ihnen Ihr Anbieter möglicherweise behilflich sein kann.

Wenn jemand Ihren Server kompromittiert hat, müssen Sie möglicherweise eine Wiederherstellung aus Backups durchführen oder ein Wiederherstellungsimage verwenden.

So verhindern Sie Angriffe auf Ihren Server, insbesondere SSH

beste Möglichkeit, Brute-Force-Anmeldungen zu verhindern?

Lassen Sie es gar nicht erst zu, dass sie auf Ihren Rechner gelangen! Es gibt viele Möglichkeiten, Brute-Force-Angriffe zu stoppen, bevor sie auf Ihren Host oder sogar auf SSH-Ebene gelangen.

Allerdings ist es eine großartige Idee, Ihr Betriebssystem mit etwas wie fail2ban zu schützen.http://en.wikipedia.org/wiki/Fail2ban

Fail2ban ist DenyHosts ähnlich … aber im Gegensatz zu DenyHosts, das sich auf SSH konzentriert, kann fail2ban so konfiguriert werden, dass alle Dienste überwacht werden, die Anmeldeversuche in eine Protokolldatei schreiben, und anstatt /etc/hosts.deny nur zum Blockieren von IP-Adressen/Hosts zu verwenden, kann fail2ban Netfilter/iptables und TCP-Wrapper /etc/hosts.deny verwenden.

Um Brute-Force-Anmeldungen zu verhindern, sollten Sie eine Reihe wichtiger Sicherheitstechniken in Betracht ziehen:

SSH:

  • Root darf sich nicht anmelden
  • Keine SSH-Passwörter zulassen (private Schlüsselauthentifizierung verwenden)
  • Hören Sie nicht auf jeder Schnittstelle zu
  • Erstellen Sie eine Netzwerkschnittstelle für SSH (z. B. eth1), die sich von der Schnittstelle unterscheidet, von der Sie Anfragen bedienen (z. B. eth0).
  • Verwenden Sie keine gängigen Benutzernamen
  • Verwenden Sie eine Zulassungsliste und lassen Sie nur Benutzer zu, die SSH-Zugriff benötigen
  • Wenn Sie Internetzugriff benötigen, beschränken Sie den Zugriff auf eine begrenzte Anzahl von IP-Adressen. Eine statische IP-Adresse ist ideal, aber eine Einschränkung auf xx0.0/16 ist besser als 0.0.0.0/0
  • Suchen Sie nach Möglichkeit nach einer Möglichkeit, eine Verbindung ohne Internetzugang herzustellen. Auf diese Weise können Sie den gesamten Internetverkehr für SSH blockieren (mit AWS können Sie beispielsweise eine direkte Verbindung herstellen, die das Internet umgeht; dies wird als Direct Connect bezeichnet).
  • Verwenden Sie Software wie fail2ban, um Brute-Force-Angriffe abzufangen
  • Stellen Sie sicher, dass das Betriebssystem immer auf dem neuesten Stand ist, insbesondere die Sicherheits- und SSH-Pakete

Anwendung:

  • Stellen Sie sicher, dass Ihre Anwendung immer auf dem neuesten Stand ist, insbesondere die Sicherheitspakete
  • Sperren Sie die „Admin“-Seiten Ihrer Anwendung. Viele der oben genannten Ratschläge gelten auch für den Admin-Bereich Ihrer Anwendung.
  • Schützen Sie Ihren Admin-Bereich mit einem Passwort. Ein Programm wie htpasswd für die Webkonsole deckt alle zugrunde liegenden Anwendungsschwachstellen auf und stellt eine zusätzliche Zugangsbarriere dar.
  • Sperren Sie die Dateiberechtigungen. „Upload-Ordner“ sind dafür berüchtigt, Einstiegspunkte für alle möglichen bösartigen Dinge zu sein.
  • Erwägen Sie, Ihre Anwendung hinter einem privaten Netzwerk zu platzieren und nur Ihren Front-End-Load Balancer und eine Jumpbox verfügbar zu machen (dies ist eine typische Konfiguration in AWS mit VPCs).

Antwort2

Wie kann ich diesen Angriff unterdrücken und weitere Angriffe verhindern?

Normalerweise ändere ich den Standard-SSH-Port von 22 auf einen anderen wie 1122. Dies verhindert viele automatische Angriffe von Bots, aber ein einfacher Port-Scan kann sie erkennen. Wie auch immer:

vi /etc/ssh/sshd_config

und bearbeitenAnschluss 22ZuHafen 1122, aber das ist nicht genug.

Automatische IPTables-Regeln für Bruteforce

ich benutzelog2iptables https://github.com/theMiddleBlue/log2iptablesstattdessen Fail2ban, weil es ein einfaches Bash-Skript ist, das jede Logdatei mit einem regulären Ausdruck analysiert und iptables ausführt. Wenn beispielsweise 5 Übereinstimmungen auftreten, löscht log2iptables die spezifische IP-Adresse. Es ist cool, weil es die Telegram-API verwendet und mir eine Nachricht auf mein Telefon senden kann, wenn er ein Problem findet :)

hoffe, das hilft!

Antwort3

Ich habe das hier gerade zusammengestellt, alle 15 Minuten als Cronjob usw. ausführen:

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done

Antwort4

Dies ist meine alternative Lösung für SSH-Angriffe. Die Idee ist, den SSH-Daemon zu schließen, wenn er nicht verwendet wird. Kein offener Port, kein Angriff. Sie können es versuchen. Es ist Open Source https://github.com/indy99/nnet_port_guard

verwandte Informationen