Si të siguroni serverin tuaj Linux me fail2ban


Me fail2ban, kompjuteri juaj Linux bllokon automatikisht adresat IP që kanë shumë dështime të lidhjes. Është siguri vetërregulluese! Ne do t'ju tregojmë se si ta përdorni.

Siguria Siguria Siguria

Dukesha e Windsor, Wallis Simpson, tha dikur e famshme: Nuk mund të jesh kurrë shumë i pasur apo shumë i dobët. Ne e kemi përditësuar këtë për botën tonë moderne, të ndërlidhur: Ju kurrë nuk mund të jeni shumë të kujdesshëm apo shumë të sigurt.

Nëse kompjuteri juaj pranon kërkesat hyrëse të lidhjes, të tilla si lidhjet Secure Shell (SSH), ose vepron si një server në internet ose email, ju duhet ta mbroni atë nga sulmet me forcë brutale dhe hamendësuesit e fjalëkalimeve.

Për ta bërë këtë, do t'ju duhet të monitoroni kërkesat për lidhje që nuk hyjnë në një llogari. Nëse ata dështojnë në mënyrë të përsëritur të vërtetohen brenda një periudhe të shkurtër, ata duhet të ndalohen të bëjnë përpjekje të mëtejshme.

E vetmja mënyrë që kjo mund të arrihet praktikisht është që të automatizohet i gjithë procesi. Me pak konfigurim të thjeshtë, fail2ban do të menaxhojë monitorimin, ndalimin dhe heqjen e ndalimit për ju.

fail2ban integrohet me murin e zjarrit Linux iptables. Ai zbaton ndalimet në adresat IP të dyshuara duke shtuar rregulla në murin e zjarrit. Për ta mbajtur këtë shpjegim të pastër, ne po përdorim iptables me një grup rregullash bosh.

Sigurisht, nëse shqetësoheni për sigurinë, me siguri keni një mur zjarri të konfiguruar me një grup rregullash të mirëpopulluar. fail2ban vetëm shton dhe heq rregullat e veta—funksionet tuaja të rregullta të murit të zjarrit do të mbeten të paprekura.

Ne mund të shohim grupin tonë bosh të rregullave duke përdorur këtë komandë:

sudo iptables -L

Fail2ban po instalohet

Instalimi i fail2ban është i thjeshtë në të gjitha shpërndarjet që kemi përdorur për të hulumtuar këtë artikull. Në Ubuntu 20.04, komanda është si më poshtë:

sudo apt-get install fail2ban

Në Fedora 32, shkruani:

sudo dnf install fail2ban

Në Manjaro 20.0.1, ne përdorëm pacman:

sudo pacman -Sy fail2ban

Fail2ban po konfigurohet

Instalimi fail2ban përmban një skedar konfigurimi të paracaktuar të quajtur jail.conf. Ky skedar mbishkruhet kur fail2ban përmirësohet, kështu që ne do t'i humbim ndryshimet nëse bëjmë personalizime në këtë skedar.

Në vend të kësaj, ne do të kopjojmë skedarin jail.conf në një të quajtur jail.local. Duke vendosur ndryshimet tona të konfigurimit në jail.local, ato do të vazhdojnë gjatë përmirësimeve. Të dy skedarët lexohen automatikisht nga fail2ban.

Kjo është se si të kopjoni skedarin:

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

Tani hapni skedarin në redaktorin tuaj të preferuar. Ne do të përdorim gedit:

sudo gedit /etc/fail2ban/jail.local

Do të kërkojmë dy seksione në skedar: [DEFAULT] dhe [sshd]. Megjithatë, kujdesuni të gjeni seksionet aktuale. Ato etiketa shfaqen gjithashtu pranë krye në një seksion që i përshkruan ato, por kjo nuk është ajo që duam.

Seksionin [DEFAULT] do ta gjeni diku rreth rreshtit 40. Është një seksion i gjatë me shumë komente dhe shpjegime.

Lëvizni poshtë te rreshti 90 dhe do të gjeni katër cilësimet e mëposhtme për të cilat duhet të dini:

  • injorimi: Një listë e bardhë e adresave IP që nuk do të ndalohen kurrë. Ata kanë një kartë të përhershme Dil nga burgu pa pagesë. Adresa IP e localhost (127.0.0.1) është në listë si parazgjedhje, së bashku me ekuivalentin e saj IPv6 (::1). Nëse ka adresa të tjera IP që e dini se nuk duhet të ndalohen kurrë, shtoni ato në këtë listë dhe lini një hapësirë midis secilës.
  • bantime: Kohëzgjatja për të cilën një adresë IP është e ndaluar (“m” qëndron për minuta). Nëse shkruani një vlerë pa m ose h (për orë të tëra), ajo do të trajtohet si sekonda. Një vlerë prej -1 do të ndalojë përgjithmonë një adresë IP. Kini shumë kujdes që të mos mbylleni përgjithmonë jashtë.
  • findtime: Sasia e kohës brenda së cilës shumë përpjekje të dështuara lidhjeje do të rezultojnë në ndalimin e një adrese IP.
  • maxretry: Vlera për shumë përpjekje të dështuara.

Nëse një lidhje nga e njëjta adresë IP bën përpjekje të dështuara për lidhjen maxretry brenda periudhës findtime, ato ndalohen për kohëzgjatjen e bantime. Përjashtimet e vetme janë adresat IP në listën ignoreip.

fail2ban i vendos adresat IP në burg për një periudhë të caktuar kohe. fail2ban mbështet shumë burgje të ndryshëm, dhe secila prej tyre përfaqëson mbajtjen e cilësimeve të aplikuara për një lloj lidhjeje të vetme. Kjo ju lejon të keni cilësime të ndryshme për lloje të ndryshme lidhjesh. Ose mund të monitoroni fail2ban vetëm një grup të zgjedhur të llojeve të lidhjeve.

Mund ta keni marrë me mend nga emri i seksionit [DEFAULT], por cilësimet që kemi parë janë të paracaktuarat. Tani, le të shohim cilësimet për burgun SSH.

Konfigurimi i një burgu

Burgjet ju lejojnë të zhvendosni llojet e lidhjeve brenda dhe jashtë monitorimit të fail2bans. Nëse cilësimet e paracaktuara nuk përputhen me ato që dëshironi të aplikoni në burg, mund të vendosni vlera specifike për bantime, findtime dhe maxretry.

Lëvizni poshtë rreth rreshtit 280 dhe do të shihni seksionin [sshd].

Këtu mund të vendosni vlera për burgun e lidhjes SSH. Për të përfshirë këtë burg në monitorim dhe ndalim, duhet të shkruajmë rreshtin e mëposhtëm:

enabled = true

Ne gjithashtu shkruajmë këtë rresht:

maxretry = 3

Cilësimi i parazgjedhur ishte pesë, por ne duam të jemi më të kujdesshëm me lidhjet SSH. E hodhëm në tre dhe më pas e ruajtëm dhe e mbyllëm skedarin.

Ne e shtuam këtë burg në monitorimin e fail2bans dhe kundërshtuam një nga cilësimet e paracaktuara. Një burg mund të përdorë një kombinim të cilësimeve të paracaktuara dhe specifike të burgut.

Aktivizimi i fail2ban

Deri më tani, ne kemi instaluar fail2ban dhe e kemi konfiguruar atë. Tani, duhet ta mundësojmë që të funksionojë si një shërbim i nisjes automatike. Pastaj, duhet ta testojmë për t'u siguruar që funksionon siç pritej.

Për të aktivizuar fail2ban si shërbim, ne përdorim komandën systemctl:

sudo systemctl enable fail2ban

Ne gjithashtu e përdorim atë për të filluar shërbimin:

sudo systemctl start fail2ban

Ne mund të kontrollojmë statusin e shërbimit duke përdorur gjithashtu systemctl:

sudo systemctl status fail2ban.service

Gjithçka duket mirë - ne kemi dritën jeshile, kështu që gjithçka është mirë.

Le të shohim nëse fail2ban pajtohet:

sudo fail2ban-client status

Kjo pasqyron atë që kemi krijuar. Ne kemi aktivizuar një burg të vetëm, të quajtur [sshd]. Nëse përfshijmë emrin e burgut me komandën tonë të mëparshme, mund t'i hedhim një vështrim më të thellë:

sudo fail2ban-client status sshd

Kjo rendit numrin e dështimeve dhe adresat IP të ndaluara. Sigurisht, të gjitha statistikat janë zero për momentin.

Testimi i burgut tonë

Në një kompjuter tjetër, ne do të bëjmë një kërkesë për lidhje SSH në makinën tonë të provës dhe do të gabojmë qëllimisht fjalëkalimin. Ju merrni tre përpjekje për të marrë fjalëkalimin e duhur në çdo përpjekje për lidhje.

Vlera maxretry do të aktivizohet pas tre përpjekjeve të dështuara për lidhje, jo tre përpjekjeve të dështuara për fjalëkalim. Pra, duhet të shkruajmë një fjalëkalim të pasaktë tre herë për të dështuar përpjekjen e parë të lidhjes.

Më pas do të bëjmë një përpjekje tjetër për lidhje dhe do të shkruajmë gabimisht fjalëkalimin edhe tri herë të tjera. Përpjekja e parë e gabuar e fjalëkalimit të kërkesës së tretë të lidhjes duhet të aktivizojë fail2ban.

Pas fjalëkalimit të parë të pasaktë në kërkesën e tretë të lidhjes, ne nuk marrim përgjigje nga makina në distancë. Nuk marrim asnjë shpjegim; ne kemi vetëm shpatullën e ftohtë.

Duhet të shtypni Ctrl+C për t'u kthyer në vijën e komandës. Nëse provojmë edhe një herë, do të marrim një përgjigje të ndryshme:

ssh dave@ubuntu20-04.local

Më parë, mesazhi i gabimit ishte Leja u refuzua. Këtë herë, lidhja është refuzuar plotësisht. Ne jemi persona non grata. Ne jemi ndaluar.

Le të shohim përsëri detajet e burgut [sshd]:

sudo fail2ban-client status sshd

Pati tre dështime dhe një adresë IP (192.168.4.25) u ndalua.

Siç e përmendëm më parë, fail2ban zbaton ndalimet duke shtuar rregulla në grupin e rregullave të murit të zjarrit. Le të hedhim një vështrim tjetër në grupin e rregullave (ai ishte bosh më parë):

sudo iptables -L

Një rregull është shtuar në politikën INPUT, duke dërguar trafikun SSH në zinxhirin f2b-sshd. Rregulli në zinxhirin f2b-sshd refuzon lidhjet SSH nga 192.168.4.25. Ne nuk e ndryshuam cilësimin e paracaktuar për bantime, kështu që, pas 10 minutash, ajo adresë IP do të hiqet nga ndalimi dhe mund të bëjë kërkesa të reja lidhjeje.

Nëse vendosni një kohëzgjatje më të gjatë ndalimi (si disa orë), por dëshironi të lejoni që një adresë IP të bëjë një kërkesë tjetër lidhjeje më shpejt, mund ta lironi me kusht më herët.

Ne shkruajmë sa vijon për ta bërë këtë:

sudo fail2ban-client set sshd unbanip 192.168.5.25

Në kompjuterin tonë në distancë, nëse bëjmë një kërkesë tjetër për lidhje SSH dhe shkruajmë fjalëkalimin e saktë, do të na lejohet të lidhemi:

ssh dave@ubuntu20-04.local

E thjeshtë dhe efektive

Më e thjeshta është zakonisht më e mirë dhe fail2ban është një zgjidhje elegante për një problem të ndërlikuar. Ai kërkon shumë pak konfigurim dhe nuk imponon pothuajse asnjë shpenzim të përgjithshëm - për ju ose kompjuterin tuaj.

RELATED: Best Linux Laptops for Developers and Enthusiasts