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!