Переименовываем и защищаем admin.php

Статус
В этой теме нельзя размещать новые ответы.

Homer Jay Simpson

Проверенные
Сообщения
330
Реакции
151
Баллы
11,045
  1. Ограничение доступа к файлу admin.php по IP через .htaccess.
  2. Ограничение доступа к файлу admin.php по паролю через .htaccess и .htpasswd.
  3. Переименовывание файла 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/
Вводим желаемый логин и пароль и получаем что-то типа: login:$apr1$sOXY....$C4/V8oJK89nf3D3OEIs5Q/
Сохраняем полученную строчку в файл .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>
Ищем шаблон navigation_visitor_tab, а в нем код
Код:
<a href="admin.php" class="acp navLink adminLink"><span class="itemLabel">{xen:phrase admin_cp}</span></a>
Меняем на своё название.

  • Защищаемся от залива шелл:
Достаточно часто заливают шелл в папку с аватарами. В XenForo к сожалению нет способа (покрайней мере я не нашел) хранить аватарки в БД, поэтому в папку Avatars и во все ее внутренние папки заливаем файл .htaccess с таким содержанием:
Код:
    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
    }
 
Защита от IP имеет многие минусы, в плане того, что Вам может потребоваться зайти из другого места.
Зашита через пароль - идеальный вариант, если вы 1 администратор форума или знаете напрямую других администраторов. Слив пароля и тогда брут пароля обеспечен.
Смена названия админки - Teleport pro = выкачивание всех файлов сайта = можно будет увидеть названия файлов в корневой директории.

У себя использую пароль + переименованный файл админки.

Teleport pro в гугле взломанный 2 ссылка в результатах поиска.
 
Последнее редактирование:
когда переименовуете админку не забудьте переименовать в файле

library/XenForo/ViewRenderer/HtmlAdmin.php

Найдите

$this->_response->setRedirect('Admin.php?tools/run-deferred&redirect=' . urlencode($redirectTarget), 303);

Смените на своё.
 
2. Ограничение доступа к файлу admin.php по паролю через .htaccess и .htpasswd.

Генерируем файл .htpasswd, задав логин и пароль. Можно воспользоваться следующим сервисом:
Код:

Вводим желаемый логин и пароль и получаем что-то типа: login:$apr1$sOXY....$C4/V8oJK89nf3D3OEIs5Q/
Сохраняем полученную строчку в файл .htpasswd и загружаем его на сервер. Желательно расположить его выше корня сайта, т.е. там, куда посетители не могут добраться.
Дальше нужно поправить .htaccess, который в корне форума, дописав туда следующее:
Код:
<Files admin.php>
AuthUserFile /путь/относительно/корня/веб-сервера/до/файла/.htpasswd
AuthType Basic
AuthName "Какой-нибудь заголовок для диалогового окна авторизации"
Require valid-user
</Files>
Теперь при запросе admin.php нужно будет сначала ввести наш новый логин и пароль, и уже только после этого можно будет вводить логин и пароль администратора XenForo.

Не получается авторизоваться. Подскажите пожалуйста, какие права должны быть выставлены на .htpasswd
Есть ли различие в том, в какой кодировке файл .htpasswd
И если не сложно, подскажите как правильно прописать путь в .htaccess если путь к корню вёб-сервера выглядит так: /web/site.ru/public_html/.htpasswd
 
Последнее редактирование:

Вложения

  • fullpath.zip
    265 байт · Просмотры: 47
Смена названия админки - Teleport pro = выкачивание всех файлов сайта = можно будет увидеть названия файлов в корневой директории.
Так а если залить левый Admin.php,пусть брутят на здоровье),или я ошибаюсь?[DOUBLEPOST=1400548815,1400507203][/DOUBLEPOST]Еще один интересный вариант защиты админки.
Придумал не я, но решил его донести и до вас.
Суть хака заключается в следующем, когда какой-то мудак хакер захочет взломать админку сайта, скажем подбором пароля. Он обязательно попробует вариант со стандартным файлом админки то есть admin.php. А вы, как положено, уже давным давно поменяли его название на свое. IP адресс хакера фиксируется в созданом нами файле и банится навсегда
Установка:
1.Создаем в корне файл ip.txt, там будут записываться ип-адресса "мега хакеров", даем права 777.
2.Ставим на файл .htaccess права 777
Вобщим сам admin.php(фейк):
Код:
<?php

/**
* @author DotNet
* @site n2c-team.ws
* @copyright 2011
*/

$ip = getenv ("REMOTE_ADDR");

$log = fopen("ip.txt", "a+");
fwrite($log, "// ".$ip."n");
fclose($log);

$f = fopen($_SERVER['DOCUMENT_ROOT'] . '/.htaccess', "a");
fwrite($f, "ndeny from " . $ip);
fclose($f);

echo <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">

<head>
<meta http-equiv="content-type" content="text/html; charset=1251" />
<meta name="author" content="admin" />

<title>Админ панель DataLife Engine</title>
</head>

<body bgcolor="black" text="white">

<center><img src="http://dematom.com/images/2010/07/17/52212-obyknovennyi_agro_shkolo_trolo_lo.jpg"></center>
<center><h1>Прости, но ты от него не отличаешься...</h1></center>

<!-- Пошел как ты найух отсюда, нехер исходный код зырить человекг :) -->
</body>
</html>
HTML;

echo "<center><h1>Кстати, твой ип($ip) в логах;)</center></h1>"
?>
Вот и все! Только советую картинки перелить на свой сайт,и подумать стоит ли палить контору (Цитатами и картинками)!
Да и в конец всегда можно подпилить под себя:wink:
 
Последнее редактирование:
Попробовал вписать маски ип адресов. Сверял со своим (динамический), все верно. Но почему то не пускает меня в админку. Записал в таком виде:
Allow from 51.124.184.0/24 71.134.125.0/24 ...
 
а как 3 вариант для 1.4.2 запилить?
Ищем шаблон navigation_visitor_tab
нету в коде admin.php который менять
 
Мне по душе больше переименование файла admin.php и фейк выложить, а через айпи взломают хоть знают его или нет только опытный хакер. Думаю пойдет путем через хостинга.
 
Изменил админку но при установке/удалении плагинов идет ошибка из-за не известной страницы (везде где тут пишет прописал новое название)
 
Это нормально. просто подставляйте в адресе своё название и всё.
 
Hope, я так и делаю а заменить или исправить никак?
 
Hope, я так и делаю а заменить или исправить никак?

Выше был ответ, то есть исправляется таким образом https://xenforo.info/threads/Переименовываем-и-защищаем-admin-php.2795/#post-38691

А мне интересно узнать мнение Hope - какой метод из перечисленных выше является на Ваш взгляд, самым оптимальным, безусловно, понимаю, что каждому своё, но всё-таки?

Есть ли ещё варианты повышения безопасности, которые, возможно, не были перечислены здесь, но являются довольно эффективными?

И еще, почему Вы не переименовали admin.php?
 
  • Мне нравится
Реакции: QvQ
Вариант с паролем, как по мне - более предпочтительный, но факту это всё бесполезно, кому очень нужно, тот всё это обойдёт на раз. :)

И еще, почему Вы не переименовали admin.php?
Ответ выше как раз. :)
 
Вариант с паролем, как по мне - более предпочтительный, но факту это всё бесполезно, кому очень нужно, тот всё это обойдёт на раз. :-)
Замкнутый круг с переименованием admin.php.

После переименования нужно внести изменения в robots.txt и изменить Disallow: /admin.php на Disallow: /новое_имя.php, чтобы не индексировалась, соответственно по определенным запросам не была в выдаче.

Но в таком случае можно перейти
Код:
http://адрес_форума/robots.txt
и увидеть новое имя админки.
 
Вот еще где надо переименовывать:
\js\xenforo\xenforo.js на строке 369
Код:
XenForo.AutoComplete.defaultUrl=c("html").hasClass("Admin")?"admin.php?users/search-name&_xfResponseType=json":

и тут
\js\xenforo\full\xenforo.js на строке 8499
Код:
XenForo.AutoComplete.defaultUrl = 'admin.php?users/search-name&_xfResponseType=json';
 
Изменил админку но при установке/удалении плагинов идет ошибка из-за не известной страницы (везде где тут пишет прописал новое название)

Ошибка будет поскольку инструкция изначально не правильная)) Там еще есть файлы для замены.

Вот полная инструкция от меня для последней версии :wink:
В шаблоне moderator_bar находим 2 раза admin.php меняем на своё.

Шаблон notice_board_closed находим 1 раз.

Через FTP открыть library/XenForo/Link.php найти 1 раз

Открываем js/xenforo файл: xenforo.js находим один раз

Открываем js/xenforo/full xenforo.js 1 раз

Открываем library/XenForo/ViewRenderer/ HtmlAdmin.php находим 1 раз

После этого меняем файл admin.php на свое название в корне сайта

И все будет работать как нужно :cool:
 
  • Мне нравится
Реакции: Hope
Ошибка будет поскольку инструкция изначально не правильная)) Там еще есть файлы для замены.

Вот полная инструкция от меня для последней версии :wink:​
В шаблоне moderator_bar находим 2 раза admin.php меняем на своё.
Шаблон notice_board_closed находим 1 раз.
Через FTP открыть library/XenForo/Link.php найти 1 раз
Открываем js/xenforo файл: xenforo.js находим один раз
Открываем js/xenforo/full xenforo.js 1 раз
Открываем library/XenForo/ViewRenderer/ HtmlAdmin.php находим 1 раз
После этого меняем файл admin.php на свое название в корне сайта

И все будет работать как нужно :cool:
Есть ли еще смысл в этих плясках или после патча с защитой от брута можно забить на переименование ?
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу