Lewati ke konten
Secret Knock

contoh knockd.conf

knockd membaca /etc/knockd.conf: bagian [options] dan satu bagian untuk setiap pintu. Setiap bagian memiliki urutan, batas waktu, dan perintah yang dijalankan untuk alamat yang melakukan ketukan, %IP%. Pilih port Anda sendiri — jangan pernah menggunakan kembali port dari contoh.

Buka SSH selama beberapa detik

Pengaturan yang paling umum: satu ketukan membuka SSH, lalu knockd menutupnya kembali setelah cmd_timeout. Sesi yang sudah Anda buka tetap berfungsi jika firewall menerima koneksi yang telah terjalin.

[options]
    UseSyslog

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout   = 10
    stop_command  = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf

Urutan terpisah untuk membuka dan menutup

Tanpa timer, port tetap terbuka hingga Anda mengetuk urutan penutup. Praktis, tetapi mudah terlupakan — sebaiknya gunakan versi dengan batas waktu.

[options]
    UseSyslog

[openSSH]
    sequence    = 7311:tcp,8822:tcp,9133:udp
    seq_timeout = 10
    tcpflags    = syn
    command     = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

[closeSSH]
    sequence    = 9133:udp,8822:tcp,7311:tcp
    seq_timeout = 10
    tcpflags    = syn
    command     = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf

Urutan sekali pakai

Alih-alih satu urutan tetap, knockd dapat membaca file berisi urutan dan menerima setiap urutan hanya sekali, sehingga ketukan yang direkam tidak dapat diputar ulang. Secret Knock mempertahankan daftar yang sama dan beralih ke urutan berikutnya setelah ketukan yang membuka pintu.

[openSSH]
    one_time_sequences = /etc/knockd/ssh_sequences
    seq_timeout        = 10
    tcpflags           = syn
    start_command      = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout        = 10
    stop_command       = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp
/etc/knockd.conf dan file urutan

Dengan nftables

Pada sistem dengan nftables, biarkan knockd menambahkan alamat ke set dengan batas waktu; panduan menyembunyikan SSH menampilkan tabel nftables yang sesuai.

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s }
/etc/knockd.conf

Setelah mengedit

  1. 1Di Debian dan Ubuntu, atur antarmuka yang didengarkan knockd di /etc/default/knockd (KNOCKD_OPTS="-i eth0") dan mulai ulang knockd.
  2. 2Pantau prosesnya dengan journalctl -u knockd -f saat Anda melakukan ketukan.
  3. 3Di Secret Knock, + › Impor dari file mengubah setiap bagian dengan urutan menjadi pintu; masukkan daftar urutan sekali pakai secara manual.

Semua contoh di GitHub → Setiap konfigurasi di halaman ini, siap disalin: github.com/mobilcomm/secretknock-examples (domain publik).

Pertanyaan

Haruskah saya menggunakan langkah TCP atau UDP?

Keduanya dapat digunakan. Mencampurkan keduanya membuat urutan lebih sulit ditebak dari pemindaian port. Langkah UDP dapat membawa payload di Secret Knock jika pengaturan Anda memeriksanya.

Panduan untuk pengaturan Anda