[F.A.Q.] Основные способы защиты админ-панели
Зачастую молодые веб-мастера, установив себе на хостинг vBulletin, считают необходимым лишь удалить папку install. А некоторые и вовсе просто переименовывают ее во что-нибудь, не желая ждать. А потом разводят руками, когда зайдя в очередной раз на свой форум видят что-то вроде "H@CkED bY V@sY@".
Способов защитить админку – множество, но я расскажу только лишь о некоторых, самых необходимых.
«Где я?» или переименовываем admincp & modcp
Итак. Самое главное – сменить названия для этих директорий. Эту операцию можно производить сразу после установки форума, но я обычно этим занимаюсь после установки всех необходимых хаков – так как зачастую приходиться заливать файлы, и в админ-панель в том числе, а название папки там будет, сами понимаете, стандартное – admincp. Так что немного отойду от темы – господа, если вы уже переименовали свои директории, а затем занимаетесь установкой хаков – будьте внимательны, если в архиве с хаком есть папка admincp – переименуйте ее в название своей.
А теперь давайте разберемся, как же поменять пути к директориям.
Итак, сначала нужно поправить пути в конфигурационном файле. В папке includes находим config.php, открываем его и ищем такие строки:
PHP Code:
$config['Misc']['admincpdir'] = 'admincp';
$config['Misc']['modcpdir'] = 'modcp';
и заменяем значения внутри кавычек на свои. Я чаще всего пользуюсь для этого генераторами паролей (не сочтите за рекламу, например, вот
этим). Т.е. я генерирую что-то вроде ijn7c6houm и получаю adminijn7c6houm. Параноики могут полностью заменить название директории, не оставив части "admin". Самое главное – в названии директории не должно быть слешей ("/"), пробелов и некоторых других символов. Для новичков лучше просто запомнить, что нужно использовать только латинские буквы и цифры (ах да, название директории регистронезависимо, т.е. что ADM, что adm).
После того, как мы сменили названия директорий в config.php и получили что-то вроде этого:
PHP Code:
$config['Misc']['admincpdir'] = 'adminltromd4r3h';
$config['Misc']['modcpdir'] = 'modb00o5x2z0w';
сохраняем файл и отправляемся в корневую папку нашего форума. Там находим папочки admincp и modcp и переименовываем их в соответствии с тем, как задали в config'е. Ну что, поздравляю, первый пункт мы осилили!
Двойная оборона или закрываем доступ к админке с использование .htaccess
Теперь давайте усилим защиту на случай, если хитрый хацкер все-таки отыскал месторасположение наших директорий. Для этого воспользуемся .htaccess. Что это такое я расписывать не буду, в Сети множество ресурсов, посвященных этой теме, ограничусь лишь тем, что используя этот файл можно установить дополнительную авторизацию (окно логин-пароль) на админ-панель, причем сначала будет появляться именно это окно, а затем уже, в случае удачного логина, появится авторизация в админку форума. Итак, что же нужно сделать.
Для организации защиты используется два файла -
.htaccess и
.htpasswd.
Примерное содержимое файла .htaccess:
Code:
AuthType Basic
AuthName "Private zone!"
AuthUserFile /path/to/your/.htpasswd
require valid-user
Во второй строке хранится надпись, которая будет выводиться на экран при входе, в нашем случае это "Private zone!". В третьей – путь к файлу с паролями. Тут очень важно указать не относительный путь (вида
http://site.ru/.htpasswd), потому что он не будет работать, а абсолютный. Абсолютный путь можно получить так – создаете файл fullpath.php со следующим содержимым:
PHP Code:
<?
echo $_SERVER['DOCUMENT_ROOT'];
?>
и заливаете его в папку админ-панели. Далее открываете его (получится что-то вроде
http://yoursite.ru/admincp/fullpath.php, естественно, вместо yoursite.ru – линк на ваш форум, вместо admincp – название вашей админки). В открывшемся окне будет показана всего одна строка – это и есть ваш относительный путь.
Итак, мы получили относительный путь (допустим, у меня это /home/g/user/myforum/public_html/admincp). Значит в строке AuthUserFile у нас будет вот это:
Code:
/home/g/user/myforum/public_html/admincp/.htpasswd
Итак, с .htaccess мы разобрались. Теперь давайте с .htpasswd – в этом файле хранятся логины и пароли. Для генерации этого файла можно пользоваться разными сервисами, коих десятки (на vBSupport есть и свой -
клик), но мне привычнее генерировать у себя на ПК. Для этого я пользуюсь одноименной программой htpasswd.exe (скачать ее можно
тут).
Управление программой – через командную строку. К примеру, поместили мы программу в корневую папку диска C:\. Тогда открываем командную строку и вводим:
Code:
cd C:\
htpasswd –cm .htpasswd admin
Разберем вторую строку поподробнее.
-cm – это ключи (первый указывает, что нужно создать файл, второй – что используется md5)
.htpasswd – название генерируемого файла
admin – логин
Если вы все сделали правильно, вам предложат ввести пароль, а затем его повторить. После всех этих действий в папке с утилитой должен появиться файл .htpasswd с логином и паролем внутри.
Теперь копируем оба полученных файла в папку админ-панели. Вуаля!
Кстати, вполне не обязательно помещать файл .htpasswd в папку админ-панели, вы можете поместить его в любую другую, только не забудьте поправить путь к нему в .htaccess.
Удаляем лишние ссылки
Зачастую, даже сменив путь к админ-панели, администраторы забывают убрать ссылки на нее, благодаря чему полезность смены путей стремится к нулю.
Для начала нужно убрать линк из footer'а. Делается это следующим образом. Заходим в админ-панель, далее: «Стили и шаблоны» – «Управление стилями» – в нужном стиле отмечаем «Редактировать шаблоны» – шаблон footer. Ищем следующие строки:
Code:
<if condition="$show['admincplink']"><a href="$admincpdir/index.php$session[sessionurl_q]">$vbphrase[admin]</a> -</if>
и просто удаляем их. Все, со ссылкой на админку в футере покончено. Хорошо было бы еще удалить ссылку на модерку. Для этого ищем и удаляем следующее:
Code:
<if condition="$show['modcplink']"><a href="$modcpdir/index.php$session[sessionurl_q]">$vbphrase[mod]</a> -</if>
Готово!
Теперь давайте удалим ссылку на админ-панель из профилей пользователей. Выглядит она как «Редактировать профиль» и почему-то ее довольно часто забывают убрать. Итак.
«Стили и шаблоны» – «Управление стилями» – в нужном стиле отмечаем «Редактировать шаблоны» – шаблон MEMBERINFO (в русскоязычной версии vB находится в категории «шаблоны информации о пользователе»). Ищем там строки:
Code:
<if condition="$show['edit_profile']">
<li class="thead"><a href="moderator.php?$session[sessionurl]do=useroptions&u=$userinfo[userid]">$vbphrase[edit_user_profile]</a></li>
</if>
и удаляем их. На этом, думаю, все.
Лирическое отступление
Смена путей в админ-панель, вырезание ссылок, добавление дополнительного этапа авторизации – все это, несомненно, хорошо, но только если администратор заботится о собственной безопасности. Затрону два важных аспекта.
Аспект первый – сложность пароля. Никогда не используйте легкие пароли, будь то 123456, qwerty и им подобные. Этим вы перечеркнете все свои попытки защитить админ-панель. Используйте длинный пароль, состоящий из букв, цифр и знаков, используйте разные регистры.
Аспект второй – хранение пароля. Какой бы ни был сложности ваш пароль, если вы халатно относитесь к его хранению – быть беде. Лучше всего хранить пароль где-то в блокноте (бумажном), только следите, чтобы никто из оффлайна уже не подобрался к нему. Можно хранить в программах вроде KeePass. В крайнем случае храните где-нибудь в текстовом файле в глубине вашего ПК. И лучше не жать «Сохранить пароль» в браузере, когда заходите в админ-панель. Потратьте лучше десять секунд своего драгоценного времени на вставку пароля, и если вдруг (тьфу-тьфу) вы попадетесь на троян или связку и у вас уведут все ваше добро, по крайней мере, за форум вы можете быть спокойны.
Если есть какие-либо вопросы – задавайте, постараюсь помочь.
P.S. Первая моя проба пера, если есть предложения, замечания или поправки – также пишите, сделаем статью вместе лучше! Повторюсь, статья ну претендует на уникальность, я лишь попытался разжевать все основные моменты.
Спасибо.