littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.

На сколько безопасна защита «админки» сайта через http basic auth?

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

Допустим пароль большой(32 символа, например), так что брутфорс не катит(кстати, как поставить ограничение на количество попыток(ну или таймаут после нескольких неудачных, желательно nginx)).

Есть какие-то известные дыры/подводные камни?
  • Вопрос задан
  • 1671 просмотр
Решения вопроса 6
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Есть какие-то известные дыры/подводные камни?
MiTM
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
сертификат ставь, и логинящемуся тоже , с паролем, такое MiTM не перехватит
Ответ написан
Комментировать
alsopub
@alsopub
Предложу в дополнение к basic auth добавить сложный для подбора url админки типа /admin747362943/
Остальное уже написали - обязательно https, с редиректом http -> https, чтобы случайно по http не зайти.
Вроде скандалов с basic auth не было, возможно потому что его глубоко никто не копал :)

В качестве дополнительных мер можно предложить что-то типа port knocking, то есть админка пустит только с того ip, с которого предварительно будет открыт специальный url или послан определенный пакет на специальный порт.
Ответ написан
kursorik2
@kursorik2
Junior-Developer
Самый простой способ защиты для параноиков: после каждого успешного входа в админку, ренеймится ее папка а на странице высвечивается новый адрес для будущего входа вида:
site.ru/h5fdurgi5dvbgersfhgrc73ghi6d3b6s/admin.php

Proof of concept: [PHP]

Размещаем в файле %admin%.php (в самом верху после <?):

$admin = "%admin%"; // название главного файла админ-панели
$keyprint = file_get_contents('secretfile.txt'); // получаем значение отпечатка ключа (с БД или файла)
if(file_exists(trim($keyprint))) {
$md5_hsh = md5(rand(10000,99990)); // генерируем новый ключ
rename(trim($keyprint),$md5_hsh); // Переименовывание старой админки
file_put_contents('secretfile.txt', $md5_hsh); // перезаписываем файл или значение в БД с новым ключом
$result = "http://site.ru/'.$md5_hsh.'/'.$admin.'.php"; // выводим адрес будущей админки
} else {
$result = 'Директория не существует, что-то пошло не так.';
}


В любом удобном месте HTML кода в Админ-панели, размещаем ссылку:

<input type="text" value="<?=$result?>" style="width: 100%;" name="admin_patch">
Ответ написан
gbg
@gbg Куратор тега Системное администрирование
Любые ответы на любые вопросы
На 0 ровно. Basic (Васик, ага) передает логин-пароль в голом виде в HTTP заголовке при каждом запросе.
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
От mitm правильно настроенный https спасет.

От локально висящего трояна, желающего украсть логин с паролем - нет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы