Lewati ke konten
Secret Knock

Penjelasan port knocking

Port knocking menjaga layanan tetap tidak terlihat hingga seseorang membuktikan bahwa mereka mengetahui rahasia. Panduan ini membahas cara kerjanya, dua implementasi umum — knockd dan fwknop — serta alasan ketukan gagal dalam praktik.

Cara kerja port knocking

Firewall membuang setiap koneksi ke port yang dilindungi, sehingga pemindai tidak melihat apa pun. Daemon kecil memantau lalu lintas yang mencapai firewall. Saat satu alamat sumber menghasilkan pola yang diharapkan, daemon menambahkan aturan firewall yang mengizinkan alamat tersebut, biasanya untuk waktu singkat.

Pola tersebut adalah ketukan. Dengan knockd, pola berupa urutan upaya koneksi ke port tertentu dalam urutan tertentu dan dalam batas waktu. Dengan fwknop, pola berupa satu paket terenkripsi.

knockd: urutan ketukan

knockd mendengarkan pada antarmuka dan mencocokkan upaya koneksi dengan urutan dalam /etc/knockd.conf. Urutan dapat menggabungkan port TCP dan UDP. Saat cocok, knockd menjalankan perintah — biasanya aturan iptables atau nftables untuk alamat yang mengetuk (%IP%).

Contoh ini membuka SSH untuk alamat yang mengetuk dan menutupnya kembali setelah 10 detik. Sesi SSH yang ada tetap berfungsi jika firewall Anda menerima koneksi yang sudah terbentuk.

[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 — buka SSH selama 10 detik

Pilih port Anda sendiri; jangan pernah menggunakan kembali port dari contoh yang dipublikasikan. tcpflags = syn membuat knockd hanya menghitung paket dengan tanda SYN — paket pertama dari upaya koneksi.

fwknop: Single Packet Authorization

fwknop menggantikan urutan dengan satu paket UDP yang dienkripsi (AES) dan diautentikasi (HMAC). Server, fwknopd, menangkapnya secara pasif, memverifikasinya, memeriksa bahwa paket bukan pemutaran ulang, lalu membuka port yang diminta untuk alamat di dalam paket.

Buat kunci dengan fwknop --key-gen dan tempatkan di access.conf server. Secret Knock mengimpor sisi klien dari .fwknoprc Anda.

SOURCE              ANY
OPEN_PORTS          tcp/22
KEY_BASE64          <output of fwknop --key-gen>
HMAC_KEY_BASE64     <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT   30
/etc/fwknop/access.conf — izinkan SSH dengan kunci SPA

Karena alamat yang diizinkan berada di dalam paket terenkripsi, SPA dapat membuka port untuk alamat selain alamat pengirim paket — berguna saat Anda mengetuk dari ponsel dengan data seluler untuk laptop di tempat lain.

Mengapa ketukan gagal

  • IPv4 vs IPv6: ketukan keluar melalui satu keluarga alamat dan SSH terhubung melalui keluarga lainnya. Firewall membuka pintu untuk alamat yang tidak Anda gunakan.
  • Alamat publik berbeda: pada data seluler, di balik NAT operator atau VPN, server melihat IP lain dari yang Anda harapkan. Periksa alamat asal ketukan Anda.
  • SYN yang dikirim ulang: jika ketukan TCP tidak dijawab, sistem operasi klien mengirim SYN yang sama lagi. Dalam pengujian kami, knockd 0.8 mengatur ulang urutan pada SYN berulang seperti itu, sehingga klien harus mengirim setiap ketukan sekali dan menghentikan upaya dengan cepat.
  • Waktu: ketukan yang tiba di luar seq_timeout, atau dalam urutan yang salah, memulai urutan dari awal.
  • Perangkat perantara: beberapa jaringan memblokir atau menulis ulang lalu lintas ke port tidak umum, sehingga ketukan yang berfungsi di rumah dapat gagal di jaringan hotel atau kantor.

Apakah aman?

Urutan knockd dikirim tanpa enkripsi; siapa pun yang dapat mengamati lalu lintas Anda dapat memutarnya ulang. Gunakan untuk menyembunyikan layanan dari pemindai, di depan kunci SSH — bukan sebagai penggantinya. SPA fwknop menutup celah itu dengan enkripsi, HMAC, dan perlindungan pemutaran ulang, serta menjadi pilihan yang lebih baik saat lalu lintas Anda mungkin diamati.

Mengetuk dari iPhone, Mac, dan Apple Watch

Secret Knock mengirim urutan knockd dan paket SPA fwknop dari iPhone, iPad, dan Mac, memeriksa bahwa port merespons, lalu membuka app SSH Anda. Apple Watch mengetuk melalui iPhone yang dipasangkan karena watchOS tidak mengizinkan app mengirim paket TCP atau UDP mentah; jauh dari iPhone, Watch dapat mengirim SPA melalui HTTP ke server yang mengaktifkannya.

Panduan untuk pengaturan Anda

Biarkan pintu tertutup. Bawa ketukannya.

Secret Knock segera hadir di App Store untuk iPhone, iPad, Mac, dan Apple Watch.

Secret Knock →