SSH prieiga serverio naudotojui suteikia saugų būdą prisijungti prie serverio ir atlikti norimus administravimo darbus. Tačiau lygiai dėl tų pačių priežasčių ji yra dažnai atakuojama bandant prisijungti prie serverio. Kiekvieną kartą prisijungdami prie serverio galite pastebėti, kad per laiką nuo paskutinio prisijungimo buvo bandoma kelis tūkstančius kartų prisijungti. Tai išduoda, kad brute-force atakos vykdomos aktyviai netikrinant ar serveryje yra naudingos informacijos. Pagrindinis tikslas - turėti prieigą prie suteikiamo resurso žalingos veiklos vykdymui.
Todėl šioje pamokoje nurodysime, kaip apsaugoti SSH tarnyba naudojant patikimą programinę įrangą - Fail2ban.
0. Preliminarūs reikalavimai
- Linux serveris naudojantis mūsų parengtą CentOS 7/8 operacinę sistemą
- Naudotojas turintis sudo teises (ne root).
1. Fail2ban diegimas
Kadangi Fail2ban nėra suteikiamas oficialiuose CentOS paketuose, turite įsirašyti EPEL paketų rinkinį:
sudo yum install epel-release
Dabar galime atlikti fai2ban paketo diegimą:
sudo yum install fail2ban
Užbaigus diegimą įjungiame fail2ban:
sudo systemctl enable fail2ban
2. Nustatymų koregavimas
Fail2ban konfigūracinis failas yra
/etc/fail2ban/jail.conf. Kadangi šis failas būna perrašomas atnaujinimų metu, sukuriame papildomą failą
/etc/fail2ban/jail.local, kuriame atliksime norimus pakeitimus.
Visos reikšmės įvestos į
/etc/fail2ban/jail.local bus perrašomos į
/etc/fail2ban/jail.conf failą
. Šie failai turi
[DEFAULT] skiltį, kuri ir būna perrašoma. Visų pirmą susikuriame naują
jail.local failą:
sudo nano /etc/fail2ban/jail.local
Ir įkeliame šį kodą:
[DEFAULT]
#
nustatomas blokavimo laikas sekundėmis. Šiuo atveju valandai.
bantime = 3600
#
perrašomos iptables taisyklės /etc/fail2ban/jail.d/00-firewalld.conf faile
banaction = iptables-multiport
# aktyvuojama sshd apsauga
[sshd]
enabled = true
Dabar galite perkrauti fail2ban tarnyba:
sudo systemctl restart fail2ban
Patikriname ar nustatymai įsigaliojo:
sudo fail2ban-client status
Atsakymas:
Status
|- Number of jail: 1
`- Jail list: sshd
Taip pat galite gauti platesnę informaciją apie sshd apsaugą:
sudo fail2ban-client status sshd
3. Kiti galimi SSH blokavimo nustatymai
Jeigu norėsite koreguoti ir daugiau nustatymų, juos matysite faile jail.conf. Tačiau kaip ir minėjome, juos geriau koreguokite jail.local faile. Atsidarome jail.conf failą:
sudo nano /etc/fail2ban/jail.conf
Skiltyje [DEFAULT] matysite šiuos nustatymus:
ignoreip - standartiškai yra netikrinamas tik vietinis IP adresas, tačiau galite įvesti ir konkrečius IP adresus, kuriems nebus taikomi apribojimai prisijungti prie serverio. IP adresai atskiriami tarpais.
bantime (sekundėmis) - laikas, kurį nebus leidžiama prisijungti užbanintiems naudotojams.
findtime (sekundėmis) - šis nustatymas veikia kartu su maxretry. findtime nustatomas terminas per kurį gali bandoma jungtis, o maxretry kiek kartų būtų galima bandyti jungtis kartų.
destemail, sendername, mta - jeigu norite gauti pranešimus apie nesėkmingus prisijungimus galite nustatyti el. pašto dėžutę (destemail), siuntėjo pavadinimą (sendername) ir pašto tarnyba (mta). Pagal šiuos parametrus Jums bus siunčiami laiškai apie bandymus prisijungti.
action - šis parametras nurodo veiksmą, kurio Fail2ban imasi, kai norima aktyvuoti apribojimą. Standartinė blokavimo veikla yra nurodoma prieš pat šį parametrą. Numatytasis veiksmas yra tiesiog nustatyti, kad būtų atmestas srautas iš atakuojančio IP adreso, kol pasibaigs draudimo laikas.
Jei norėtumėte sukonfigūruoti el. pašto įspėjimus, galite koreguoti action_ reikšmę į action_mw. Jei norite, kad el. laiškuose būtų įtraukiami išrašai, galite pakeisti jį į action_mwl. Jei pasirinksite naudoti el. pašto pranešimus, įsitikinsite, kad naudojate tinkamus pašto nustatymus.
4. Fail2ban išrašų stebėjimas bei ugniasienės konfigūracijaSvarbu yra stebėti ar nėra kokių klaidų tam, kad tarnyba veiktų korektiškai. Galite patikrinti ar fail2ban veikia paleisdami komandą:
sudo systemctl status fail2ban
Jeigu matysite kokių nors klaidų, jų priežastis galite peržiūrėti tikrindami išrašus nuo paskutinio tarnybos įjungimo:
sudo journalctl -b -u fail2ban
Stebėti bendrus Fail2ban išrašus galite paleidę komandą:
sudo tail -F /var/log/fail2ban.log
Šiuo metu veikiančias taisykles galite tikrinti su komanda:
Arba pateikti taisykles tokiu formatu, kuris rodytų komandas būtinas kiekvienai taisyklei įjungti:
Apibendrinimas
Nuo šiol galite sėkmingai konfigūruoti fail2ban tarnybą SSH apsaugojimui. Fail2ban labai lengva konfigūruoti ir kitų tarnybų konfigūravimui ir tai yra puikus būdas apsaugoti bet kokio tipo tarnybas, kurios naudoja autentifikaciją.