Pri zabezpečení Joomla webu sa väčšinou hovorí o aktualizáciách, silných heslách, viacfaktorovom overovaní alebo zálohovaní. Na serveroch s Apache však existuje ešte jeden veľmi užitočný nástroj – súbor .htaccess.
Tento nenápadný konfiguračný súbor môže ovplyvňovať spôsob, akým webový server spracováva požiadavky. Joomla ho využíva napríklad pri prepisovaní adries URL, no správne nastavený .htaccess môže zároveň pomôcť obmedziť niektoré typy útokov, zakázať prístup k citlivým súborom, zabrániť výpisu obsahu adresárov alebo pridať ďalšiu ochranu administrácie.
Joomla sa pritom dodáva s pripraveným súborom htaccess.txt, ktorý obsahuje pravidlá pre SEF URL a zároveň niekoľko základných ochranných mechanizmov. Oficiálna dokumentácia ho opisuje ako predkonfigurovaný súbor určený aj na obmedzenie bežných exploitov.
Čo je .htaccess?
.htaccess je konfiguračný súbor používaný webovým serverom Apache. Umožňuje meniť správanie servera pre konkrétny adresár bez zásahu do hlavnej konfigurácie Apache.
Prostredníctvom neho možno napríklad:
- meniť a presmerovávať URL,
- zakázať prístup k súborom alebo adresárom,
- obmedziť prístup podľa IP adresy,
- nastaviť vlastné chybové stránky,
- zakázať výpis obsahu adresárov,
- nastavovať niektoré HTTP hlavičky,
- blokovať určité typy požiadaviek.
Súbor .htaccess je označovaný za dôležitú bezpečnostnú vrstvu Apache a uvádza sa jeho využitie pri presmerovaniach, password protection, obmedzovaní prístupu či blokovaní directory listing.
.htaccess však nie je súčasťou samotného PHP alebo Joomla. Je to funkcia webového servera.
.htaccess funguje iba na Apache a kompatibilných serveroch
Toto je dôležité rozlíšenie.
Ak máte web na Apache alebo serveri kompatibilnom s jeho .htaccess mechanizmom, tento súbor možno používať.
Ak web beží napríklad na Nginx, .htaccess sa nepoužíva. Pravidlá treba zapísať priamo do konfigurácie servera. Na Microsoft IIS sa namiesto neho používa napríklad web.config.
Pred úpravou preto najskôr zistite, aký webový server používa váš hosting.
Joomla obsahuje súbor htaccess.txt
Po štandardnej inštalácii Joomla sa v koreňovom adresári nachádza súbor:
htaccess.txt
Ak chcete používať jeho Apache pravidlá, premenujete ho na:
.htaccess
Súbor začínajúci bodkou je na linuxových systémoch považovaný za skrytý. Preto ho niektorí správcovia cez FTP alebo správcu súborov spočiatku nevidia.
Aj odborná literatúra o Joomla popisuje postup:
htaccess.txt → .htaccess
ako súčasť aktivácie URL rewriting.
Prečo Joomla neposkytuje rovno .htaccess?
Pretože nie každý server používa Apache a nie každé hostingové prostredie povoľuje rovnaké direktívy.
Ak by Joomla automaticky aktivovala .htaccess s pravidlom, ktoré konkrétny server nepodporuje, výsledkom by mohla byť chyba:
500 Internal Server Error
Preto sa konfiguračný súbor dodáva ako htaccess.txt a jeho aktiváciu vykonáva správca podľa konkrétneho prostredia.
.htaccess a SEF URL
Najznámejšie použitie .htaccess v Joomla sú pekné URL adresy.
Bez URL rewriting môže adresa vyzerať napríklad:
https://example.sk/index.php/joomla/bezpecnost
Po aktivácii URL rewriting:
https://example.sk/joomla/bezpecnost
V Joomla sa funkcia zapína v globálnej konfigurácii prostredníctvom možnosti Use URL Rewriting / Použiť prepis URL.
Na Apache musí byť zároveň:
- aktivovaný modul
mod_rewrite, htaccess.txtpremenovaný na.htaccess.
Funkcia URL rewriting vyžaduje platný .htaccess v koreňovom adresári Joomla.
.htaccess však dokáže viac než iba pekné URL
Z pohľadu bezpečnosti je podstatné, že server spracováva pravidlá .htaccess ešte pred tým, než požiadavku dostane Joomla.
To znamená, že niektoré nevhodné požiadavky možno zastaviť už na úrovni servera.
Oficiálny Joomla Security Checklist výslovne uvádza .htaccess medzi nástrojmi, ktorými možno chrániť citlivé adresáre, napríklad /administrator, alebo obmedzovať prístup podľa IP adries.
1. Zakázanie výpisu adresárov
Ak webový server umožňuje directory listing a v adresári sa nenachádza indexový súbor, návštevník môže dostať zoznam jeho obsahu.
To môže prezradiť:
- názvy súborov,
- záložné archívy,
- štruktúru adresárov,
- názvy rozšírení.
Predvolený Joomla .htaccess preto obsahuje ochranu proti výpisu adresárov. Uvádza sa napríklad princíp:
<IfModule mod_autoindex.c>
IndexIgnore *
</IfModule>
ktorý zabraňuje zobrazovaniu obsahu adresára.
Na niektorých serveroch sa používa aj:
Options -Indexes
Konkrétna dostupnosť direktívy závisí od konfigurácie hostingu.
2. Ochrana administrácie ďalším heslom
Veľmi účinným doplnkovým opatrením môže byť serverová ochrana adresára:
/administrator
Pomocou HTTP Basic Authentication musí návštevník ešte pred Joomla prihlasovacím formulárom zadať ďalšie meno a heslo.
Prihlasovanie potom vyzerá:
serverové heslo → Joomla prihlásenie → MFA
Útočník, ktorý sa nedostane cez prvú vrstvu, sa vôbec nedostane k prihlasovaciemu formuláru Joomla.
Oficiálna bezpečnostná dokumentácia Joomla výslovne odporúča zvážiť password protection citlivých adresárov vrátane administrator.
Pozor
Takéto zabezpečenie treba najskôr otestovať.
Niektoré rozšírenia alebo externé služby môžu potrebovať pristupovať k určitým URL administrátorskej aplikácie. Príliš agresívne obmedzenie môže preto narušiť fungovanie webu.
3. Obmedzenie administrácie podľa IP adresy
Ak pristupujete do administrácie iba z pevnej IP adresy, možno zvážiť povolenie prístupu iba z nej.
Na novších Apache konfiguráciách môže princíp vyzerať napríklad:
Require ip 203.0.113.25
Takéto riešenie môže byť veľmi účinné pri:
- firemných intranetoch,
- administrácii z kancelárie s pevnou IP,
- interných systémoch.
Pre bežného používateľa s dynamickou domácou alebo mobilnou IP však môže byť nepraktické.
Oficiálny Joomla Security Checklist uvádza IP obmedzenie citlivých adresárov ako jednu z možností použitia .htaccess.
4. Zákaz priameho prístupu k citlivým súborom
Na serveri môžu existovať súbory, ktoré nemajú byť dostupné priamo cez webový prehliadač.
Pomocou Apache pravidiel možno napríklad zakázať prístup k vybraným typom súborov:
<FilesMatch "\.(ini|log|sql|bak)$">
Require all denied
</FilesMatch>
Takéto pravidlo však nepridávajte automaticky bez kontroly.
Niektoré rozšírenia môžu legitímne používať netypické prípony. Vždy preto testujte:
- frontend,
- administráciu,
- aktualizácie,
- zálohovanie,
- formuláre.
5. Ochrana pred MIME sniffingom
Moderné prehliadače sa za určitých okolností môžu pokúsiť odhadnúť typ súboru podľa jeho obsahu.
Joomla preto už dlhšie pridáva do svojich predvolených serverových konfiguračných súborov ochranu:
Header always set X-Content-Type-Options "nosniff"
Oficiálna dokumentácia uvádza, že Joomla pridala túto ochranu do predvolených htaccess.txt a web.config.txt ako hardening proti útokom súvisiacim s MIME type sniffingom.
6. Presmerovanie HTTP na HTTPS
.htaccess možno použiť aj na presmerovanie nezašifrovanej komunikácie:
http://
na:
https://
V praxi však nie je vždy potrebné riešiť túto úlohu ručne.
Joomla umožňuje v globálnej konfigurácii zapnúť Force HTTPS, čo oficiálna dokumentácia uvádza ako najjednoduchší spôsob vynútenia HTTPS.
Presmerovanie môže riešiť tiež:
- hosting,
- reverse proxy,
- CDN,
- Apache VirtualHost.
Používajte ideálne iba jednu jasne definovanú vrstvu, aby ste nevytvorili presmerovacie slučky.
7. Bezpečnostné HTTP hlavičky
Do .htaccess možno pridávať aj HTTP hlavičky, napríklad HSTS alebo ďalšie bezpečnostné direktívy.
V moderných Joomla inštaláciách však treba vedieť, že Joomla obsahuje vlastný systém HTTP Header Management, prostredníctvom ktorého možno viaceré bezpečnostné hlavičky nastavovať priamo z CMS. Dokumentácia uvádza napríklad podporu konfigurácie HSTS.
Pre správcu to znamená:
nekonfigurujte tú istú hlavičku súčasne v Joomla, .htaccess, CDN aj hostingu, pokiaľ presne neviete, prečo to robíte.
Duplicitné alebo protichodné hlavičky môžu spôsobovať problémy.
8. Blokovanie konkrétnych IP adries
.htaccess možno použiť aj na zablokovanie konkrétnej IP adresy.
Na Apache 2.4 môže byť princíp napríklad:
<RequireAll>
Require all granted
Require not ip 203.0.113.100
</RequireAll>
To môže byť užitočné pri jasne identifikovanom zdroji útoku.
Nie je však dobré vytvárať stovky alebo tisíce ručných blokovacích pravidiel.
Útočníci:
- používajú botnety,
- menia IP adresy,
- využívajú cloudové servery,
- používajú proxy a VPN.
Pri rozsiahlejšom blokovaní je vhodnejší firewall, WAF alebo bezpečnostná služba hostingu.
9. Blokovanie hotlinkingu
Ak iný web vkladá vaše obrázky priamo zo servera, používa váš prenos dát.
Pomocou mod_rewrite možno hotlinking vybraných súborov obmedziť. Je popisované aj využitie .htaccess pri obrázkoch a ďalších súboroch.
Z bezpečnostného pohľadu však nejde o zásadné opatrenie. Je to skôr ochrana zdrojov a bandwidthu.
Pri CDN navyše treba konfiguráciu prispôsobiť konkrétnemu spôsobu poskytovania médií.
10. Presmerovania starých URL
.htaccess je veľmi vhodný aj na permanentné presmerovania po:
- redizajne,
- migrácii webu,
- zmene štruktúry menu,
- zmene CMS.
Napríklad:
Redirect 301 /stara-stranka /nova-stranka
Hoci ide primárne o SEO a správu URL, má to význam aj z prevádzkového hľadiska – návštevníci a roboty nekončia zbytočne na neexistujúcich adresách.
Pozor na staré návody z internetu
Pri .htaccess je veľmi dôležité nepreberať bez rozmyslu konfigurácie spred desiatich alebo pätnástich rokov.
Na internete stále nájdete pravidlá založené na starších Apache direktívach:
Order allow,deny
Deny from all
Moderný Apache 2.4 preferuje syntax typu:
Require all denied
Staršie pravidlá môžu fungovať iba vďaka kompatibilnému modulu alebo nemusia fungovať vôbec.
Staršie materiály používajú historickú syntax Order, Allow a Deny, preto je vhodné ich chápať ako vysvetlenie princípu, nie automaticky ako aktuálnu konfiguráciu na vloženie do produkčného servera.
Neupravujte predvolený .htaccess bez zálohy
Chybná konfigurácia .htaccess patrí medzi veľmi jednoduché spôsoby, ako odstaviť celý web.
Typickým výsledkom je:
500 Internal Server Error
Pred každou väčšou zmenou preto:
- stiahnite aktuálny
.htaccess, - uložte jeho funkčnú kópiu mimo webu,
- vykonajte jednu zmenu,
- otestujte frontend,
- otestujte administráciu.
Ak web prestane fungovať, môžete súbor okamžite vrátiť.
Aj oficiálna Joomla dokumentácia upozorňuje, že nesprávne nakonfigurovaný .htaccess môže vyvolať závažné serverové chyby.
Čo robiť po aktualizácii Joomla?
Ak ste si .htaccess výrazne upravili, oplatí sa po väčšej aktualizácii Joomla porovnať:
- svoj aktuálny
.htaccess, - nový
htaccess.txtdodaný s Joomla.
Dôvod je jednoduchý.
Joomla môže do nového predvoleného súboru pridať:
- nové bezpečnostné pravidlo,
- zmenu kompatibility,
- ďalší hardening.
Ak už roky používate starú vlastnú verziu .htaccess, tieto zmeny sa k vám automaticky nemusia dostať.
Príkladom je doplnenie ochrany proti MIME sniffingu do predvolených serverových súborov Joomla.
Má zmysel používať „super hardened“ .htaccess z internetu?
Vo väčšine prípadov je lepšie byť opatrný.
Na internete existujú .htaccess konfigurácie so stovkami riadkov, ktoré blokujú:
- query parametre,
- názvy súborov,
- user-agentov,
- rôzne typy URL,
- znaky v požiadavkách.
Môžu fungovať dobre na konkrétnom webe, ale na inom môžu zablokovať:
- Joomla API,
- AJAX,
- page builder,
- formulár,
- platobnú bránu,
- webhooks,
- externé integrácie,
- aktualizačný systém.
Dokonca aj oficiálna Joomla stránka s bezpečnostnými .htaccess príkladmi upozorňuje, že takýto súbor sa nemá jednoducho vložiť do webu bez úprav podľa konkrétnej stránky.
.htaccess nenahrádza firewall
Treba tiež správne chápať jeho úlohu.
.htaccess môže pomôcť:
- blokovať konkrétne požiadavky,
- obmedziť adresáre,
- chrániť súbory,
- upravovať URL.
Ale nenahrádza:
- serverový firewall,
- WAF,
- ochranu proti DDoS,
- aktualizácie Joomla,
- bezpečnostné opravy komponentov,
- MFA,
- kvalitný hosting.
Je to jedna vrstva bezpečnostného modelu, nie kompletné zabezpečenie.
.htaccess nenahrádza aktualizácie
Ak je na webe zraniteľný komponent, samotný .htaccess ho nemusí ochrániť.
Najvyššiu prioritu stále majú:
aktuálna Joomla + aktuálne rozšírenia + bezpečné účty + MFA + zálohy + kvalitná konfigurácia servera.
Až na túto základnú vrstvu má zmysel pridávať ďalší hardening.
Odporúčaná konfigurácia pre bežný Joomla web
Pre väčšinu menších a stredných Joomla stránok nemusíte vytvárať stovky vlastných pravidiel.
Rozumný základ je:
- používať aktuálny
htaccess.txtdodaný s Joomla, - premenovať ho na
.htaccess, ak používate Apache, - zapnúť URL rewriting,
- ponechať ochranu proti directory listing,
- ponechať základné bezpečnostné pravidlá Joomla,
- používať HTTPS,
- zvážiť dodatočnú ochranu
/administrator, - pravidelne porovnávať
.htaccesss novou verziouhtaccess.txt, - všetky vlastné pravidlá dokumentovať.
To je pri bežnom webe často lepšie než komplikovaná konfigurácia, ktorej správca po roku už nerozumie.
Praktický .htaccess checklist
Základ
- Web beží na Apache alebo kompatibilnom serveri.
-
htaccess.txtbol podľa potreby premenovaný na.htaccess. -
mod_rewritefunguje. - SEF URL fungujú bez chýb.
- Výpis adresárov je zakázaný.
Bezpečnosť
- Citlivé súbory nie sú verejne dostupné.
- Administrácia má podľa potreby dodatočnú ochranu.
- HTTPS je správne vynútené.
- Bezpečnostné hlavičky nie sú duplicitne nakonfigurované.
- Na serveri nezostávajú verejne dostupné
.sql,.bakalebo záložné archívy.
Údržba
- Pred úpravou existuje záloha
.htaccess. - Každé nové pravidlo je otestované.
- Po aktualizácii Joomla sa porovná nový
htaccess.txt. - Nepoužívajú sa bez kontroly staré návody.
- Vlastné pravidlá sú zdokumentované.
Keď sa po úprave objaví chyba 500
Ak po zmene .htaccess prestane stránka fungovať a zobrazí sa:
500 Internal Server Error
postupujte jednoducho:
- premenujte
.htaccessnapríklad na.htaccess-old, - obnovte poslednú funkčnú verziu,
- ak ju nemáte, použite aktuálny Joomla
htaccess.txt, - skontrolujte error log servera,
- pridávajte svoje pravidlá späť postupne.
Najčastejšou príčinou býva direktíva, ktorú hosting:
- nepodporuje,
- nepovoľuje prostredníctvom
AllowOverride, - alebo používa v inej verzii Apache.
Kedy radšej použiť nastavenie Joomla alebo hostingu?
Nie všetko treba riešiť v .htaccess.
HTTPS
Ak ho hosting alebo Joomla spoľahlivo vynucuje, ďalšie vlastné rewrite pravidlo nemusí byť potrebné. Joomla má priamo možnosť Force HTTPS.
Bezpečnostné HTTP hlavičky
Joomla má vlastný systém HTTP Header Management.
Blokovanie veľkého množstva útočníkov
Lepší je WAF alebo firewall.
DDoS ochrana
Patrí na úroveň hostingu, siete alebo CDN.
.htaccess používajte tam, kde je naozaj vhodnou vrstvou serverovej konfigurácie.
Záver
Súbor .htaccess patrí medzi veľmi užitočné nástroje správcu Joomla stránky na serveri Apache. Nie je iba mechanizmom pre odstránenie index.php z URL.
Môže pomôcť:
chrániť adresáre → obmedziť prístup → zakázať directory listing → chrániť citlivé súbory → upravovať presmerovania → pridávať serverový hardening.
Joomla navyše poskytuje vlastný predkonfigurovaný htaccess.txt, ktorý obsahuje pravidlá pre SEF URL a základnú ochranu proti niektorým bežným exploitom.
Zároveň však platí, že .htaccess je veľmi mocný nástroj. Jediný chybný riadok môže znefunkčniť celý web a príliš agresívne pravidlá môžu blokovať Joomla alebo rozšírenia.
Preto je najlepšou stratégiou začať od aktuálneho súboru dodaného s Joomla, pridávať iba pravidlá, ktorým rozumiete, každú zmenu otestovať a pred úpravou mať funkčnú zálohu.
Správne nastavený .htaccess potom tvorí ďalšiu užitočnú vrstvu ochrany – nie namiesto aktualizácií, MFA, záloh a bezpečného hostingu, ale spolu s nimi.
