Anda semua tahu film gangster tua ini di mana seorang pria menggunakan urutan ketukan di pintu untuk masuk? Port knocking adalah persis seperti itu, hanya untuk server Anda. Mengubah port ssh default Anda tidak menjamin bahwa Anda tidak akan diretas. Peretas sering menggunakan alat untuk melakukan pemindaian otomatis untuk port terbuka sebelum mereka menyerang server. Port Knocking adalah cara Anda dapat mempertahankan diri dari pemindai port., Port Knocking menolak akses ke port yang dilindungi hingga klien mengakses urutan port lain dalam urutan yang benar di awal.
Memasang port knocking di Ubuntu itu mudah. Saya akan menunjukkan kepada Anda di artikel ini cara menginstal dan mengatur port knocking. Langkah-langkah dari tutorial ini juga bisa digunakan untuk Debian 8.
Langkah 1:Pastikan semua paket yang diperlukan sudah diinstal
Semua perintah di bawah ini tidak dapat dijalankan sebagai pengguna root. Saya tidak ingin menambahkan sudo ke semua perintah, jadi saya menggunakan:
sudo su
untuk menjadi pengguna root. Langkah pertama adalah memperbarui daftar paket Ubuntu:
apt-get update
Kemudian instal server SSH (jika Anda belum menginstalnya).
apt-get install openssh-server
Sekarang instal perangkat lunak knockd yang merupakan daemon yang mengontrol port knocking.
apt-get install knockd
Get:1 http://security.debian.org wheezy/updates Release.gpg [1,554 B]
Get:2 http://security.debian.org wheezy/updates Release [102 kB]
Get:3 http://security.debian.org wheezy/updates/main amd64 Packages [336 kB]
Hit http://mirrors.digitalocean.com wheezy Release.gpg
Hit http://mirrors.digitalocean.com wheezy Release
Get:4 http://security.debian.org wheezy/updates/main Translation-en [195 kB]
Hit http://mirrors.digitalocean.com wheezy/main amd64 Packages
Hit http://mirrors.digitalocean.com wheezy/main Translation-en
Fetched 635 kB in 1s (358 kB/s)
Reading package lists... Done
[email protected]:~#
[email protected]:~# apt-get install openssh-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
openssh-client
Suggested packages:
ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw
The following packages will be upgraded:
openssh-client openssh-server
2 upgraded, 0 newly installed, 0 to remove and 32 not upgraded.
Need to get 1,364 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]?
Tekan Y lalu enter untuk melanjutkan.
Setelah menginstal paket, Anda harus menginstal firewall kernel iptables. Jalankan:
apt-get install iptables
Langkah 2: Menambahkan aturan ke iptables
Pertama, kami menghapus aturan firewall yang ada dan memastikan bahwa koneksi keluar tidak terputus.
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
iptables --policy OUTPUT ACCEPT
Kami ingin memastikan untuk mengizinkan semua koneksi yang dibuat dan sesi yang sedang berlangsung melalui firewall, jika tidak, firewall akan memblokir sesi SSH saat ini:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Catatan : Aturan di atas tidak memiliki spasi di kedua sisi koma di STABLISHED,RELATED.
Kemudian gunakan aturan berikut untuk memblokir port masuk 22 (SSH):
iptables -A INPUT -p tcp --destination-port 22 -j DROP
Setelah Anda menetapkan aturan iptables, Anda dapat mengotomatiskan proses pemulihan saat reboot dengan iptables-persistent. Kami dapat mengunduh ini dari repositori default Ubuntu:
apt-get install iptables-persistent
Current iptables rules can be saved to the configuration file ?
? /etc/iptables/rules.v4. These rules will then be loaded automatically ?
? during system startup. ?
? ?
? Rules are only saved automatically during package installation. See the ?
? manual page of iptables-save(8) for instructions on keeping the rules ?
? file up-to-date. ?
? ?
? Save current IPv4 rules?
Current iptables rules can be saved to the configuration file ?
? /etc/iptables/rules.v6. These rules will then be loaded automatically ?
? during system startup. ?
? ?
? Rules are only saved automatically during package installation. See the ?
? manual page of ip6tables-save(8) for instructions on keeping the rules ?
? file up-to-date. ?
? ?
? Save current IPv6 rules?
Selama instalasi, program akan meminta Anda untuk menyimpan aturan iptables saat ini (ipV4 dan ipV6), cukup pilih Ya untuk keduanya.
Simpan set aturan saat ini ke dalam file dengan perintah iptables-save. File ini dapat digunakan oleh iptables-restore nanti untuk mengembalikan pengaturan iptables yang sama:
iptables-save
# Generated by iptables-save v1.4.14 on Tue Feb 23 04:59:28 2016
*filter
:INPUT ACCEPT [1:40]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [17:1976]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
COMMIT
# Completed on Tue Feb 23 04:59:28 2016
Sekarang, Anda akan tetap terhubung ke koneksi yang ada sambil memblokir koneksi lain di port SSH.
Selanjutnya, kita harus mengonfigurasi knockd.
Untuk mengkonfigurasi layanan, kita harus mengedit file konfigurasi /etc/knockd.conf. Buka file dengan nano:
nano /etc/knockd.conf
Anda akan melihat bagian yang akan terlihat seperti ini.
[options]
UseSyslog
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
- Di bagian "opsi", kita melihat nama direktif
UseSyslog
. file log cukup jelas – ia mencatat semua upaya ketukan - Di bawahnya, kami memiliki dua bagian: openSSH dan closeSSH. Yang pertama akan memungkinkan pengetuk untuk mengakses port 22 (SSH), dan yang kedua akan menutup port saat pengetuk selesai.
- knockd secara otomatis mengganti %IP% dengan alamat IP klien yang mengirim knock, sehingga Anda dapat membuka port hanya untuk klien yang berwenang.
sequence = 9000,8000,7000
Ini berarti bahwa kumpulan aturan ini akan cocok jika IP yang sama meminta koneksi pada port 7000, diikuti langsung oleh port 8000, diikuti akhirnya oleh port 9000. Sangat disarankan untuk mengubah port default dan urutannya karena urutan defaultnya baik. juga diketahui oleh penyerang.
seq_timeout = 5
Opsi "seq_timeout" menentukan dalam hitungan detik berapa lama Anda memiliki waktu untuk memberikan semua nomor untuk ketukan. Nilai default ini akan baik-baik saja dan tidak akan menjadi masalah jika Anda secara otomatis menghasilkan ketukan.
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Tentukan perintah yang akan dieksekusi ketika klien melakukan port-knock yang benar. Semua instance %IP% akan diganti dengan alamat IP pengetuk.
tcpflags = syn
Perhatikan paket yang harus digunakan untuk mengeset flag ini, dalam hal ini paket syn. Saat menggunakan flag TCP, knockd akan MENGABAIKAN paket tcp yang tidak cocok dengan flag tersebut.
Sekarang aktifkan knockd. Edit file /etc/default/knockd dengan nano:
nano /etc/default/knockd
dan ubah:
START_KNOCKD=0
untuk
START_KNOCKD=1
setelah ini simpan dan keluar. Jika Anda memiliki beberapa adaptor jaringan atau mengalami masalah yang knockd tidak dimulai secara otomatis selama startup sistem, Anda dapat menentukan antarmuka jaringan secara manual untuk mendengarkan dengan menghapus komentar dan mengubah KNOCKD_OPTS baris kedua.
Kemudian mulailah mengetuk secara manual:
service knockd start
Ini akan memulai daemon dan memungkinkan Anda untuk mengubah set aturan iptables dengan mengetuk urutan port.
Anda telah menginstal paket yang diperlukan, jika Anda terputus dari server Anda, untuk menyambung kembali Anda harus mengetuk port yang Anda tetapkan dalam urutan yang benar membuat koneksi SSH.
Langkah 3: Akses server saat knockd sedang berjalan
Jika Anda telah mengikuti langkah-langkah di atas, maka Anda tidak akan dapat terhubung ke server SSH secara langsung lagi tanpa port knocking.
Anda seharusnya tidak menerima respons dari server dan klien SSH harus habis. Ini karena daemon SSH kami saat ini diblokir oleh iptables. Ketik ctrl-C untuk mengakhiri upaya SSH jika waktu tidak habis secara otomatis.
Uji ketukan dengan klien telnet
Untuk pengguna Linux:Instal paket telnet dengan apt.
Untuk pengguna Windows:Anda dapat menginstal klien Telnet dengan mengakses bagian "Program", cari "Aktifkan atau nonaktifkan fitur windows", dari sana aktifkan Telnet Client.
Ketik perintah berikut di prompt perintah Anda (ganti urutan port dengan urutan kustom Anda):
telnet youripaddress 7000
telnet youripaddress 8000
telnet youripaddress 9000
Anda harus melakukan semua ini dalam 5 detik karena ini adalah batas waktu yang ditetapkan untuk konfigurasi. Sekarang, coba sambungkan ke server Anda melalui SSH. Anda akan dapat mengakses koneksi.
Jalankan perintah di atas dalam urutan terbalik untuk menutup server SSH.
telnet youripaddress 9000
telnet youripaddress 8000
telnet youripaddress 7000
Bagian terbaik dari port knocking adalah Anda dapat mengonfigurasinya di samping otentikasi kunci pribadi. Jika Anda mengonfigurasi keduanya, maka hampir tidak ada kemungkinan seseorang dapat memperoleh akses atau terhubung hingga dan kecuali mereka mengetahui port dan kunci pribadi.