1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.2.1 Защищаем админку XenForo

Тема в разделе "Советы, руководства и видео-уроки", создана пользователем Romchik®, 31.05.2011.

Загрузка
  1. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Итак, в этой статье будет рассмотрено 3 варианта защиты админки XenForo.
    1. Ограничение доступа к файлу admin.php по IP через .htaccess.
    2. Ограничение доступа к файлу admin.php по паролю через .htaccess и .htpasswd.
    3. Переименовывание файла admin.php.
    Недостатки каждого из методов будут описаны в конце.

    1. Ограничение доступа к файлу admin.php по IP через .htaccess

    Здесь все просто. Узнаем свой IP (например на сайте http://www.myip.ru) и дописываем к файлу .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-калькулятор:
    Код:
    http://ip-calculator.ru
    Для тех же, у кого не прописан IP, будет выдаваться страница с ошибкой 403:
    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.

    Ну тут все просто.
    1. Меняем в корне форума имя у файла admin.php на что-то свое, например, adminka.php.
    2. Но это еще не все. Многие ссылки в админке не будут теперь работать. Поэтому необходимо открыть library/XenForo/Link.php и найдя:
      Код:
      $outputLink = 'admin.php' . ($append !== '' ? '?' : '') . $append;
      заменить admin.php на наше новое имя:
      Код:
      $outputLink = 'adminka.php' . ($append !== '' ? '?' : '') . $append;
    3. В шаблоне moderator_bar находим строку:
      Код:
      <a href="admin.php" class="acp adminLink"><span class="itemLabel">{xen:phrase admin_control_panel_short}</span></a>
      и
      Код:
      <a href="admin.php?users/moderated" class="userModerationQueue modLink">
      и также меняем admin.php на наше новое имя файла.
    4. И еще в шаблоне notice_board_closed находим:
      Код:
      <a href="admin.php?options/list/boardActive">{xen:phrase reopen_via_admin_control_panel}</a>
      и меняем admin.php.
    И не забываем проверять эти операции после каждого обновления еще раз!
    =============================================================

    Недостаток 1-го способа очевиден. Если у вас динамический IP или же к админке должны иметь несколько человек с разными IP, то этот вариант будет несколько затруднительным. Придется вписывать много IP.

    Второй способ плох тем, что пароль в админку нужно вводить 2 раза, причем в каждом случае он должен быть разным. Ну и кроме того, у неопытных пользователей даже с инструкцией могут возникнуть вопросы, как правильно защититься дополнительным паролем.

    Ну а третий способ плох тем, что необходимо править файл (пусть и один, но все же). Это значит, что при каждом обновлении форума нужно не забыть переименовать обновленный admin.php и заменить новое имя в файле Link.php.
     
    Tony Cheiz, hitman, Эмми и 35 другим нравится это.
  2. Alex Gludo

    Alex Gludo Bazinga!

    Регистрация:
    24.01.11
    Сообщения:
    484
    Симпатии:
    293
    Отличная статья! Очень поможет новичкам и не только.:)
    Лично я всегда использую второй вариант, так как бывает нужно попасть в защищенную директорию с различных IP. Пароль посложнее и школота не прорвется точно :D
     
    Denel, Sashok724, spy и ещё 1-му нравится это.
  3. Lex

    Lex Dura Lex

    Регистрация:
    27.11.10
    Сообщения:
    820
    Симпатии:
    159
    Версия XF:
    1.5.1
    На сколько обязательной является защита admin.php? Разве недостаточно администраторского пароля?
     
  4. SeM13

    SeM13 Создатель системы

    Регистрация:
    05.01.11
    Сообщения:
    747
    Симпатии:
    258
    Версия XF:
    1.1.3
    Никогда не знаешь что может произойти. Лучше десять раз перестраховаться, чем в будущем потерять свой проект.
    Ведь делается не много, но зато толк от этого есть.
    P.S. Использую 3 вариант.
     
    illusionist нравится это.
  5. Unconfirmed-XA

    Unconfirmed-XA Активный пользователь

    Регистрация:
    31.05.11
    Сообщения:
    34
    Симпатии:
    8
    Romchik® , спасибо ! Недавно тоже думал как защитить админку , и вот тут появляется пост на форуме :) .

    P . S . Выбрал третий способ , так как он легче всего :) .
     
    illusionist нравится это.
  6. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Не за что, только зачем цитировать-то все сообщение?

    Кстати, третий способ он хоть и легок, но не спасет от варианта, когда есть уязвимость, позволяющая получить права админа. Слава Богу, пока в XF таковой нет. Но вот в вобле, например, смотрел недавно ролик. Там взломщик получает админский доступ и заходит без проблем в админку. Ведь для админа ссылка в панель видна становится.
    Была бы защита по IP или по дополнительному паролю, то уже не вошел бы в админку.
     
    XenonAndrei нравится это.
  7. Unconfirmed-XA

    Unconfirmed-XA Активный пользователь

    Регистрация:
    31.05.11
    Сообщения:
    34
    Симпатии:
    8
    Romchik® , ну нету и хорошо :) . По поводу цитирования - понял .
     
  8. GAM

    GAM Местный

    Регистрация:
    28.04.11
    Сообщения:
    326
    Симпатии:
    159
    Версия XF:
    1.1.3
    Большое спасибо за гайд!;)
     
  9. Oleg Voproskin

    Oleg Voproskin Форумный тролль

    Регистрация:
    18.05.11
    Сообщения:
    94
    Симпатии:
    25
    В дополнение к первому методу: что бы хакер с "неправильного IP" не тыкался по 100 раз, перекидываем его на главную страничку сайта.
    Код:
    <Files admin.php>
      Order deny,allow
      Deny from all
      Allow from 111.222.33.44
    </Files>
    ErrorDocument 403 http://www.xf-russia.ru
    
     
    Oleg-Sentia, aligon7, PaCTa и 6 другим нравится это.
  10. Sadorimatsu

    Sadorimatsu Местный

    Регистрация:
    29.09.10
    Сообщения:
    145
    Симпатии:
    10
    Версия XF:
    1.1.3
    Подскажите, а где изменить путь в админку на кнопку "Панель управления" в обычном виде форума, что отображается справа вверху? При использовании 3 способа защиты. Думаю поняли.
     
  11. SeM13

    SeM13 Создатель системы

    Регистрация:
    05.01.11
    Сообщения:
    747
    Симпатии:
    258
    Версия XF:
    1.1.3
    Лучше по айпишнику заблочь и не парься.
     
  12. Sadorimatsu

    Sadorimatsu Местный

    Регистрация:
    29.09.10
    Сообщения:
    145
    Симпатии:
    10
    Версия XF:
    1.1.3
    Я про другое (см.скрин). А вот про метод IP было бы интересно узнать по подробней? Да и какие IP в обще можно блокировать, а то ещё лишний раз зайти не смогут.
     

    Вложения:

    • 1.png
      1.png
      Размер файла:
      24 КБ
      Просмотров:
      390
  13. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Добавил в инструкцию правку двух шаблонов.
    Что именно подробней? Что непонятно?
    Блокируются ВСЕ IP, мы просто указываем исключения. Т.е. как правило это свой/свои IP. Возможно еще IP других админов и модераторов, которые должны иметь доступ в админку.
     
    Sadorimatsu нравится это.
  14. Sadorimatsu

    Sadorimatsu Местный

    Регистрация:
    29.09.10
    Сообщения:
    145
    Симпатии:
    10
    Версия XF:
    1.1.3
    Не понятно, где сделать блокировку для всех ip. Вот читал, тут отписались по данному делу:
    Код:
    <Files admin.php>
      Order deny,allow
      Deny from all
      Allow from 111.222.33.44
    </Files>
    ErrorDocument 403 http://www.xf-russia.ru
    И куда то вносить мне не понятно. В общем не помешало бы расписать, что следует для этого сделать, а то не особо понятно. Просто никогда подобным не занимался.
    Можете расписать по подробней?
     
  15. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Еще раз читаем внимательно мое предыдущее сообщение - блокируются ВСЕ IP. За это отвечает эта строчка:
    Код:
      Deny from all
    А дальше мы добавляем исключения (разрешаем перечисленным IP доступ к файлу admin.php):
    В данном случае это 2 IP - 111.222.33.44 и 75.76.84.85:
    Код:
      Allow from 111.222.33.44 75.76.84.85
     
    Sadorimatsu нравится это.
  16. Sadorimatsu

    Sadorimatsu Местный

    Регистрация:
    29.09.10
    Сообщения:
    145
    Симпатии:
    10
    Версия XF:
    1.1.3
    Упс, не туда смотрел)) В общем понятно) Спасиб)
     
  17. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    в самый верх admin.php добавить, где xxx.xxx.xxx.xxx - ваш ип)
    для меня такой способ более удобен, ибо в админку захожу только сам и только со своего компа. Разумеется, со статического ипа) для динамики такой вариант не прокатит.
    PHP:
    if($_SERVER['REMOTE_ADDR'] != 'xxx.xxx.xxx.xxx') die ('<h1>Forbidden</h1><i>You don\'t have permission to access /admin.php on this server.</i>');
    
     
  18. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Этот способ неудобнее, чем прописать 1 IP в .htaccess.
    При каждом обновлении нужно править по новой файл admin.php.
     
  19. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    зато точно удобнее способа #3 :)

    p.s. и у меня нжинкс стоит, без апача. Так что проще сделать так, чем заниматься сексом с конфигами) Во всём есть свои плюсы
     
  20. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Но я ведь не сравниваю с #3, а с #1.
    А вот это может быть решающим моментом. С этого и надо было начинать :)
     

Поделиться этой страницей