Каталог администратора является одним из слабых и уязвимых звеньев в безопасности сайта, поэтому доступ к нему рекомендуется закрывать от посторонних. Недостатком всех 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]