Das Secure Shell SSH-Handbuch

Tutorial über dieses großartige Protokoll, das 1997 seine Abenteuer begann und eine Vielzahl von Tools bietet, die sich durch ihre Sicherheit auszeichnen und sehr umfangreich sind. Ich werde es in mehrere Einträge unterteilen, um das Wichtigste sowohl auf Client- als auch auf Serverebene abzudecken.

Was ist das Secure Shell-Protokoll?Secure Shell oder SSH ist ein Netzwerkprotokoll, das den Austausch von Daten über einen sicheren Kanal zwischen zwei Computern ermöglicht. SSH verwendet Verschlüsselungstechniken, die die Informationen, die über das Kommunikationsmedium übertragen werden, unlesbar machen und kein Dritter den Benutzernamen und das Passwort der Verbindung oder das, was während der gesamten Sitzung geschrieben wird, erfahren können. SSH verwendet Kryptografie mit öffentlichem Schlüssel, um den Remote-Computer zu authentifizieren und ihm bei Bedarf die Authentifizierung des Benutzers zu ermöglichen.

SSH wird normalerweise verwendet, um eine Sitzung auf einem Remote-Computer zu starten, auf dem Sie Befehle ausführen können, aber es ermöglicht auch Tunneling, willkürliche Weiterleitung von TCP-Ports und X11-Verbindungen; Dateiübertragungen können auch unter Verwendung der zugehörigen SFTP- oder SCP-Protokolle durchgeführt werden.

Wir können sehen, dass seine große Anziehungskraft mehr als genug ist, um das alte TELNET-Protokoll zu verdrängen, das keine Informationsverschlüsselung aufweist und Daten einschließlich der Zugangsdaten kompromittiert.

Das SSH-Server, bietet standardmäßig den TCP-Port 22. Ein SSH-Client wird im Allgemeinen verwendet, um Verbindungen zu einem sshd-Server herzustellen, der Remote-Verbindungen akzeptiert. Beide sind häufig auf den meisten modernen Betriebssystemen zu finden, einschließlich Mac, Linux, Solaris und OpenVMS.

Die Windows-Unterstützung für seine Server-Version wird voraussichtlich noch in diesem Jahr offiziell veröffentlicht, während es auf Kundenebene eine Vielzahl von Optionen bietet, die PuTTY gegenüber den anderen hervorheben.

Lernen Sie, Putty zu verwenden

OpenSSHOpenSSH (Open Secure Shell) ist eine Reihe von Anwendungen, die eine verschlüsselte Kommunikation über ein Netzwerk unter Verwendung des SSH-Protokolls ermöglichen. Es wurde als freie und offene Alternative zum SSH-Protokoll erstellt, es wird am häufigsten unter Linux verwendet und wird in allen Einträgen verwendet.

1. Installieren Sie Secure Shell SSH


In fast allen Distributionen ist die Client-Version vorinstalliert, während die Server-Version per Repository verfügbar ist, die Installation sollte sehr einfach sein.

Debian, Ubuntu, Linux Mint und Derivate

 sudo apt-get install openssh-server

Centos, Rhel, Fedora

 sudo yum installiere openssh-server

Arch-Linux

 pacman -Syu öffnetsh

Wir überprüfen, ob es ausgeführt wird mit:

 curl localhost: 22
Bei korrekter Ausführung sollte Folgendes zurückgegeben werden:

[Farbe = # 696969] [/Farbe]

Verbinde mit dem Server
Mit dem Client können wir uns mit dem Server verbinden, der remote sein kann, auch wenn wir beide Versionen haben, um eine interne Verbindung mit localhost herzustellen.

Die einfachste Verbindungsmethode wäre:

 ssh-Benutzer @ Hostadresse
Bei einer internen Verbindung wäre dies:
 ssh-Benutzer @ localhost
Wir haben eine Vielzahl von Optionen beim Verbinden, ich werde einige sehr nützliche erklären, Sie können alle Ihre Optionen auflisten mit:
 Mann ssh
Hier zeigen wir sie:

Man SSH-Optionen
-CFordern Sie die Datenkomprimierung an, um Bandbreite oder Daten zu sparen, wenn Sie sich in einem Mobilfunknetz befinden.

-lGeben Sie den Benutzer an, mit dem wir eine Verbindung herstellen.

-UNDErstellen Sie eine Protokolldatei, in der der Standardfehler abgewichen wird.

-FWir wählen eine andere Konfigurationsdatei, die für Server mit ungewöhnlichen Optionen nützlich ist.

-gErforderlich für Port-Tunneling.

-ichWir wählen den Ordner aus, den wir für einen alternativen privaten Schlüssel verwenden.

-KAktivieren, wenn GSSAPI-Anmeldeinformationen verwendet werden.

-nWenn es in Verbindung mit X11 auf diese Weise verwendet wird, wird das gesamte von der Anwendung generierte Protokoll nach /dev / null umgeleitet.

-oderErforderlich, um erweiterte Optionen wie ServerAliveInterval 30 zu verwenden.

-PWählen Sie einen anderen Port als 22 aus, um eine Verbindung zum Host herzustellen.

-vEs zeigt alle notwendigen Schritte zum Verbindungsaufbau, noch mehr Informationen erhalten Sie mit -vv -vvv.

-XNotwendig, wenn wir X11-Weiterleitung verwenden möchten.

-YAktiviert die sichere X11-Weiterleitung.

Wir werden eine Verbindung zum test.solvetic.com-Server mit dem jcarrillo-Benutzer herstellen, indem wir einen anderen privaten Schlüssel verwenden, der sich in unserem / home / jcarrillo / keys-aws-Ordner befindet und Port 8022 unserer Instanz auf AWS verwendet.

 Beispiel → ssh -C -i "~ / keys-aws /" -p 8022 -l jcarrillo test.solvetic.com
Wie wir sehen, handelt es sich um ein umfangreiches, aber sehr vollständiges Tool, das mehr Einträge verdient, um seine notwendigen Funktionen für jeden Sysadmin auf mittlerem oder professionellem Niveau abdecken zu können.

Jetzt gehen wir zur Konfiguration auf Client-Server-Ebene über, Generierung öffentlicher und privater Schlüssel, Verwendung von Portweiterleitung in realen Situationen, Umleitung des X-Servers durch X11-Weiterleitung, Verwendung von scp, sftp, ssh-agent unter anderem .

2. SSH-Server sichern


Wir machen weiter mit OpenSSH konzentrieren auf Sicherung unseres SSH-Servers, um alle Arten von Angriffen zu vermeiden, die unseren Server gefährden könnten. Alle diese Konfigurationen werden in der Datei sshd_config in / etc / ssh / vorgenommen, die wir in meinem Fall mit jedem Texteditor ändern können vim:
 sudo vim / etc / ssh / sshd_config
Jetzt sehen wir, wie man es ändert.

sshd_config ändern
Im Inneren sehen wir eine typische Konfigurationsdatei basierend auf "Wertoption" Wenn eine der Optionen standardmäßig nicht gefunden wird, müssen wir die Zeile vollständig platzieren, in anderen Fällen müssen wir nur von 0 auf 1 von Nein auf Ja ändern oder eine Zeile auskommentieren.

Port 22 ändern
Ist von wesentlicher Bedeutung Ändern Sie den Standardport in einen zufälligen. Viele Skripte sind so konfiguriert, dass sie diesen Port angreifen, es wird empfohlen, ihn in der zu ändern Bereich von 1000 bis 23000 Stellen Sie sicher, dass der Port nicht von einem anderen Dienst verwendet wird.

Wir sollten auch Ports wie 2222, 8022 oder 1022 nicht verwenden, sie sind genauso verbreitet wie 22 und viele Skripte sind so konfiguriert, dass sie sie angreifen.

Port 2345

Wenn wir haben SELINUX enabled müssen wir einen zusätzlichen Befehl verwenden, um den Zugriff von außen auf den neuen Port zu ermöglichen.

Semanage port -a -t ssh_port_t -p tcp 2345 #Ändern von Port 22 für Sicherheit

Standardprotokoll 2 verwenden
Wir müssen sicherstellen, dass alle unsere Verbindungen unter Protokoll 2 hergestellt werden, da 1 viele Schwachstellen aufweist.

Protokoll 2

Zeit, Zugangsdaten einzugeben
Suchbereich "Authentifizierung". Ihre ersten beiden Optionen sind ebenfalls wichtig. Die erste ist die Anzahl der Sekunden, die der Remote-Benutzer benötigt, um sich bei Ihrem Computer anzumelden. Stellen Sie diesen Wert auf einige Sekunden ein, es dauert nicht lange, sich anzumelden, wenn wir das Konto und das Passwort kennen.

Auf diese Weise vermeiden wir bestimmte Skripte, die diese Zeit ausnutzen. Der typische Sicherheitswert liegt bei 30, kann aber auch noch darunter liegen.

AnmeldenGraceTime 30

Root-Zugriff deaktivieren
Dies Es ist die wichtigste Option, Opfer eines Angriffs zu werden, Sie brauchen 3 Dinge:

  • Nutzer
  • Hafen
  • Passwort

Wenn wir root deaktivieren, haben sie bereits einen, da root auf allen Systemen ein gemeinsamer Benutzer ist. Darüber hinaus kann dieser Benutzer verheerende Schäden anrichten, indem er alle Berechtigungen aktiviert.

PermitRootLogin-Nr

Kontrollierten Zugriff aktivieren
Wir können steuern, welcher Benutzer sich über SSH anmelden kann, und sogar eine Klausel platzieren, um nur von einer bestimmten IP aus eine Verbindung herzustellen. Dies ist vergleichbar mit dem, was AWS anbietet, um uns mit Ihren Instanzen zu verbinden.

AllowUsers [email protected]

Es ist wichtig, den Zugriff nur Benutzern zu erlauben, die einen Remote-Zugriff benötigen, und wenn möglich auf eine bekannte IP zu beschränken.

Konfigurieren Sie die Anzahl der Fehlversuche
Wenn wir das Passwort falsch eingeben, gibt uns der Server mehrere Versuche, es erneut einzugeben, dies muss begrenzt werden oder Sie werden Opfer eines Brute-Force-Skripts, wir können es 2 oder 3 Mal platzieren.

MaxAuthTries 2

Anzahl gleichzeitig zulässiger Verbindungen
Dies kann je nach Verwendung des Servers variieren, aber ideal ist es, ihn kontrolliert zu haben. Fügen Sie einfach die Gesamtzahl der von SSH zugelassenen Benutzer hinzu.

MaxStartups X

Nachdem wir alle Änderungen in unserer Datei vorgenommen haben, müssen wir Starten Sie unseren sshd-Dienst neu, Kann je nach Service-Manager variieren.

SystemD

 systemctl Neustart sshd

Emporkömmling / Sysinit

 Dienst Neustart sshd

All diese Änderungen fügen ein . hinzu zusätzliche Sicherheit aber wir müssen bedenken:

  • Verwenden Sie alphanumerische Passwörter.
  • Benutzen Authentifizierung durch öffentliche / private Schlüssel wenn es möglich ist.
  • Ergänzen Sie die Sicherheit mit SELINUX und Firewalls.
  • Kontrollieren Sie den Zugriff, für den sich Benutzer aus der Ferne anmelden müssen.

Authentifizieren von öffentlichen / privaten SSH-Schlüsseln


Derzeit verwenden SSH-Schlüssel Es ist eine unverzichtbare Voraussetzung, diese Authentifizierung wird von Administratoren häufig verwendet, um Aufgaben zwischen verschiedenen Servern zu automatisieren, und wird sogar von Entwicklern verwendet, um auf SCM wie GIT, GITHUB, GITLAB und andere zuzugreifen.

Es bietet große Sicherheit und die Möglichkeit, Automatisierte Aufgaben erstellen skriptbasiert als a Zurück oder Änderungen replizieren an mehrere Knoten gleichzeitig.

Bei Verwendung eines Schlüssels SSH (öffentlich und privat), können sie sich problemlos mit einem oder mehreren Servern verbinden, ohne jedes Mal ein Kennwort eingeben zu müssen. Es ist möglich, Ihre Schlüssel ohne Passphrase zu konfigurieren, aber das wäre rücksichtslos, wenn jemand Ihren Schlüssel erhalten würde, könnte er ihn verwenden. Wir werden darüber sprechen, wie man Schlüssel generiert, verteilt und ssh-agent verwendet, um mehr Sicherheit zu erreichen.

Generieren von Schlüsseln ohne Passphrase
Stellen Sie zunächst sicher, dass Sie OpenSSH installiert haben, es ist nicht notwendig, der Server nur der Client.

Wir beginnen mit der Generierung eines DSA-Schlüssels mit 1024-Bit-Sicherheit, mehr als genug, obwohl Sie noch weiter gehen und einen RSA-Schlüssel mit einem Limit von 4096 generieren können.

 ssh-keygen -b 1024 -t dsa
Es fragt uns nach dem Speicherort für die Standardschlüssel ~ / .ssh
 Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/home/test/.ssh/id_dsa)
Dann wird nach einem Satz gefragt, den wir vorerst nicht verwenden und ihn leer lassen und uns mitteilen, dass der Schlüssel erstellt wurde und uns widerspiegelt.

Das Bild wird immer anders sein, es wird zufällig generiert. Wenn wir dann in den .ssh-Ordner gehen, müssen wir 2 Dateien haben

id_dsa -----> Privater Schlüssel (Teilen Sie ihn mit niemandem, er ist wie Ihr TDC).
id_dsa.pub ----> Es ist diejenige, die wir teilen, um eine Verbindung herzustellen.

Öffentlichen Schlüssel teilen
Falls wir den öffentlichen Schlüssel in SCM oder Chef, Puppet, Jenkins teilen möchten, visualisieren wir die öffentliche Schlüsseldatei, kopieren sie und fügen sie an der entsprechenden Stelle ein.

 mehr id_dsa.pub ssh-dss AAAAB3NzaC1kc3MAAACBAN6SEI4Qqzb23pJYRXIAtPmGJHln5hFdthFq43ef + ifR29v2IknXCFwefKK8jorSDiUEY / 1F / yp0xao mjhFQu1jNXOgF0PAZTfivRVFn6Q9FRsyXU9s + fx + + L22sV7GkCHPxAAAAFQCyF1Gdh3 xQiW3mf3y4IX654O82SLGl7Vhh5UsvG8r8d8pV6R Cap4xr / J44xDDn 0gFArHmFwAxfQAAAIEAmVYjPYAdQ9DCNWP + + + 03anWgyoZqSPPs23djyVQ756U4VitM0GiIQQ89HCdvTFFpSagnfdVpWh4 Hxo4Y5skKihnPMtB bFNbP / 2SmGdPz1AOmb7tvRrTkj5VLtXeDeB3ulowUKarwiBVVvAvxtxmozoZHOADWqrEPizxIAAACAU2DF1ZGTiJMP OhVB7mlsVhhkq53OxKKJbZqsl9hkOiSxaLUfQBNu6Ae441ekIObqolWNCBIvCO3uQYOozyzNGBhqHE7FVq 1oXguj + + + 2GAQ UGNkee96D2by S7daieIKNmFer2hO / SBxzepMrWAiIUnUsP5irmYspkjGlQxP + H x B = test @ solvetic 
Falls Sie es teilen möchten, um auf einen Server zuzugreifen, empfehle ich immer die Verwendung von ssh-copy-id ist in OpenSSH enthalten und sehr einfach zu bedienen:
 ssh-copy-id user @ remote-server-ip -i gibt die Position des zu verwendenden Schlüssels an.
Es gibt andere Möglichkeiten wie:
 ssh-Benutzer @ remote-server-ip \ 'cat >> .ssh / authorised_keys2' <.ssh / id_dsa.pub
 scp ~ / .ssh / id_dsa.pub Benutzer @ remote-server-ip
Von nun an sind die Tasten verbunden und Sie müssen nur noch den Host eingeben.
 ssh -l Benutzer remote-server-ip
Diesmal wird kein Passwort abgefragt und wir können Skripte ohne Interaktion verwenden.

Passphrase generieren und mit ssh-agent verknüpfen
Das SSH-Schlüsselsicherheit Es basiert auf unserem privaten Schlüssel, der wie eine Zugangskarte funktioniert, aber wenn jemand unseren Schlüssel stiehlt, kann er auf alle Orte zugreifen, zu denen wir Zugang haben. Aber beim Generieren einer Passphrase können wir eine zusätzliche Ebene haben, nicht nur der Schlüssel ist notwendig, sondern wir müssen unsere Phrase nicht einführen.

Dieses Mal erstellen wir einen rsa-Schlüssel mit größerer Sicherheit, indem wir eine Phrase konfigurieren.

 ssh-keygen -b 4096 -t rsa -C "Schlüssel mit Passphrase" # -C Kommentar hinzufügen. 
Da es sich um eine Phrase handelt, können wir Leerzeichen, Punkte und Sonderzeichen verwenden
 Beispiel ---> Das ist mein neuer Schlüssel mit Fr@S3.
Wir teilen den neuen Schlüssel:
 scp ~ / .ssh / id_rsa.pub Benutzer @ remote-server-ip
Diesmal brauchen wir den Schlüssel und die Passphrase, aber mehrmals eingeben ist mühsam, aber wir können es mit ssh-agent ergänzen, wir müssen es starten.
 ssh-agent
Wir fügen unseren Schlüssel hinzu
 ssh-add Passphrase für /home/user/.ssh/id_rsa eingeben: # Wir geben die von uns konfigurierte Phrase ein. 
Jetzt können wir uns mit jedem Server verbinden, der unseren Schlüssel verwendet, ohne unseren eingeben zu müssen Passphrase.

Ich empfehle diese Methode, wenn Sie sich außerhalb des Intranets, Client und Server an verschiedenen Stellen im Internet befinden und wir keine automatisierten Aufgaben verwenden, sondern eine Verbindung zum Server für Remote-Administrationszwecke herstellen, am besten ein Passwort angeben oder sehr lang Passphrase (15 oder mehr Zeichen, Großbuchstaben, Kleinbuchstaben, Zahlen und Symbole) für den öffentlichen Schlüssel.

Diesen Weg es wird praktisch unmöglich sein, gehackt zu werden auf diese Weise, da der Hacker nicht nur das Passwort kennen muss, sondern auch über ein gültiges öffentliches Zertifikat auf dem Server verfügen muss, damit er authentifiziert werden kann. (Natürlich vorausgesetzt, der Server wurde nie kompromittiert und ist auf dem neuesten Stand und mit bestmöglicher Sicherheit).

Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave