Как защитить админку XenForo
Автор статьи: Romchik®
Источник
Итак, в этой статье будет рассмотрено 3 варианта защиты админки XenForo.
- Ограничение доступа к файлу admin.php по IP через .htaccess.
- Ограничение доступа к файлу admin.php по паролю через .htaccess и .htpasswd.
- Переименовывание файла admin.php.
У каждого метода есть свои минусы, которые будут рассмотрены в конце каждого метода.
1. Ограничение доступа к файлу admin.php по IP через .htaccess
Тут все просто. Узнаем свой IP (
например тут) и дописываем к файлу .htaccess (в корне форума) следующее:
Код:
<Files admin.php>
Order deny,allow
Deny from all
Allow from 121.222.33.44
</Files>
Вместо IP 111.222.33.44 указываем, естественно, свой. Если нужно пускать в админку и другие IP, то дописываем следующие через пробел:
Код:
<Files admin.php>
Order deny,allow
Deny from all
Allow from 111.222.33.44 112.223.34.45 113.224.35.46
</Files>
Также можно указывать маски диапазона (может быть полезно, если у вас динамический IP). Ниже указаны примеры маски.
Код:
100.99.88.x = 100.99.88.0/24
100.99.x.x = 100.99.0.0/16
100.x.x.x = 100.0.0.0/8
То есть, указав 100.99.88.x мы будем пускать IP с 100.99.88.0 по 100.99.88.255. Для расчета IP можно воспользоваться
IP-калькулятором.
Для тех же, у кого не прописан IP, будет выдаваться страница с ошибкой 403:
Код:
Forbidden
You don't have permission to access /forum/admin.php on this server.
Недостаток 1-го способа очевиден. Если у вас динамический IP или же к админке должны иметь несколько человек с разными IP, то этот вариант будет несколько затруднительным. Придется вписывать много IP.
2. Ограничение доступа к файлу admin.php по паролю через .htaccess и .htpasswd.
Генерируем файл .htpasswd, задав логин и пароль. Можно воспользоваться следующим сервисом
htaccesstools.com.
Вводим желаемый логин и пароль и получаем что-то типа: login:$apr1$sOXY....$C4/V8oJK89nf3D3OEIs5Q/
Сохраняем полученную строчку в файл
.htpasswd и загружаем его на сервер. Желательно расположить его выше корня сайта, т.е. там, куда посетители не могут добраться.
Дальше нужно поправить
.htaccess, который в корне форума, дописав туда следующее:
Код:
<Files admin.php>
AuthUserFile /путь/относительно/корня/веб-сервера/до/файла/.htpasswd
AuthType Basic
AuthName "Какой-нибудь заголовок для диалогового окна авторизации"
Require valid-user
</Files>
Теперь при запросе admin.php нужно будет сначала ввести наш новый логин и пароль, и уже только после этого можно будет вводить логин и пароль администратора XenForo.
Недостаток этого способа в том, что пароль в админку нужно вводить 2 раза, причем в каждом случае он должен быть разным. Ну и кроме того, у неопытных пользователей даже с инструкцией могут возникнуть вопросы, как правильно защититься дополнительным паролем.
3. Переименовывание файла admin.php.
Меняем в корне форума имя у файла
admin.php на что-то свое, например,
adminka.php.
Но это еще не все. Многие ссылки в админке не будут теперь работать. Поэтому необходимо открыть library/XenForo/
Link.php и найдя:
Код:
$outputLink = 'admin.php' . ($append !== '' ? '?' : '') . $append;
заменить
admin.php на наше новое имя:
Код:
$outputLink = 'adminka.php' . ($append !== '' ? '?' : '') . $append;
В шаблоне
moderator_bar находим строку:
Код:
<a href="admin.php" class="acp adminLink"><span class="itemLabel">{xen:phrase admin_control_panel}</span></a>
и также меняем
admin.php на наше новое имя файла.
И еще в шаблоне
PAGE_CONTAINER находим:
Код:
<a href="admin.php">{xen:phrase reopen_via_admin_control_panel}</a>
и меняем
admin.php.
И не забываем проделывать эти 4 операции после каждого обновления еще раз!
Недостаток третьего способа в том, что необходимо править файл (пусть и один, но все же). Это значит, что при каждом обновлении форума нужно не забыть переименовать обновленный admin.php и заменить новое имя в файле Link.php.
Дополнительно: [
взял тут]
В версиях 1.1.3 и выше в шаблоне
PAGE_CONTAINER отсутствует код
Код:
<a href="admin.php">{xen:phrase reopen_via_admin_control_panel}</a>
Ищем шаблон
notice_board_closed а в нем код
Код:
<a href="admin.php?options/list/boardActive">{xen:phrase reopen_via_admin_control_panel}</a>