Si të mbroni SSH me Fail2Ban në CentOS 7
Prezantimi
Ndërsa lidhja me serverin tuaj përmes SSH mund të jetë shumë e sigurt, vetë demon SSH është një shërbim që duhet të ekspozohet në internet për të funksionuar siç duhet. Kjo vjen me një rrezik të natyrshëm dhe ofron një vektor sulmi për sulmuesit e mundshëm.
Çdo shërbim që është i ekspozuar ndaj rrjetit është një objektiv i mundshëm në këtë mënyrë. Nëse i kushtoni vëmendje regjistrave të aplikacioneve për këto shërbime, shpesh do të shihni përpjekje të përsëritura, sistematike për hyrje që përfaqësojnë sulme me forcë brutale nga përdoruesit dhe robotët njësoj.
Një shërbim i quajtur Fail2ban mund ta zbusë këtë problem duke krijuar rregulla që ndryshojnë automatikisht konfigurimin e murit të zjarrit të iptables bazuar në një numër të paracaktuar përpjekjesh për hyrje të pasuksesshme. Kjo do të lejojë serverin tuaj t'i përgjigjet përpjekjeve të paligjshme të aksesit pa ndërhyrjen tuaj.
Në këtë udhëzues, ne do të mbulojmë se si të instaloni dhe përdorni Fail2ban në një server CentOS 7.
Instaloni Fail2ban në CentOS 7
Ndërsa Fail2ban nuk është i disponueshëm në depon e paketave zyrtare CentOS, ai është i paketuar për projektin EPEL. EPEL, që qëndron për Paketat Shtesë për Enterprise Linux, mund të instalohet me një paketë lëshimi që është i disponueshëm nga CentOS:
- sudo yum install epel-release
Do t'ju kërkohet të vazhdoni—shtypni y, pasuar nga Enter:
yum promptTransaction Summary
============================================================================
Install 1 Package
Total download size: 14 k
Installed size: 24 k
Is this ok [y/d/N]: y
Tani duhet të jemi në gjendje të instalojmë paketën fail2ban
:
- sudo yum install fail2ban
Përsëri, shtypni y dhe Enter kur ju kërkohet të vazhdoni.
Pasi të ketë përfunduar instalimi, përdorni systemctl
për të aktivizuar shërbimin fail2ban
:
- sudo systemctl enable fail2ban
Konfiguro cilësimet lokale
Shërbimi Fail2ban ruan skedarët e tij të konfigurimit në drejtorinë /etc/fail2ban
. Atje, mund të gjeni një skedar me vlera të paracaktuara të quajtur jail.conf
. Meqenëse ky skedar mund të mbishkruhet nga përmirësimet e paketës, ne nuk duhet ta modifikojmë atë në vend. Në vend të kësaj, ne do të shkruajmë një skedar të ri të quajtur jail.local
. Çdo vlerë e përcaktuar në jail.local
do të kapërcejë ato në jail.conf
.
jail.conf
përmban një seksion [DEFAULT]
, i ndjekur nga seksione për shërbime individuale. jail.local
mund të anashkalojë ndonjë nga këto vlera. Për më tepër, skedarët në /etc/fail2ban/jail.d/
mund të përdoren për të anashkaluar cilësimet në të dy këta skedarë. Skedarët aplikohen në rendin e mëposhtëm:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
, sipas alfabetit/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
, sipas alfabetit
Çdo skedar mund të përmbajë një seksion [DEFAULT]
, të ekzekutuar së pari dhe mund të përmbajë gjithashtu seksione për burgje individuale. Vlera e fundit e vendosur për një parametër të caktuar ka përparësi.
Le të fillojmë duke shkruar një version shumë të thjeshtë të jail.local
. Hapni një skedar të ri duke përdorur nano
(ose redaktorin tuaj të zgjedhur):
- sudo nano /etc/fail2ban/jail.local
Ngjitni sa vijon:
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
Kjo anulon tre cilësime: Vendos një bantime
të re të paracaktuar për të gjitha shërbimet, sigurohet që po përdorim iptables
për konfigurimin e murit të zjarrit dhe aktivizon sshd
burg.
Dilni dhe ruani skedarin e ri (në nano
, shtypni Ctrl-X për të dalë, y për të ruajtur dhe Enter > për të konfirmuar emrin e skedarit). Tani mund të rifillojmë shërbimin fail2ban
duke përdorur systemctl
:
- sudo systemctl restart fail2ban
Komanda systemctl
duhet të përfundojë pa asnjë dalje. Për të kontrolluar nëse shërbimi po funksionon, mund të përdorim fail2ban-client
:
- sudo fail2ban-client status
OutputStatus
|- Number of jail: 1
`- Jail list: sshd
Ju gjithashtu mund të merrni informacion më të detajuar në lidhje me një burg specifik:
- sudo fail2ban-client status sshd
Eksploroni cilësimet e disponueshme
Versioni i jail.local
që përcaktuam më sipër është një fillim i mirë, por mund të dëshironi të rregulloni një sërë cilësimesh të tjera. Hapni jail.conf
dhe ne do të shqyrtojmë disa nga parazgjedhjet. Nëse vendosni të ndryshoni ndonjë nga këto vlera, mbani mend se ato duhet të kopjohen në seksionin përkatës të jail.local
dhe të rregullohen atje, në vend që të modifikohen në vend.
- sudo nano /etc/fail2ban/jail.conf
Cilësimet e parazgjedhura për të gjitha burgjet
Së pari, lëvizni nëpër seksionin [DEFAULT]
.
ignoreip = 127.0.0.1/8
Ju mund të rregulloni adresat e burimit që Fail2ban injoron duke shtuar një vlerë në parametrin ignoreip
. Aktualisht, është konfiguruar që të mos ndalojë asnjë trafik që vjen nga makina lokale. Ju mund të përfshini adresa shtesë për t'i injoruar duke i shtuar ato në fund të parametrit, të ndara me një hapësirë.
bantime = 600
Parametri bantime
cakton kohëzgjatjen që një klient do të ndalohet kur ai nuk ka arritur të vërtetojë saktë. Kjo matet në sekonda. Si parazgjedhje, kjo është vendosur në 600 sekonda ose 10 minuta.
findtime = 600
maxretry = 3
Dy parametrat e ardhshëm që dëshironi t'u kushtoni vëmendje janë findtime
dhe maxretry
. Këto punojnë së bashku për të vendosur kushtet në të cilat një klient duhet të ndalohet.
Variabli maxretry
përcakton numrin e provave që një klient duhet të vërtetojë brenda një dritareje kohore të përcaktuar nga findtime
, përpara se të ndalohet. Me cilësimet e paracaktuara, Fail2ban do të ndalojë një klient që tenton pa sukses të identifikohet 3 herë brenda një dritareje prej 10 minutash.
destemail = root@localhost
sendername = Fail2Ban
mta = sendmail
Nëse dëshironi të konfiguroni sinjalizimet me email, mund t'ju duhet të anashkaloni cilësimet destemail
, emri i dërguesit
dhe mta
. Parametri destemail
cakton adresën e emailit që duhet të marrë mesazhe ndalimi. emri i dërguesit
vendos vlerën e fushës \Nga në email. Parametri mta
konfiguron se çfarë shërbimi poste do të përdoret për të dërguar postë.
action = $(action_)s
Ky parametër konfiguron veprimin që kryen Fail2ban kur dëshiron të vendosë një ndalim. Vlera action_
përcaktohet në skedar pak para këtij parametri. Veprimi i parazgjedhur është thjesht konfigurimi i murit të zjarrit për të refuzuar trafikun nga hosti ofendues derisa të kalojë koha e ndalimit.
Nëse dëshironi të konfiguroni sinjalizimet me email, mund ta anashkaloni këtë vlerë nga action_
në action_mw
. Nëse dëshironi që emaili të përfshijë linjat përkatëse të regjistrit, mund ta ndryshoni atë në action_mwl
. Do të dëshironi të siguroheni që keni konfiguruar cilësimet e duhura të postës nëse zgjidhni të përdorni sinjalizimet e postës.
Cilësimet për burgjet individuale
Pas [DEFAULT]
, do të hasim seksione që konfigurojnë burgjet individuale për shërbime të ndryshme. Këto zakonisht do të përfshijnë një port
që do të ndalohet dhe një logpath
për të monitoruar për përpjekjet për qasje me qëllim të keq. Për shembull, burgu SSH që kemi aktivizuar tashmë në jail.local
ka cilësimet e mëposhtme:
[sshd]
port = ssh
logpath = %(sshd_log)s
Në këtë rast, ssh
është një variabël i paracaktuar për portin standard SSH dhe %(sshd_log)s
përdor një vlerë të përcaktuar diku tjetër në konfigurimin standard të Fail2ban (kjo ndihmon në mbajtjen jail.conf
i lëvizshëm midis sistemeve të ndryshme operative).
Një cilësim tjetër që mund të hasni është filtri
që do të përdoret për të vendosur nëse një rresht në një regjistër tregon një vërtetim të dështuar.
Vlera filter
është në fakt një referencë për një skedar të vendosur në drejtorinë /etc/fail2ban/filter.d
, me shtesën e tij .conf
të hequr . Ky skedar përmban shprehjet e rregullta që përcaktojnë nëse një rresht në regjistër është i keq. Ne nuk do ta mbulojmë këtë skedar në thellësi në këtë udhëzues, sepse është mjaft kompleks dhe cilësimet e paracaktuara përputhen mirë me linjat e duhura.
Sidoqoftë, mund të shihni se çfarë lloj filtrash janë të disponueshëm duke shikuar në atë drejtori:
- ls /etc/fail2ban/filter.d
Nëse shihni një skedar që duket se ka lidhje me një shërbim që po përdorni, duhet ta hapni atë me një redaktues teksti. Shumica e skedarëve janë komentuar mjaft mirë dhe ju duhet të jeni në gjendje të tregoni se nga çfarë lloj gjendjeje është krijuar skenari për t'u mbrojtur. Shumica e këtyre filtrave kanë seksione të përshtatshme (të çaktivizuara) në jail.conf
që mund t'i aktivizojmë në jail.local
nëse dëshironi.
Për shembull, pretendoni se po i shërbejmë një faqe interneti duke përdorur Nginx dhe kuptoni se një pjesë e faqes sonë e mbrojtur me fjalëkalim po përplaset me përpjekjet për hyrje. Mund t'i themi Fail2ban të përdorë skedarin nginx-http-auth.conf
për të kontrolluar këtë gjendje brenda skedarit /var/log/nginx/error.log
.
Kjo në fakt është vendosur tashmë në një seksion të quajtur [nginx-http-auth]
në skedarin tonë /etc/fail2ban/jail.conf
. Do të na duhet vetëm të shtojmë një parametër të aktivizuar
për burgun nginx-http-auth
te jail.local
:
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
[nginx-http-auth]
enabled = true
Dhe rinisni shërbimin fail2ban
:
- sudo systemctl restart fail2ban
Monitoroni regjistrat e Fail2ban dhe konfigurimin e murit të zjarrit
Është e rëndësishme të dini se një shërbim si Fail2ban po funksionon sipas qëllimit. Filloni duke përdorur systemctl
për të kontrolluar statusin e shërbimit:
- sudo systemctl status fail2ban
Nëse diçka duket se nuk shkon këtu, mund t'i zgjidhni problemet duke kontrolluar regjistrat për njësinë fail2ban
që nga nisja e fundit:
- sudo journalctl -b -u fail2ban
Më pas, përdorni fail2ban-client
për të kërkuar statusin e përgjithshëm të fail2ban-server
, ose ndonjë burg individual:
- sudo fail2ban-client status
- sudo fail2ban-client status jail_name
Ndiqni regjistrin e Fail2ban për një regjistrim të veprimeve të fundit (shtypni Ctrl-C për të dalë):
- sudo tail -F /var/log/fail2ban.log
Listoni rregullat aktuale të konfiguruara për iptables:
- sudo iptables -L
Trego rregullat iptables në një format që pasqyron komandat e nevojshme për të aktivizuar çdo rregull:
- sudo iptables -S
konkluzioni
Tani duhet të jeni në gjendje të konfiguroni disa politika bazë ndalimi për shërbimet tuaja. Fail2ban është shumë i lehtë për t'u konfiguruar dhe është një mënyrë e shkëlqyer për të mbrojtur çdo lloj shërbimi që përdor vërtetimin.
Nëse dëshironi të mësoni më shumë se si funksionon Fail2ban, mund të shikoni tutorialin tonë se si funksionojnë rregullat dhe skedarët fail2ban.