Apache2 : Blokování „nebezpečných“ souborů
V kořenovém adresáři webového serveru se nám mohou objevit nejrůznější nebezpečné soubory, některé z nich jsou pouze potenciálně nebezpečné, u některých může jít ovšem skutečně o nervy, v tom horším případě o život. Dám příklad, pokud někdo sem tam používá editor (skrze terminál) ke změně souboru například souboru .php, je možné, že bude editorem vytvořen záložní soubor pro tento skript (v kořenovém adresáři) s názvem soubor.php ~ , a protože se nejedná o skutečný soubor php, nebude při jeho spuštění interpretováno php, zdrojový kód vašeho php skriptu je od tohoto okamžiku veřejně viditelný. Tím můžete například otevřít potencionálním škůdcům vrátka i ke svým sql databázím*. ( * je-li aplikace hodně špatně napsaná/strukturovaná)
V zájmu ochrany před celou řadou podobných útoků je rozumným opatrením blokování přístupu k určitým souborů. Do souboru .htaccess nebo do hlavního konfiguračního souboru Apache (doporučuji tento postup) lze přidat následující:
<FilesMatch "(^\.htaccess|\.sql$|\.svn$|\.git$|\.DS_Store|.*~$|\.old$|\.bak$)" >
Order allow,deny
Deny from all
</FilesMatch>
Obsahem „FilesMatch“ je seznam alternativ regulárních výrazů (seskupených a oddělených „|“ = standardní syntaxe).
Pro vysvětlení -
„\ .Htaccess“ (soubory obsahující řetězec „.htaccess“) - blokuje přístup k souboru voleb Apache.
„\ .Sql $“ (soubory končící na „.sql“) - blokuje přístup k souborům SQL.
„\ .Git $“ (soubory končící na „.git“) - blokuje přístup k repozitářům git, které jsou obsaženy v adresářích pojmenovaných „.git“.
„\ .Svn $“ (soubory končící na „.svn“) - blokuje přístup k úložištím svn, jak je uvedeno výše.
„\ .DS_Store“ (soubory obsahující řetězec „.DS_Store“) - blokuje přístup k „trusu“ OSX, který zůstal v adresářích.
„. * ~ $“ (Soubory končící na „~“) - blokuje přístup k zálohám editoru stylu emacs .
„. * Old $“ (soubory končící na „old“) - blokuje přístup k typickému záložnímu souboru.
„. * Bak $“ (soubory končící na „bak“) - blokuje přístup k zálohám editoru stylu vim .
Konfiguraci lze přidat do libovolného konfiguračního souboru Apache v globálním kontextu...
Doporučuji místa:
Pro distribuce odvozené z Ubuntu / Debian: /etc/apache2/apache2.conf (na konci souboru).
Pro servery založené na SLES /etc/apache2/conf.d/local.conf
Po provedení změny zkontrolujte konfiguraci pomocí příkazu
apachectl configtest
Za předpokladu, neobjeví-li se žádná chyba, restartujte v poklidu Apache.
Pro distribuce odvozené z Ubuntu / Debian
sudo service apache2 restart
Distribuce založené na SLES
systemctl reload apache2
HOTOVO!