Keamanan, bagi administrator sistem, adalah perjuangan yang berkelanjutan karena Anda harus cukup mengamankan sistem Anda untuk melindunginya dari serangan yang tidak diinginkan tetapi tidak terlalu mengganggu produktivitas pengguna. Ini adalah keseimbangan yang sulit untuk dipertahankan. Selalu ada keluhan tentang keamanan "terlalu banyak", tetapi ketika suatu sistem disusupi, keluhan berkisar dari, "Keamanan tidak cukup" hingga "Mengapa Anda tidak menggunakan kontrol keamanan yang lebih baik?" Perjuangan itu nyata. Ada kontrol yang dapat Anda terapkan yang efektif melawan serangan penyusup namun cukup tersembunyi untuk memungkinkan pengguna beroperasi dengan cara yang umumnya tidak terkekang. Fail2ban adalah jawaban untuk melindungi layanan dari kekerasan dan serangan otomatis lainnya.
Catatan:Fail2ban hanya dapat digunakan untuk melindungi layanan yang memerlukan otentikasi nama pengguna/kata sandi. Misalnya, Anda tidak dapat melindungi ping dengan fail2ban.
Pada artikel ini, saya mendemonstrasikan cara melindungi daemon SSH (SSHD) dari serangan brute force. Anda dapat mengatur filter, sebagai fail2ban
memanggil mereka, untuk melindungi hampir semua layanan mendengarkan di sistem Anda.
Pemasangan dan penyiapan awal
Untungnya, ada paket siap-instal untuk fail2ban
yang mencakup semua dependensi, jika ada, untuk sistem Anda.
$ sudo dnf -y install fail2ban
Aktifkan dan mulai fail2ban
.
$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban
Kecuali jika Anda memiliki semacam masalah sintaks di fail2ban
Anda konfigurasi, Anda tidak akan melihat pesan keluaran standar.
Sekarang untuk mengkonfigurasi beberapa hal dasar di fail2ban
untuk melindungi sistem tanpa mengganggu dirinya sendiri. Salin /etc/fail2ban/jail.conf
file ke /etc/fail2ban/jail.local
. jail.local
file adalah file konfigurasi yang menarik bagi kami.
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Buka /etc/fail2van/jail.local
di editor favorit Anda dan buat perubahan berikut atau periksa untuk memastikan beberapa parameter ini disetel. Cari pengaturan ignoreip
dan tambahkan semua alamat IP ke baris ini yang harus memiliki akses tanpa kemungkinan penguncian. Secara default, Anda harus menambahkan alamat loopback, dan semua alamat IP lokal ke sistem yang dilindungi.
ignoreip = 127.0.0.1/8 192.168.1.10 192.168.1.20
Anda juga dapat menambahkan seluruh jaringan alamat IP, tetapi ini menghilangkan banyak perlindungan yang ingin Anda gunakan fail2ban
untuk. Tetap sederhana dan lokal untuk saat ini. Simpan jail.local
file dan mulai ulang fail2ban
layanan.
$ sudo systemctl restart fail2ban
Anda harus memulai ulang fail2ban
setiap kali Anda membuat perubahan konfigurasi.
Menyiapkan layanan yang difilter
Pemasangan baru fail2ban
tidak benar-benar berbuat banyak untuk Anda. Anda harus menyiapkan apa yang disebut filter untuk layanan apa pun yang ingin Anda lindungi. Hampir setiap sistem Linux harus dapat diakses oleh SSH. Ada beberapa keadaan di mana Anda pasti akan menghentikan dan menonaktifkan SSHD untuk mengamankan sistem Anda dengan lebih baik, tetapi saya berasumsi bahwa setiap sistem Linux mengizinkan koneksi SSH.
Kata sandi, seperti yang diketahui semua orang, bukanlah solusi keamanan yang baik. Namun, itu sering menjadi standar yang kita jalani. Jadi, jika akses pengguna atau administratif terbatas pada SSH, maka Anda harus mengambil langkah-langkah untuk melindunginya. Menggunakan fail2ban
untuk "menonton" SSHD untuk upaya akses yang gagal dengan pelarangan berikutnya adalah awal yang baik.
Catatan:Sebelum menerapkan kontrol keamanan apa pun yang mungkin menghalangi akses pengguna ke sistem, beri tahu pengguna bahwa kontrol baru ini mungkin mengunci mereka dari sistem selama sepuluh menit (atau berapa lama pun Anda memutuskan) jika upaya login mereka yang gagal melebihi pengaturan ambang batas Anda .
Untuk menyiapkan layanan yang difilter, Anda harus membuat file "jail" yang sesuai di bawah /etc/fail2ban/jail.d
direktori. Untuk SSHD, buat file baru bernama sshd.local
dan masukkan instruksi pemfilteran layanan ke dalamnya.
[sshd]
enabled = true
port = ssh
action = iptables-multiport
logpath = /var/log/secure
maxretry = 3
bantime = 600
Buat [sshd] menuju dan masukkan pengaturan yang Anda lihat di atas sebagai tempat awal. Sebagian besar pengaturan cukup jelas. Untuk dua yang mungkin tidak jelas secara intuitif, pengaturan "tindakan" menjelaskan tindakan yang Anda inginkan fail2ban
mengambil tindakan jika terjadi pelanggaran. Bagi kami, fail2ban
menggunakan iptables
untuk mencekal alamat IP dari sistem yang melanggar selama "bantime" selama 600 detik (10 menit).
Anda tentu saja dapat mengubah pengaturan ini untuk memenuhi kebutuhan Anda. Sepuluh menit tampaknya cukup lama untuk menyebabkan bot atau skrip "beralih" ke host yang kurang aman. Namun, sepuluh menit bukanlah waktu yang lama untuk mengasingkan pengguna yang salah mengetik sandi lebih dari tiga kali.
Setelah Anda puas dengan pengaturannya, mulai ulang fail2ban
layanan.
Seperti apa larangan itu
Pada sistem yang dilindungi (192.168.1.83), tail
/var/log/fail2ban.log
untuk melihat tindakan larangan saat ini.
2020-05-15 09:12:06,722 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:06
2020-05-15 09:12:07,018 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:07
2020-05-15 09:12:07,286 fail2ban.actions [25417]: NOTICE [sshd] Ban 192.168.1.69
2020-05-15 09:22:08,931 fail2ban.actions [25417]: NOTICE [sshd] Unban 192.168.1.69
Anda dapat melihat bahwa alamat IP 192.168.1.69 dicekal pada pukul 09:12 dan diblokir sepuluh menit kemudian pada pukul 09:22.
Pada sistem jarak jauh, 192.168.1.69, tindakan larangan terlihat seperti berikut:
$ ssh 192.168.1.83
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
$ ssh 192.168.1.83
ssh: connect to host 192.168.1.83 port 22: Connection refused
Anda dapat melihat bahwa saya salah memasukkan kata sandi tiga kali sebelum dilarang. Pengguna yang diblokir, kecuali diinformasikan secara eksplisit, tidak akan tahu mengapa mereka tidak dapat lagi mencapai sistem target. fail2ban
filter melakukan tindakan larangan diam. Itu tidak memberikan penjelasan kepada pengguna jarak jauh, juga tidak memberi tahu pengguna saat larangan dicabut.
Membatalkan pemblokiran sistem
Pasti akan terjadi bahwa suatu sistem akan dilarang yang perlu segera dibatalkan larangannya. Dengan kata lain, Anda tidak bisa atau tidak ingin menunggu masa larangan berakhir. Perintah berikut akan segera membatalkan pemblokiran sistem.
$ sudo fail2ban-client set sshd unbanip 192.168.1.69
Anda tidak perlu memulai ulang daemon fail2ban setelah mengeluarkan perintah ini.
Menutup
Itu pada dasarnya bagaimana fail2ban
bekerja. Anda mengatur filter, dan ketika kondisi terpenuhi, maka sistem jarak jauh dilarang. Anda dapat memblokir untuk jangka waktu yang lebih lama, dan Anda dapat mengatur beberapa filter untuk melindungi sistem Anda. Ingat bahwa fail2ban
adalah solusi tunggal dan tidak mengamankan sistem Anda dari kerentanan lainnya. Pendekatan keamanan berlapis dan multi-segi adalah strategi yang ingin Anda kejar. Tidak ada solusi tunggal yang memberikan keamanan yang cukup.
Anda dapat menemukan contoh filter lain dan beberapa fail2ban
tingkat lanjut implementasi yang dijelaskan di fail2ban.org.
[ Ingin mempelajari lebih lanjut tentang keamanan? Lihat daftar periksa keamanan dan kepatuhan TI. ]