Com utilitzar Fail2ban per protegir el vostre servidor Linux


Millorar la seguretat del vostre servidor hauria de ser una de les vostres principals prioritats quan es tracta de gestionar un servidor Linux. En revisar els registres del vostre servidor, sovint podeu trobar diferents intents d'inici de sessió de força bruta, inundacions web, cerca d'explotacions i molts altres.

Amb un programari de prevenció d'intrusions com fail2ban, podeu examinar els registres del vostre servidor i afegir regles iptables addicionals per bloquejar adreces IP problemàtiques.

Aquest tutorial us mostrarà com instal·lar fail2ban i configurar la configuració bàsica per protegir el vostre sistema Linux dels atacs de força bruta.

Fail2ban està escrit en Python i l'únic requisit és tenir Python instal·lat:

  • La branca 0.9.x de Fail2ban requereix Python >=2.6 o Python >=3.2
  • La branca 0.8.x de Fail2ban requereix Python >=2.4
  • Accés root al vostre sistema
  • Opcionalment, iptables o showewall i sendmail

Com instal·lar Fail2Ban en sistemes Linux

La instal·lació de fail2ban és relativament fàcil:

Primer, actualitzeu els vostres paquets, activeu el dipòsit d'Epel i instal·leu fail2ban tal com es mostra.

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

Primer, actualitzeu els vostres paquets i instal·leu fail2ban tal com es mostra.

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

Opcionalment, si voleu habilitar el suport de correu (per a notificacions de correu), podeu instal·lar sendmail.

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

Per habilitar fail2ban i sendmail, utilitzeu les ordres següents:

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

Com configurar Fail2ban als sistemes Linux

Per defecte, fail2ban utilitza els fitxers .conf situats a /etc/fail2ban/ que es llegeixen primer. Tanmateix, aquests es poden substituir mitjançant fitxers .local situats al mateix directori.

Per tant, el fitxer .local no necessita incloure tots els paràmetres del fitxer .conf, sinó només els que voleu substituir. Els canvis s'han de fer als fitxers .local, no al .conf. Això evitarà sobreescriure els canvis en actualitzar el paquet fail2ban.

Amb el propòsit d'aquest tutorial, copiarem el fitxer fail2ban.conf existent a fail2ban.local.

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

Ara podeu fer els canvis al fitxer .local utilitzant el vostre editor de text preferit. Els valors que podeu editar són:

  • loglevel: aquest és el nivell de detall que s'ha de registrar. Les opcions possibles són:
    • CRÍTIC
    • ERROR
    • ADVERTIMENT
    • AVÍS
    • INFO
    • DEPURAR

    • STDOUT: emet qualsevol dada
    • STDERR: emet qualsevol error
    • SYSLOG: registre basat en missatges
    • Fitxer: sortida a un fitxer

    Un dels fitxers més importants de fail2ban és jail.conf que defineix les vostres presons. Aquí és on definiu els serveis per als quals s'hauria d'habilitar fail2ban.

    Com hem esmentat anteriorment, els fitxers .conf es poden alterar durant les actualitzacions, per tant hauríeu de crear un fitxer jail.local on pugueu aplicar les vostres modificacions.

    Una altra manera de fer-ho és simplement copiar el fitxer .conf amb:

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

    En cas que utilitzeu CentOS o Fedora, haureu de canviar el backend a jail.local de \auto a \systemd.

    Si utilitzeu Ubuntu/Debian, no cal fer aquesta modificació, encara que ells també utilitzen systemd.

    El fitxer jail habilitarà SSH de manera predeterminada per a Debian i Ubuntu, però no a CentOS. Si voleu activar-lo, simplement canvieu la línia següent a /etc/fail2ban/jail.local:

    [sshd]
    enabled = true
    

    Podeu configurar la circumstància després de la qual es bloqueja una adreça IP. Amb aquesta finalitat, fail2ban utilitza bantime, findtime i maxretry.

    • bantime: aquest és el nombre de segons que una adreça IP romandrà prohibida (10 minuts per defecte).
    • findtime: la quantitat de temps entre els intents d'inici de sessió, abans que l'amfitrió sigui prohibit. (per defecte 10 min). En altres paraules, si fail2ban està configurat per bloquejar una adreça IP després de 3 intents fallits d'inici de sessió, aquests 3 intents s'han de fer dins del període de temps de cerca (10 minuts).
    • maxretry: nombre d'intents que cal fer abans que s'apliqui una prohibició. (per defecte 3).

    Per descomptat, voldreu afegir determinades adreces IP a la llista blanca. Per configurar aquestes adreces IP, obriu /etc/fail2ban/jail.local amb el vostre editor de text preferit i descomenteu la línia següent:

    ignoreip = 127.0.0.1/8  ::1
    

    A continuació, podeu posar les adreces IP que voleu que s'ignorin. Les adreces IP s'han de separar de l'espai o la coma.

    Si voleu rebre alertes de correu sobre l'esdeveniment, haureu de configurar la configuració següent a /etc/fail2ban/jail.local:

    • destemail: adreça de correu electrònic, on rebràs la notificació.
    • Nom del remitent: el remitent que veureu quan rebeu el missatge.
    • remitent: adreça electrònica des de la qual fail2ban enviarà els correus electrònics.

    El mta (agent de transferència de correu) predeterminat està configurat en sendmail.

    Per rebre notificacions per correu, també haureu de canviar la configuració de l'\acció de:

    Action = %(action_)s
    

    A un d'aquests:

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

    • %(action_mw)s: prohibirà l'amfitrió i enviarà un correu amb un informe whois.
    • %(action_mwl)s: prohibirà l'amfitrió, proporcionarà informació whois i tota la informació rellevant del fitxer de registre.

    Configuració addicional de la presó de Fail2ban

    Fins ara hem mirat les opcions de configuració bàsiques. Si voleu configurar una presó, haureu d'habilitar-la al fitxer jail.local. La sintaxi és bastant senzilla:

    [jail_to_enable]
    . . .
    enabled = true
    

    On hauríeu de substituir jail_to_enable per la presó real, per exemple, \sshd. Al fitxer jail.local, es predefiniran els valors següents per al servei ssh:

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

    Podeu activar el filtre que us ajudarà a identificar si una línia del registre és una de fallada. El valor del filtre és en realitat una referència a un fitxer amb el nom del servei seguit de .conf. Per exemple: /etc/fail2ban/filter.d/sshd.conf.

    La sintaxi és:

    filter = service
    

    Per exemple:

    filter = sshd
    

    Podeu revisar els filtres existents al directori següent: /etc/fail2ban/filter.d/.

    Fail2ban ve amb un client que es pot utilitzar per revisar i canviar la configuració actual. Com que ofereix moltes opcions, podeu consultar el seu manual amb:

    # man fail2ban-client 
    

    Aquí veureu algunes de les ordres bàsiques que podeu utilitzar. Per revisar l'estat actual de fail2ban o per a una presó específica, podeu utilitzar:

    # fail2ban-client status
    

    El resultat serà semblant a aquest:

    Per a la presó individual, podeu executar:

    # fail2ban-client status sshd
    

    A la captura de pantalla següent, veureu que he fallat intencionadament diversos inicis de sessió, de manera que fail2ban pot bloquejar l'adreça IP des de la qual estava intentant connectar-me:

    Fail2ban és un excel·lent sistema de prevenció d'intrusions ben documentat que proporciona seguretat addicional al vostre sistema Linux. Es necessita una mica de temps per acostumar-se a la seva configuració i sintaxi, però un cop us familiaritzeu amb ella, us sentireu lliures de canviar i ampliar les seves regles.