GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Menggunakan Fail2ban untuk Mengamankan SSH di CentOS 7

Fail2ban adalah alat keamanan terbaru untuk mengamankan server Anda dari serangan brute force. Secara otomatis melindungi server dari peretas. Ini bekerja dengan memantau melalui file log dan bereaksi terhadap tindakan yang menyinggung seperti upaya login yang gagal berulang kali. Prosesnya terdiri dari menambahkan aturan baru dalam rantai firewall dan mengirim pemberitahuan email. Anda dapat dengan mudah menginstal dan mengkonfigurasi fail2ban dengan menggunakan dokumen sederhana ini.

Sebelum melanjutkan penginstalan, kami perlu memastikan bahwa sistem kami memenuhi semua persyaratan perangkat lunak untuk mengkompilasi dan menginstal aplikasi. Dan juga harus dikonfigurasi dengan alamat IP Statis. Pada langkah pertama, perbarui repositori sistem dan paket perangkat lunak Anda dengan mengeluarkan perintah di bawah ini pada CentOS.

# yum update

Menginstal Fail2ban di CentOS

Untuk menginstal Fail2Ban di server CentOS 7, kita harus menginstal repositori EPEL (Extra Packages for Enterprise Linux) terlebih dahulu. EPEL berisi paket tambahan untuk semua versi CentOS. Kita dapat menjalankan perintah berikut ini dari root untuk menginstal paket ini.

# yum install epel-release -y
# yum install fail2ban fail2ban-systemd

Fail2ban membutuhkan beberapa dependensi. Ini akan secara otomatis mengunduh ini dari repositori.

fail2ban-firewalld
fail2ban-sendmail
fail2ban-server
systemd-python

Mengonfigurasi Pengaturan untuk Fail2ban di CentOS

File konfigurasi default fail2ban terletak di /etc/fail2ban/jail.conf
Semua konfigurasi fail2ban harus dilakukan dalam file lokal. Anda perlu menyalin /etc/fail2ban/jail.conf ke /etc/fail2ban/jail.local

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

Setelah menyalin, kita harus mengonfigurasi dan menyesuaikan perangkat lunak dengan jail.local berkas konfigurasi. File jail.local menggantikan file jail.conf dan digunakan untuk membuat pembaruan konfigurasi khusus Anda aman.

Konfigurasi Utama di jail.local default

Kode file dapat terdiri dari banyak baris kode yang dijalankan untuk membuat daftar putih atau melarang satu atau banyak alamat IP, mengatur durasi bantime, jumlah upaya kegagalan, dll. Untuk mengaktifkan layanan, Anda dapat mengatur status yang diaktifkan dari false menjadi true. Anda perlu mengetahui beberapa istilah yang digunakan dalam file konfigurasi.

  • ignoreip :Ini bisa berupa alamat IP, topeng CIDR, atau host DNS. Anda dapat memasukkan alamat IP apa pun ke daftar putih dengan menambahkan ke daftar ini. Beberapa alamat dapat ditentukan menggunakan pemisah spasi.
  • bantime :Ini adalah jumlah detik host diblokir.
  • Findtime :Parameter yang digunakan untuk memeriksa apakah suatu host harus dibanned atau tidak. Ketika host menghasilkan maxretry di findtime terakhirnya, itu dilarang.
  • Maxretry :Ini adalah parameter yang digunakan untuk menetapkan batas jumlah percobaan ulang oleh host, setelah melebihi batas ini, host akan diblokir.

Di server CentOS 7, Anda perlu mengubah opsi backend di jail.local dari auto ke systemd.

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling", "systemd" and "auto".
# This option can be overridden in each jail as well.
#
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
# If pyinotify is not installed, Fail2ban will use auto.
# gamin: requires Gamin (a file alteration monitor) to be installed.
# If Gamin is not installed, Fail2ban will use auto.
# polling: uses a polling algorithm which does not require external libraries.
# systemd: uses systemd python library to access the systemd journal.
# Specifying "logpath" is not valid for this backend.
# See "journalmatch" in the jails associated filter config
# auto: will try to use the following backends, in order:
# pyinotify, gamin, polling.
#
# Note: if systemd backend is chosen as the default but you enable a jail
# for which logs are present only in its own log files, specify some other
# backend for that jail (e.g. polling) and provide empty value for
# journalmatch. See https://github.com/fail2ban/fail2ban/issues/959#issuecomment-74901200
backend = systemd

Mengonfigurasi fail2ban untuk Perlindungan SSH

Tidak ada jail yang diaktifkan secara default di CentOS 7. Untuk mengaktifkan perlindungan SSH, Anda perlu menghapus komentar pada baris berikut di jail.local file seperti di bawah ini:

# JAILS
# SSH servers
#

[sshd]

diaktifkan =true# Untuk menggunakan filter sshd yang lebih agresif (termasuk failregex sshd-ddos):#filter =sshd-aggressiveport =sshlogpath =%(sshd_log)sbackend =%(sshd_backend)s

Parameter yang diaktifkan disetel ke true, untuk memberikan perlindungan, untuk menonaktifkan perlindungan, kita dapat mengaturnya ke false. Parameter filter memeriksa file konfigurasi fail2ban sshd, yang terletak di jalur /etc/fail2ban/filter.d/sshd.conf .

Tindakan parameter digunakan untuk mendapatkan alamat IP yang perlu diblokir menggunakan filter yang tersedia dari /etc/fail2ban/action.d/firewallcmd-ipset.conf.

  • Port :Parameter ini dapat diubah ke nilai baru seperti port=2222 jika Anda memindahkan port ke 2222 alih-alih yang default. Tidak perlu mengubah parameter ini untuk port default 22.
  • Logpath :Ini menyediakan jalur tempat file log disimpan. File log ini dipindai oleh Fail2Ban.
  • Maxretry :Digunakan untuk menetapkan batas maksimum entri login yang gagal.
  • Bantime :Ini digunakan untuk mengatur durasi detik di mana host perlu diblokir.
  • filter :Nama file yang terletak di /etc/fail2ban/filter.d yang berisi informasi failregex yang digunakan untuk mengurai file log dengan tepat.

Mengaktifkan Layanan Fail2ban

Anda harus memastikan untuk mengaktifkan dan memulai layanan firewall CentOS untuk menjalankan perangkat lunak ini.

# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
# systemctl start firewalld
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2018-01-14 10:57:34 UTC; 9s ago
Docs: man:firewalld(1)
Main PID: 19493 (firewalld)
CGroup: /system.slice/firewalld.service
└─19493 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Now we can enable and start our fail2ban service by executing these commands below:

#systemctl enable fail2ban
#systemctl start fail2ban

Untuk setiap perubahan konfigurasi, pastikan untuk memulai ulang layanan untuk menambahkan perubahan tersebut dengan perintah di bawah ini:

#systemctl restart fail2ban

Gunakan klien Fail2ban

Fail2ban memberikan perintah fail2ban-client yang dapat digunakan untuk menjalankan Fail2ban dari baris perintah. Lihat berbagai opsi baris perintah di bawah ini:

fail2ban-client COMMAND
  • start :memulai server dan jail
  • reload :memuat ulang konfigurasi
  • reload <JAIL> :memuat ulang penjara
  • stop :menghentikan semua jail dan menghentikan server
  • status :mendapatkan status server saat ini
  • ping :menguji apakah server hidup
  • help :kembalikan hasil ini
  • version :mengembalikan versi server

Misalnya, untuk memeriksa apakah Fail2Ban sedang berjalan dan apakah jail SSHd diaktifkan, jalankan:

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

Untuk informasi lebih lanjut tentang perintah ini, Anda dapat menjalankan man fail2ban-client .

Melacak upaya Login yang Gagal

Kita dapat memeriksa log SSH menggunakan perintah berikut untuk memeriksa apakah ada upaya yang gagal untuk masuk ke server melalui port ssh. Kita bisa mendapatkan daftar upaya kata sandi root yang gagal dari alamat IP berbeda yang serupa dengan keluaran ini.

Jan 14 05:08:58 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:00 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:02 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:04 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:06 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:08 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2

Anda dapat melihat daftar IP terlarang yang telah mencapai jumlah maksimum upaya kegagalan dengan perintah di bawah ini:

#iptables -L -n

Membatalkan pemblokiran alamat IP

Untuk menghapus alamat IP dari daftar terlarang, parameter IPADDRESS diatur ke IP yang sesuai yang memerlukan daftar putih. Nama "sshd" adalah nama jailnya, dalam hal ini jail "sshd" yang kita konfigurasikan di atas. Kita dapat menjalankan perintah berikut untuk hal yang sama.

#fail2ban-client set sshd unbanip IPADDR

Menutup

Fail2ban bekerja di latar belakang dan terus memindai file log untuk pola login yang tidak biasa dan upaya pelanggaran keamanan. Artikel ini memberi Anda pengenalan singkat tentang topik ini, Anda bisa mendapatkan informasi lebih lanjut tentang ini di wiki Fail2ban ini. Saya harap ini berguna untuk Anda. Silakan kirim komentar dan saran Anda yang berharga tentang ini.


Cent OS
  1. Cara menginstal Fail2Ban di CentOS 7

  2. Cara Mengubah Port SSH di CentOS

  3. Cara Melindungi Apache dan SSH Dengan Fail2Ban di CentOS 8

  1. Cara Mengatur Kunci SSH di CentOS 8

  2. Cara Menggunakan Garam di Centos 8

  3. Cara Mengatur Kunci SSH di CentOS 8

  1. Cara Mengatur Kunci SSH di CentOS 7

  2. Cara Menginstal dan Menggunakan Curl di CentOS 8

  3. Cara Menginstal dan Menggunakan Terraform di CentOS 8