Cum să utilizați Fail2ban pentru a vă asigura serverul Linux


Îmbunătățirea securității serverului dvs. ar trebui să fie una dintre prioritățile dvs. de top atunci când vine vorba de gestionarea unui server Linux. Prin revizuirea jurnalelor de server, este posibil să găsiți adesea diferite încercări de conectare în forță brută, inundații web, căutare de exploatare și multe altele.

Cu un software de prevenire a intruziunilor, cum ar fi fail2ban, vă puteți examina jurnalele serverului și puteți adăuga reguli iptables suplimentare pentru a bloca adresele IP problematice.

Acest tutorial vă va arăta cum să instalați fail2ban și să configurați configurația de bază pentru a vă proteja sistemul Linux de atacurile de forță brută.

Cerințe

Fail2ban este scris în python și singura cerință este să aveți instalat python:

  • Ramura Fail2ban 0.9.x necesită Python >=2.6 sau Python >=3.2
  • Ramura Fail2ban 0.8.x necesită Python >=2.4
  • Accesul root la sistemul dvs.
  • Opțional, iptables sau showewall și sendmail

Cum se instalează Fail2Ban în sistemele Linux

Instalarea fail2ban este relativ ușoară:

Instalați Fail2Ban pe CentOS/RHEL

Mai întâi, actualizați pachetele, activați depozitul Epel și instalați fail2ban după cum se arată.

# yum update
# yum install epel-release
# yum install fail2ban

Instalați Fail2Ban pe Debian/Ubuntu

Mai întâi, actualizați pachetele și instalați fail2ban după cum se arată.

# apt-get update && apt-get upgrade -y
# apt-get install fail2ban

Opțional, dacă doriți să activați suportul prin e-mail (pentru notificări prin e-mail), puteți instala sendmail.

# yum install sendmail                   [On CentOS/RHEL]
# apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Pentru a activa fail2ban și sendmail utilizați următoarele comenzi:

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl start sendmail
# systemctl enable sendmail

Cum să configurați Fail2ban în sistemele Linux

În mod implicit, fail2ban utilizează fișierele .conf aflate în /etc/fail2ban/ care sunt citite mai întâi. Totuși, acestea pot fi înlocuite de fișierele .local aflate în același director.

Astfel, fișierul .local nu trebuie să includă toate setările din fișierul .conf, ci doar pe cele pe care doriți să le înlocuiți. Modificările ar trebui făcute în fișierele .local, nu în .conf. Acest lucru va preveni suprascrierea modificărilor la actualizarea pachetului fail2ban.

În scopul acestui tutorial, vom copia fișierul fail2ban.conf existent în fail2ban.local.

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

Acum puteți face modificări în fișierul .local folosind editorul de text preferat. Valorile pe care le puteți edita sunt:

  • loglevel – acesta este nivelul de detaliu care trebuie înregistrat. Opțiunile posibile sunt:
    • CRITIC
    • EROARE
    • AVERTISMENT
    • NOTĂ
    • INFO
    • DEBUG

    • STDOUT – scoate orice date
    • STDERR – afișează orice erori
    • SYSLOG – înregistrare bazată pe mesaje
    • Fișier – redare într-un fișier

    Configurați Fail2ban jail.local

    Unul dintre cele mai importante fișiere din fail2ban este jail.conf care vă definește închisorile. Aici definiți serviciile pentru care fail2ban ar trebui să fie activat.

    După cum am menționat mai devreme, fișierele .conf pot fi modificate în timpul actualizărilor, așa că ar trebui să creați un fișier jail.local în care să puteți aplica modificările.

    O altă modalitate de a face acest lucru este să copiați pur și simplu fișierul .conf cu:

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

    În cazul în care utilizați CentOS sau Fedora, va trebui să schimbați backend-ul în jail.local din \„auto” la \„systemd”.

    Dacă utilizați Ubuntu/Debian, nu este nevoie să faceți această modificare, chiar dacă și ei folosesc systemd.

    Fișierul închisoare va activa SSH în mod implicit pentru Debian și Ubuntu, dar nu pentru CentOS. Dacă doriți să o activați, schimbați pur și simplu următoarea linie în /etc/fail2ban/jail.local:

    [sshd]
    enabled = true
    
    Timp de interzicere și reîncercare

    Puteți configura circumstanța după care o adresă IP este blocată. În acest scop, fail2ban folosește bantime, findtime și maxretry.

    • bantime – acesta este numărul de secunde în care o adresă IP va rămâne interzisă (implicit 10 min).
    • findtime – intervalul de timp dintre încercările de conectare, înainte ca gazda să fie interzisă. (implicit 10 min). Cu alte cuvinte, dacă fail2ban este setat să blocheze o adresă IP după 3 încercări eșuate de conectare, acele 3 încercări trebuie să fie efectuate în perioada de căutare (10< min).
    • maxretry – numărul de încercări care trebuie făcute înainte de aplicarea unei interdicții. (implicit 3).

    Adresa IP din lista albă

    Desigur, veți dori să puneți pe lista albă anumite adrese IP. Pentru a configura astfel de adrese IP, deschideți /etc/fail2ban/jail.local cu editorul de text preferat și anulați comentariul următoarei rânduri:

    ignoreip = 127.0.0.1/8  ::1
    

    Apoi, puteți pune adresele IP pe care doriți să le ignorați. Adresele IP trebuie separate de spațiu sau virgulă.

    Alerte prin e-mail

    Dacă doriți să primiți alerte prin e-mail la eveniment, va trebui să configurați următoarele setări în /etc/fail2ban/jail.local:

    • destemail – adresa de e-mail, unde veți primi notificarea.
    • Nume expeditor – expeditorul pe care îl veți vedea când primiți mesajul.
    • sender – adresa de e-mail de la care fail2ban va trimite e-mailurile.

    mta (agent de transfer de e-mail) implicit este setat la sendmail.

    Pentru a primi notificări prin e-mail, va trebui, de asemenea, să modificați setarea \„acțiune” din:

    Action = %(action_)s
    

    La unul dintre acestea:

    action = %(action_mw)s
    action = %(action_mwl)s
    

    • %(action_mw)s – va interzice gazda și va trimite un e-mail cu un raport whois.
    • %(action_mwl)s – va interzice gazda, va furniza informații whois și toate informațiile relevante din fișierul jurnal.

    Configurație suplimentară Fail2ban Jail

    Până acum ne-am uitat la opțiunile de configurare de bază. Dacă doriți să configurați o închisoare, va trebui să o activați în fișierul jail.local. Sintaxa este destul de simplă:

    [jail_to_enable]
    . . .
    enabled = true
    

    Unde ar trebui să înlocuiți jail_to_enable cu închisoarea reală, de exemplu, \sshd”. În fișierul jail.local, următoarele valori vor fi predefinit pentru serviciul ssh:

    [sshd]
    
    port = ssh
    logpath = %(sshd_log)s
    

    Puteți activa filtrul care va ajuta la identificarea dacă o linie din jurnal este una eșuată. Valoarea filtrului este de fapt o referință la un fișier cu numele serviciului urmat de .conf. De exemplu: /etc/fail2ban/filter.d/sshd.conf.

    Sintaxa este:

    filter = service
    

    De exemplu:

    filter = sshd
    

    Puteți examina filtrele existente în următorul director: /etc/fail2ban/filter.d/.

    Utilizați fail2ban-client

    Fail2ban vine cu un client care poate fi utilizat pentru revizuirea și modificarea configurației curente. Deoarece oferă multe opțiuni, puteți parcurge manualul cu:

    # man fail2ban-client 
    

    Aici veți vedea câteva dintre comenzile de bază pe care le puteți utiliza. Pentru a examina starea actuală a fail2ban sau pentru o anumită închisoare, puteți folosi:

    # fail2ban-client status
    

    Rezultatul va arăta similar cu acesta:

    Pentru închisoarea individuală, puteți rula:

    # fail2ban-client status sshd
    

    În captura de ecran de mai jos, veți vedea că am eșuat intenționat conectările multiple, astfel încât fail2ban poate bloca adresa IP de la care încercam să mă conectez:

    Concluzie

    Fail2ban este un sistem excelent de prevenire a intruziunilor, bine documentat, care oferă un plus de securitate sistemului dumneavoastră Linux. Este nevoie de ceva timp pentru a vă obișnui cu configurarea și sintaxa sa, dar odată ce vă familiarizați cu el, vă veți simți liber să-i schimbați și să extindeți regulile.