Внедрить эффективную политику паролей
Противодействие атакам обязательно включает в себя внедрение эффективной политики паролей. Для этого очень важен критерий «размера», поскольку чем длиннее пароль, тем сложнее его угадать с помощью перебора.
Однако этот критерий все еще слишком часто игнорируется компаниями, отвечающими за реализацию политики паролей, и пользователи ограничиваются контрпродуктивными или даже опасными с точки зрения безопасности инструкциями. Действительно, такие рекомендации, как: минимальная длина не менее 8 символов, включая хотя бы одну заглавную букву, одну цифру и один специальный символ, являются устаревшими и вводят в заблуждение.
Например, возьмем следующий пароль: Mypassword1! При соблюдении вышеуказанных рекомендаций он считается безопасным, хотя это не так. Действительно, его гораздо легче угадать методом перебора, чем следующий пароль: courageforvinermypasswordkevin, который не содержит ни цифр, ни заглавных букв, ни специальных символов. Поэтому при определении надежного пароля следует ориентироваться на длину (15–20 символов, независимо от типа символов), так как это снижает шансы угадывания. И, конечно, следует избегать строк символов (таких как 12345678910111213).
Кроме того, следует полагать, что злоумышленник не делает все вручную, вводя пароли один за другим, даже если это может подойти для паролей по умолчанию. Действительно, многие веб-приложения и фреймворки при установке создают пользователей по умолчанию (id: admin / password: admin — распространенный случай). Если эти учетные записи пользователей не удалены или не изменены, они становятся легкой мишенью для атаки методом грубой силы, которая, таким образом, обычно опирается на автоматизированные инструменты для выполнения тысяч запросов в минуту с учетными данными, сгенерированными из длинного списка возможных значений (атаки по словарю, помните?).
Наконец, поговорим о политике истечения срока действия, которая направлена на поощрение частой смены паролей для предотвращения возможных утечек. На первый взгляд, это хорошая мера безопасности. Однако анализ поведения пользователей показывает другую реальность. Действительно, чаще всего пользователи просто создают другой пароль, который не является надежным, поскольку его легко взломать злоумышленникам. Поэтому рекомендуется запретить политику истечения срока действия пароля и просто поощрять пользователей выбирать достаточно длинный и сложный пароль.
Существует множество способов обучения сотрудников. Один из них — сделать их подотчетными, предложив им с определенной периодичностью проверять, не были ли их пароли, логины, номера телефонов скомпрометированы и раскрыты в результате утечки данных. Такие инструменты, как Have I was pwned?, облегчают эту проверку, а также предоставляют компаниям возможность подписаться на получение предупреждений в случае утечки данных. Можно также рассмотреть возможность проведения аудита подверженности атакам, чтобы определить поверхность атаки и, следовательно, возможные утечки данных.
Не отключайте учетные записи после неудачных входов
Еще одной распространенной стратегией защиты от атаки является автоматическое отключение учетной записи после нескольких неудачных попыток входа. В большинстве случаев учетная запись может быть активирована автоматически через определенный период времени, или же пользователю может потребоваться связаться с администратором для повторной активации учетной записи. В любом случае, автоматическое отключение учетных записей пользователей является плохим механизмом безопасности для борьбы с атакой.
Во-первых, отключая учетные записи, система обменивает уязвимость обхода аутентификации на возможную DoS-атаку. Действительно, если злоумышленник может отключить учетную запись, например, после 3 неудачных попыток каждые 30 минут, он может эффективно предотвратить доступ этого пользователя к системе. Представьте себе, какой ущерб может нанести атака, если использовать ее против учетной записи администратора с таким механизмом.
Во-вторых, блокировка учетной записи неэффективна против некоторых атак по словарю. Это происходит потому, что они направлены на пароли, в то время как данный механизм блокировки предполагает, что злоумышленник сохраняет имя пользователя и пытается угадать пароль. В этих случаях злоумышленник может предпринять тысячи попыток входа в систему, и даже если каждая из них окажется неудачной, система зафиксирует только один неверный вход для каждой учетной записи.
Установите тайм-аут после каждого неудачного входа в систему
Более эффективным методом борьбы с атаками грубой силы является постепенная задержка ответа страницы после неудачных попыток входа. Например, после первой неудачной попытки входа в систему ответ будет задержан на одну секунду. После второго неудачного подключения ответ задерживается на две секунды, и так далее.
Применение этого типа техники, известного как инкрементная задержка, может сделать автоматические инструменты атак совершенно неэффективными, поскольку время, необходимое для совершения попыток, значительно увеличивается.
Внедрение многофакторной аутентификации
Добавление дополнительного фактора аутентификации также усложняет злоумышленникам задачу взлома учетной записи методом грубой силы. При наличии 2FA злоумышленник столкнется с еще одним барьером, зачастую очень сложным или невозможным, например, со случайно сгенерированным кодом с ограничением по времени. Он не сможет войти в учетную запись пользователя, даже если введет правильное имя пользователя и пароль.
Используйте надежный алгоритм для хранения паролей
Хранение паролей пользователей в базе данных должно осуществляться безопасным образом. Действительно, в случае компрометации этой базы данных все пароли будут доступны, если они хранятся открытым текстом. Хранение паролей открытым текстом должно быть категорически запрещено.
Поэтому важно использовать надежный алгоритм для хранения паролей.
Отслеживайте все события пользователей
Мониторинг активности пользователей и событий в вашей сети недостаточен для противодействия атакам грубой силы, но он является важной частью хорошей стратегии безопасности. Действительно, благодаря эффективному мониторингу можно, помимо прочего, обнаружить необычные события, такие как повторяющиеся запросы доступа.
Настройка сообщений об ошибках
Наконец, важно создать соответствующие сообщения об ошибках в ответ на неудачные попытки входа в систему, поскольку это часто является одним из факторов успеха атаки. На самом деле, важно не облегчать задачу злоумышленников, предлагая им ценную информацию и, следовательно, значительный выигрыш во времени с помощью таких сообщений, как «пользователь не найден» или «неверный пароль».
Действительно, сообщение «пользователь не найден» указывает атакующему, что идентификатор пользователя, который он пытается угадать, не существует в системе. С другой стороны, информация «Неверный пароль» говорит о том, что идентификатор пользователя существует, но пароль неверен.
Таким образом, безопаснее для приложения отвечать «неясным» сообщением, таким как «Неверное имя пользователя или пароль», когда попытка входа в систему не дает никаких подсказок потенциальному злоумышленнику.