Hallo Telnet! Und vorerst. OpenSSL s_client Befehl für verschlüsselte Verbindungen



Bild : JanBaby, über Pixabay CC0



Das Telnet- Netzwerkdienstprogramm ist ein Schlagwort . Es wurde zu einer Zeit von der überwiegenden Mehrheit der Systemadministratoren und anderen Fans der Remote-Serververwaltung sehr aktiv genutzt. Mit dem Dienstprogramm können Sie auf die Ports eines Remote-Hosts zugreifen, das Autorisierungsverfahren durchlaufen und Befehle auf diesem Computer ausführen.



Das Telnet-Protokoll verwendet jedoch keine Verschlüsselung. In der heutigen Realität ist es ein unerschwinglicher Luxus, Sicherheit zu opfern. Es gibt jedoch eine Reihe von Aufgaben, die Telnet mit unterschiedlichem Erfolg ausführen kann: Netzwerktests, Portüberprüfung und Interaktion mit IoT-Geräten und -Routern. 



Es scheint, dass das Dienstprogramm leicht als erweiterte Version von Ping verwendet werden kann. Der Befehl ping selbst überprüft bestenfalls nur die Verfügbarkeit des Hosts (manchmal funktioniert dieser Befehl überhaupt nicht, z. B. aufgrund von Zugriffsrichtlinienbeschränkungen). Der Telnet-Befehl prüft jedoch nicht nur, ob der Port geöffnet ist, sondern kann auch über diesen Port mit Netzwerkdiensten kommunizieren. Mit der Zeit werden wir jedoch zunehmend die Notwendigkeit haben, eine verschlüsselte Verbindung zu verwenden, bei der Telnet wieder machtlos sein wird.



OpenSSL und der Befehl s_client



In den meisten Fällen verwende ich den Befehl s_client aus der OpenSSL- Bibliothek anstelle von Telnet . Der Befehl s_client führt die Funktionen eines SSL / TLS-Clients aus, um eine Verbindung zu einem Remote-Host mit verschiedenen Einstellungen herzustellen - Verschlüsselungsschlüssel, Art des Handshakes, Protokoll usw. Mit dem Befehl können Sie auch überprüfen, ob die Sitzung fortgesetzt wird.



OpenSSL installieren



Wenn die OpenSSL-Bibliothek noch nicht auf Ihrem Betriebssystem installiert ist, kann sie mit dem Paketmanager installiert werden:



$ sudo dnf install openssl

 Debian        :

$ sudo apt install openssl

       :

$ openssl version

OpenSSL x.y.z FIPS

      
      





Portzugriffsprüfung



So funktioniert der Telnet-Befehl, um den Zugriff auf Port 25 zu überprüfen:



$ telnet mail.example.com 25

Trying 98.76.54.32...

Connected to example.com.

Escape character is '^]'.
      
      





Im obigen Beispiel haben wir eine interaktive Sitzung mit einem bestimmten Mailserver geöffnet, der Port 25 überwacht. Wenn wir Zugriff darauf erhalten, können wir Nachrichten damit austauschen. Wenn Port 25 nicht verfügbar ist, wird die Verbindung nicht hergestellt. 



Nun wollen wir sehen, wie ein ähnlicher Befehl von OpenSSL funktioniert: 



$ openssl s_client -connect example.com:80

CONNECTED(00000003)

140306897352512:error:1408F10B:SSL [...]

no peer certificate available

No client certificate CA names sent

SSL handshake has read 5 bytes and written 309 bytes

Verification: OK

New, (NONE), Cipher is (NONE)

Secure Renegotiation IS NOT supported

Compression: NONE

Expansion: NONE

No ALPN negotiated

Early data was not sent

Verify return code: 0 (ok)

      
      





Wie Sie sehen, wurden keine Daten zum SSL-Zertifikat gesendet, sodass die Verbindung unterbrochen wurde und keine Sitzung geöffnet werden konnte. Um eine sichere verschlüsselte Verbindung mit dem HTTPS-Protokoll herzustellen, müssen Sie auf einen speziellen Port zugreifen.



Öffnen einer interaktiven Sitzung mit einer verschlüsselten Verbindung



In diesem Fall kommunizieren Browser und Webserver so, dass der an Port 80 gerichtete Datenverkehr tatsächlich an Port 443 umgeleitet wird, der für den HTTPS-Datenverkehr reserviert ist. Wenn Sie dies wissen, können Sie mit jedem Webdienst, der Port 443 überwacht



, eine Verbindung zum Port über SSL herstellen. Wir verwenden die Option -showcerts und das SSL-Zertifikat wird auf Ihrem Terminal gedruckt:



$ openssl s_client -connect example.com:443 -showcerts

[...]

    0080 — 52 cd bd 95 3d 8a 1e 2d-3f 84 a0 e3 7a c0 8d 87   R...=..-?...z...

    0090 — 62 d0 ae d5 95 8d 82 11-01 bc 97 97 cd 8a 30 c1   b.............0.

    00a0 — 54 78 5c ad 62 5b 77 b9-a6 35 97 67 65 f5 9b 22   Tx\.b[w..5.ge..»

    00b0 — 18 8a 6a 94 a4 d9 7e 2f-f5 33 e8 8a b7 82 bd 94   ..j...~/.3......

    Start Time: 1619661100

    Timeout   : 7200 (sec)

    Verify return code: 0 (ok)

    Extended master secret: no

    Max Early Data: 0

-

read R BLOCK
      
      





Wir konnten eine interaktive Sitzung eröffnen. Bis zum Abschluss können wir HTTP-Nachrichten an den Server senden:



[...]

GET / HTTP/1.1

HOST: example.com

      
      





Drücken Sie zweimal die Eingabetaste (für MacOS) oder die EINGABETASTE (für Windows), und wir erhalten eine Antwort vom Server in der Form example.com/index.html:



[...]

<body>

<div>

    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this

    domain in literature without prior coordination or asking for permission.</p>

    <p><a href="https://www.iana.org/domains/example">More information...</a></p>

</div>

</body>

</html>
      
      





Mail-Server



Mit dem Befehl s_client kann eine verschlüsselte Verbindung zu einem Mailserver getestet werden. Damit dies funktioniert, benötigen wir einen Benutzernamen und ein Passwort (in meinem Fall für einen Testbenutzer), die in Base64 codiert sind.



Sie können sie beispielsweise folgendermaßen codieren:



$ perl -MMIME::Base64 -e 'print encode_base64(«username»);'

$ perl -MMIME::Base64 -e 'print encode_base64(«password»);'

      
      





Wenn alles gut geht, können Sie mit dem nächsten Schritt fortfahren - der Verbindung zum Mailserver über SSL. Port 587 wird häufig verwendet:



$ openssl s_client -starttls smtp \

-connect email.example.com:587

> ehlo example.com

> auth login

##paste your user base64 string here##

##paste your password base64 string here##

> mail from: noreply@example.com

> rcpt to: admin@example.com

> data

> Subject: Test 001

This is a test email.

.

> quit

      
      





Ich habe die E-Mail-Adresse admin@example.com eingegeben, von der ich eine Testnachricht vom Mailserver erwarte.



Ungerechtfertigtes Risiko



Einige Leute benutzen immer noch Telnet, aber es ist nicht mehr das unverzichtbare Werkzeug, das es einmal war. Es wird jetzt auf vielen Systemen als "Legacy" -Paket klassifiziert. Einige Systemadministratoren fragen sich, warum es von der Standardinstallation ausgeschlossen ist. Telnet verliert allmählich an Relevanz. Dies ist ein objektiver Prozess. 



Die Netzwerksicherheit ist für die meisten Systeme von entscheidender Bedeutung. Es lohnt sich daher, sich mit den entsprechenden Tools vertraut zu machen. Es ist wichtig, dass sie mit sicheren Verbindungen arbeiten können. Während des Testens oder der Fehlerbehebung müssen Sie den Systemschutz und die Risikosicherheit nicht deaktivieren.






Cloud-Server von Macleod sind schnell und sicher.



Registrieren Sie sich über den obigen Link oder indem Sie auf das Banner klicken und erhalten Sie 10% Rabatt für den ersten Monat der Anmietung eines Servers einer beliebigen Konfiguration!






All Articles