Политики паролей и многофакторная аутентификация
Разберитесь в требованиях к надёжным паролям, факторах MFA (то, что вы знаете, имеете или чем являетесь) и узнайте, почему сочетание факторов значительно снижает риск взлома учётной записи.
«Политики паролей и многофакторная аутентификация» — бесплатный урок Security+ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Security+ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Security+ Academy содержит 4 уроков всего.
Пароли: самое слабое звено
Пароли остаются самым распространённым механизмом аутентификации, несмотря на то что их компрометация происходит чаще всего. Злоумышленники крадут пароли с помощью фишинга, подстановки учётных данных (повторного использования скомпрометированных учётных данных), атак перебором и клавиатурных шпионов. Даже «надёжный» пароль обеспечивает ограниченную защиту, если злоумышленник может незаметно его перехватить. Политики паролей устанавливают минимальные требования к сложности и смене паролей, чтобы снизить риск, но наиболее эффективное улучшение безопасности — добавление второго фактора, поскольку одного знания пароля уже недостаточно для получения доступа.
Требования к сложности паролей
Эффективные политики сложности паролей определяют минимальные стандарты, благодаря которым пароли сложнее взломать. Традиционные требования включают: минимальную длину (не менее 12–16 символов; длина важнее сложности), обязательное использование разных типов символов (прописных, строчных букв, цифр и специальных символов), запрет распространённых паролей (словарей паролей), а также запрет использования имени пользователя или названия организации в пароле. Рекомендации NIST SP 800-63B, обновлённые в 2017 году, советуют отдавать приоритет длине, а не произвольным правилам сложности, и проверять пароли по базам данных скомпрометированных учётных данных вместо требования часто менять их.
# Check if a password appears in known breach databases
# NIST recommends this approach vs forced periodic rotation
# Example: Using Have I Been Pwned (HIBP) API
# Hash the password first (k-anonymity model - sends only first 5 chars of SHA-1)
echo -n 'mysecretpassword' | sha1sum
# Returns: e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 -
# Send first 5 chars to HIBP API:
# GET https://api.pwnedpasswords.com/range/E5E9F
# Response includes suffix of any matching hashes
# If found: this password is compromised - reject itСовременные рекомендации NIST SP 800-63B по паролям
NIST SP 800-63B (рекомендации по цифровой идентификации) существенно пересмотрел передовые рекомендации по работе с паролями. Основные изменения: не требуйте периодической смены паролей, если нет признаков компрометации — принудительная смена приводит к предсказуемым изменениям (Password1! → Password2!); проверяйте пароли по базам данных утечек при создании и позволяйте пользователям видеть пароль во время ввода; разрешайте длинные парольные фразы длиной до 64 символов; откажитесь от произвольных правил сложности, порождающих предсказуемые шаблоны; и реализуйте блокировку учётной записи или ограничение частоты попыток, чтобы предотвращать атаки перебором, а не полагаться только на сложность пароля.
Три фактора аутентификации
Аутентификация основывается на одном или нескольких из трёх типов факторов. То, что вы знаете (фактор знания): пароли, PIN-коды, контрольные вопросы, парольные фразы. То, чем вы владеете (фактор владения): физический токен, смартфон с приложением-аутентификатором, смарт-карта, аппаратный ключ (YubiKey). То, чем вы являетесь (биометрический фактор): отпечаток пальца, скан радужной оболочки, распознавание лица, голосовой профиль, поведенческая биометрия. Иногда добавляют четвёртую категорию — место, где вы находитесь (местоположение). Использование фактора из двух или более категорий называется многофакторной аутентификацией (MFA). Два фактора из одной категории (например, два пароля) — это не MFA.
Почему MFA настолько эффективна
Многофакторная аутентификация (MFA) — один из самых эффективных доступных механизмов защиты. Согласно исследованию Microsoft, MFA блокирует 99,9% атак, направленных на захват учётных записей. Причина в следующем: фишинг или кража учётных данных дают злоумышленнику «то, что вы знаете» (пароль), но обычно он не может получить и второй фактор (одноразовый код на смартфоне или аппаратный ключ). Даже если пароль пользователя опубликован в базе данных утечки, учётная запись остаётся защищённой, если включена MFA. Организации, внедрившие MFA, редко фигурируют в отчётах об утечках, связанных с захватом учётных записей с помощью учётных данных.
SMS OTP и его недостатки
Одноразовые пароли по SMS (OTP) — наиболее широко применяемый метод MFA: 6-значный код, отправляемый текстовым сообщением. Это лучше, чем отсутствие MFA, но у такого метода есть известные недостатки. Атаки с подменой SIM-карты: злоумышленники выдают себя за жертву перед оператором связи и переносят номер телефона на свою SIM-карту, перехватывая последующие коды OTP. Уязвимости протокола SS7: протокол сигнализации телефонной сети содержит известные недостатки, позволяющие перехватывать SMS. Фишинг в реальном времени: сложные фишинговые прокси пересылают OTP в реальном времени, обходя защиту. NIST SP 800-63B ограничил статус SMS OTP до «ограниченного аутентификатора». Предпочтительнее использовать приложения-аутентификаторы или аппаратные токены.
TOTP: одноразовые пароли на основе времени
TOTP (одноразовые пароли на основе времени), стандартизированные в RFC 6238, генерируют 6-значные коды на основе общего секрета и текущего времени. TOTP реализован в таких приложениях, как Google Authenticator, Authy и Microsoft Authenticator. Код меняется каждые 30 секунд и действителен только для одной попытки аутентификации. В отличие от SMS OTP, TOTP не передаётся через телефонную сеть, поэтому неуязвим для атак с подменой SIM-карты и атак на SS7. Общий секрет передаётся один раз (с помощью QR-кода при настройке) и хранится в приложении-аутентификаторе — для генерации кодов требуется физический доступ к зарегистрированному устройству.
# TOTP algorithm (RFC 6238) conceptual implementation
import hmac, hashlib, time, struct, base64
def totp(secret_b32, digits=6, interval=30):
# Decode the base32 secret
secret = base64.b32decode(secret_b32, True)
# Time counter: number of 30-second intervals since epoch
counter = int(time.time()) // interval
# HMAC-SHA1 of counter with secret
msg = struct.pack('>Q', counter)
digest = hmac.new(secret, msg, hashlib.sha1).digest()
# Dynamic truncation to get 6 digits
offset = digest[-1] & 0xf
code = struct.unpack('>I', digest[offset:offset+4])[0] & 0x7fffffff
return str(code % (10**digits)).zfill(digits)FIDO2 и WebAuthn: MFA, устойчивая к фишингу
FIDO2 (Fast Identity Online 2) и его веб-реализация WebAuthn представляют собой наиболее устойчивый к фишингу доступный стандарт аутентификации. FIDO2 использует криптографию с открытым ключом на уровне устройства: аутентификатор (аппаратный ключ, например YubiKey, или биометрический механизм устройства, например Windows Hello) хранит закрытый ключ, который никогда не покидает устройство. Аутентификация криптографически привязана к конкретному источнику (веб-сайту), поэтому неуязвима для фишинга: даже если пользователя обманом заставят открыть поддельный сайт, проверка подлинности завершится ошибкой, поскольку источник не совпадает. FIDO2 — золотой стандарт аутентификации в системах с высокими требованиями к безопасности.
Аппаратные токены: HOTP и смарт-карты
Физические аппаратные токены обеспечивают «то, чем вы владеете», независимо от смартфона. HOTP (HMAC-based OTP), стандартизированный в RFC 4226, генерирует код на основе счётчика и общего секрета; счётчик увеличивается при каждом нажатии кнопки. В отличие от TOTP, срок действия кодов HOTP не истекает по таймеру, но использовать их нужно последовательно. Смарт-карты (например, карты PIV, используемые сотрудниками правительства US) хранят закрытые ключи в защищённом от вмешательства оборудовании и требуют PIN-кода для разблокировки, объединяя «то, чем вы владеете» (карту) с «тем, что вы знаете» (PIN). Аутентификация с помощью смарт-карт является стандартом привилегированного доступа в средах с высокими требованиями к безопасности.
Менеджеры паролей: решение человеческой проблемы
Менеджеры паролей решают проблему склонности людей повторно использовать пароли: они генерируют и хранят уникальные случайные пароли для каждого сайта. Главный пароль открывает зашифрованное хранилище, содержащее все учётные данные. Корпоративные менеджеры паролей (1Password Teams, Bitwarden Business, CyberArk) добавляют такие функции, как централизованное применение политик, журналы аудита, безопасный обмен данными и экстренный доступ. Командам безопасности следует активно рекомендовать или сделать обязательным использование менеджеров паролей — это редкий механизм защиты, который одновременно повышает безопасность (уникальные пароли повсюду) и удобство (не нужно запоминать десятки паролей). В сочетании с MFA менеджеры паролей значительно снижают риск захвата учётных записей с помощью учётных данных.
Блокировка учётной записи и ограничение частоты попыток
Блокировка учётной записи отключает её после заданного числа неудачных попыток входа, предотвращая атаки перебором. Обычно политики блокируют учётную запись после 3–10 неудачных попыток; длительность блокировки может составлять фиксированный период (30 минут) или требовать разблокировки администратором. Ограничение частоты попыток — более мягкая альтернатива: вместо блокировки учётных записей система постепенно увеличивает задержку между попытками входа, из-за чего атаки перебором занимают годы, а не минуты, и при этом не создают неудобств, связанных с блокировкой. Веб-приложениям следует реализовывать оба механизма — ограничение частоты запросов на уровне API и ограничение попыток на уровне учётной записи, — чтобы предотвращать автоматизированные атаки с использованием учётных данных.
# Configure account lockout policy via Windows Group Policy
# Computer Configuration > Windows Settings > Security Settings
# > Account Policies > Account Lockout Policy
#
# Account lockout threshold: 5 invalid logon attempts
# Account lockout duration: 30 minutes
# Reset account lockout after: 30 minutes
# Linux PAM-based lockout (/etc/pam.d/common-auth)
# auth required pam_tally2.so deny=5 unlock_time=1800
# auth required pam_faillock.so preauth deny=5 unlock_time=1800Быстрая проверка
Проверьте, насколько хорошо вы усвоили темы CompTIA Security+ (SY0-701) из этого урока.
Итоги урока
В этом уроке вы узнали: NIST SP 800-63B рекомендует длинные парольные фразы и проверку по базам данных утечек вместо сложных политик регулярной смены паролей; три фактора MFA — это знать, иметь и являться; приложения TOTP безопаснее SMS OTP; FIDO2/WebAuthn устойчивы к фишингу; а блокировка учётной записи предотвращает атаки перебором. Далее мы рассмотрим биометрию и аутентификацию на основе токенов.
Часто задаваемые вопросы
Урок «Политики паролей и многофакторная аутентификация» бесплатный?
Да — полный текст урока «Политики паролей и многофакторная аутентификация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Security+ Academy, подпишись на CoddyKit PRO. Курс Security+ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Политики паролей и многофакторная аутентификация»?
Разберитесь в требованиях к надёжным паролям, факторах MFA (то, что вы знаете, имеете или чем являетесь) и узнайте, почему сочетание факторов значительно снижает риск взлома учётной записи. Ты практикуешь Security+ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Security+ Academy?
Предыдущий опыт не требуется. Security+ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Политики паролей и многофакторная аутентификация»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Security+ Academy?
Да. Каждый урок Security+ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Политики паролей и многофакторная аутентификация
- Биометрия и аутентификация по токенам
- Модели авторизации: RBAC, MAC и DAC
- Федеративная идентификация: SAML, OAuth и OpenID Connect