Како да обезбедите свој Линук сервер са фаил2бан

Ваш Линукс рачунар, користећи fail2ban, аутоматски блокира ИП адресе које показују претеране неуспешне покушаје приступа. То представља саморегулишући безбедносни механизам. У наставку ћемо објаснити како се он користи.

Безбедност на првом месту

Чувена изрека војвоткиње од Виндзора, Волис Симпсон, гласи: „Никада не можете бити пребогати или превише мршави.“ У складу са савременим дигиталним светом, можемо рећи: „Никада не можете бити превише опрезни или превише сигурни.“

Уколико ваш рачунар прихвата долазне конекције, попут Secure Shell (SSH) конекција, или функционише као веб или мејл сервер, кључно је заштитити га од брут форс напада и покушаја погођања лозинки.

За то је неопходно пратити неуспешне покушаје приступа налозима. Ако се аутентификација више пута не успе у кратком временском периоду, неопходно је забранити даље покушаје.

Једини практичан начин да се ово постигне јесте аутоматизација целог процеса. Уз једноставна подешавања, fail2ban ће преузети надзор, забрану и одбрану уместо вас.

fail2ban се интегрише са Linux заштитним зидом iptables. Он примењује забране на сумњиве ИП адресе додавањем правила у заштитни зид. Ради једноставности, у овом објашњењу користимо iptables са празним скупом правила.

Ако сте забринути за безбедност, вероватно већ имате подешен заштитни зид са добро попуњеним скупом правила. fail2ban само додаје и уклања своја правила, док ваше регуларне функције заштитног зида остају нетакнуте.

Наш празан скуп правила можемо видети користећи следећу команду:

sudo iptables -L

Инсталација fail2ban

Инсталација fail2ban-а је једноставна на свим дистрибуцијама које смо користили за потребе овог чланка. На Ubuntu 20.04, команда је следећа:

sudo apt-get install fail2ban

На Fedora 32, упишите:

sudo dnf install fail2ban

На Manjaro 20.0.1, користили смо pacman:

sudo pacman -Sy fail2ban

Конфигурација fail2ban

Инсталација fail2ban-а укључује подразумевану конфигурациону датотеку под називом jail.conf. Међутим, ова датотека се преписује приликом надоградње fail2ban-а, што значи да би сва прилагођавања била изгубљена.

Зато ћемо копирати датотеку jail.conf у датотеку под називом jail.local. Постављањем наших конфигурационих измена у jail.local, оне ће се задржати током надоградњи. fail2ban аутоматски чита обе датотеке.

Датотеку копирамо на следећи начин:

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

Сада отворите датотеку у свом омиљеном уређивачу. Ми ћемо користити gedit:

sudo gedit /etc/fail2ban/jail.local

У датотеци ћемо потражити два одељка: [DEFAULT] и [sshd]. Важно је пронаћи стварне одељке, јер се ове ознаке такође појављују на почетку у опису, али то нису одељци које тражимо.

Одељак [DEFAULT] се налази негде око 40. реда. То је дугачак део са доста коментара и објашњења.

Крените надоле до око 90. реда и пронаћи ћете следећа четири подешавања која треба да разумете:

ignoreip: Бела листа ИП адреса које никада неће бити забрањене. Оне имају трајну „бесплатну пропусницу“. ИП адреса локалног хоста (127.0.0.1) је подразумевано на листи, заједно са својим IPv6 еквивалентом (::1). Ако постоје друге ИП адресе за које знате да никада не треба да буду забрањене, додајте их на ову листу, раздвојене размаком.
bantime: Време трајања забране ИП адресе („m“ означава минуте). Ако унесете вредност без „m“ или „h“ (за сате), биће третирана као секунде. Вредност од -1 трајно ће забранити ИП адресу. Будите веома пажљиви да се не закључате трајно.
findtime: Временски период у којем превише неуспешних покушаја конекције резултира забраном ИП адресе.
maxretry: Вредност за „превише неуспешних покушаја“.

Ако конекција са исте ИП адресе направи maxretry неуспешних покушаја у периоду findtime, биће забрањена за време bantime. Изузетак су ИП адресе са ignoreip листе.

fail2ban поставља ИП адресе у „затвор“ на одређени временски период. fail2ban подржава велики број различитих „затвора“, сваки представља сет подешавања која се примењују на одређени тип конекције. Ово вам омогућава да имате различита подешавања за различите типове конекција. Такође, можете одабрати да fail2ban надгледа само одабране типове конекција.

Као што сте можда претпоставили из назива одељка [DEFAULT], подешавања која смо размотрили су подразумевана. Сада, хајде да погледамо подешавања за ССХ затвор.

Конфигурација затвора

Затвори омогућавају да преместите типове конекција у и ван надзора fail2ban-а. Ако подразумеване поставке не одговарају онима које желите да примените у затвору, можете подесити специфичне вредности за време забране, време проналажења и максималан број покушаја.

Скролујте до око 280. реда и видећете одељак [sshd].

Овде можете поставити вредности за ССХ затвор. Да бисмо овај затвор укључили у праћење и забрану, потребно је укуцати следећу линију:

enabled = true

Такође, укуцавамо и ову линију:

maxretry = 3

Подразумевана поставка је била пет, али желимо да будемо опрезнији са ССХ конекцијама. Спустили смо је на три, а затим смо сачували и затворили датотеку.

Додали смо овај затвор у надзор fail2ban-а и променили смо једну од подразумеваних поставки. Затвор може да користи комбинацију подразумеваних и специфичних подешавања за тај затвор.

Омогућавање fail2ban-а

До сада смо инсталирали и конфигурисали fail2ban. Сада га морамо омогућити да ради као услуга са аутоматским покретањем. Затим, морамо да га тестирамо да бисмо били сигурни да ради како се очекује.

Да бисмо омогућили fail2ban као услугу, користимо systemctl команду:

sudo systemctl enable fail2ban

Такође, користимо је за покретање услуге:

sudo systemctl start fail2ban

Статус услуге можемо проверити користећи systemctl:

sudo systemctl status fail2ban.service

Све изгледа добро – имамо зелено светло, што значи да је све у реду.

Да видимо да ли се fail2ban слаже са овим:

sudo fail2ban-client status

Ово одражава оно што смо подесили. Омогућили смо један затвор, под називом [sshd]. Ако додамо име затвора претходној команди, можемо детаљније погледати:

sudo fail2ban-client status sshd

Ово показује број грешака и забрањених ИП адреса. Наравно, сва статистика је тренутно нула.

Тестирање нашег затвора

Са другог рачунара ћемо послати ССХ захтев за конекцију на нашем рачунару за тестирање и намерно унети погрешну лозинку. Добијате три покушаја да унесете исправну лозинку при сваком покушају конекције.

maxretry вредност се покреће након три неуспела покушаја конекције, а не три неуспела покушаја лозинке. Дакле, морамо три пута унети погрешну лозинку да бисмо промашили покушај конекције.

Затим ћемо поново покушати да се повежемо и још три пута унети погрешну лозинку. Први покушај погрешне лозинке при трећем покушају повезивања требало би да покрене fail2ban.

Након прве погрешне лозинке у трећем покушају повезивања, не добијамо одговор са удаљене машине. Не добијамо никакво објашњење, само „хладно раме“.

Морате притиснути Ctrl+C да бисте се вратили на командну линију. Ако покушамо још једном, добићемо другачији одговор:

ssh [email protected]

Раније је порука о грешци била „Permision denied“. Овога пута, конекција је потпуно одбијена. Ми смо персона нон грата. Били смо забрањени.

Хајде да погледамо детаље о [sshd] затвору поново:

sudo fail2ban-client status sshd

Било је три грешке и једна ИП адреса (192.168.4.25) је забрањена.

Као што смо раније споменули, fail2ban примењује забране додавањем правила у скуп правила заштитног зида. Хајде да још једном погледамо скуп правила (који је раније био празан):

sudo iptables -L

Политици ИНПУТ је додато правило које шаље ССХ саобраћај у f2b-sshd ланац. Правило у f2b-sshd ланцу одбија ССХ конекције са 192.168.4.25. Нисмо мењали подразумевану вредност за време трајања забране, тако да ће за 10 минута та ИП адреса бити уклоњена и може слати нове захтеве за повезивање.

Ако сте подесили дуже трајање забране (на пример, неколико сати), а желите да дозволите ИП адреси да раније пошаље још један захтев за повезивање, можете је раније ослободити.

Укуцајте следеће да бисте то урадили:

sudo fail2ban-client set sshd unbanip 192.168.5.25

На нашем удаљеном рачунару, ако пошаљемо још један ССХ захтев за конекцију и унесемо исправну лозинку, биће нам дозвољено да се повежемо:

ssh [email protected]

Једноставно и ефикасно

Једноставније је обично боље, а fail2ban је елегантно решење за озбиљан проблем. Захтева врло мало конфигурације и не намеће оперативне трошкове – ни вама ни вашем рачунару.