Что нового

Простейшая защита админпанели DLE

  • Автор темы Автор темы LonerD
  • Дата начала Дата начала

LonerD

Посетитель
OLD SkripTers
Регистрация
17 Дек 2019
Сообщения
23
Реакции
0
Старенький простой и забавный хак для защиты админпанели.
Блокирует доступ к сайту для тех IP-адресов, с которых кулцхакеры пытаются открыть админку.

Создаём в корне сайта файл ip.txt. Можно выставить на него права 777. В файле будем собирать лог адресов.
А непосредственно блокировка происходит через htaccess.

Переименовываем в корне сайта файл admin.php.
В настройках админпанели указываем новое имя этого файла.
Настройка системы - Настройки безопасности скрипта - Настройка системы - Файл админпанели
Если нужно войти в админку напрямую, то разумеется не забываем логиниться через новый файл (если забыли и забанили сами себя - то открываем htaccess и удаляем свой IP).

Создаём в корне сайта файл admin.php с таким кодом. Текст по своему усмотрению. Можно и картинку страшную вставить.

<?php
$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>
<head>
<title>DataLife Engine Admin panel</title>
</head>
<body bgcolor="black" text="white">
<center><h1>Your IP ($ip) Has Been Logged and Added to the Blacklist.</h1></center>
</body>
</html>
HTML;
?>
 
ChatGpt другая альтернатива:

Что работает 💡


  1. Переименование admin.php — это разумная практика.
    Вы скрываете реальную точку входа, и большинство ботов-сканеров не найдут её.
    ✅ Это стоит делать.
  2. Файл-ловушка с записью IP — это может сработать как простейший honeypot.
    Он может показать, что кто-то шныряет по сайту.
    ✅ Это имеет смысл как наблюдение или пассивная ловушка.



Что плохо 🚫


  1. Автозапись IP в .htaccess:
    Это может:
    • привести к переполнению файла;
    • сломать сайт (500 Internal Server Error при ошибке в синтаксисе);
    • забанить своего же админа по ошибке (если он случайно зайдёт не туда);
    • помешать индексации поисковиками, если бот случайно попадёт на admin.php.
  2. Нельзя использовать .htaccess как лог — он для настроек сервера, а не для автоматической блокировки.
    Хостинги часто кешируют его, и правки могут вступать в силу не сразу.
  3. Запись без фильтрации — добавляется любой IP, даже если это Googlebot, бот Telegram, Telegram Instant View, Discord preview и т.д.



Как усовершенствовать 🔧


Если вы хотите оставить забавную ловушку, но без вреда:


  1. Логируйте IP только в ip.txt, а не лезьте в .htaccess.
  2. Можно сделать уведомление в Telegram или на email, что кто-то пытался зайти в админку.
  3. Для реальной блокировки IP лучше использовать:
    • Fail2Ban (если есть SSH-доступ);
    • Cloudflare rules (block by path /admin.php);
    • или mod_security.
  4. Если прям хочется блокировать — делайте отдельный cron или админ-скрипт, который будет чистить и проверять ip.txt, а уже потом обновлять .htaccess вручную с IP из белого/чёрного списка.



Альтернатива: безопасная ловушка без ущерба 🛡​


<?php
$ip = $_SERVER['REMOTE_ADDR'];
file_put_contents("ip.txt", date("Y-m-d H:i:s") . " - " . $ip . "\n", FILE_APPEND);
http_response_code(403);
?>
<!DOCTYPE html>
<html>
<head><title>Access Denied</title></head>
<body bgcolor="black" text="white">
<center><h1>Access Denied</h1><p>Your IP has been logged.</p></center>
</body>
</html>

Безопасно: IP просто пишется в лог.
Визуально пугает, но не ломает ничего.
Вы сами решаете, блокировать ли IP позже.
 
бот случайно попадёт на admin.php...
И такое бывает? Не знал, что гугл или другие хорошие боты совершенно случайно лезут к файлу со словом admin в названии. А если в файле robots.txt прописать Disallow: /admin.php , то это не защитит от таких ботов?

Если прям хочется блокировать — делайте отдельный cron или админ-скрипт, который будет чистить и проверять ip.txt
А как тогда проверить - хороший ли бот стучался в админку или не очень хороший, чтобы не заблочить лишнего?

Нельзя использовать .htaccess как лог... привести к переполнению файла... Логируйте IP только в ip.txt
На небольших сайтах переполнения не будет. Зато отсечёт, например, попытки какого-нибудь брутфорса пароля.
А хозяин сайта может время от времени чистить htaccess и использовать полученный список адресов по своему усмотрению.
 
Делайте авторизацию по почте и никто не будет взламывать
 
Можно и проще: открыть форму входа админки -> исходный код -> скопировать его и вставить в admin.php, готово. Ну а нормальную страницы админки переименовываешь во что-нибудь другое, чтоб никто не мог подобрать.
Визуально будет вроде норм форма, только сколько кто бы не пытался войти - у него это не получится. А если нужны IP кто долбился - взять из логов сервера.
 
Верх