Каталог администратора является одним из слабых и уязвимых звеньев в безопасности сайта, поэтому доступ к нему рекомендуется закрывать от посторонних. Недостатком всех open-souce платформ является тот факт, что временами в них находят уязвимости, позволяющие злоумышленникам производить атаки различного рода. Некоторые из этих атак относятся к критическому уровню опасности и позволяют получить полный доступ к сайту.

После обнаружения уязвимости в любой популярной платформе она становится известной широкой аудитории, и для хакеров открывается целая «поляна» однотипных сайтов с одинаковыми «дырами». Для незащищённых сайтов риск взлома остаётся достаточно высоким. Не всегда администратор сайта успеевает установить обновления или относится к ним легкомысленно, что значительно увеличивает риск взлома. Ежедневно миллионы подобных сайтов «простукиваются» ботами на наличие уязвимостей, атакуется и успешно взламывается.

Самым слабым местом сайта является каталог панели администратора, поэтому доступ к нему необходимо закрыть. Существует несколько способов такой блокировки, например по IP адресу или при помощи базовой аутентификации. Однако эти методы не являются гибкими и удобными для администратора: у большинства пользователей IP адрес динамический и постоянно меняется. А базовая аутентификация хоть и надёжна, но не удобна тем, что каждый раз при открытии админки нужно повторно вводить логин и пароль. В последнее время также набирает популярность двухфакторная авторизация, но это, пожалуй, самый не удобный метод и к тому же с помощью него нельзя закрыть доступ к файлам и директориям, через которые могут производиться атаки.

Золотой серединой может быть способ, при котором при запросе к любым файлам или директориям, расположенным в каталоге администратора, посторонним бы выдавался «от ворот поворот» в виде 403 или 404 ошибки (доступ запрещён, страница не найдена), а администраторам сайта предоставлялся бы полный доступ. Эту задачу можно выполнить с помощью cookie, устанавливаемых в .htaccess — конфигурационном файле сервера Apache.

Ключом доступа будет являться секретная страница, например www.site.ru/my-secret-page. При заходе на эту страницу сервер посылает браузеру администратора cookie, после чего перенаправляет его на страницу входа в панель админки. При запросе к любому файлу в каталоге администратора сервер сначала проверяет, установлены ли у клиента cookie: если их нет, то сервер отказывает клиенту в доступе, а если они установлены — предоставляет его.

Директивы .htaccess для Joomla!

RewriteEngine On

# Имя cookie. Установлено как antihack
# Придумайте что-нибудь оригинальное,
# а в идеале неплохо бы зашифровать строку алгоритмом md5
# Восклицательный знак вначале — это служебный символ
RewriteCond %{HTTP_COOKIE} !antihack

RewriteCond %{REQUEST_URI} ^/administrator [NC]

# Вариант №1: вызвать ошибку 403
RewriteRule .? - [F]
# Вариант №2 - открыть страницу ошибок, вызвать ошибку 404
# RewriteRule .? index.php [L]

# Ваша секретная страница
# В этом примере она имеет адрес /secret
# Придумайте оригинальную секретную страницу
RewriteCond %{REQUEST_URI} ^/secret$

# измените antihack на установленное ранее значение, это имя cookie
RewriteRule .? /administrator/ [CO=antihack:1:%{HTTP_HOST},R=303,L]

Директивы .htaccess для Wordpress:

RewriteEngine On

# Имя cookie. Установлено как antihack
# Придумайте что-нибудь оригинальное,
# а в идеале неплохо бы зашифровать строку алгоритмом md5
# Восклицательный знак вначале — это служебный символ
RewriteCond %{HTTP_COOKIE} !antihack

RewriteCond %{THE_REQUEST} \ /(wp-)?(login|admin) [NC]
RewriteRule .? - [F]

# Ваша секретная страница
# В этом примере она имеет адрес /secret
# Придумайте оригинальную секретную страницу
RewriteCond %{REQUEST_URI} ^/secret$

# измените antihack на установленное ранее значение, это имя cookie
RewriteRule .? /wp-login.php [CO=antihack:1:%{HTTP_HOST},R=303,L]