SSHGuard adalah daemon open-source yang melindungi host dari serangan brute force. Ini menyelesaikannya melalui pemantauan dan agregasi log sistem, mendeteksi serangan, dan memblokir penyerang menggunakan salah satu backend firewall Linux:iptables, FirewallD, pf, dan ipfw.
Awalnya dirancang untuk memberikan lapisan perlindungan ekstra untuk layanan OpenSSH, SSHGuard juga melindungi berbagai layanan seperti Vsftpd dan Postfix. Ia mengenali beberapa format log termasuk Syslog, Syslog-ng, dan file log mentah.
SSHGuard sangat mirip dengan Fail2ban hanya saja ia ditulis dalam C (Fail2ban ditulis dengan Python), lebih ringan, dan menyediakan lebih sedikit fitur.
Dalam panduan ini, kami akan menunjukkan bagaimana Anda dapat menginstal dan mengkonfigurasi SSHGuard untuk memblokir serangan brute force SSH di server Linux Anda.
Langkah 1:Instal SSHGuard di Linux
Kita mulai dengan instalasi SSHGuard di Linux.
Instal SSHGuard di Debian/Ubuntu
Pertama, perbarui daftar paket lalu instal SSHGuard dari repositori default menggunakan apt package manager.
$ sudo apt update
$ sudo apt install sshguard
Setelah diinstal, layanan SSHGuard dimulai secara otomatis, dan Anda dapat memverifikasi ini menggunakan perintah:
$ sudo systemctl status sshguard
Instal SSHGuard di Sistem Yum/RHEL
Untuk distribusi berbasis RHEL seperti CentOS, mulailah dengan menginstal repositori EPEL seperti yang diberikan pada perintah di bawah ini.
$ sudo yum install epel-release
ATAU
$ sudo dnf install epel-release
Dengan EPEL, lanjutkan dan instal SSHGuard menggunakan pengelola paket dnf.
$ sudo dnf install sshguard
Setelah terinstal, mulai dan atur SSHGuard untuk memulai saat startup atau reboot sistem.
$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard
Pastikan untuk memverifikasi bahwa SSHGuard berjalan seperti yang diharapkan.
$ sudo systemctl status sshguard
Langkah 2:Konfigurasi SSHGuard di Linux
SSHGuard secara aktif memantau /var/log/auth.log, /var/log/secure systemd journal, dan file log syslog-ng untuk upaya login yang gagal.
Untuk setiap upaya login yang gagal, host jarak jauh dilarang untuk waktu terbatas yang, secara default diatur pada 120 detik. Setelah itu, waktu larangan naik dengan faktor 1,5 dengan setiap upaya login yang gagal berturut-turut.
Waktu pelarangan host yang melanggar, selain parameter lain ditentukan dalam file sshguard.conf. Anda dapat mengakses file konfigurasi menggunakan editor vim seperti yang ditunjukkan.
$ sudo vim /etc/sshguard/sshguard.conf
Pada distribusi berbasis RHEL, file konfigurasi terletak di jalur berikut.
$ sudo vim /etc/sshguard.conf
Berikut adalah contoh file konfigurasi jika dilihat dari Ubuntu / Debian.
Berfokus pada opsi utama:
- BACKEND direktif menunjuk ke path lengkap dari backend yang dapat dieksekusi. Dalam contoh ini, kita melihat bahwa IPtables disetel sebagai backend firewall default.
- BATAS direktif memblokir penyerang saat skor serangan mereka melebihi nilai yang ditentukan.
- BLOCK_TIME option adalah jumlah detik penyerang diblokir setelah setiap upaya login yang gagal berturut-turut. Secara default, ini diatur ke 120 setelah upaya pertama. Ini meningkat dengan setiap upaya login yang gagal berturut-turut.
- Waktu DETEKSI_TIME opsi mengacu pada waktu dalam detik saat penyerang terdaftar atau diingat oleh sistem sebelum skor mereka disetel ulang.
- Berkas_WHITELIST opsi arahkan ke jalur lengkap file daftar putih yang berisi host yang tidak seharusnya masuk daftar hitam.
Langkah 3:Konfigurasikan SSHGuard untuk Memblokir Serangan Brute Force SSH
Untuk menangkal serangan brute force, Anda perlu mengonfigurasi firewall berikut agar berfungsi dengan sshguard.
Blokir Serangan SSH Menggunakan UFW
Jika Anda telah menginstal dan mengaktifkan UFW di sistem Ubuntu / Debian Anda, ubah file /etc/ufw/before.rules.
$ sudo vim etc/ufw/before.rules
$ sudo vim etc/ufw/before.rules
Tambahkan baris berikut tepat setelah bagian “allow all on loopback”.
# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT
# hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard
Simpan file dan mulai ulang UFW.
$ sudo systemctl restart ufw
Sekarang coba masuk ke server dari sistem yang berbeda dengan kredensial yang salah dan perhatikan bahwa Anda akan terkunci selama 120 detik setelah upaya masuk pertama yang gagal.
Anda dapat memverifikasi ini dengan memeriksa file log auth.log.
$ sudo tail -f /var/log/auth.log
Setelah upaya log yang gagal berikutnya, waktu pemblokiran meningkat menjadi 240 detik, lalu 480 detik, lalu 960 detik, dan seterusnya.
Blokir Serangan SSH Menggunakan Firewalld
Jika Anda menjalankan firewalld, pastikan sudah diatur dan diaktifkan. Kemudian jalankan perintah berikut untuk mengaktifkan sshguard di zona pilihan Anda.
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"
Untuk menerapkan perubahan, muat ulang Firewalld dan sshguard.
$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard
Kemudian verifikasi aturan sebagai berikut:
$ sudo firewall-cmd —-info-ipset=sshguard4
Blokir Serangan SSH Menggunakan Iptables
Jika Anda masih menggunakan Iptables, pertama, buat aturan rantai baru untuk sshguard di Iptables untuk mulai memblokir tamu yang tidak diinginkan.
# iptables -N sshguard
Selanjutnya, perbarui rantai INPUT untuk mengarahkan lalu lintas ke sshguard dan memblokir semua lalu lintas dari pihak jahat.
# iptables -A INPUT -j sshguard
Untuk memblokir port tertentu seperti SSH, POP, dan IMAP dari penyalahguna, jalankan perintah:
# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard
Dan terakhir, simpan aturan agar perubahan diterapkan.
# iptables-save > /etc/iptables/iptables.rules
Langkah 4:Cara Mengizinkan Host yang Diblokir SSH
Untuk memasukkan host yang diblokir ke daftar putih, cukup tentukan nama host atau alamat IP-nya di file daftar putih yang terletak di:
/etc/sshguard/whitelist - Ubuntu/Debian
/etc/sshguard.whitelist - RHEL-based distros
Setelah itu, pastikan untuk memulai ulang daemon sshguard dan backend firewall agar perubahan diterapkan.
Dalam panduan ini, kami menunjukkan bagaimana Anda dapat memblokir serangan SSH Bruteforce menggunakan SSHGuard di sistem Linux.
Silakan merujuk ke beranda kami untuk panduan lebih lanjut.