Wie Sperren Sie Ihre SSH-Server

0
316

SSH steht für Secure Shell, ist nicht sehr secure by default, die sich für grundlegende Kennwortauthentifizierung mit keine anderen Grenzen. Wenn Sie wirklich wollen, sperren Sie Ihre server, werden Sie brauchen, um mehr tun zu konfigurieren.

Nicht Zulassen, Passwort-Logins—die Verwendung von SSH-Keys

Das erste, was zu tun ist, loszuwerden, Passwort-Authentifizierung vollständig und wechseln Sie zur Verwendung von SSH-keys. SSH-Schlüssel sind eine form der public-key-Verschlüsselung; Sie haben einen öffentlichen Schlüssel, der wirkt wie Ihren Benutzernamen, und einen privaten Schlüssel, der wirkt wie Ihrem Passwort (außer, dieses Passwort zu 2.048 Zeichen lang). Ihr privater Schlüssel wird auf Ihrem Datenträger gespeichert, aber verschlüsselt und mit einer passphrase und ssh-agent. Wenn Sie gehen, um SSH in einen server, sondern fragt Sie nach Ihrem Passwort, der ssh-agent eine Verbindung zum server über Ihre Schlüssel.

Auch wenn Sie bereits mit SSH-Schlüssel, werden Sie immer noch wollen, um sicherzustellen, dass Ihr Passwort-logins sind deaktiviert, da die beiden nicht gegenseitig ausschließen.

RELATED: Was ist ein SSH-Agent-Forwarding und Wie Verwenden Sie Es?

SSH-Schlüssel generieren

Erzeugen Sie eine neue SSH-Schlüssel mit dem Programm ssh-keygen, standardmäßig installiert auf den meisten Unix-Systemen.

ssh-keygen

In diesem werden Sie aufgefordert, eine passphrase zum verschlüsseln der lokalen Schlüssel (Datei mit. Es ist nicht für die Authentifizierung mit dem server, aber sollte noch geheim gehalten werden.

ssh-keygen wird speichern Sie Ihren privaten Schlüssel in ~/.ssh/id_rsa, und wird auch sparen Sie den öffentlichen Schlüssel in ~/.ssh/id_rsa.pub. Der private Schlüssel bleibt auf der Festplatte, aber der öffentliche Schlüssel muss auf den server hochgeladen werden, damit der server Ihre Identität überprüfen können, und stellen Sie sicher, dass Sie über die Berechtigung zum Zugriff auf diesen server.

Der server führt eine Liste der berechtigten Benutzer, in der Regel gespeichert in ~/.ssh/authorized_keys. Sie können Ihre Schlüssel-Datei manuell in diese Datei ein, oder verwenden Sie die ssh-copy-id-Dienstprogramm:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Ersetzen ” user@host mit Ihrem eigenen username und hostname des Servers. Sie werden aufgefordert, melden Sie sich mit Ihrem alten Kennwort noch einmal ein, nach denen Sie sollte nicht aufgefordert werden, es wieder, und deaktivieren Passwort anmelden.

Deaktivieren Sie SSH Passwort Login

Jetzt können Sie den Zugriff auf den server mit Ihren Schlüsseln, Sie können schalten Sie die Passwort-Authentifizierung zusammen. Stellen Sie sicher, dass die Schlüssel-basierte Authentifizierung arbeitet, oder Sie werden gesperrt, Ihre server.

Auf dem server, öffnen Sie /etc/ssh/sshd_config in Ihrem Lieblings-text-editor, und suchen Sie nach der Zeile, die mit beginnt:

#PasswordAuthentication

Sie wollen, kommentieren Sie diese (entfernen Sie den hashtag) und ändern Sie “ja” zu “Nein”:

PasswordAuthentication no

Anschließend starten Sie sshd mit:

systemctl restart sshd

Sollten Sie gezwungen sein, wieder zu verbinden, und wenn die Schlüsseldatei ist falsch, Sie werden nicht aufgefordert, ein Kennwort einzugeben.

Wenn Sie möchten, können Sie auch erzwingen, dass public-key-basierte Authentifizierung, die gesperrt wird, alle anderen Authentifizierungsmethoden. Fügen Sie die folgenden Zeilen zu /etc/ssh/sshd_config:

AuthenticationMethods publickey
PubkeyAuthentication yes

und sshd neu starten.

Sperren Sie Angreifer mit denyhosts

denyhosts ist ein Dienstprogramm für die Verhinderung von wiederholt fehlgeschlagenen login-versuche über SSH, ähnlich wie Ihr Telefon sperren Sie aus, nachdem zu viele versuche. Es ist nicht standardmäßig installiert, so müssen Sie installieren Sie es von Ihrer Distribution Paket-manager. Für Debian-basierte Systeme wie Ubuntu, das wäre:

sudo apt-get install denyhosts -y

Sobald es installiert ist, aktivieren Sie es mit:

sudo systemctl enable denyhosts

denyhosts sollten, laufen jetzt automatisch, aber Sie wollen auf die whitelist Ihre IP-Adresse in Fall, dass Sie gesperrt. Sie könnten versuchen immer wieder aus einer anderen IP-Adresse, aber das sparen Sie sich einige Mühe.

Öffnen Sie /etc/hosts.erlauben, und am Ende der Datei hinzufügen:

sshd: Ihre-ip-Adresse

ersetzen Sie Ihre ip-Adresse mit Ihrer IP-Adresse.

Standardmäßig denyhosts sperrt sich nach einem gescheiterten Versuch für root-Benutzer und fünf Fehlversuchen für andere Benutzer. Sie können dieses Verhalten ändern, indem Sie /etc/denyhosts.conf.

Wenn Sie haben sich aus versehen ausgesperrt haben, müssen Sie denyhosts stoppen und entfernen Sie Ihre IP-Adresse von ein paar Orte:

  • /etc/hosts.verweigern
  • /var/lib/denyhosts/hosts
  • /var/lib/denyhosts/hosts-eingeschränkt
  • /var/lib/denyhosts/hosts-root
  • /var/lib/denyhosts/hosts-gültig
  • /var/lib/denyhosts/Benutzer-hosts

Starten Sie denyhosts und Sie sollten in der Lage sein, wieder zu verbinden.

Whitelist SSH-Zugang

Zwar zwingt SSH-Schlüssel mit denyhosts ist wahrscheinlich genug Sicherheit, können Sie eine whitelist für bestimmte IP-Adressen. Die meisten server-Anbieter bieten Werkzeuge, um diese aus einer web-Oberfläche. Wenn das ist eine option, Sie wollen auf die whitelist von dort eher als vom SSH-server, wie Sie immer in der Lage zu ändern, die in der Whitelist die IP in Fall, dass Sie gesperrt.

Wenn es nicht eine option, müssen Sie manuell konfigurieren /etc/hosts.leugnen, zu blockieren Datenverkehr von nicht autorisierten hosts.

Ein wichtiger Hinweis: Wenn Sie die Whitelist-Ihr Haus, Ihr ISP möglicherweise nicht geben Sie eine statische IP-Adresse und Ihre IP-Adresse kann sich jederzeit ändern. Werden Sie wollen, stellen Sie sicher, dass wird nicht passieren, bevor blacklisting alle anderen IP-Adressen oder das hinzufügen mehrerer Adressen als backup, oder einfach nur das überspringen dieser Schritt insgesamt.

Öffnen Sie /etc/hosts.ermöglichen und stellen Sie sicher, dass Ihre IP-Adresse ist in der Datei:

sshd: Ihre-ip-Adresse

Wenn es ist, können Sie voran gehen und verweigern Sie alle anderen verbindungen:

echo “sshd: ALL’ >> /etc/hosts.verweigern

Starten Sie sshd, und Sie sollten sehen Sie Ihre änderungen.

Alternativ einen Proxy Vor Deinem SSH-Server

Wenn Sie nicht möchten, setzen Sie Ihr SSH-server auf das internet, sondern müssen den Zugriff von mehreren IP-Adressen hat, können Sie einen proxy davor, der zum behandeln der Verbindung. Dies könnte ein weiterer cloud-server oder sogar ein Feld laufen in Ihrem Haus.

Der SSH-server sollte so konfiguriert werden, um nur verbindungen vom proxy-server, und der proxy-server akzeptiert verbindungen von überall. Sie können der proxy-server jedoch möchten, aber auch ein einfaches netcat-Verbindung funktionieren wird. Beachten Sie, dass diese proxy-server wird nur access point für Ihr SSH-server, so dass, wenn der proxy down geht, werden Sie gesperrt werden, es sei denn, Sie haben ein backup-Adresse.

Nicht Erlauben Root-Login

Stattdessen machen Sie einen neuen Benutzer und geben Sie den Benutzer sudo Privilegien. Diesem effektiv ist die gleiche Sache, aber einen großen Unterschied: potentielle Angreifer, benötigen Sie Ihren Benutzer-account-Namen, um auch nur ansatzweise Angriff auf Ihren server, weil es nicht so einfach als root@yourserver.

Abgesehen von der Sicherheit, ist es in der Regel gute Unix-Richtlinie nicht als root angemeldet sein, da root nicht erstellen von Protokollen und nicht-prompt beim Zugriff auf geschützte Ressourcen.

Erstellen Sie einen neuen Benutzer auf Ihrem SSH-server:

adduser myfancyusername

und setzen Sie ein Passwort für diesen Benutzer:

passwd myfancyusername

Sie werden sich nicht einloggen mit dem Passwort, da du dann noch mit SSH-keys, aber es ist erforderlich. Im Idealfall machen dies anders Ihrem root-Passwort.

Fügen Sie diesen Benutzer in /etc/sudoers zu geben, die admin-Berechtigungen:

echo ‘myfancyusername ALL=(ALL) ALLE” > > /etc/sudoers

Wechseln Sie zu, dass Benutzer mit su myfancyusername, und stellen Sie sicher, dass Sie können wechseln Sie zurück zum Benutzer root mit sudo su (die nicht erfordern root-Passwort). Wenn Sie können, Sie haben sudo-Zugriff.

Jetzt werden Sie blockieren möchten eine root-Anmeldung. In /etc/ssh/sshd_config, die Sie ändern wollen:

#PermitRootLogin yes

Entfernen Sie die hastag und ändern Sie “ja” zu “Nein”:

PermitRootLogin no

Starten Sie sshd und der server blockiert alle Anfragen zum anmelden als root.

Einrichten Der Zwei-Faktor-Authentifizierung

Dies ist sicherlich übertrieben, aber wenn du paranoid bist, über jemanden nabbing Ihre privaten SSH-Schlüssel können Sie Ihren SSH-server zu verwenden, 2FA.

Der einfachste Weg dies zu tun ist die Verwendung von Google-Authentifikator mit einem Android-oder iOS-Gerät, obwohl SSH unterstützt viele zwei-Faktor-Methoden. Mit Google Authenticator, erhalten Sie einen QR-code können Sie Scannen die Google mobile Authenticator-app verknüpfen Sie Ihr Telefon mit dem server, und du wirst auch ein paar backup-codes zum wiederherstellen, falls Ihr Handy verloren geht. Nicht speichern Sie diese codes auf Ihrem Haupt-Maschine, sonst ist es nicht wirklich zwei Faktor.