Penjelasan port knocking
Port knocking menjadikan perkhidmatan tidak kelihatan sehingga seseorang membuktikan mereka mengetahui rahsia. Panduan ini menerangkan cara ia berfungsi, dua pelaksanaan lazim — knockd dan fwknop — serta sebab ketukan gagal dalam amalan.
Cara port knocking berfungsi
Firewall menggugurkan setiap sambungan ke port yang dilindungi, jadi pengimbas tidak melihat apa-apa. Daemon kecil memantau trafik yang sampai ke firewall. Apabila satu alamat sumber menghasilkan corak yang dijangka, daemon menambah peraturan firewall yang membenarkan alamat tersebut, biasanya untuk tempoh singkat.
Corak itu ialah ketukan. Dengan knockd, ia ialah urutan percubaan sambungan ke port tertentu dalam susunan khusus dan dalam had masa. Dengan fwknop, ia ialah satu paket disulitkan.
knockd: urutan ketukan
knockd mendengar pada antara muka dan memadankan percubaan sambungan dengan urutan dalam /etc/knockd.conf. Urutan boleh menggabungkan port TCP dan UDP. Apabila sepadan, knockd menjalankan perintah — lazimnya peraturan iptables atau nftables untuk alamat yang mengetuk (%IP%).
Contoh ini membuka SSH untuk alamat yang mengetuk dan menutupnya semula selepas 10 saat. Sesi SSH sedia ada terus berfungsi jika firewall anda menerima sambungan yang telah diwujudkan.
[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 sendiri; jangan guna semula port daripada contoh yang diterbitkan. tcpflags = syn menjadikan knockd mengira hanya paket dengan bendera SYN — paket pertama bagi percubaan sambungan.
fwknop: Single Packet Authorization
fwknop menggantikan urutan dengan satu paket UDP yang disulitkan (AES) dan disahkan (HMAC). Pelayan, fwknopd, menangkapnya secara pasif, mengesahkannya, memeriksa bahawa ia bukan main semula, dan membuka port yang diminta untuk alamat dalam paket.
Jana kunci dengan fwknop --key-gen dan letakkannya dalam access.conf pelayan. Secret Knock mengimport bahagian klien daripada .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 Oleh sebab alamat yang dibenarkan berada dalam paket disulitkan, SPA boleh membuka port untuk alamat selain alamat yang menghantar paket — berguna apabila anda mengetuk daripada telefon pada data mudah alih untuk komputer riba di tempat lain.
Sebab ketukan gagal
- IPv4 berbanding IPv6: ketukan dihantar melalui satu keluarga alamat dan SSH bersambung melalui keluarga yang lain. Firewall membuka pintu untuk alamat yang tidak anda gunakan.
- Alamat awam berbeza: pada data mudah alih, di belakang NAT pembawa atau VPN, pelayan melihat IP lain daripada yang anda jangkakan. Semak alamat asal ketukan anda.
- SYN dihantar semula: jika ketukan TCP tidak dijawab, sistem pengendalian klien menghantar SYN yang sama sekali lagi. Dalam ujian kami, knockd 0.8 menetapkan semula urutan pada SYN berulang sedemikian, jadi klien mesti menghantar setiap ketukan sekali dan menghentikan percubaan dengan cepat.
- Masa: ketukan yang tiba di luar seq_timeout, atau dalam susunan salah, memulakan semula urutan.
- Peranti perantara: sesetengah rangkaian menyekat atau menulis semula trafik ke port luar biasa, jadi ketukan yang berfungsi di rumah mungkin gagal pada rangkaian hotel atau pejabat.
Adakah ia selamat?
Urutan knockd dihantar tanpa penyulitan; sesiapa yang boleh memantau trafik anda boleh memainkannya semula. Gunakannya untuk menyembunyikan perkhidmatan daripada pengimbas, di hadapan kunci SSH — bukan sebagai penggantinya. SPA fwknop menutup kelemahan itu dengan penyulitan, HMAC dan perlindungan main semula, serta merupakan pilihan lebih baik apabila trafik anda mungkin diperhatikan.
Mengetuk daripada iPhone, Mac dan Apple Watch
Secret Knock menghantar urutan knockd dan paket SPA fwknop daripada iPhone, iPad dan Mac, memeriksa bahawa port menjawab, serta membuka app SSH anda. Apple Watch mengetuk melalui iPhone berpasangan kerana watchOS tidak membenarkan app menghantar paket TCP atau UDP mentah; jauh daripada iPhone, ia boleh menghantar SPA melalui HTTP kepada pelayan yang membenarkannya.
Panduan untuk persediaan anda
- knockd pada iPhone, iPad dan Mac →
- fwknop SPA pada iPhone, Mac dan Apple Watch →
- Ketukan port MikroTik →
- Port knocking DrayTek Vigor →
- Sembunyikan SSH di sebalik ketukan port →
- Port knocking pada Apple Watch →
- Mengapa ketukan port tidak membuka →
- Contoh knockd.conf →
- persediaan pelayan fwknop →
- Port knocking, VPN atau fail2ban? →
Pastikan pintu tertutup. Bawa ketukan bersama anda.
Secret Knock akan datang ke App Store untuk iPhone, iPad, Mac dan Apple Watch.
Secret Knock →