Pengenalan
Selain menukar port lalai untuk SSH, dan menggunakan pasangan kunci untuk pengesahan, port mengetuk boleh digunakan untuk lebih selamat (atau lebih tepat, jelas) pelayan SSH anda. Ia berfungsi dengan menolak sambungan ke port rangkaian SSH anda. Ini pada hakikatnya menyembunyikan fakta bahawa anda menjalankan pelayan SSH sehingga urutan percubaan sambungan dilakukan ke port yang telah ditetapkan. Sangat selamat dan mudah dilaksanakan, pelabuhan mengetuk adalah salah satu cara terbaik untuk melindungi pelayan anda daripada percubaan sambungan SSH yang berniat jahat.
Prasyarat
- Pelayan Vultr yang menjalankan Ubuntu 18.04.
- Akses Sudo.
Sebelum mengikuti langkah-langkah di bawah, jika anda tidak dilog masuk sebagai pengguna root, sila dapatkan shell root sementara dengan menjalankan sudo -i
dan memasukkan kata laluan anda. Sebagai alternatif, anda boleh sudo
menyusun arahan yang ditunjukkan dalam artikel ini.
Langkah 1: Pasang pemasangan
Knockd adalah pakej yang digunakan dalam kombinasi dengan iptables untuk melaksanakan port mengetuk pelayan anda. The ' iptables-persistent
pakej' juga diperlukan.
apt update
apt install -y knockd iptables-persistent
Langkah 2: peraturan iptables
Jalankan arahan berikut agar:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
iptables-save > /etc/iptables/rules.v4
Perintah ini akan melakukan perkara berikut:
- Mengarahkan iptables untuk memastikan sambungan yang sedia ada hidup.
- Ajarkan iptables untuk menjatuhkan sebarang sambungan ke port tcp / 22 (jika daemon SSH anda sedang mendengar pada port selain daripada 22, anda perlu mengubah suai arahan di atas dengan sewajarnya.)
- Simpan kedua peraturan ini supaya mereka akan berterusan selepas reboot.
Langkah 3: Konfigurasi Knockd
Dengan menggunakan penyunting teks pilihan anda, buka failnya /etc/knockd.conf
.
Anda akan melihat perkara berikut:
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Anda harus menukar urutan port (pilih nombor port di atas 1024
dan tidak digunakan oleh perkhidmatan lain), dan simpan dengan selamat. Gabungan ini harus dilayan seperti kata laluan. Sekiranya terlupa, anda akan kehilangan akses ke SSH. Kami akan merujuk kepada urutan baru ini sebagai x,y,z
.
yang seq-timeout
talian adalah bilangan saat Knockd akan menunggu untuk pelanggan untuk melengkapkan urutan port-mengetuk. Adalah idea yang baik untuk mengubahnya menjadi sesuatu yang lebih besar, terutama jika pengetukan port dilakukan secara manual. Walau bagaimanapun, nilai masa tamat yang lebih kecil lebih selamat. Mengubahnya 15
adalah disyorkan kerana kita akan mengetuk manual ini secara manual.
Tukar urutan pembukaan ke port pilihan anda:
[openSSH]
sequence = x,y,z
Tukar nilai perintah kepada yang berikut:
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Sekarang ubah urutan penutup dengan sewajarnya:
[closeSSH]
sequence = z,y,x
Simpan perubahan dan keluar, dan buka fail /etc/default/knockd
:
- Gantikan
START_KNOCKD=0
dengan START_KNOCKD=1
.
- Tambahkan baris berikut ke akhir fail:
KNOCKD_OPTS="-i ens3"
(ganti ens3
dengan nama antara muka rangkaian awam anda jika berbeza.)
- Simpan dan keluar.
Sekarang mulakan Knockd:
systemctl start knockd
Jika anda kini memutuskan sambungan dari pelayan anda, anda akan mempunyai untuk mengetuk pelabuhan x
, y
dan z
untuk menyambung lagi.
Langkah 4: Ujian
Anda sekarang tidak akan dapat menyambung ke pelayan SSH anda.
Anda boleh menguji ketukan port dengan klien telnet.
Pengguna Windows boleh melancarkan telnet dari command prompt. Sekiranya telnet tidak dipasang, akses bahagian "Program" pada Panel Kawalan, kemudian cari "Hidupkan atau matikan ciri Windows". Pada panel ciri, cari "Telnet Client" dan aktifkan.
Di terminal / command prompt anda ketik perkara berikut:
telnet youripaddress x
telnet youripaddress y
telnet youripaddress z
Lakukan ini dalam lima belas saat, kerana itulah had yang dikenakan dalam konfigurasi. Sekarang, cubalah menyambung ke pelayan anda melalui SSH. Ia akan dapat diakses.
Untuk menutup akses pelayan SSH, jalankan perintah dalam urutan terbalik.
telnet youripaddress z
telnet youripaddress y
telnet youripaddress z
Kesimpulannya
Bahagian terbaik mengenai penggunaan ketukan port adalah jika ia dikonfigurasi di samping pengesahan kunci peribadi, hampir tidak ada kemungkinan orang lain dapat masuk kecuali seseorang mengetahui urutan mengetuk port anda dan mempunyai kunci peribadi anda.