Koneksi Telnet adalah protokol koneksi client-server yang menggunakan port 23 TCP. Telnet sendiri sedari awal memang tidak didesain dengan proses enkripsi data, jadi wajar kalau ada banyak orang yang masih tidak mau memakai telnet karena 'tidak aman'. Nah, pada tutorial kali ini kita akan mengamankan koneksi telnet itu dengan enkripsi seadanya, menggunakan software
stunnel.
Stunnel adalah sebuah software opensource yang didesain untuk menambahkan enkripsi SSL ke program yang memiliki protokol koneksi yang masih belum aman.
Instalasi di Sisi Server
Untuk instalasi dari Stunnel sendiri silakan gunakan aplikasi installer masing-masing. Misalkan untuk fedora/openmandriva:
[sourcecode]dnf -y install stunnel [/sourcecode]
atau untuk keluarga Debian/Ubuntu/Linux Mint bisa pakai:
[sourcecode]apt install stunnel[/sourcecode]
Tambah Rule Firewall
bagi yang menggunakan Firewall di Fedora, silakan tambahkan permission telnet ini di firewall:
[sourcecode]
firewall-cmd --add-service=telnet --perm
firewall-cmd --reload
[/sourcecode]
kemudian bikin SSL certificate untuk Stunnel:
[sourcecode]
openssl genrsa 2048 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 90 -out stunnel.crt
[/sourcecode]
kemudian gabung file RSA Key dan SSL Certificate CRT jadi satu file PEM dengan cara:
[sourcecode]
cat stunnel.crt stunnel.key > stunnel.pem
sudo cp stunnel.pem /etc/pki/tls/certs/
[/sourcecode]
Contoh Pemakaian
Untuk contoh pemakaian Telnet dengan Stunnel, silakan bikin dulu konfigurasi stunnel untuk Telnet, misalnya di file
/etc/stunnel/telnet.conf.
[sourcecode]
cert = /etc/pki/tls/certs/stunnel.pem
sslVersion = TLSv1
chroot = /var/run/stunnel
setuid = nobody
setgid = nobody
pid = /stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
[telnet]
accept = 450
connect = 23
[/sourcecode]
kemudian bikin init systemd baru untuk stunnel:
sudo cp /usr/lib/systemd/system/stunnel.service /etc/systemd/system
[sourcode]
[Unit]
Description=TLS tunnel for network daemons
After=syslog.target network.target
[Service]
ExecStart=/usr/bin/stunnel
Type=forking
PrivateTmp=true
ExecStartPre=-/usr/bin/mkdir /var/run/stunnel
ExecStartPre=/usr/bin/chown -R nobody:nobody /var/run/stunnel
[Install]
WantedBy=multi-user.target
[/sourcecode]
kemudian jangan lupa atur SELinux biar tidak rewel dengan lalu lintas di port 450 (contoh):
sudo semanage port -a -t telnetd_port_t -p tcp 450
dan tambah rule firewall lagi:
[sourcecode]
firewall-cmd --add-port=450/tcp --perm
firewall-cmd --reload
[/sourcecode]
kemudian enable service diatas dengan systemctl:
systemctl enable telnet.socket stunnel@telnet.service --now
untuk menjalankan stunnel ketika boot silakan lakukan:
systemctl enable stunnel@telnet.service
Instalasi Stunnel di Sisi Client
Silakan pasang saja dengan perintah sama dengan di server.
Untuk menggunakan koneksi telnet dengan stunnel, silakan download file Stunnel.pem yang kita bikin di server dan taruh di
/etc/pki/tls/certs.. Lalu jalankan scp seperti berikut (contoh saja):
sudo scp emka@192.168.56.40:/etc/pki/tls/certs/stunnel.pem /etc/pki/tls/certs/
buat file telnet.conf di folder /etc/stunnel:
[sourcecode]
cert = /etc/pki/tls/certs/stunnel.pem
client=yes
[telnet]
accept=450
connect=192.168.1.143:450
[/sourcecode]
enable service diatas:
systemctl enable stunnel@telnet.service --now
dan coba dong hasilnya:
[sourcecode]
[user@client ~]$ telnet localhost 450
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Kernel 5.0.9-301.fc30.x86_64 on an x86_64 (0)
server login: myuser
Password: XXXXXXX
Last login: Sun May 5 14:28:22 from localhost
[myuser@server ~]$
[/sourcecode]
Panjang amat! haha