GNU/Linux >> Belajar Linux >  >> Linux

Amankan Server Linux Anda Dengan Fail2Ban [Panduan Pemula]

Apa itu Fail2Ban?

Jika Anda telah mengaktifkan SSH, silakan periksa riwayat login server Linux Anda. Anda akan terkejut melihat sejumlah besar IP yang mencoba masuk ke server Anda melalui SSH.

Jika Anda tidak memiliki mekanisme untuk mencegah upaya login ini, sistem Anda rentan terhadap serangan bruteforce. Pada dasarnya, script/bot akan terus mencoba koneksi SSH sistem Anda dengan mencoba berbagai kombinasi username dan password.

Di sinilah alat seperti Fail2Ban muncul. Fail2Ban adalah perangkat lunak sumber terbuka dan gratis yang membantu mengamankan server Linux Anda dari login berbahaya. Fail2Ban akan memblokir IP (untuk waktu tertentu) jika ada sejumlah upaya login yang gagal.

Fail2Ban bekerja di luar kotak dengan pengaturan dasar tetapi juga sangat dapat dikonfigurasi. Anda dapat mengubahnya sesuai keinginan Anda dan membuat filter dan aturan sesuai kebutuhan Anda.

Kedengarannya menarik? Mengapa tidak menguji Fail2Ban? Baca dan ikuti artikel selanjutnya dan coba Fail2Ban sendiri.

Menginstal Fail2Ban di Linux

Anda dapat menebak popularitas Fail2Ban dari fakta bahwa Fail2Ban tersedia di repositori resmi semua distribusi Linux utama. Ini membuat menginstal Fail2Ban menjadi tugas yang mudah.

Instal Fail2Ban di CentOS &Red Hat

Anda harus menjadi pengguna root atau sudo untuk menginstal perangkat lunak baru di sistem Anda.

Anda perlu memastikan bahwa sistem Anda mutakhir dan Anda telah menginstal repositori EPEL.

sudo yum update && sudo yum install epel-release

Sekarang Anda dapat menginstal Fail2Ban dengan perintah berikut:

sudo yum install fail2ban

Instal Fail2Ban di Ubuntu &Debian

Pertama, pastikan sistem Anda diperbarui:

sudo apt update && sudo apt upgrade -y

Sekarang, instal Fail2Ban dengan perintah ini:

sudo apt install fail2ban

Memahami file konfigurasi Fail2Ban

Ada dua file konfigurasi utama di Fail2Ban:/etc/fail2ban/fail2ban.conf dan /etc/fail2ban/jail.conf. Biarkan saya menjelaskan apa yang mereka lakukan.

/etc/fail2ban/fail2ban.conf :Ini adalah file konfigurasi untuk pengaturan operasional daemon Fail2Ban. Pengaturan seperti level log, file log, soket, dan file pid ditentukan di sini.

/etc/fail2ban/jail.conf :Di sinilah semua keajaiban terjadi. Ini adalah file di mana Anda dapat mengonfigurasi hal-hal seperti waktu larangan default, jumlah reties sebelum melarang IP, memasukkan daftar putih IP, informasi pengiriman email, dll. Pada dasarnya Anda mengontrol perilaku Fail2Ban dari file ini.

Sekarang sebelum Anda pergi dan mengubah file-file ini, Fail2Ban menyarankan untuk membuat salinan dengan file .local untuk file conf ini. Itu karena file conf default dapat ditimpa dalam pembaruan dan Anda akan kehilangan semua pengaturan Anda.

sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Sekarang mari kita pahami file jail.conf. Jika Anda menggunakan perintah less untuk membaca file besar ini, mungkin terlihat cukup membingungkan. File conf mencoba menjelaskan semuanya dengan terlalu banyak komentar. Jadi, izinkan saya menyederhanakan ini untuk Anda.

File jail.conf dibagi menjadi beberapa layanan. Ada bagian [Default] dan itu berlaku untuk semua layanan. Dan kemudian Anda dapat melihat berbagai layanan dengan pengaturannya masing-masing (jika ada). Semua layanan ini dalam tanda kurung. Anda akan melihat bagian seperti [sshd], [apache-auth], [squid] dll.

Jika saya menghapus komentar, bagian default akan terlihat seperti ini:

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5
backend = auto
usedns = warn
logencoding = auto
enabled = false
mode = normal
filter = %(name)s[mode=%(mode)s]
destemail = [email protected]
sender = [email protected]
mta = sendmail
protocol = tcp
chain =
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
banaction_allports = iptables-allports
action_abuseipdb = abuseipdb
action = %(action_)s

Biarkan saya memberi tahu Anda arti dari beberapa parameter ini.

  • bantime:Mengatur durasi larangan. Standarnya adalah 10 menit.
  • findtime:Jendela di mana tindakan pada IP akan diambil. Standarnya adalah 10 menit. Misalkan login yang buruk dicoba oleh IP tertentu pada 10:30. Jika IP yang sama mencapai jumlah maksimum percobaan ulang sebelum 10:40, itu akan dilarang. Jika tidak, upaya gagal berikutnya setelah 10:40 akan dihitung sebagai upaya gagal pertama.
  • maxretry:Jumlah percobaan ulang yang gagal sebelum tindakan diambil
  • usedns:Pengaturan "peringatkan" mencoba menggunakan DNS-balik untuk mencari nama host dan melarangnya menggunakan nama host. Menyetelnya ke no akan mencekal IP, bukan nama host.
  • destemail:Alamat email tujuan pengiriman peringatan (perlu dikonfigurasi)
  • pengirim:Nama pengirim dalam email notifikasi
  • mta:Mail Transfer Agent yang digunakan untuk email notifikasi
  • banaction:Parameter ini menggunakan file /etc/fail2ban/action.d/iptables-multiport.conf untuk mengatur tindakan setelah percobaan ulang maksimum yang gagal
  • protokol:Jenis lalu lintas yang akan dihentikan setelah larangan

Jika Anda ingin membuat perubahan apa pun untuk jail (atau semua jail), seperti percobaan ulang maksimum, waktu larangan, waktu pencarian, dll., Anda harus mengedit file jail.local.

Cara menggunakan Fail2Ban untuk mengamankan server Linux

Mari saya tunjukkan beberapa cara Anda dapat menggunakan Fail2Ban untuk memperkuat keamanan Linux.

Perhatikan bahwa Anda harus menjadi pengguna root atau memiliki akses sudo untuk menjalankan perintah fail2ban.

Aktifkan Fail2Ban di server Anda dan periksa semua jail yang sedang berjalan

Anda dapat menggunakan perintah systemd untuk memulai dan mengaktifkan Fail2Ban di server Linux Anda:

systemctl start fail2ban
systemctl enable fail2ban

Setelah Fail2Ban diaktifkan, Anda dapat melihat status dan jail aktif dengan perintah fail2ban-client:

fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Jika Anda bertanya-tanya, sshd jail diaktifkan secara default.

Lihat log Fail2Ban

Fail2Ban log terletak di /var/log/fail2ban.log. File log dalam format berikut:

2019-03-25 07:09:08,004 fail2ban.filter [25630]: INFO [sshd] Found 139.59.69.76 – 2019-03-25 07:09:07
2019-03-25 07:09:36,756 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,757 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,774 fail2ban.actions [25630]: NOTICE [sshd] Ban 159.89.205.213
2019-03-25 07:09:36,956 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,957 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,981 fail2ban.actions [25630]: NOTICE [sshd] Ban 182.70.253.202
2019-03-25 07:09:37,247 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,248 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,589 fail2ban.actions [25630]: NOTICE [sshd] Ban 112.64.214.90

Anda dapat melihat bahwa ini mengidentifikasi IP dan memblokirnya saat melewati ambang batas percobaan ulang maksimum.

Lihat IP yang diblokir oleh Fail2Ban

Salah satu caranya adalah dengan memeriksa status penjara tertentu. Anda dapat menggunakan klien Fail2Ban untuk tujuan ini.

fail2ban-client status <jail_name>

Misalnya, jika Anda harus melihat semua login ssh buruk yang diblokir oleh Fail2Ban, Anda dapat menggunakannya dengan cara berikut. Outputnya akan menunjukkan total upaya yang gagal dan total IP yang dilarang.

[email protected]:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 14
| |- Total failed: 715
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 7
|- Total banned: 17
`- Banned IP list: 177.47.115.67 118.130.133.110 68.183.62.73 202.65.154.110 106.12.102.114 61.184.247.3 218.92.1.150

Sistem yang mencoba login melalui SSH dari login yang gagal akan mendapatkan kesalahan seperti ini

ssh: connect to host 93.233.73.133 port 22: Connection refused

Cara memblokir IP secara permanen dengan Fail2Ban

Sekarang Anda tahu bahwa larangan memakai IP oleh Fail2Ban adalah sementara. Secara default ini selama 10 menit dan penyerang dapat mencoba masuk lagi setelah 10 menit.

Ini menimbulkan risiko keamanan karena penyerang dapat menggunakan skrip yang mencoba masuk setelah selang waktu 10 menit.

Jadi, bagaimana Anda menempatkan larangan permanen menggunakan Fail2Ban? Tidak ada jawaban yang jelas untuk itu.

Mulai Fail2Ban versi 0.11, waktu larangan akan dihitung secara otomatis dan IP persisten akan ditingkatkan waktu larangannya secara eksponensial.

Tetapi jika Anda memeriksa versi Fail2Ban Anda, Anda mungkin menjalankan versi 0.10.

fail2ban-server --version 
Fail2Ban v0.10.2
Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

Di versi sebelumnya, Anda dapat menggunakan bantime negatif (bantime =-1) dan itu akan setara dengan larangan permanen tetapi jika Anda mencoba metode ini, Anda mungkin akan melihat kesalahan seperti 'Memulai fail2ban:ERROR NOK:(' gambar disk database salah',)'.

Salah satu solusi yang tidak begitu bersih adalah meningkatkan bantime menjadi sekitar 1 hari, 1 minggu, 1 bulan atau 1 tahun. Ini dapat mengatasi masalah hingga versi baru tersedia di sistem Anda.

Cara membuka blokir IP yang diblokir oleh Fail2Ban

Pertama periksa apakah IP diblokir atau tidak. Karena Fail2Ban bekerja pada iptables, Anda dapat melihat ke dalam iptable untuk melihat IP yang dilarang oleh server Anda:

iptables -n -L

Anda mungkin harus menggunakan perintah grep jika terlalu banyak IP yang diblokir.

Jika Anda menemukan alamat IP yang ditentukan dalam output, itu sedang dilarang:

Jadi, langkah selanjutnya adalah menemukan 'penjara' mana yang melarang IP tersebut. Anda harus menggunakan perintah Grep dengan log fail2ban di sini.

Seperti yang Anda lihat pada output di bawah, IP diblokir oleh jail sshd.

[email protected]:~# grep -E ‘Ban.*61.184.247.3’ /var/log/fail2ban.log
2019-03-14 13:09:25,029 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3
2019-03-14 13:52:56,745 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3

Sekarang setelah Anda mengetahui nama jail yang memblokir IP, Anda dapat membatalkan pemblokiran IP menggunakan klien fail2ban:

fail2ban-client set <jail_name> unbanip <ip_address>

Cara memasukkan IP ke daftar putih di Fail2Ban

Ini tidak akan menjadi hal yang baik jika Anda melarang diri sendiri, kan? Untuk mengabaikan alamat IP agar tidak diblokir oleh sesi Fail2Ban saat ini, Anda dapat memasukkan IP ke daftar putih menggunakan perintah seperti ini:

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

Anda dapat menemukan alamat IP Anda di Linux dengan mudah. Dalam kasus saya, itu

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
`- 203.93.83.113

Jika Anda ingin memasukkan IP ke daftar putih secara permanen, Anda harus mengedit file konfigurasi jail. Buka bagian penjara tersebut dan tambahkan baris abaikan seperti ini:

ignoreip = 127.0.0.1/8 <IP_TO_BE_WHITELISTED>

Jika Anda ingin memasukkan IP ke daftar putih dari semua jail di sistem Anda, sebaiknya edit file /etc/fail2ban/jail.local dan tambahkan baris di bawah bagian DEFAULT seperti yang kita lihat di atas.

Anda harus memulai ulang Fail2Ban untuk menerapkan perubahan ini.

Cara melihat daftar putih IP dengan jail

Anda dapat melihat semua IP yang masuk daftar putih oleh jail menggunakan perintah ini:

fail2ban-client get <JAIL_NAME> ignoreip

Seharusnya menunjukkan semua IP yang diabaikan oleh Fail2Ban untuk penjara itu:

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
|- 127.0.0.0/8
|- ::1
`- 203.93.83.113

Cara menghapus IP dari daftar putih Fail2Ban

Jika Anda menghapus IP dari daftar putih jail tertentu, Anda dapat menggunakan perintah ini:

fail2ban-client set <JAIL_NAME> delignoreip <IP_Address>

Jika Anda ingin menghapus IP secara permanen, Anda harus mengedit file /etc/fail2ban/jail.local.

Apa lagi?

Anda dapat melakukan lebih banyak hal dengan Fail2Ban. Panduan ini memberi Anda dasar-dasar untuk memulai Fail2Ban. Saya belum menyentuh topik seperti tindakan, pemberitahuan email, filter, dll.

Setelah Anda mengetahui dasar-dasar Fail2Ban, Anda dapat mulai menjelajahi lebih banyak tentangnya. Untuk saat ini, mainkan saja dan tambahkan lapisan keamanan tambahan ke SSH di server Linux Anda.


Linux
  1. Lihat koneksi jaringan server Linux Anda dengan netstat

  2. Cara mengamankan layanan email Linux Anda dengan SSL/TLS

  3. Cara Mengamankan server Ubuntu Anda dengan CSF Firewall

  1. Amankan wadah Anda dengan SELinux

  2. Buat penyimpanan cloud Anda dengan ownCloud 6 di Linux Mint 17

  3. Keamanan Linux:Lindungi sistem Anda dengan fail2ban

  1. Cara Menginstal Nextcloud dengan Docker di Server Linux Anda

  2. 6 Alat Sumber Terbuka yang Harus Dimiliki untuk Mengamankan Server Linux Anda

  3. 10 Tips untuk Mengamankan Server Web Apache Anda di UNIX / Linux