Si të mbroni një server Apache me Fail2Ban në Ubuntu 14.04


Prezantimi

Kur përdorni një server në internet, është e rëndësishme të zbatoni masa sigurie për të mbrojtur faqen tuaj dhe përdoruesit. Mbrojtja e faqeve të internetit dhe aplikacioneve tuaja me politikat e murit të zjarrit dhe kufizimi i aksesit në zona të caktuara me vërtetimin e fjalëkalimit është një pikënisje e shkëlqyer për sigurimin e sistemit tuaj. Sidoqoftë, çdo kërkesë e fjalëkalimit të aksesueshëm publikisht ka të ngjarë të tërheqë përpjekje brutale të forcës nga përdoruesit me qëllim të keq dhe robotët.

Konfigurimi i fail2ban mund të ndihmojë në zbutjen e këtij problemi. Kur përdoruesit dështojnë në mënyrë të përsëritur të vërtetojnë në një shërbim (ose përfshihen në aktivitete të tjera të dyshimta), fail2ban mund të lëshojë një ndalim të përkohshëm në adresën IP ofenduese duke modifikuar në mënyrë dinamike politikën e ekzekutimit të murit të zjarrit. Çdo fail2ban \burg funksionon duke kontrolluar regjistrat e shkruar nga një shërbim për modele që tregojnë përpjekje të dështuara. Vendosja e fail2ban për të monitoruar regjistrat e Apache është e lehtë duke përdorur filtrat e konfigurimit të përfshirë .

Në këtë udhëzues, ne do të demonstrojmë se si të instaloni fail2ban dhe ta konfiguroni atë për të monitoruar regjistrat tuaj të Apache për përpjekjet për ndërhyrje. Ne do të përdorim një server Ubuntu 14.04.

Parakushtet

Përpara se të filloni, duhet të keni një server Ubuntu 14.04 të konfiguruar me një llogari jo-root. Kjo llogari duhet të konfigurohet me privilegje sudo në mënyrë që të lëshojë komanda administrative. Për të mësuar se si të konfiguroni një përdorues me privilegje sudo, ndiqni udhëzuesin tonë fillestar të konfigurimit të serverit për Ubuntu 14.04.

Instalimi i Apache dhe konfigurimi i vërtetimit të fjalëkalimit

Nëse jeni të interesuar të mbroni serverin tuaj Apache me fail2ban, mund të keni tashmë një server të konfiguruar dhe ekzekutuar. Nëse jo, mund të instaloni Apache nga depot e paracaktuara të Ubuntu duke përdorur apt.

Përditësoni indeksin e paketës lokale dhe instaloni duke shtypur:

  1. sudo apt-get update
  2. sudo apt-get install apache2

Shërbimi fail2ban është i dobishëm për mbrojtjen e pikave të hyrjes. Në mënyrë që kjo të jetë e dobishme për një instalim Apache, vërtetimi i fjalëkalimit duhet të zbatohet për të paktën një nëngrup të përmbajtjes në server. Ju mund të ndiqni këtë udhëzues për të konfiguruar mbrojtjen me fjalëkalim për serverin tuaj Apache.

Instaloni Fail2Ban

Pasi serveri juaj Apache të funksionojë dhe të aktivizohet vërtetimi i fjalëkalimit, mund të vazhdoni dhe të instaloni fail2ban (ne përfshijmë një rimarrje tjetër depoje këtu në rast se e kishit tashmë të konfiguruar Apache në hapat e mëparshëm):

  1. sudo apt-get update
  2. sudo apt-get install fail2ban

Kjo do të instalojë softuerin. Si parazgjedhje, fail2ban është konfiguruar që të ndalojë vetëm përpjekjet e dështuara të hyrjes në SSH. Ne duhet të aktivizojmë disa rregulla që do ta konfigurojnë atë për të kontrolluar regjistrat tanë Apache për modele që tregojnë aktivitet keqdashës.

Rregullimi i cilësimeve të përgjithshme brenda Fail2Ban

Për të filluar, ne duhet të rregullojmë skedarin e konfigurimit që përdor fail2ban për të përcaktuar se cilat regjistra të aplikacioneve duhet të monitorohen dhe çfarë veprimesh duhet të ndërmarrim kur gjenden hyrjet fyese. Skedari i dhënë /etc/fail2ban/jail.conf është burimi kryesor i ofruar për këtë.

Për të bërë modifikime, duhet ta kopjojmë këtë skedar në /etc/fail2ban/jail.local. Kjo do të parandalojë që ndryshimet tona të mbishkruhen nëse një përditësim i paketës ofron një skedar të ri të paracaktuar:

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

Hapni skedarin e sapokopjuar në mënyrë që të mund të konfigurojmë monitorimin tonë të regjistrit të Apache:

  1. sudo nano /etc/fail2ban/jail.local

Ndryshimi i parazgjedhjeve

Ne duhet të fillojmë duke vlerësuar standardet e vendosura brenda skedarit për të parë nëse ato i përshtaten nevojave tona. Këto do të gjenden në seksionin [DEFAULT] brenda skedarit. Këta artikuj përcaktojnë politikën e përgjithshme dhe secili mund të anashkalohet në burgje specifike.

Një nga pikat e para që duhet parë është lista e klientëve që nuk i nënshtrohen politikave fail2ban. Kjo është vendosur nga direktiva ignoreip. Ndonjëherë është një ide e mirë të shtoni adresën tuaj IP ose rrjetin në listën e përjashtimeve për të shmangur mbylljen. Ky është më pak problem me hyrjet e serverit në ueb, megjithëse nëse jeni në gjendje të ruani aksesin në guaskë, pasi gjithmonë mund ta ktheni manualisht ndalimin. Ju mund të shtoni adresa IP shtesë ose rrjete të kufizuara nga një hapësirë, në listën ekzistuese:

[DEFAULT]

. . .
ignoreip = 127.0.0.1/8 your_home_IP

Një tjetër artikull që mund të dëshironi të rregulloni është bantime, i cili kontrollon se për sa sekonda ndalohet një anëtar ofendues. Është ideale ta caktoni këtë në një kohë mjaft të gjatë për të prishur përpjekjet e një aktori keqdashës, ndërkohë që është mjaft e shkurtër për t'i lejuar përdoruesit legjitimë të korrigjojnë gabimet. Si parazgjedhje, kjo është vendosur në 600 sekonda (10 minuta). Rriteni ose uleni këtë vlerë siç e shihni të arsyeshme:

[DEFAULT]

. . .
bantime = 3600

Dy artikujt e ardhshëm përcaktojnë shtrirjen e linjave të regjistrit të përdorur për të përcaktuar një klient ofendues. findtime specifikon një sasi kohe në sekonda dhe direktiva maxretry tregon numrin e përpjekjeve që duhen toleruar brenda asaj kohe. Nëse një klient bën më shumë se përpjekje për maxretry brenda kohës së caktuar nga findtime, ai do të ndalohet:

[DEFAULT]

. . .
findtime = 3600   # These lines combine to ban clients that fail
maxretry = 6      # to authenticate 6 times within a half hour.

Konfigurimi i njoftimeve me postë (opsionale)

Ju mund të aktivizoni njoftimet me email nëse dëshironi të merrni postë sa herë që ndodh një ndalim. Për ta bërë këtë, do t'ju duhet së pari të vendosni një MTA në serverin tuaj në mënyrë që të mund të dërgojë email. Për të mësuar se si të përdorni Postfix për këtë detyrë, ndiqni këtë udhëzues.

Pasi të keni konfiguruar MTA-në tuaj, do t'ju duhet të rregulloni disa cilësime shtesë brenda seksionit [DEFAULT] të skedarit /etc/fail2ban/jail.local. Filloni duke vendosur direktivën mta. Nëse konfiguroni Postfix, siç tregon tutoriali i mësipërm, ndryshoni këtë vlerë në \mail:

[DEFAULT]

. . .
mta = mail

Ju duhet të zgjidhni adresën e emailit që do të dërgohen njoftimet. Modifiko direktivën destemail me këtë vlerë. Direktiva emri i dërguesit mund të përdoret për të modifikuar fushën \Dërguesi në emailet e njoftimit:

[DEFAULT]

. . .
destemail = youraccount@email.com
sendername = Fail2BanAlerts

Në gjuhën fail2ban, një \veprim është procedura e ndjekur kur një klient dështon vërtetimin shumë herë. Veprimi i paracaktuar (i quajtur action_) është thjesht ndalimi i adresës IP nga porti në fjalë. Megjithatë, ka dy veprime të tjera të parapërgatitura që mund të përdoren nëse keni konfiguruar postën.

Mund të përdorni veprimin action_mw për të ndaluar klientin dhe për të dërguar një njoftim me email në llogarinë tuaj të konfiguruar me një raport \whois në adresën ofenduese. Mund të përdorni gjithashtu kodin action_mwl veprim, i cili bën të njëjtën gjë, por përfshin gjithashtu linjat e regjistrit ofendues që shkaktuan ndalimin:

[DEFAULT]

. . .
action = %(action_mwl)s

Konfigurimi i Fail2Ban për të monitoruar regjistrat e Apache

Tani që keni vendosur disa nga cilësimet e përgjithshme fail2ban, ne mund të përqendrohemi në aktivizimin e burgjeve specifike të Apache që do të monitorojnë regjistrat e serverit tonë të uebit për modele specifike sjelljeje.

Çdo burg brenda skedarit të konfigurimit shënohet nga një kokë që përmban emrin e burgut në kllapa katrore (çdo seksion përveç seksionit [DEFAULT] tregon një konfigurim specifik të burgut). Si parazgjedhje, vetëm burgu [ssh] është i aktivizuar.

Për të aktivizuar monitorimin e regjistrave për përpjekjet e hyrjes në Apache, ne do të aktivizojmë burgun [apache]. Ndryshoni direktivën enabled brenda këtij seksioni në mënyrë që të lexojë \true:

[apache]

enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache*/*error.log
maxretry = 6
. . .

Nëse serveri juaj Apache po shkruan në vendndodhjen e paracaktuar të regjistrit (/var/log/apache/error.log), burgu është tashmë i konfiguruar për të parë në vendin e duhur. Nëse po regjistroheni në një vend tjetër, modifikoni logpath sipas nevojës. Gjithashtu, mos ngurroni të rregulloni direktivën maxretry ose të shtoni një vlerë findtime për këtë burg nëse dëshironi të vendosni kufizime të ndryshme për këtë burg specifik:

[apache]

enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache/custom_log_location.log
maxretry = 3
findtime = 600
. . .

Burgu i mësipërm do të kujdeset për ndalimin e dështimeve bazë të vërtetimit. Ka edhe disa burgje të tjera të para-konfiguruara që ia vlen të aktivizohen (burgu [apache-multiport] është një burg i trashëguar që nuk nevojitet).

Burgu [apache-noscript] përdoret për të ndaluar klientët që janë në kërkim të skripteve në faqen e internetit për t'i ekzekutuar dhe shfrytëzuar. Nëse nuk përdorni PHP ose ndonjë gjuhë tjetër në lidhje me serverin tuaj të internetit, mund ta aktivizoni këtë burg për të ndaluar ata që kërkojnë këto lloje burimesh:

[apache-noscript]

enabled  = true
. . .

Burgu [apache-overflows] përdoret për të bllokuar klientët që po përpiqen të kërkojnë URL jashtëzakonisht të gjata dhe të dyshimta. Këto janë shpesh shenja të përpjekjeve për të shfrytëzuar Apache duke u përpjekur për të shkaktuar një tejmbushje buferi. Ju mund ta aktivizoni këtë burg nëse dëshironi të parandaloni këto lloje sulmesh:

[apache-overflows]

enabled  = true
. . .

Disa kontrolle shtesë mund të bëhen duke kopjuar dhe ngjitur hyrjen [apache-overflows] dhe duke e modifikuar pak. Për shembull, mund ta kopjoni dhe ngjitni atë seksion dhe të modifikoni emrin dhe filtrin e burgut në apache-badbots për të ndaluar disa modele të njohura të kërkesave me qëllim të keq për bot:

[apache-overflows]

enabled  = true
port     = http,https
filter   = apache-overflows
logpath  = /var/log/apache*/*error.log
maxretry = 2

[apache-badbots]

enabled  = true
port     = http,https
filter   = apache-badbots
logpath  = /var/log/apache*/*error.log
maxretry = 2

Nëse nuk përdorni Apache për të siguruar akses në përmbajtjen e uebit brenda direktorive shtëpiake të përdoruesve, mund të kopjoni dhe ngjitni përsëri dhe të ndryshoni emrat e burgjeve dhe filtrave në apache-nohome:

[apache-overflows]

enabled  = true
port     = http,https
filter   = apache-overflows
logpath  = /var/log/apache*/*error.log
maxretry = 2

[apache-badbots]

enabled  = true
port     = http,https
filter   = apache-badbots
logpath  = /var/log/apache*/*error.log
maxretry = 2

[apache-nohome]

enabled  = true
port     = http,https
filter   = apache-nohome
logpath  = /var/log/apache*/*error.log
maxretry = 2

Së fundi, nëse jeni duke përdorur Apache me PHP, mund të dëshironi të aktivizoni burgun [php-url-fopen], i cili bllokon përpjekjet për të përdorur sjellje të caktuara PHP për qëllime keqdashëse. Ju do të duhet të ndryshoni direktivën logpath për të treguar vendndodhjen e saktë të regjistrit të aksesit (në Ubuntu, vendndodhja e parazgjedhur është /var/log/apache2/access.log). Ju mund të përdorni një model të ngjashëm me atë që përputhet me regjistrin e gabimeve në burgjet e tjera:

[php-url-fopen]

enabled = true
port    = http,https
filter  = php-url-fopen
logpath = /var/log/apache*/*access.log

Kur të keni mbaruar duke bërë modifikimet që ju nevojiten, ruani dhe mbyllni skedarin.

Zbatimi i burgjeve tuaja Apache

Për të zbatuar ndryshimet e konfigurimit, do t'ju duhet të rinisni shërbimin fail2ban. Ju mund ta bëni këtë duke shtypur:

  1. sudo service fail2ban restart

Shërbimi duhet të riniset, duke zbatuar politikat e ndryshme të ndalimit që keni konfiguruar.

Marrja e informacionit rreth burgjeve të aktivizuara

Ju mund t'i shihni të gjitha burgjet tuaja të aktivizuara duke përdorur komandën fail2ban-client:

  1. sudo fail2ban-client status

Ju duhet të shihni një listë të të gjitha burgjeve që keni aktivizuar:

Output
Status |- Number of jail: 7 `- Jail list: php-url-fopen, apache-overflows, apache-noscript, ssh, apache-badbots, apache-nohome, apache

Mund të shihni se fail2ban ka modifikuar rregullat e murit tuaj të zjarrit për të krijuar një kornizë për ndalimin e klientëve. Edhe pa asnjë rregull të mëparshëm të murit të zjarrit, tani do të kishit të aktivizuar një kornizë që lejon fail2ban të ndalojë në mënyrë selektive klientët duke i shtuar ata në zinxhirë të krijuar me qëllim:

  1. sudo iptables -S
Output
-P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban-apache -N fail2ban-apache-badbots -N fail2ban-apache-nohome -N fail2ban-apache-noscript -N fail2ban-apache-overflows -N fail2ban-php-url-fopen -N fail2ban-ssh -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache-nohome -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache-badbots -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-php-url-fopen -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache-overflows -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache-noscript -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh -A fail2ban-apache -j RETURN -A fail2ban-apache-badbots -j RETURN -A fail2ban-apache-nohome -j RETURN -A fail2ban-apache-noscript -j RETURN -A fail2ban-apache-overflows -j RETURN -A fail2ban-php-url-fopen -j RETURN -A fail2ban-ssh -j RETURN

Nëse dëshironi të shihni detajet e ndalimeve që zbatohen nga çdo burg, ndoshta është më e lehtë të përdorni përsëri fail2ban-client:

  1. sudo fail2ban-client status apache
Output
Status for the jail: apache |- filter | |- File list: /var/log/apache2/error.log | |- Currently failed: 0 | `- Total failed: 0 `- action |- Currently banned: 0 | `- IP list: `- Total banned: 0

Testimi i politikave Fail2Ban

Është e rëndësishme të testoni politikat tuaja fail2ban për t'u siguruar që ato bllokojnë trafikun siç pritej. Për shembull, për kërkesën e vërtetimit të Apache, ju mund të jepni kredenciale të pasakta disa herë. Pasi të keni tejkaluar kufirin, duhet të ndaloheni dhe të mos jeni në gjendje të hyni në sajt. Nëse konfiguroni njoftimet me email, duhet të shihni mesazhe në lidhje me ndalimin në llogarinë e emailit që keni dhënë.

Nëse shikoni statusin me komandën fail2ban-client, do të shihni që adresa juaj IP është e ndaluar nga faqja:

  1. sudo fail2ban-client status apache
Output
Status for the jail: apache |- filter | |- File list: /var/log/apache2/error.log | |- Currently failed: 0 | `- Total failed: 12 `- action |- Currently banned: 1 | `- IP list: 111.111.111.111 `- Total banned: 1

Kur të jeni të kënaqur që rregullat tuaja po funksionojnë, mund ta zhbllokoni manualisht adresën tuaj IP me fail2ban-client duke shtypur:

  1. sudo fail2ban-client set apache unbanip 111.111.111.111

Tani duhet të jeni në gjendje të provoni përsëri vërtetimin.

konkluzioni

Vendosja e fail2ban për të mbrojtur serverin tuaj Apache është mjaft e thjeshtë në rastin më të thjeshtë. Megjithatë, fail2ban ofron një fleksibilitet të madh për të ndërtuar politika që do t'i përshtaten nevojave tuaja specifike të sigurisë. Duke i hedhur një sy variablave dhe modeleve brenda skedarit /etc/fail2ban/jail.local dhe skedarëve nga të cilët varet brenda skedarit /etc/fail2ban/filter.d dhe drejtorive /etc/fail2ban/action.d, mund të gjeni shumë pjesë për t'i modifikuar dhe ndryshuar ndërsa zhvillohen nevojat tuaja. Mësimi i bazave se si të mbroni serverin tuaj me fail2ban mund t'ju ofrojë një siguri të madhe me përpjekje minimale.

Për të mësuar më shumë rreth fail2ban, hidhini një sy disa prej këtyre lidhjeve:

  • Si funksionon Fail2Ban për të mbrojtur shërbimet në një server Linux
  • Si të mbroni SSH me Fail2Ban në Ubuntu 14.04
  • Si të mbroni një server Nginx me Fail2Ban në Ubuntu 14.04