Kuinka käyttää Fail2bania Linux-palvelimesi suojaamiseen


Palvelimen turvallisuuden parantamisen pitäisi olla yksi tärkeimmistä prioriteeteistasi linux-palvelimen hallinnassa. Tarkastelemalla palvelinlokeja saatat usein löytää erilaisia brute force -kirjautumisyrityksiä, verkkotulvia, hyväksikäytön etsintää ja monia muita.

Tunkeutumisenestoohjelmistolla, kuten fail2ban, voit tarkastella palvelimesi lokeja ja lisätä ylimääräisiä iptables-sääntöjä estääksesi ongelmalliset IP-osoitteet.

Lue myös: Fail2Banin asentaminen SSH:n suojaamiseksi CentOS/RHEL 8:ssa

Tämä opetusohjelma näyttää, kuinka fail2ban asennetaan ja perusasetukset suojataan Linux-järjestelmäsi raakoja hyökkäyksiä vastaan.

Vaatimukset

Fail2ban on kirjoitettu pythonilla ja ainoa vaatimus on, että python on asennettu:

  • Fail2ban-haara 0.9.x vaatii Python >=2.6 tai Python >=3.2
  • Fail2ban-haara 0.8.x vaatii Pythonin >=2.4
  • Pääkäyttäjän oikeudet järjestelmääsi
  • Valinnaisesti iptables tai showwall ja sendmail

Kuinka asentaa Fail2Ban Linux-järjestelmiin

fail2ban:n asentaminen on suhteellisen helppoa:

Asenna Fail2Ban CentOS/RHELiin

Päivitä ensin paketit, ota Epel-arkisto käyttöön ja asenna fail2ban kuvan mukaisesti.

yum update
yum install epel-release
yum install fail2ban

Asenna Fail2Ban Debianiin/Ubuntuun

Päivitä ensin paketit ja asenna fail2ban kuvan mukaisesti.

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

Valinnaisesti, jos haluat ottaa sähköpostituen käyttöön (posti-ilmoituksia varten), voit asentaa sendmailin.

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

Ota fail2ban ja sendmail käyttöön käyttämällä seuraavia komentoja:

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

Kuinka määrittää Fail2ban Linux-järjestelmissä

Oletuksena fail2ban käyttää .conf-tiedostoja, jotka sijaitsevat osoitteessa /etc/fail2ban/ ja jotka luetaan ensin. Ne voidaan kuitenkin ohittaa samassa hakemistossa olevilla .local-tiedostoilla.

Siten .local-tiedoston ei tarvitse sisältää kaikkia .conf-tiedoston asetuksia, vaan vain ne, jotka haluat ohittaa. Muutokset tulee tehdä .local-tiedostoihin, ei .conf-tiedostoihin. Tämä estää muutosten korvaamisen fail2ban-pakettia päivitettäessä.

Tätä opetusohjelmaa varten kopioimme olemassa olevan fail2ban.conf-tiedoston tiedostoon fail2ban.local.

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

Nyt voit tehdä muutokset .local-tiedostoon suosikkitekstieditorillasi. Arvot, joita voit muokata, ovat:

  • lokitaso – tämä on kirjattavan yksityiskohtaisuuden taso. Mahdollisia vaihtoehtoja ovat:

    • KRIITTINEN
    • VIRHE
    • VAROITUS
    • ILMOITUS
    • TIEDOT
    • DEBUG
  • logtarget – kirjaa toiminnot tiettyyn tiedostoon. Oletusarvo on /var/log/fail2ban.log. Voit kuitenkin muuttaa tämän seuraavasti:

    • STDOUT – tulosta kaikki tiedot
    • STDERR – tulosta mahdolliset virheet
    • SYSLOG – viestipohjainen kirjaus
    • Tiedosto – tulostus tiedostoon
  • socket – hakemisto, johon socket-tiedosto sijoitetaan.
  • pidfile – pid-tiedoston sijainti.

Määritä Fail2ban jail.local

Yksi fail2banin tärkeimmistä tiedostoista on jail.conf, joka määrittää vankilasi. Tässä voit määrittää palvelut, joille fail2ban tulee ottaa käyttöön.

Kuten aiemmin mainitsimme, .conf-tiedostoja voidaan muuttaa päivitysten aikana, joten sinun tulee luoda jail.local-tiedosto, jossa voit ottaa muutokset käyttöön.

Toinen tapa tehdä tämä on kopioida .conf-tiedosto seuraavasti:

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

Jos käytössäsi on CentOS tai Fedora, sinun on vaihdettava taustajärjestelmä tiedostossa jail.local osoitteesta "auto " - "systemd".

Jos käytät Ubuntu/Debiania, tätä muutosta ei tarvitse tehdä, vaikka nekin käyttävät systemd-käyttöjärjestelmää.

Vankilatiedosto ottaa SSH:n käyttöön oletuksena Debianissa ja Ubuntussa, mutta ei CentOS:ssä. Jos haluat ottaa sen käyttöön, muuta yksinkertaisesti seuraavaa riviä tiedostossa /etc/fail2ban/jail.local:

[sshd]
enabled = true
Kielto- ja uudelleenyritysajat

Voit määrittää tilanteen, jonka jälkeen IP-osoite estetään. Tätä tarkoitusta varten fail2ban käyttää bantimea, findtime ja maxretry.

  • bantime – tämä on sekuntien määrä, jonka IP-osoite pysyy estettynä (oletus 10 min).
  • findtime – aika kirjautumisyritysten välillä, ennen kuin isäntä on estetty. (oletus 10 min). Toisin sanoen, jos fail2ban on asetettu estämään IP-osoite 3 epäonnistuneen kirjautumisyrityksen jälkeen, nämä 3 yritystä on tehtävä findtime-ajan kuluessa (10< minuuttia).
  • Maxretry – yritysten määrä ennen kiellon soveltamista. (oletus 3).
IP-osoite sallittujen luetteloon

Tietenkin haluat lisätä tiettyjä IP-osoitteita sallittujen luetteloon. Voit määrittää tällaiset IP-osoitteet avaamalla /etc/fail2ban/jail.local suosikkitekstieditorillasi ja poistamalla seuraavan rivin kommentit:

ignoreip = 127.0.0.1/8  ::1

Sitten voit laittaa IP-osoitteet, jotka haluat ohittaa. IP-osoitteet tulee erottaa välilyönnistä tai pilkuista.

Sähköpostihälytykset

Jos haluat saada sähköpostihälytyksiä tapahtumasta, sinun on määritettävä seuraavat asetukset osoitteessa /etc/fail2ban/jail.local:

  • destemail – sähköpostiosoite, johon saat ilmoituksen.
  • Lähettäjänimi – lähettäjä, jonka näet, kun vastaanotat viestin.
  • lähettäjä – sähköpostiosoite, josta fail2ban lähettää sähköpostit.

Oletusarvoksi mta (postinsiirtoagentti) on asetettu sendmail.

Jotta voit vastaanottaa sähköposti-ilmoituksia, sinun on myös muutettava "toiminta"-asetusta seuraavista:

Action = %(action_)s

Johonkin näistä:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s – kieltää isännän ja lähettää sähköpostin whois-raportin kera.
  • %(action_mwl)s – kieltää isännän, antaa whois-tiedot ja kaikki asiaankuuluvat tiedot lokitiedostosta.

Fail2ban Jail -lisämääritykset

Toistaiseksi olemme tarkastelleet peruskokoonpanovaihtoehtoja. Jos haluat määrittää vankilan, sinun on otettava se käyttöön jail.local-tiedostossa. Syntaksi on melko yksinkertainen:

[jail_to_enable]
. . .
enabled = true

Missä sinun tulee korvata jail_to_enable todellisella vankilalla, esimerkiksi "sshd". jail.local-tiedostossa ssh-palvelulle määritetään ennalta seuraavat arvot:

[sshd]

port = ssh
logpath = %(sshd_log)s

Voit ottaa käyttöön suodattimen, joka auttaa tunnistamaan, onko lokin rivi epäonnistunut. Suodattimen arvo on itse asiassa viittaus tiedostoon, jonka palvelun nimi seuraa .conf. Esimerkki: /etc/fail2ban/filter.d/sshd.conf.

Syntaksi on:

filter = service

Esimerkiksi:

filter = sshd

Voit tarkastella olemassa olevia suodattimia seuraavassa hakemistossa: /etc/fail2ban/filter.d/.

Käytä fail2ban-asiakasta

Fail2banin mukana tulee asiakas, jota voidaan käyttää nykyisen kokoonpanon tarkistamiseen ja muuttamiseen. Koska se tarjoaa monia vaihtoehtoja, voit käydä sen oppaassa läpi:

man fail2ban-client 

Täältä näet joitain peruskomentoja, joita voit käyttää. Voit tarkistaa fail2banin tai tietyn vankilan nykyisen tilan seuraavasti:

fail2ban-client status

Tulos näyttää tältä:

Yksittäisen vankilan tapauksessa voit suorittaa:

fail2ban-client status sshd

Alla olevassa kuvakaappauksessa näet, että olen tarkoituksella epäonnistunut useissa kirjautumisissa, joten fail2ban voi estää IP-osoitteen, josta yritin muodostaa yhteyden:

Johtopäätös

Fail2ban on erinomainen, hyvin dokumentoitu tunkeutumisenestojärjestelmä, joka tarjoaa lisäturvaa Linux-järjestelmällesi. Se vaatii jonkin aikaa tottua sen asetuksiin ja syntaksiin, mutta kun olet perehtynyt siihen, voit vapaasti muuttaa ja laajentaa sen sääntöjä.