Jak zabezpečit redakční systém omezením přístupu na IP adresy

Administrační rozhraní redakčních systémů jako je např. Joomla, Wordpress, PrestaShop a jiné, bývají často napadány roboty, kteří se snaží hrubou silou odhalit heslo do systému.

Brute force útok (také nazývaný útok hrubou silou) je typ útoku na šifrovaná, nebo zakódovaná data, kdy se útočník pokouší získat přístup k datům prostým vyzkoušením všech možných kombinací hesel nebo klíčů, dokud nenajde správný. Tento druh útoku se často používá k prolomení hesel, kde útočník používá program, který zkouší všechny možné kombinace znaků, a to buď postupně, nebo paralelně na více počítačích najednou.

Případný další popis základního zabezpečení WordPressu můžete nalézt zde: Základní zabezpečení redakčního systému Wordpress

Doporučeným postupem pro omezení této nežádoucí aktivity je povolení přístupu do adresáře pouze pro vyjmenované IP adresy.
Pro hosting, který podporuje použití souboru .htacccess, je možné vytvořit či upravit tento soubor s následujícím kódem (například pro zabezpečení systému Joomla jej vytvořte v adresáři "administrator"):

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^(81.2.196.122|81.2.196.123)$
RewriteRule ^(.*)$ - [F,L]

Pro systém Wordpress je třeba použít konkrétnější zápis a soubor .htaccess umístit do kořenové složky webu. Tou je složka www pro hlavní web a složka subdoms/jmeno_subdomeny pro subdoménu:

RewriteEngine on
RewriteCond %{REQUEST_URI} /wp-login\.php [OR]
RewriteCond %{REQUEST_URI} /xmlrpc\.php [OR]
RewriteCond %{REQUEST_URI} /wp-signup\.php [OR]
RewriteCond %{REQUEST_URI} /wp-admin
RewriteCond %{REQUEST_URI} !/admin-ajax\.php
RewriteCond %{REMOTE_ADDR} !^(81.2.196.122|81.2.196.123)$
RewriteRule ^(.*)$ - [F,L]

V kódu nahraďte IP 81.2.196.122 a 81.2.196.123 za adresy, ze kterých chcete k adresáři či souborům přistupovat.
Předpokladem je znalost této adresy. Veřejnou IP adresu vašeho připojení můžete zjistit např. na stránce http://www.mojeip.cz/ .
 
Na Linux serveru je také nainstalován modul GeoIP, kdy lze povolit přístup z konkrétních zemí, nahrazením posledního řádku s podmínkou
RewriteCond %{REMOTE_ADDR}...
následujícím řádkem:
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(CZ|SK)$
 Celý seznam country kódů můžete nalézt zde: https://www.geonames.org/countries/ 

Kompletní návod pro použití modulu GeoIP naleznete zde: Základní zabezpečení redakčního systému Wordpress 

U webů hostovaných na OS Windows lze stejného efektu dosáhnout pomocí úpravy souboru web.config. Níže je příklad tohoto souboru používaného pro Wordpress.
 
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="wordpress" patternSyntax="Wildcard">
            <match url="*" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
            <action type="Rewrite" url="index.php" />
        </rule></rules>
    </rewrite>
       
  </system.webServer>
    <location path="xmlrpc.php">
        <system.webServer>
            <security>
                <ipSecurity allowUnlisted="false">
                    <add ipAddress="81.2.196.184" allowed="true" />
                    <add ipAddress="77.75.79.39" allowed="true" />
                </ipSecurity>
            </security>
        </system.webServer>
    </location>
    <location path="wp-login.php">
        <system.webServer>
            <security>
                <ipSecurity allowUnlisted="false">
                    <add ipAddress="81.2.196.184" allowed="true" />
                    <add ipAddress="77.75.79.39" allowed="true" />
                </ipSecurity>
            </security>
        </system.webServer>
    </location>
</configuration>