К вопросу защиты форма от злоумышленников следует подходить комплексно, иначе, полумеры не дадут желаемого результата, только зря время потратите. Здесь предлагаю одну из частей комплексной защиты форума от злоумышленников, это способ блокировки входа в панель администратора.
Начну с того, что сделаю вход невидимым и недоступным для всех, кроме тех пользователей, у которых есть право входа в админпанель. Кстати, если админ на форуме один, то в развитии того, о чём я напишу ниже, можно создать специального пользователя, у которого и будут все права Суперадмина, ну, а admin останется на форуме "свадебным генералом".
Приступим. Создадим модуль, который реализует описанный выше алгоритм. Для этого открываем вкладку в меню Продукты и модули ->Добавить новый модуль. Далее, заполняем форму на этой вкладке
Местоположение модуля - admin_complete
Заголовок (любой) - Вход в админпанель
Порядок выполнения - 5
Код PHP модуля
PHP Code:
if (strpos(SCRIPTPATH, $vbulletin->config['Misc']['admincpdir']) !== false)
{
if (!is_member_of($vbulletin->userinfo[userid], array('1','2')))
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://vashdomen.ru/error_404.html");
exit();
}
}
Модуль включен - ДА
Сохраняем модуль.
В array('1','2') указываете ID пользователей, которым разрешён вход в админпанель. Все остальные пользователи и гости будут перенаправляться на страницу-заглушку с сообщением об отсутствии запрашиваемой страницы форума. Если такой странички на форуме нет, то создайте её.
Таким образом, злоумышленник, если и угадает название каталога с админпанелью, всё равно получит сообщение о том, что файл не найден.
И всё-таки, если злоумышленник считает себя умным, а админа форума лохом, то он сможет отыскать заветный вход в панель администратора - это же так просто, набираешь в адресной строке admincp/ и "ларчик открылся", правда не без помощи админа "лоха".
Для реализации этого алгоритма используем готовый хак
Fake AdminCP отсюда. Я немного изменил один файл, login_fake.php, поскольку в авторском исполнении у него осталось старое наименование отредактированного скрипта define('THIS_SCRIPT', 'login') - заменил на define('THIS_SCRIPT', 'login_fake'). Архив хака выложил здесь, в этой теме.
Алгоритм работы хака Fake AdminCP заключается в том, что злоумышленнику показывается абсолютно такая же форма ввода логина и пароля, которая установлена в настоящей панели администратора. НО фальшивая панель умеет только отвечать, что логин и пароль неправильные и после пяти организованных её обломов для злоумышленника наступает 15 минутная пауза.
Для того, что бы наблюдать на страничке "Кто на форуме" за мучениями злоумышленника, добавлю немного кода в файл
functions_online.php
и пару новых фраз
$vbphrase['enters_login_adminpanel'] - Вводит логин/пароль админпанели
$vbphrase['viewing_control_panel_login'] - Смотрит на вход в панель администратора
Фразы произвольные. Напишу для тех, кто не знает как добавить новые фразы
Меню "Языки и фразы->Управление фразами". В открывшейся справа вкладке выбираете опцию "Добавить новую фразу". В открывшемся окне заполняете поля согласно инструкциям справа от полей. В самом верхнем поле "тип фразы" необходимо выбрать из списка ОСНОВНЫЕ.
Осталось только отредактировать файл
functions_online.php
Находим строки
PHP Code:
case 'online':
$userinfo['action'] = $vbphrase['viewing_whos_online'];
break;
ниже этих строк вставляем код
PHP Code:
case 'login_fake':
$userinfo['action'] = $vbphrase['enters_login_adminpanel'];
break;
case 'admin_cp':
$userinfo['action'] = $vbphrase['viewing_control_panel_login'];
break;
находим строки
PHP Code:
else
{
$userinfo['activity'] = 'controlcp';
}
return $userinfo;
}
ниже этих строк вставляем код
PHP Code:
if (strpos($token, '/admincp/') !== false)
{
$userinfo['activity'] = 'admin_cp';
return $userinfo;
}
находим строки
PHP Code:
case 'online.php':
$userinfo['activity'] = 'online';
break;
ниже вставляем код
PHP Code:
case 'login_fake.php':
if ($values['do'] == 'login')
{
$userinfo['activity'] = 'login_fake';
}
break;
Всё!
Добавлю, что в случае неудавшихся пяти попыток подобрать пароль и логин в фальшивой админке, владелец аккаунта как и в аналогичных случаях при заходе на форум или в настоящую админку, извещается по почте о попытке взлома, с сообщением об IP- адреса злоумышленника.
Quote:
Кто-то пытался войти на форум с Вашим именем пользователя и неверным паролем как минимум пять раз. Возможность входа для этого лица заблокирована на 15 минут, чтобы предотвратить возможную попытку подбора пароля злоумышленником.
|
Конечно, указанное уведомление о попытке взлома и ложная админка созданы хаком
Fake AdminCP, то есть, моей заслуги в этом нет. Тем не менее, указанный хак нашёл применение в данной теме и я отметил в целом результат работы Fake AdminCP с моим хаком.