Hai Telnet! Dan untuk saat ini. Perintah OpenSSL s_client untuk koneksi terenkripsi



Gambar : JanBaby, melalui Pixabay cc0



The telnet jaringan utilitas adalah kata kunci . Itu pada satu waktu sangat aktif digunakan oleh sebagian besar administrator sistem dan penggemar administrasi server jarak jauh lainnya. Utilitas memungkinkan Anda untuk mengakses porta remote host, melalui prosedur otorisasi dan menjalankan perintah di mesin ini.



Tetapi protokol telnet tidak menggunakan enkripsi. Dalam realitas saat ini, mengorbankan keamanan adalah kemewahan yang tak terjangkau. Namun, ada sejumlah tugas yang dapat dilakukan telnet dengan berbagai tingkat keberhasilan: pengujian jaringan, pemeriksaan port, dan berinteraksi dengan perangkat dan router IoT. 



Tampaknya utilitas tersebut dapat dengan mudah digunakan sebagai versi ping lanjutan. Dengan sendirinya, perintah ping, paling banter, hanya memeriksa ketersediaan host (terkadang perintah ini tidak akan berfungsi sama sekali, misalnya, karena pembatasan kebijakan akses). Tetapi perintah telnet tidak hanya memeriksa apakah port terbuka, tetapi juga dapat berkomunikasi dengan layanan jaringan melalui port ini. Namun seiring waktu, kita akan semakin dihadapkan pada kebutuhan untuk menggunakan koneksi terenkripsi, di mana telnet akan kembali tidak berdaya.



OpenSSL dan perintah s_client



Jadi dalam banyak kasus saya menggunakan perintah s_client dari perpustakaan OpenSSL, bukan telnet . Perintah s_client menjalankan fungsi klien SSL / TLS untuk menghubungkan ke host jarak jauh dengan berbagai pengaturan - kunci enkripsi, jenis jabat tangan, protokol, dan sebagainya. Perintah ini juga memungkinkan Anda untuk memeriksa apakah sesi sedang dilanjutkan.



Menginstal OpenSSL



Jika pustaka OpenSSL belum diinstal di OS Anda, maka itu dapat diinstal menggunakan manajer paket:



$ sudo dnf install openssl

 Debian        :

$ sudo apt install openssl

       :

$ openssl version

OpenSSL x.y.z FIPS

      
      





Pemeriksaan akses port



Beginilah cara kerja perintah telnet untuk memeriksa akses ke port 25:



$ telnet mail.example.com 25

Trying 98.76.54.32...

Connected to example.com.

Escape character is '^]'.
      
      





Pada contoh di atas, kami membuka sesi interaktif dengan server email tertentu yang mendengarkan di porta 25. Jika kami mendapatkan akses ke sana, kami dapat bertukar pesan dengannya. Jika port 25 tidak tersedia, koneksi tidak akan dibuat. 



Sekarang mari kita lihat bagaimana perintah serupa dari OpenSSL bekerja: 



$ 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)

      
      





Seperti yang Anda lihat, tidak ada pengiriman data tentang sertifikat SSL, sehingga koneksi terputus, sesi tidak dapat dibuka. Untuk membuat koneksi terenkripsi yang aman menggunakan protokol HTTPS, Anda perlu mengakses port khusus.



Membuka sesi interaktif dengan koneksi terenkripsi



Dalam kasus ini, browser dan server web berkomunikasi sedemikian rupa sehingga lalu lintas yang diarahkan ke port 80 sebenarnya dialihkan ke port 443, yang dicadangkan untuk lalu lintas HTTPS. Mengetahui hal ini, Anda dapat melakukannya dengan layanan web apa pun yang mendengarkan pada port 443.



Pertama, mari sambungkan ke port menggunakan SSL. Kami menggunakan opsi -showcerts dan sertifikat SSL akan dicetak ke terminal Anda:



$ 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
      
      





Kami bisa membuka sesi interaktif. Sampai ditutup, kita dapat mengirim pesan HTTP ke server:



[...]

GET / HTTP/1.1

HOST: example.com

      
      





Tekan tombol Return (untuk MacOS) atau ENTER (untuk Windows) dua kali, dan kami akan menerima respon dari server dalam bentuk 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>
      
      





Server email



Perintah s_client dapat digunakan untuk menguji koneksi terenkripsi ke server email. Agar ini berfungsi, kita memerlukan nama pengguna dan kata sandi (dalam kasus saya, untuk pengguna uji) yang dikodekan dalam Base64.



Anda dapat menyandikannya, misalnya, seperti ini:



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

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

      
      





Jika semuanya berjalan lancar, Anda dapat melanjutkan ke langkah berikutnya - menyambungkan ke server email melalui SSL. Port 587 biasanya digunakan:



$ 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

      
      





Saya memasukkan alamat email admin@example.com, yang saya harapkan akan menerima pesan percobaan dari server surat.



Resiko yang tidak bisa dibenarkan



Beberapa orang masih menggunakan telnet, tetapi telnet bukan lagi alat yang sangat diperlukan seperti dulu. Sekarang diklasifikasikan sebagai paket "warisan" pada banyak sistem. Beberapa administrator sistem bertanya-tanya mengapa itu dikecualikan dari penginstalan default. Telnet secara bertahap kehilangan relevansinya. Ini adalah proses yang obyektif. 



Keamanan jaringan sangat penting untuk sebagian besar sistem, jadi penting untuk memahami alat yang sesuai. Penting agar mereka mampu bekerja dengan koneksi yang aman. Jadi saat menguji atau memecahkan masalah, Anda tidak perlu menonaktifkan perlindungan sistem dan risiko keamanan.






Server cloud dari Macleod cepat dan aman.



Daftar menggunakan tautan di atas atau dengan mengklik spanduk dan dapatkan diskon 10% untuk bulan pertama menyewa server dengan konfigurasi apa pun!






All Articles