Kaip naudoti „Fail2ban“, kad apsaugotumėte savo „Linux“ serverį


Serverio saugumo gerinimas turėtų būti vienas iš svarbiausių prioritetų, kai kalbama apie Linux serverio valdymą. Peržiūrėdami savo serverio žurnalus, dažnai galite rasti įvairių bandymų prisijungti prie brutalios jėgos, interneto potvynių, išnaudojimo paieškos ir daugelio kitų.

Naudodami įsibrovimų prevencijos programinę įrangą, pvz., fail2ban, galite peržiūrėti serverio žurnalus ir pridėti papildomų iptables taisyklių, kad blokuotumėte probleminius IP adresus.

Taip pat skaitykite: kaip įdiegti „Fail2Ban“, kad būtų apsaugotas SSH „CentOS/RHEL 8“

Ši mokymo programa parodys, kaip įdiegti fail2ban ir nustatyti pagrindinę konfigūraciją, kad apsaugotumėte „Linux“ sistemą nuo žiaurios jėgos atakų.

Reikalavimai

Fail2ban yra parašytas python ir vienintelis reikalavimas yra įdiegti python:

  • Fail2ban filialas 0.9.x reikalauja Python >=2.6 arba Python >=3.2
  • Fail2ban filialas 0.8.x reikalauja Python >=2.4
  • Root prieiga prie jūsų sistemos
  • Pasirinktinai, iptables arba showwall ir sendmail

Kaip įdiegti „Fail2Ban“ „Linux“ sistemose

Įdiegti fail2ban yra gana paprasta:

Įdiekite „Fail2Ban“ „CentOS“/RHEL

Pirmiausia atnaujinkite paketus, įgalinkite Epel saugyklą ir įdiekite fail2ban, kaip parodyta.

yum update
yum install epel-release
yum install fail2ban

Įdiekite „Fail2Ban“ „Debian“/„Ubuntu“.

Pirmiausia atnaujinkite paketus ir įdiekite fail2ban, kaip parodyta.

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

Pasirinktinai, jei norite įjungti pašto palaikymą (pašto pranešimams), galite įdiegti sendmail.

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

Norėdami įjungti fail2ban ir sendmail, naudokite šias komandas:

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

Kaip sukonfigūruoti Fail2ban Linux sistemose

Pagal numatytuosius nustatymus fail2ban naudoja .conf failus, esančius /etc/fail2ban/, kurie nuskaitomi pirmiausia. Tačiau juos gali nepaisyti .local failai, esantys tame pačiame kataloge.

Taigi į failą .local nereikia įtraukti visų .conf failo nustatymų, o tik tuos, kuriuos norite nepaisyti. Pakeitimai turi būti atliekami .local failuose, o ne .conf. Tai neleis perrašyti pakeitimų atnaujinant fail2ban paketą.

Šios mokymo programos tikslais esamą fail2ban.conf failą nukopijuosime į fail2ban.local.

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

Dabar galite atlikti failo .local pakeitimus naudodami mėgstamą teksto rengyklę. Vertės, kurias galite redaguoti, yra:

  • Žurnalo lygis – tai detalumo lygis, kuris turi būti registruojamas. Galimi variantai:

    • KRITIŠKAS
    • KLAIDA
    • ĮSPĖJIMAS
    • PASTEBĖTI
    • INFORMACIJA
    • DERINTI
  • logtarget – užregistruokite veiksmus konkrečiame faile. Numatytoji reikšmė yra /var/log/fail2ban.log. Tačiau galite tai pakeisti į:

    • STDOUT – išvesti bet kokius duomenis
    • STDERR – išvesti visas klaidas
    • SYSLOG – žinutėmis pagrįstas registravimas
    • Failas – išvestis į failą
  • socket – katalogas, kuriame bus įdėtas socket failas.
  • pidfile – pidfailo vieta.

Konfigūruokite Fail2ban jail.local

Vienas iš svarbiausių fail2ban failų yra jail.conf, kuris apibrėžia jūsų kalėjimus. Čia apibrėžiate paslaugas, kurioms fail2ban turėtų būti įjungtas.

Kaip minėjome anksčiau, .conf failai gali būti pakeisti atnaujinant, todėl turėtumėte sukurti jail.local failą, kuriame galėtumėte pritaikyti pakeitimus.

Kitas būdas tai padaryti – tiesiog nukopijuoti .conf failą su:

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

Jei naudojate CentOS arba Fedora, turėsite pakeisti backend jail.local„auto“ į „systemd“.

Jei naudojate Ubuntu/Debian, šio pakeitimo atlikti nereikia, net jei jie taip pat naudoja systemd.

Įkalinimo failas pagal numatytuosius nustatymus įgalins SSH Debian ir Ubuntu, bet ne CentOS. Jei norite tai įjungti, tiesiog pakeiskite šią eilutę /etc/fail2ban/jail.local:

[sshd]
enabled = true
Uždrausti ir pakartotinai

Galite konfigūruoti aplinkybę, po kurios IP adresas blokuojamas. Tuo tikslu fail2ban naudoja bantime, findtime ir maxretry.

  • bantime – tai sekundžių skaičius, per kurį IP adresas bus uždraustas (numatytasis 10 min.).
  • findtime – laikas tarp bandymų prisijungti, kol priegloba uždrausta. (numatytasis 10 min.). Kitaip tariant, jei fail2ban nustatytas blokuoti IP adresą po 3 nesėkmingų prisijungimo bandymų, tie 3 bandymai turi būti atlikti per radimo laikotarpį (10< min.).
  • Maxretry – bandymų, kuriuos reikia atlikti prieš taikant draudimą, skaičius. (numatytasis 3).
Į baltąjį sąrašą įtrauktas IP adresas

Žinoma, tam tikrus IP adresus norėsite įtraukti į baltąjį sąrašą. Norėdami sukonfigūruoti tokius IP adresus, atidarykite /etc/fail2ban/jail.local naudodami mėgstamą teksto rengyklę ir panaikinkite šios eilutės komentarą:

ignoreip = 127.0.0.1/8  ::1

Tada galite įdėti IP adresus, kurių norite nepaisyti. IP adresai turi būti atskirti nuo tarpo arba kablelio.

El. pašto įspėjimai

Jei norite gauti įspėjimus el. paštu apie įvykį, /etc/fail2ban/jail.local turėsite sukonfigūruoti šiuos nustatymus:

  • destemail – pašto adresas, kuriuo gausite pranešimą.
  • Siuntėjo vardas – siuntėjas, kurį matysite gavę pranešimą.
  • siuntėjas – el. pašto adresas, iš kurio fail2ban siųs el. laiškus.

Numatytasis mta (pašto perdavimo agentas) yra sendmail.

Jei norite gauti pranešimus el. paštu, taip pat turėsite pakeisti veiksmo nustatymą iš:

Action = %(action_)s

Į vieną iš šių:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s – uždraus prieglobą ir išsiųs laišką su „whois“ ataskaita.
  • %(action_mwl)s – uždraus prieglobą, pateiks whois informaciją ir visą susijusią informaciją iš žurnalo failo.

Papildoma Fail2ban Jail konfigūracija

Iki šiol peržiūrėjome pagrindines konfigūracijos parinktis. Jei norite sukonfigūruoti kalėjimą, turėsite jį įjungti jail.local faile. Sintaksė gana paprasta:

[jail_to_enable]
. . .
enabled = true

Kur turėtumėte pakeisti jail_to_enable į tikrąjį kalėjimą, pvz., “sshd ”. Failo jail.local ssh paslaugai bus iš anksto nustatytos šios reikšmės:

[sshd]

port = ssh
logpath = %(sshd_log)s

Galite įjungti filtrą, kuris padės nustatyti, ar žurnalo eilutė yra neveikianti. Filtro reikšmė iš tikrųjų yra nuoroda į failą su paslaugos pavadinimu, po kurio yra .conf. Pavyzdžiui: /etc/fail2ban/filter.d/sshd.conf.

Sintaksė yra tokia:

filter = service

Pavyzdžiui:

filter = sshd

Esamus filtrus galite peržiūrėti šiame kataloge: /etc/fail2ban/filter.d/.

Naudokite fail2ban-client

Fail2ban yra su klientu, kurį galima naudoti norint peržiūrėti ir pakeisti esamą konfigūraciją. Kadangi jame yra daug parinkčių, galite peržiūrėti jo vadovą su:

man fail2ban-client 

Čia pamatysite keletą pagrindinių komandų, kurias galite naudoti. Norėdami peržiūrėti dabartinę fail2ban būseną arba konkretų kalėjimą, galite naudoti:

fail2ban-client status

Rezultatas atrodys panašiai:

Asmeniniame kalėjime galite paleisti:

fail2ban-client status sshd

Žemiau esančioje ekrano kopijoje pamatysite, kad man tyčia nepavyko prisijungti prie kelių, todėl fail2ban gali užblokuoti IP adresą, iš kurio bandžiau prisijungti:

Išvada

Fail2ban yra puiki, gerai dokumentuota įsilaužimo prevencijos sistema, kuri suteikia papildomos apsaugos jūsų Linux sistemai. Reikia šiek tiek laiko priprasti prie jos sąrankos ir sintaksės, tačiau susipažinę su ja, galėsite keisti ir išplėsti taisykles.