GNU/Linux >> Belajar Linux >  >> Debian

Cara Mengaburkan Port Jaringan dengan Urutan Port Knocking di Debian 10

Port knocking adalah metode membuka port jaringan secara dinamis dengan "mengetuk" (yaitu menghubungkan) pada urutan port yang telah ditentukan. Ini sangat berguna untuk mengaburkan port jaringan yang terbuka dari pemindaian port karena port yang bersangkutan akan ditutup kecuali jika urutan port knocking dijalankan. Urutan port knocking yang cukup panjang secara praktis tidak mungkin dilakukan secara brute force:misalnya, untuk berhasil menebak (dengan brute force) kombinasi dari 3 port TCP, penyerang harus mencoba mengetuk masing-masing dari 281 triliun kombinasi yang mungkin, dan memindai buka port setelah setiap urutan knocking port. Seperti yang mungkin bisa Anda bayangkan, ini akan memakan waktu yang sangat lama.

Panduan ini akan membantu Anda melalui penginstalan knockd, daemon pengetuk port fleksibel, pada Debian 10. Untuk tujuan demonstrasi, kami akan mengonfigurasinya untuk mengaburkan port SSH, meskipun port/layanan lain dapat dilindungi dengan pendekatan ini.

Persyaratan

  • Server yang menjalankan Debian 10.
  • Akses root ke server Anda.
  • Variabel lingkungan $EDITOR harus disetel.
  • Sistem kedua untuk pengujian.

CATATAN:Jika Anda bermaksud menggunakan port knocking untuk mengaburkan port SSH, pastikan Anda memiliki metode akses alternatif (melalui konsol misalnya), yang akan berguna jika Anda secara tidak sengaja mengunci diri.

Sebelum menginstal knockd, periksa nama antarmuka jaringan publik sistem Anda dengan perintah berikut:

ip link show | grep -v lo
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

Catat nama antarmuka (ens18 dalam kasus ini). Itu akan dibutuhkan nanti.

Langkah 1:Memasang Knockd

knockd adalah daemon port-knocking yang mendengarkan koneksi dan membuka port yang sesuai. Kami akan menggunakan knockd dengan aturan iptables untuk mengimplementasikan port knocking. Instal paket yang diperlukan sebagai berikut:

apt update
apt install knockd iptables-persistent

Langkah 2:Konfigurasi Knockd

Knockd menggunakan file konfigurasi tunggal, /etc/knockd.conf, untuk menentukan urutan knocking dan parameter lainnya. Ada dua mode operasi praktis. Yang pertama membutuhkan urutan ketukan tunggal untuk membuka dan menutup port yang telah ditentukan, sementara yang lain menggunakan urutan pembukaan dan penutupan yang terpisah. Kami akan menggunakan yang pertama karena memerlukan lebih sedikit interaksi pengguna.

Pertama, backup file konfigurasi yang ada:

mv /etc/knockd.conf /etc/knockd.conf.bak

Kedua, buka file konfigurasi di editor teks Anda:

$EDITOR /etc/knockd.conf

Dan masukkan konfigurasi yang ditunjukkan di bawah ini:

(ganti ens18 dengan nama antarmuka jaringan Anda.)

[options]
        UseSyslog
	Interface = ens18
[SSH]
        sequence = 1000,2000,3000
        seq_timeout = 15
        tcpflags = syn
        start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        cmd_timeout = 20

Ini akan menginstruksikan knockd untuk mengaktifkan lalu lintas ke port 22 setelah menerima urutan ketukan yang benar (dalam kasus ini 1000,2000,3000), kemudian menonaktifkan kembali lalu lintas setelah penundaan 20 detik. Dengan demikian, koneksi SSH hanya akan diterima selama periode 20 detik ini.

Selanjutnya, aktifkan knockd dengan mengedit file /etc/default/knockd:

$EDITOR /etc/default/knockd

Dan setel START_KNOCKD ke 1:

START_KNOCKD=1

Simpan file dan keluar. Kami juga akan memodifikasi unit systemd untuk knockd. Untuk melakukannya, buat file unit baru untuk mengganti default:

$EDITOR /etc/systemd/system/knockd.service

Dan rekatkan yang berikut ini:

[Unit]
Description=Port-Knock Daemon
After=network.target
Requires=network.target
Documentation=man:knockd(1)
[Service]
EnvironmentFile=-/etc/default/knockd
ExecStartPre=/usr/bin/sleep 1
ExecStart=/usr/sbin/knockd $KNOCKD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=0 2 15
ProtectSystem=full
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN
[Install]
WantedBy=multi-user.target
multi-pengguna.

Kemudian gunakan perintah berikut untuk memuat dan mengaktifkan unit baru:

systemctl daemon-reload
systemctl enable --now knockd.service

Langkah 3:Aturan Firewall

Pada titik ini, Knockd sudah siap, tetapi semua lalu lintas diaktifkan melalui firewall secara default. Kami akan membuat aturan firewall untuk menolak akses ke port 22/tcp.

Perintah berikut memastikan bahwa koneksi yang ada tidak terputus.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Berikut ini adalah aturan untuk memutuskan koneksi ke port 22/tcp:

iptables -A INPUT -p tcp --destination-port 22 -j DROP
ip6tables -A INPUT -p tcp --destination-port 22 -j DROP

Kemudian, simpan rantai aturan saat ini untuk kegigihan di seluruh reboot:

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

Langkah 4:Pengujian

Dari sistem yang berbeda, coba mulai sesi SSH baru ke server Anda. Anda seharusnya tidak dapat terhubung. Untuk melakukan urutan ketukan, alat yang berbeda dapat digunakan, meskipun kami akan mendemonstrasikan dengan ketukan, klien ketukan disertakan dengan Knockd. Instal paket knockd seperti yang ditunjukkan pada Langkah 1 ke sistem yang berbeda, lalu jalankan perintah:

knock server_ip_address 1000 2000 3000
ssh [email protected]_ip_address

Koneksi SSH sekarang seharusnya berhasil.

Konfigurasi Alternatif

Knockd alternatif dapat dikonfigurasi untuk memerlukan dua urutan yang berbeda untuk membuka dan menutup port jaringan. Ini berguna jika Anda ingin port tetap terbuka untuk waktu yang lama. Untuk mengkonfigurasi Knockd dengan cara, buka file konfigurasinya:

$EDITOR /etc/knockd.conf

Dan ganti konfigurasi yang ada dengan berikut ini:

[options]
        UseSyslog
        Interface = your_interface
[openSSH]
        sequence = 1000,2000,3000
        seq_timeout = 15
        tcpflags = syn
        start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
        sequence = 3000,2000,1000
        seq_timeout = 15
        tcpflags = syn
        start_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Kemudian restart layanan untuk memuat konfigurasi baru:

systemctl restart knockd.service

Kesimpulan

Knockd bisa menjadi solusi efektif untuk serangan brute force, yang sangat umum di SSH dan layanan lainnya. Meskipun systemd akan memulai ulang Knockd jika gagal, Anda harus selalu memiliki metode cadangan untuk mengakses server Anda jika Anda menggunakan port-knocking untuk menyembunyikan port SSH.


Debian
  1. Cara mengatur alamat IP Statis di Debian Linux

  2. Bagaimana mengkonversi HTML ke PDF dengan HTMLDoc di Debian 10

  3. Cara Mengaburkan Port Jaringan dengan Urutan Port Knocking di Debian 10

  1. Cara Install Steam dengan Steam Play di Debian 10 Buster

  2. Cara Menginstal WonderCMS dengan Nginx di Debian 11

  3. Cara Mengamankan Layanan SSH dengan Port Knocking

  1. Cara Mengatur Firewall dengan UFW di Debian 10

  2. Cara Mengatur Firewall dengan UFW di Debian 9

  3. Cara Setup Server FTP dengan VSFTPD di Debian 9