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 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 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
- knockd di iPhone, iPad, dan Mac →
- fwknop SPA di iPhone, Mac, dan Apple Watch →
- Port knocking MikroTik →
- Port knocking DrayTek Vigor →
- Sembunyikan SSH di balik port knocking →
- Port knocking di Apple Watch →
- Mengapa ketukan port tidak membuka →
- contoh knockd.conf →
- penyiapan server fwknop →
- Ketukan port, VPN, atau fail2ban? →
Biarkan pintu tertutup. Bawa ketukannya.
Secret Knock segera hadir di App Store untuk iPhone, iPad, Mac, dan Apple Watch.
Secret Knock →