GNU/Linux >> Belajar Linux >  >> Linux

SSLH – Bagikan Port yang Sama Untuk HTTPS Dan SSH

Dalam tutorial singkat ini, kita akan melihat apa itu SSLH, cara menginstal SSLH dan cara mengkonfigurasi SSLH untuk berbagi port yang sama untuk https, dan ssh di sistem operasi mirip Linux dan Unix.

Apa itu SSLH?

Beberapa penyedia layanan Internet dan perusahaan korporat mungkin telah memblokir sebagian besar port, dan hanya mengizinkan beberapa port tertentu seperti port 80 dan 443 untuk memperketat keamanannya.

Dalam kasus seperti itu, kami tidak punya pilihan, tetapi gunakan port yang sama untuk beberapa program, katakanlah Port HTTPS 443 , yang jarang diblokir. Di sinilah SSLH , multiplexer SSL/SSH, akan membantu.

SSLH akan mendengarkan koneksi masuk pada port 443. Sederhananya, SSLH memungkinkan kita  menjalankan beberapa program atau layanan pada port 443 pada sistem Linux. Jadi, Anda dapat menggunakan SSL dan SSH menggunakan port yang sama secara bersamaan.

Jika Anda pernah berada dalam situasi di mana sebagian besar port diblokir oleh firewall, Anda dapat menggunakan SSLH untuk mengakses server jarak jauh Anda.

Instal SSLH di Linux

SSLH dikemas untuk sebagian besar distribusi Linux, sehingga Anda dapat menginstalnya menggunakan manajer paket default.

Di Debian , Ubuntu , Linux Mint dan Pop OS , jalankan:

$ sudo apt install sslh

Saat menginstal SSLH, Anda akan ditanya apakah Anda ingin menjalankan sslh sebagai layanan dari inetd, atau sebagai server mandiri.

Setiap pilihan memiliki manfaat tersendiri. Dengan hanya beberapa koneksi per hari, mungkin lebih baik menjalankan sslh dari inetd untuk menghemat sumber daya.

Di sisi lain, dengan banyak koneksi, sslh harus dijalankan sebagai server mandiri untuk menghindari munculnya proses baru untuk setiap koneksi yang masuk.

Di Linux Arch dan turunannya seperti Antergos, Manjaro Linux, instal menggunakan Pacman seperti gambar di bawah ini.

$ sudo pacman -S sslh

Di RHEL , CentOS , AlmaLinux dan Linux Rocky , Anda perlu menambahkan EPEL repositori dan kemudian instal SSLH seperti yang ditunjukkan di bawah ini.

$ sudo dnf install epel-release
$ sudo dnf install sslh

Di Fedora :

$ sudo dnf install sslh

Jika tidak tersedia di repositori default, Anda dapat mengompilasi dan menginstal SSLH secara manual seperti yang dijelaskan di sini .

Konfigurasi server web Apache atau Nginx

Seperti yang sudah Anda ketahui, server web Apache dan Nginx akan mendengarkan di semua antarmuka jaringan (yaitu 0.0.0.0:443 ) secara default. Kami perlu mengubah setelan ini untuk memberi tahu server web agar mendengarkan hanya di antarmuka host lokal (yaitu 127.0.0.1:443 atau localhost:443 ).

Untuk melakukannya, edit file konfigurasi server web (nginx atau apache) dan temukan baris berikut:

listen 443 ssl;

Dan, ubah menjadi:

listen 127.0.0.1:443 ssl;

Jika Anda menggunakan Virutalhosts di Apache, pastikan Anda telah mengubahnya juga.

VirtualHost 127.0.0.1:443

Simpan dan tutup file konfigurasi. Jangan memulai ulang layanan. Kami belum selesai.

Konfigurasikan SSLH

Setelah Anda membuat server web hanya mendengarkan pada antarmuka lokal, edit file konfigurasi SSLH:

$ sudo vi /etc/default/sslh

Temukan baris berikut:

Run=no

Dan, ubah menjadi:

Run=yes

Kemudian, gulir sedikit ke bawah dan ubah baris berikut untuk mengizinkan SSLH mendengarkan pada port 443 pada semua antarmuka yang tersedia (Misalnya 0.0.0.0:443 ).

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

Dimana,

  • --user sslh :Harus dijalankan di bawah nama pengguna yang ditentukan ini.
  • --listen 0.0.0.0:443 :SSLH mendengarkan pada port 443 di semua antarmuka yang tersedia.
  • --sshs 127.0.0.1:22 :Merutekan lalu lintas SSH ke port 22 di localhost.
  • --ssl 127.0.0.1:443 :Merutekan lalu lintas HTTPS/SSL ke port 443 di localhost.

Simpan dan tutup file.

Terakhir, aktifkan dan mulai sslh layanan untuk memperbarui perubahan.

$ sudo systemctl enable sslh
$ sudo systemctl start sslh

Pengujian

Periksa apakah daemon SSLH mendengarkan 443 .

$ ps -ef | grep sslh 
sslh 2746 1 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sslh 2747 2746 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sk 2754 1432 0 15:51 pts/0 00:00:00 grep --color=auto sslh

Sekarang, Anda dapat mengakses server jarak jauh Anda melalui SSH menggunakan port 443 :

$ ssh -p 443 [email protected]

Contoh keluaran:

[email protected]'s password: 
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-55-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information as of Wed Aug 14 13:11:04 IST 2019

System load: 0.23 Processes: 101
Usage of /: 53.5% of 19.56GB Users logged in: 0
Memory usage: 9% IP address for enp0s3: 192.168.225.50
Swap usage: 0% IP address for enp0s8: 192.168.225.51

* Keen to learn Istio? It's included in the single-package MicroK8s.

https://snapcraft.io/microk8s

61 packages can be updated.
22 updates are security updates.


Last login: Wed Aug 14 13:10:33 2019 from 127.0.0.1

Lihat? Saya sekarang dapat mengakses server jarak jauh melalui SSH meskipun port SSH default 22 diblokir. Seperti yang Anda lihat pada contoh di atas, saya telah menggunakan port https 443 untuk koneksi SSH. Juga, kita dapat menggunakan port yang sama 443 untuk koneksi openVPN juga.

Saya menguji SSLH di server Ubuntu 18.04 LTS saya dan itu berfungsi dengan baik seperti yang dijelaskan di atas. Saya menguji SSLH di jaringan area lokal yang dilindungi, jadi saya tidak mengetahui masalah keamanannya. Jika Anda menggunakannya dalam produksi, beri tahu kami keuntungan dan kerugian menggunakan SSLH di bagian komentar di bawah.

Untuk detail lebih lanjut, periksa halaman GitHub resmi yang diberikan di bawah ini.


Linux
  1. Cara Mengkonfigurasi Port Terpisah Untuk SSH dan SFTP Di CentOS/RHEL

  2. alat seperti teamviewer untuk ssh?

  3. melacak IP dan port tertentu

  1. Cara Mengubah Port SSH Di Linux

  2. Gagal menentukan port https untuk pengalihan di Docker

  3. Terowongan SSH HTTPS

  1. Cara Mengatur Tunneling SSH

  2. Baca Dan Tulis Ke File Yang Sama Di Linux Tanpa Menimpanya??

  3. Ssh Dan Izin Direktori Rumah?