Membatasi upaya login ssh dengan fail2ban (obat untuk bot yang mencoba brute-force password melalui ssh)

gambar



SSH cukup aman, terutama jika Anda melakukan tindakan pencegahan yang wajar seperti meminta otentikasi berbasis pasangan kunci. Namun, masih banyak bot di alam liar yang mencoba menemukan host yang rentan dengan mencoba masuk menggunakan nama pengguna dan kata sandi umum yang disusupi seperti root / root atau admin / admin. Meskipun tidak mungkin berhasil, mereka masih akan menggunakan bandwidth Anda dan menghasilkan log dalam jumlah besar.



Salah satu cara untuk meminimalkan upaya login brute force adalah dengan mengubah port default yang didengarkan SSH. Namun, ini tidak dianggap sebagai praktik yang baik - pertama, ingatlah bahwa setiap kali mereka terhubung ke server, mereka harus mengatur port yang benar, selain default. Selain itu, ini dapat membuat kerentanan keamanan lain jika port yang dipilih lebih besar dari 1024. Biasanya, hanya root yang dapat mengikat ke nomor port di bawah 1024. Namun, jika nomor port yang lebih tinggi digunakan untuk SSH, dalam keadaan tertentu pengguna tanpa akses root dapat mengganti daemon SSH dengan layanan lain yang mungkin berbahaya.

Cara terbaik untuk mengatasi masalah ini adalah dengan menggunakan alat yang akan memblokir penyerang mengakses server SSH. Salah satu alat yang banyak digunakan adalah fail2ban ( www.fail2ban.org ). Dengan menganalisis log, fail2ban mendeteksi upaya otentikasi berulang yang gagal dan secara otomatis menetapkan aturan firewall untuk membuang lalu lintas yang berasal dari alamat IP penyerang.



Instal fail2ban di Ubuntu



Instalasi Manual



Menginstal fail2ban di Ubuntu (dan distribusi berbasis Debian lainnya) sangat sederhana:



$ sudo apt install fail2ban
      
      





Memeriksa cara kerjanya



Anda dapat memeriksa apakah layanan berjalan dengan perintah berikut:



$ sudo systemctl status fail2ban



Outputnya akan terlihat seperti berikut - status layanan harus aktif:



● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-05-18 12:36:36 ***; ** min ago
       Docs: man:fail2ban(1)
    Process: 723*** ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 723*** (f2b/server)
      Tasks: 5 (limit: 38293)
     Memory: 18.0M
     CGroup: /system.slice/fail2ban.service
             └─723488 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
      
      





Mari kita lihat bagaimana fail2ban mengubah aturan iptables:



$ sudo iptables -L -n -v
      
      





Anda juga harus melihat bahwa ada rantai f2b-sshd baru di konfigurasi iptables yang direferensikan oleh aturan rantai INPUT:



Chain INPUT (policy ACCEPT 73411 packets, 6622K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1019 65297 f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22


Chain f2b-sshd (1 references)
 pkts bytes target     prot opt in     out     source               destination
    8   480 REJECT     all  --  *      *       94.191.93.46         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       77.50.75.162         0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       51.254.143.190       0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       46.101.97.5          0.0.0.0/0            reject-with icmp-port-unreachable
    9   540 REJECT     all  --  *      *       43.129.28.88         0.0.0.0/0            reject-with icmp-port-unreachable
    9   540 REJECT     all  --  *      *       41.221.168.167       0.0.0.0/0            reject-with icmp-port-unreachable
    9   540 REJECT     all  --  *      *       35.247.219.12        0.0.0.0/0            reject-with icmp-port-unreachable
   12   720 REJECT     all  --  *      *       220.180.119.192      0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       218.75.121.75        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       213.87.101.176       0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       192.139.15.34        0.0.0.0/0            reject-with icmp-port-unreachable
   21  1260 REJECT     all  --  *      *       187.104.145.210      0.0.0.0/0            reject-with icmp-port-unreachable
    8   480 REJECT     all  --  *      *       177.191.189.13       0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       159.89.82.134        0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       159.75.140.97        0.0.0.0/0            reject-with icmp-port-unreachable
    8   480 REJECT     all  --  *      *       157.92.13.105        0.0.0.0/0            reject-with icmp-port-unreachable
   11   660 REJECT     all  --  *      *       117.80.225.245       0.0.0.0/0            reject-with icmp-port-unreachable
    9   540 REJECT     all  --  *      *       106.53.121.179       0.0.0.0/0            reject-with icmp-port-unreachable
  865 56057 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0
      
      







Paket fail2ban berisi alat yang disebut klien-fail2ban. Ini memungkinkan Anda untuk memeriksa status layanan dan berinteraksi dengannya (misalnya, Anda dapat memblokir dan membuka blokir alamat IP secara manual, mengaktifkan dan menonaktifkan penjara, dll.)



Mari kita lihat penjara mana yang aktif:



$ sudo fail2ban-client status
      
      





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







Hanya ada satu jail - sshd - yang sq bertanggung jawab untuk memantau log server SSH untuk login yang gagal dan mengkonfigurasi aturan firewall untuk memblokir upaya lebih lanjut.



Sekarang kita dapat memeriksa statistik untuk sshd jail:



$ sudo fail2ban-client status sshd
      
      





Status for the jail: sshd
|- Filter
|  |- Currently failed:	8
|  |- Total failed:	26
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	22
   |- Total banned:	25
   `- Banned IP list:	106.53.121.179 117.80.225.245 157.92.13.105 159.75.140.97 159.89.82.134 177.191.189.13 187.104.145.210 213.87.101.176 218.75.121.75 220.180.119.192 35.247.219.12 41.221.168.167 43.129.28.88 46.101.97.5 51.254.143.190 77.50.75.162 94.191.93.46 1.55.165.141 120.53.245.68 104.131.178.145 106.56.102.83 152.32.146.21
      
      





Mengonfigurasi fail2ban



Dalam kebanyakan kasus, konfigurasi default sudah cukup. Namun, akan sangat membantu untuk memahami apa default ini dan bagaimana mereka dapat diubah agar sesuai dengan kebutuhan Anda.



Dalam konfigurasi standar, fail2ban akan melindungi server SSH dan memblokir penyerang selama 10 menit setelah 5 upaya login yang gagal dalam 10 menit. File konfigurasi default dapat ditemukan di /etc/fail2ban/jail.conf. File tersebut didokumentasikan dengan baik dan sebagian besar cukup jelas. Harap dicatat bahwa Anda tidak boleh membuat perubahan apa pun pada file ini karena mungkin ditimpa selama pembaruan fail2ban.



Setelah mengubah konfigurasi, jangan lupa untuk memulai ulang layanan:



$ sudo systemctl restart fail2ban
      
      





Saya harus mencatat bahwa dalam kasus ini, saya mengubah parameter konfigurasi, memahami strategi serangan dan menerima daftar harian dari host yang menyerang dan memblokirnya.



Tetapi saya akan memberi tahu Anda tentang ini nanti dalam catatan terpisah, jika yang ini bermanfaat dan menarik bagi seseorang.



All Articles