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 port443
di semua antarmuka yang tersedia.--sshs 127.0.0.1:22
:Merutekan lalu lintas SSH ke port22
di localhost.--ssl 127.0.0.1:443
:Merutekan lalu lintas HTTPS/SSL ke port443
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.