Port knocking adalah teknik menyembunyikan port layanan (misalnya SSH di port 22) dari pemindaian publik: port tetap tertutup secara default, dan hanya terbuka setelah client mengirim rangkaian "ketukan" (percobaan koneksi) ke beberapa port tertentu secara berurutan. Teknik ini efektif menekan noise dari bot yang terus-menerus memindai port SSH standar, meski sebaiknya tetap dikombinasikan dengan lapisan keamanan lain (lihat catatan di bagian bawah).
Instalasi Knockd
Buka terminal dan jalankan:
sudo apt-get install knockd
Contoh output instalasi:
[sudo] password for user: Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: knockd 0 upgraded, 1 newly installed, 0 to remove and 4 not upgraded. Need to get 27.6 kB of archives. After this operation, 168 kB of additional disk space will be used. Setting up knockd (0.5-3) ... knockd disabled: not starting. To enable it edit /etc/default/knockd ... (warning).
Konfigurasi Knockd
Edit file /etc/knockd.conf:
sudo nano /etc/knockd.conf
Contoh konfigurasi dengan urutan ketukan port 2022, 3022, 4022:
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 2022,3022,4022
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 4022,3022,2022
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Simpan, lalu edit file /etc/default/knockd dan aktifkan knockd:
sudo nano /etc/default/knockd # cari baris: START_KNOCKD=0 # ganti jadi: START_KNOCKD=1 # opsional, tentukan interface sesuai output "ip a" (mis. eth0 atau ens18): KNOCKD_OPTS="-i eth0"
Menjalankan Knockd
Distro modern (Ubuntu 16.04+ / Debian 8+) memakai systemd, jadi kelola knockd lewat systemctl — bukan lagi /etc/init.d/knockd seperti pada versi lama:
sudo systemctl start knockd # jalankan sudo systemctl stop knockd # hentikan sudo systemctl restart knockd # restart sudo systemctl status knockd # cek status sudo systemctl enable knockd # otomatis jalan tiap boot
Kalau server masih memakai SysV init lama, perintah sudo /etc/init.d/knockd start dkk. tetap berfungsi sebagai fallback.
Cara Membuka dan Menutup Port dari Client
Pasang paket knockd juga di sisi client untuk mendapatkan command knock, lalu untuk membuka port 22 (SSH) di server dengan IP 203.1.2.3:
knock -v 203.1.2.3 2022 3022 4022
Contoh output:
Mau Kuasai Debian / Ubuntu: Setting Port Knocking dengan Knockd dan Iptables Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
hitting tcp 203.1.2.3:2022 hitting tcp 203.1.2.3:3022 hitting tcp 203.1.2.3:4022
Untuk menutup kembali, urutan port dibalik:
knock -v 203.1.2.3 4022 3022 2022
Verifikasi Port Terbuka
Dari client, coba konek langsung:
ssh [email protected]
Atau cek dari sisi server:
sudo iptables -L INPUT -v -n sudo iptables -L INPUT -v -n | grep :22
Catatan Keamanan
Port knocking bagus untuk mengurangi noise scanning otomatis, tapi jangan dijadikan satu-satunya lapisan pertahanan. Kombinasikan dengan hardening dasar Linux lain: matikan login root via SSH, pakai key-based authentication (bukan password), dan pasang fail2ban untuk memblokir IP yang berulang kali gagal login. Materi ini dibahas lebih dalam di Kursus Security Fundamentals dan Kursus Linux Fundamentals Edusoft Center.
Apakah port knocking aman digunakan sebagai satu-satunya proteksi SSH?
Tidak disarankan. Port knocking efektif menyembunyikan port dari scanning otomatis, tapi sebaiknya dikombinasikan dengan key-based authentication, menonaktifkan login root, dan fail2ban sebagai lapisan tambahan.
Apakah knockd masih bisa dipakai di Ubuntu/Debian versi terbaru?
Ya, paket knockd masih tersedia di repository Ubuntu dan Debian terbaru. Perbedaannya hanya di cara menjalankan service: gunakan systemctl (systemd), bukan /etc/init.d/ seperti pada distro lama.
Kenapa perintah knock dari client tidak berhasil membuka port?
Penyebab umum: urutan port pada perintah knock tidak sama persis dengan sequence di knockd.conf, seq_timeout terlampaui karena ketukan terlalu lambat, firewall client memblokir paket keluar, atau interface yang di-listen knockd (KNOCKD_OPTS -i) salah.
Direview oleh Komarudin Syarif — Trainer Edusoft Center.
Terakhir diperbarui: 11 Agustus 2026.
Mau Kuasai Debian / Ubuntu: Setting Port Knocking dengan Knockd dan Iptables Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
12 Comments
mas mw tnya waktu masuk vi/etc/knokcd.conf saya mw ngedit kok gk bsa caranya gmn??? tlong bls scpatnya
Jika bunyi errornya “Command not found” atau “No such file or directory” berarti ada kesalahan ketik..pake aja editor yg mudah spt nano, sehingga perintahnya: sudo nano /etc/knockd.conf (perhatikan spasi & tulisannya).
Semoga membantu..:-)
ok sip mas ,,,
saya mau tanya lagi sya sdang mmbuat skripsi ttng port knocking ,, satu kmpter sya bwt webservernya dengan apache2 dan port knocingnya ,,, bgaimna cara klient yang ingin msuk ke webservernya klo sudah di knock dr klient??? klo ingin tanya lagi ad email, ato facebooknya mas trmakasih ,,, mhon bntuanya
Misalnya port yg dpt di knock adalah port 80. Jika klien sdh melakukan knock dengan benar, maka secara otomatis port 80 akan terbuka utk klien tersebut.
sudah saya coba mas dari kient saya knock tp gk ad reaksi ap2 d kmpter servernya ,, ne saya memakai wifi yg sma ,, mhon solusinya mas ?? terimakasih
mas skalian mw tanya jga ,,, apakah openssh jga hrus diinstal spya port knocking jalan ??? terimakasih
saya sudah ikuti seperti yang diatas ketukanya juga sudah bisa dilihat di server tapi pas mau remote pkek ssh tetep gak bisa conektion refaused….
Kemungkinan ada firewall yang menghalangi koneksi tersebut
bagaimana cara menyimpan settingan pada knockd kita ? tekan tombol apa ?
trims.
Tekan tombol Esc, lalu tekan tombol :wq
selamat pagi mau tanya cara mendapatkan log dari port knocking bagaimana….?
Sya mau bertanya mau saya mau melakukan enkripsi ke sequence knockd, terus saya sudah membuat scrip python untuk melakukan enkripsi, tetapi jika saya melakukan knock pada ketuka yg telah di enkripsi maka hasilnya tidak dapat membuka port, itu gimana yah ?