Защита от подбора пароля.

Dreammaker

***=Ф=***
>после неправильной попытки с неизвестного IP банить более жестоко, после хорошей - записывать в white-list и банить не жестоко.

Вывод всё равно банить, что в одном случае, что в другом.. :)
 

kruglov

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

Посему меры воздействия к нему можно применять после большего количества неверных попыток. Или на меньшее время.
 

Royal Flash

-=MaestrO=-
Функция sleep в скрипте авториации есть ни что иное, как DoS атака, в случае подбора пароля. Вряд-ли взломщик будет производить перебор через одно соеденение. Запустив, к примеру, 30 потоков, получаем 30 одновременно работающих скриптов на сервере. Ресурсы сервера не безграничны, и может случится, что в момент этой атаки реальные пользователи сайта не смогут его открыть. Использовать данную функцию нужно очень аккуратно и для предотвращения подбора пароля она никоем образом не подходит. В случае регистрации попыток перебора необходимо отдавать клиенту как можно меньше траффика и задействовать для ее обнаружения как можно меньше процессорных и других ресурсов сервера.
white phoenix
Ban'ить по IP это бред, т.к. в наше время толстой пачкой быстрых прокси никогда не увидишь, sid и cookie даже не обсуждается.
Почему бред? Согласен, проксей много, но вариант, когда с 1-го ip приходит более 10 попыток ввода неверных данных аутентификации в течении 10 сек - явно указывает уже на злонамеренную попытку подбора и его нужно присекать. Реальный пользователь никак не сможет физичесски вводить вручную данные в форму с такой скоростью.
На сколько "толстой" должна быть "пачка проксей", чтобы используя 1 проксю не более 10 раз взломать цифробуквенный пароль из 5 символов?! :) Тут 10000 проксей даже не помогут :)
Если даже предположить, что злоумышленник будет распологать неограниченным кол-вом ip-адресов для перебора пароля, (случай явно из разряда фантастики) то можно сделать доп. проверку по логину: если под логином "login" было осуществленно более 5000 неудачных попыток авторизации, при успешном входе в систему отобрать у этого пользователя все права, отослать пользователю на почтовый ящик письмо с новым паролем, ссылкой на разблокировку аккаунта и предупреждением, и полный доступ в систему, до разблокировки аккаунта не давать.
-~{}~ 25.12.05 01:48:

Vladson
если человек после не верного пароля вводит следующий раньше чем через секунду, то даже если второй раз был введён правильный то скрипт говорит что пароль не правильный...
Какой в этом смысл? Да и как определяется этот самый человек: по IP, куке или как?

betik Давать юзерам пароли "из 8-ми неподбираемых символов" - тоже, что заставить этого самого юзера либо вообще отказаться от такого сервиса, либо записать этот пароль на бумажку и приклеить к монитору...

Предложение kruglov ввести white-list я считаю разумным. Наполнять его нужно автоматичесски, исходя из данных предыдущих заодов пользователя.

Ниже предлагаю более усовершенствованную логику скрипта авторизации:
1. Каждая неверная попытка входа записывается в БД в таблицу danger: ip, время, логин
2.1. При запуске любого доступного пользователю скрипта в самом его начале проверяется, не встречается ли IP пользователя в базе danger более 10 раз в течении последних 10 секунд, и если да выдается заголовок ошибки Access denied. Эта же функция и чистит устаревшие записи.
2.2. При 10-ой неверной попытке войти в систему под 1-м логином, но с разных IP, уже за 2 минуты, выводить цифры на картинке, как предложил white phoenix
 

Dreammaker

***=Ф=***
Royal Flash,
одна из методик ДДоса - это запустить коня троянского, и в определённый момент времени енное количество запросов идёт на сервер-жертву. Тоже самое можно повернуть и подбором пароля. Так что получение неограниченного количества айпи ,в принципе не нерельаный вариант.

Хотя, тут уже приходит на ум, недавно припомненый Фанатом, анекдот о Неуловимом Джо. Вот и сайт может быть этим Джо.
 

Vladson

Сильнобухер
Royal Flash
>>> Какой в этом смысл?
Исключить возможность подбора пароля
>>> Да и как определяется этот самый человек: по IP, куке или как?
Определить просто по нику, если ввёдён пароль для одного акаунта (и введён не правильно) то второй раз пароль к этому акаунту сработает только через 1 секунду

Я видно не достаточно точно изяснился как действует моя система...

В таблице юзверей есть так-же ещё одно поле
при проверке пароля в него заносится дата когда это было,
в тоже время если пароль правильный но дата последней попытки входа
(именно этого юзера) совподает с текущей датой
то авторизация не происходит и сервер сообщает о том что пароль не верный...
 

Dreammaker

***=Ф=***
Vladson,
то есть в случае если человек закрыл броузер и снова хочет зайти на сайт авторизованным, то в этот же день система его не пустит?
 

Vladson

Сильнобухер
Dreammaker
Дата записывается в секундах date('U') а не в днях
(это защита от брут-форса а не от самого юзера)
 

white phoenix

Новичок
Royal Flash
Не надо сам аккаунт блокировать ни при каких обстоятельствах, картинка решает.
 

Royal Flash

-=MaestrO=-
white phoenix
Вывод картинки - доп. затраты серверного времени, которое расходовать нужно с умом. Если видно, что с 1-го IP адреса осуществлено в течении 10 сек. 10 попыток входа - 99,9% что это подбор пароля. Блокируем этот самый IP на ограниченное время, 2-10 минут, чем снимаем лишнюю нагрузку с сервера. Чем, конкретно, не устраивает этот вариант? Шанс того, что IP взломщика совпадет с IP пользователя - мизерен.
Vladson
Например, к твоему скрипту идет 1000 соединений в сек. 1 соединение, действительно обрабатывается, остальные 999 -нет. Т.е. за 1 минуту твой сервак обработает 60000 соединений, причем 60 из них будет действительно обработаны. Атакующий, все так-же будет продолжать, так как о не знает о твоей защите, а реальные пользователи уже могут просто не получить доступ к твоему сайту, так как сервер будет перегружен обработкой абсолютно не нужных никому запросов. Не проще ли сразу банить такие запросы по IP?
 

white phoenix

Новичок
Royal Flash
"Оптимизация имеет смысл только тогда, когда она имеет смысл." © Dr. Joseph M.
 

Vladson

Сильнобухер
Royal Flash
>>> Шанс того, что IP взломщика совпадет с IP ... ...
>>> Не проще ли сразу банить такие запросы по IP?
Благодаря таким провайдерам которые пускают весь свой траф через 1 прокси сервер (в Эстонии например этим промышляет STV, у которых более 40% всех юзеров Эстонии) бан по IP не имеет права на жизнь, так-как стоит забанить одного пользователя автоматом забанится пол страны. Выбор остаётся не богатым, или банить ни в чём не повинных людей, или раскошелиться на более мощьный сервер и обрабатывать индивидуально каждую попытку.
 

kruglov

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

Яндекс с этим столкнулся, AFAIK.

-~{}~ 26.12.05 01:34:

Vladson
Этот эстонский прокси является анонимным? В смысле разные X_FORWARDED_FOR не передает?
 

Vladson

Сильнобухер
kruglov
Передаёт, но бан по X_FORWARDED_FOR так-же не возможен (точнее возможен, но не имеет смысла) так как он в свою очередь подделывается не труднее чем UserAgint
 

white phoenix

Новичок
kruglov
Хм... т.е. на Яндекс наехали за это? Помню они проверяли REMOTE_ADDR на наличие прокси (также как ircd делает).
Vladson
Да, я помню была система которая так определяла IP: если есть X_FORWARDED_FOR, то берет его, а если нет, то REMOTE_ADDR, и бан производила по нему. Ну я конечно в запрос добавил "X_FORWARDED_FOR: long2ip(i)" и бан получать перестал :)
 

Vladson

Сильнобухер
white phoenix
>>> если есть X_FORWARDED_FOR, то берет его, а если нет, то REMOTE_ADDR
Везде раньше так делали, но потом поняли что не надёжно это...
 

white phoenix

Новичок
Vladson
> Везде раньше так делали, но потом поняли что не надёжно это...
А вот это не надо ;) Далеко не все, а только люди неумеющие видеть дальше своего носа.
 

Vladson

Сильнобухер
В рнрВВ 2.0.7 (и в более ранних) считается дырой что он делает именно так
>>> определяет есть ли X_FORWARDED_FOR, и если нет, то берёт REMOTE_ADDR

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

-~{}~ 26.12.05 02:22:

>>> Далеко не все
Не все, но и не большенство (только пару-тройку лет назад людт стали не доверять заголовку X_FORWARDED_FOR)
 

white phoenix

Новичок
Vladson
Причем тут phpBB? Это лишь частный случай, таких скриптов было много, но много было и правильных.
> всем удобнее считать это дырой именно рнрВВ
Нет, все люди (львиная их доля) считают что баг присутствует в этом продукте, но и не только в нем. А считать что баг сугубо в phpBB, также смешно как считать sql-инъекцию багом только phpBB. Предлогаю закончить оффтоп, всё придельно ясно.

-~{}~ 26.12.05 02:28:

> только пару-тройку лет назад
Дело не во времени, умный изначально ему доверять не будет, как и обычному GET-параметру, а дурак и сейчас будет лепить чёрт знает что.
 
Сверху