Návod pro mírně pokročilé
V případě, že se na Vaší stránce množí spamové komentáře, dochází k častým pokusům o proniknutí od automatizovaných robotů, Váš web byl napadnutý, resp. jiným způsobem zneužitý nebo jednoduše chcete pro bezpečnost z určité země jednoduchým způsobem přístup zamezit, budou jako první kroky k nápravě potřebné:
- ověřit stupeň napadení Vašeho webu nástrojem Webscanner
- blokovat přístup na webovou stránku na základě země, ze které IP adresa pochází
- blokovat IP adresy, z kterých útoky pochádzejí
Zablokování přístupu na základě země
Je důležité analyzovat přístupy na stránku, z které napadení pochází – je to možné buď externím, ale velmi využívaným nástrojem Google Analytics nebo přes offline analýzu pomocí námi doporučeného nástroje Apache viewer . V tomto kroku je potřebné zjistit GeoIP kód země (podle normy iso3166). Při této analýze též pomůže klasifikace podle následujícího seznamu zemí Po zjištění přímého kódu země můžete řídit přístup direktivami v souboru .htaccess , přičemž každou nežádoucí zemi můžete přidat jednoduchým příkazem:
<IfModule mod_geoip.c>
GeoIPEnable On
</IfModule>
<IfModule mod_setenvif.c>
SetEnvIf GEOIP_COUNTRY_CODE PL dny
SetEnvIf GEOIP_COUNTRY_CODE RU dny
SetEnvIf GEOIP_COUNTRY_CODE CN dny
</IfModule>
<RequireAll>
Require all granted
Require not env dny
</RequireAll>
Tento kód například blokuje přístup z Polska, Ruska a Číny. Tento postup je možné kopírovat pro více zemí, případně direktivu tzv. „otočit“.
V případě potřeby můžeme povolit přístup jen z vybraných zemí. Kód uvedený níže povoluje přístup ze Slovenka, Polska, Česka a Maďarska.
<IfModule mod_geoip.c>
GeoIPEnable On
</IfModule>
<IfModule mod_authz_core.c>
Require expr "%{ENV:GEOIP_COUNTRY_CODE} in { 'SK', 'PL', 'CZ', 'HU' }"
</IfModule>
Blokování přístupu na základě IP adresy
V některých případech může být nutné omezit přístup na web z určité IP adresy nebo naopak povolit přístup pouze z určité IP adresy, ať už z bezpečnostních důvodů nebo kvůli testování webu. Přístup lze řídit pomocí souboru .htaccess pomocí direktiv Order, Allow a Deny, které již byly zmíněny výše v souvislosti s přístupem z určité lokality. Direktiva Allow povoluje přístup z IP adresy, Deny přístup blokuje.
Pokud tedy potřebujete například zablokovat přístup z IP adresy 35.120.32.76, přidáte do souboru .htaccess
<RequireAll>
Require all granted
Require not ip 35.120.32.76
</RequireAll>
Tyto direktivy se zpracovávají ve třech krocích, pořadí zpracování určuje direktiva Order.
Na rozdíl od typického firewallu platí vždy poslední zachycené pravidlo, direktivy se zpracovávají ve skupinách, nejprve Allow, poté Deny, nebo naopak. Možná pořadí určená direktivou Order jsou:
Order Deny, Allow
Nejprve se zpracovávají direktivy Deny, následně Allow. Jakákoli adresa, která spadá pod Deny, bude odmítnuta, pokud nespadá také pod direktivu Allow. Pokud požadavek nespadá ani pod Deny, ani pod Allow, je povolen.
Order Allow, Deny
Nejprve jsou zpracovány direktivy Allow a následně Deny. Pokud přístup spadá pod pravidla definovaná v Deny, bude přístup zablokován bez ohledu na to, zda spadá také pod pravidla z direktiv Allow. Pokud IP adresa nespadá pod žádnou z těchto direktiv, je blokována.
V následujícím kódu je přístup povolen pouze z IP adresy 37.13.22.16, z ostatních adres je přístup odepřen:
Order Deny,Allow Deny from all Allow from 37.13.22.16