Homer Jay Simpson
Проверенные
- Сообщения
- 330
- Реакции
- 153
- Баллы
- 11,045
- Ограничение доступа к файлу 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 111.222.33.44
</Files>
ErrorDocument 403 http://свой сайт.ру
Вместо 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-калькулятор:
Код:
http://ip-calculator.ru
Для тех же, у кого не прописан IP, будет выдаваться страница с ошибкой 403:
Код:
Forbidden
You don't have permission to access /forum/admin.php on this server.
2. Ограничение доступа к файлу admin.php по паролю через .htaccess и .htpasswd.
Генерируем файл .htpasswd, задав логин и пароль. Можно воспользоваться следующим сервисом:
Код:
http://www.htaccesstools.com/htpasswd-generator/
Сохраняем полученную строчку в файл .htpasswd и загружаем его на сервер. Желательно расположить его выше корня сайта, т.е. там, куда посетители не могут добраться.
Дальше нужно поправить .htaccess, который в корне форума, дописав туда следующее:
Код:
<Files admin.php>
AuthUserFile /путь/относительно/корня/веб-сервера/до/файла/.htpasswd
AuthType Basic
AuthName "Какой-нибудь заголовок для диалогового окна авторизации"
Require valid-user
</Files>
Теперь при запросе admin.php нужно будет сначала ввести наш новый логин и пароль, и уже только после этого можно будет вводить логин и пароль администратора XenForo.
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 операции после каждого обновления еще раз!
=============================================================
Недостаток 1-го способа очевиден. Если у вас динамический IP или же к админке должны иметь несколько человек с разными IP, то этот вариант будет несколько затруднительным. Придется вписывать много IP.
Второй способ плох тем, что пароль в админку нужно вводить 2 раза, причем в каждом случае он должен быть разным. Ну и кроме того, у неопытных пользователей даже с инструкцией могут возникнуть вопросы, как правильно защититься дополнительным паролем.
Ну а третий способ плох тем, что необходимо править файл (пусть и один, но все же). Это значит, что при каждом обновлении форума нужно не забыть переименовать обновленный 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>
Код:
<a href="admin.php" class="acp navLink adminLink"><span class="itemLabel">{xen:phrase admin_cp}</span></a>
- Защищаемся от залива шелл:
Код:
RemoveHandler .phtml
RemoveHandler .php
RemoveHandler .php3
RemoveHandler .php4
RemoveHandler .php5
RemoveHandler .cgi
RemoveHandler .exe
RemoveHandler .pl
RemoveHandler .asp
RemoveHandler .aspx
RemoveHandler .shtml
<Files ~ "\.php|\.phtml|\.cgi|\.exe|\.pl|\.asp|\.aspx|\.sht ml">
Order allow,deny
Deny from all
</Files>
- Для nginx в конфиг сайта:
Код:
location = /admin.php$ {
auth_basic "Restricted Area";
auth_basic_user_file htpasswd; # файл в директории конфигов nginx /etc/nginx/htpasswd
}
Код:
http://www.htaccesstools.com/htpasswd-generator/
либо по IP
Код:
location = /admin.php$ {
allow 127.0.0.1; # список разрешённых IP
deny all;
}
Код:
location = /admin.php$ {
allow 127.0.0.1; # список разрешённых IP
deny all;
auth_basic "Restricted Area";
auth_basic_user_file htpasswd; # файл в директории конфигов nginx
}