Перейти к основному содержимому

Продвинутая безопасность

Всем

Безопасность

Безопасность представляет собой комплекс мер и методов защиты информации, систем и ресурсов от несанкционированного доступа. Специалист по информационной безопасности применяет принципы криптографии, контроля доступа и мониторинга для обеспечения конфиденциальности и целостности данных.

Инструментарий безопасности включает следующие компоненты:

КомпонентНазначениеПримеры решений
КриптографияШифрование данныхAES, RSA, SHA-256
Контроль доступаУправление правами пользователейRBAC, LDAP, OAuth 2.0
МониторингОтслеживание активности системыSIEM, IDS/IPS, логи
СетиЗащита сетевой инфраструктурыSSL/TLS, VPN, фаерволы

Каждый компонент выполняет свою функцию в общей системе защиты информационных активов.


Главные мысли

  1. Шифрование бывает двух видов:
  • Симметричное — один ключ и туда, и обратно. Быстро, подходит для больших файлов (AES).
  • Асимметричное — публичный ключ для шифрования, приватный для расшифровки. Медленно, но безопасно для передачи ключей (RSA).
  1. Пароли нельзя хранить в открытом виде. Вместо этого:
  • добавляют "соль" (случайную строку);
  • пропускают через хеш-функцию;
  • в базе лежит хеш, а не пароль.
  1. Менеджер паролей — это must have.
  2. Двухфакторка (2FA) — включайте везде, где можно.
  3. Всё записывайте: кто, когда, откуда, что делал и чем кончилось.
  4. Режим инкогнито ≠ анонимность. Он просто не сохраняет историю и куки на вашем компьютере. Но провайдер и сайты всё равно вас видят.
  5. Обновляйтесь — ОС раз в неделю, библиотеки раз в месяц, браузер автоматически.
  6. Проверяйте зависимости.

Криптографическая защита

Классификация шифров

Шифрование разделяют на два типа: симметричное и асимметричное. Симметричное шифрование использует один ключ для шифрования и расшифровки. Асимметричное шифрование использует пару ключей — открытый для шифрования и закрытый для расшифровки.

Типы шифрования имеют разные характеристики использования:

Тип шифрованияКлючиСкоростьПрименение
СимметричноеОдин ключВысокаяБольшие объёмы данных
АсимметричноеПара ключейНизкаяОбмен ключами, цифровые подписи

Симметричные алгоритмы работают быстрее при обработке больших массивов информации. Асимметричные алгоритмы обеспечивают безопасный обмен ключами между сторонами.

Популярные алгоритмы

AES (Advanced Encryption Standard)

Алгоритм используют для симметричного шифрования. Стандарт поддерживает ключи длиной 128, 192 или 256 бит. При длине ключа 256 бит система обеспечивает максимальную защиту от перебора ключей.

# Генерация случайного ключа для AES
import os
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes

def encrypt_data(plaintext, key):
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(plaintext.encode())
return ciphertext, tag, cipher.nonce

def decrypt_data(ciphertext, tag, nonce, key):
cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt_and_verify(ciphertext, tag)
return plaintext.decode()

key = get_random_bytes(32)
Данные = "Конфиденциальная информация"
ciphertext, tag, nonce = encrypt_data(Данные, key)

RSA (Rivest–Shamir–Adleman)

Алгоритм основан на сложности разложения больших чисел на простые множители. Открытый ключ можно распределить публично. Закрытый ключ сохраняют в секрете. Система применяют для передачи секретных ключей и создания цифровых подписей.

// Создание пары ключей RSA с использованием OpenSSL CLI
openssl genrsa -out private_key.pem 2048
openssl rsa -in private_key.pem -pubout -out public_key.pem

Хранение паролей

Пароли хранят с применением хеширования. Хеширование переводит исходные данные в фиксированную строку символов. Процесс нельзя обратить обратно. Пароль никогда не хранят в открытом виде.

Процесс хеширования включает несколько этапов:

  1. Получение исходного пароля пользователя
  2. Добавление случайной последовательности (соль)
  3. Применение функции хеширования
  4. Сохранение результата в базе данных

Хэш-функция bcrypt требует вычислительных ресурсов для каждого запроса. Это предотвращает атаку методом перебора.

# Генерация соли и хеша пароля через командную строку
bcrypt-hash=$(echo -n "пароль" | bcrypt 12)
echo "Сохранить в базу: $bcrypt-hash"

Менеджеры паролей

Принципы работы

Менеджер паролей представляет зашифрованную базу учётных данных. Мастер-пароль открывает доступ ко всей базе. Базу хранят локально или в защищённом облаке. База резервируют регулярно для предотвращения утраты данных.

Критерии выбора менеджера паролей включают следующие параметры:

ПараметрОписаниеЗначение
ШифрованиеАлгоритм защиты базыAES-256
Двухфакторная авторизацияДополнительная проверка входаTOTP или аппаратные ключи
СинхронизацияДоступ с разных устройствОблако или ручной перенос
Экспорт данныхВозможность миграцииJSON, CSV, XML
ЦенаСтоимость лицензийБесплатно или подписка

Рекомендации по использованию

Мастер-пароль задают максимально сложным. Злоумышленники не могут подобрать сложный пароль методом перебора. Регулярное обновление мастер-пароля снижает риски компрометации.

Резервная копия базы данных хранится отдельно от основного устройства. Пользователь загружает копию на защищённый носитель или в зашифрованное облако.

Сценарий восстановления из резервной копии выглядит следующим образом:

  1. Подготовить резервную копию базы данных
  2. Установить менеджер паролей на новое устройство
  3. Войти с мастер-паролем
  4. Импортировать файл резервной копии
  5. Проверить целостность всех записей

Bitwarden поддерживает открытую архитектуру и позволяет развернуть собственную версию сервера. KeePass сохраняет базу локально без зависимости от интернета. Оба решения подходят для разных сценариев использования.

Двухфакторная аутентификация

Типы факторов

Двухфакторная аутентификация добавляет второй этап проверки личности пользователя. Первый фактор — это то, что пользователь знает. Второй фактор — то, что пользователь имеет или представляет. Комбинация факторов повышает надёжность авторизации.

Виды дополнительных факторов классифицируют следующим образом:

ФакторПримерНадёжность
Токен (TOTP)Код из приложенияСредняя
SMS-кодСообщение на телефонНизкая
Аппаратный ключYubiKey, TitanВысокая
БиометрияОтпечаток, лицоСредняя
Письмо на emailПисьмо на адресНизкая

Приложение Google Authenticator генерирует одноразовые коды каждые тридцать секунд. Приложение Authy предоставляет резервное копирование токенов. Aegis Authenticator сохраняет базу локально без синхронизации.

Настройка TOTP

TOTP (Time-based One-Time Password) генерирует код на основе времени и секретного ключа. Сервер и клиент знают один ключ. Клиент получает текущее время. Вычисления происходят одинаково на обеих сторонах. Результат совпадает при синхронизации времени.

Пошаговая настройка двухфакторной аутентификации:

  1. Активировать 2FA в интерфейсе сервиса
  2. Отсканировать QR-код приложением
  3. Проверить сгенерированный код
  4. Сохранить резервные коды
  5. Отключить альтернативные методы входа

QR-код содержит закодированную информацию о сервисе и секретном ключе. Приложение декодирует эту информацию и начинает генерацию кодов.

{
"algorithm": "SHA1",
"digits": 6,
"period": 30,
"secret": "JBSWY3DPEHPK3PXP"
}

Аппаратные ключи используют протокол FIDO2. Ключи содержат закрытые ключи внутри защищённого элемента. Приложение проверяет подпись ключа на стороне сервера. Подтверждение происходит без передачи секретов через сеть.

Защищённое соединение

SSL/TLS сертификаты

SSL/TLS протоколы создают зашифрованный туннель между клиентами и серверами. Сертификаты подтверждают личность владельца домена. Браузеры проверяют цепочку доверия к корневому центру сертификации.

Компоненты цепочки доверия состоят из следующих элементов:

ЭлементРольСрок действия
Корневой сертификатДоверяется браузером10+ лет
Промежуточный сертификатПодписан корневым5 лет
Серверный сертификатПодписан промежуточным1 год

Сервера используют разные подходы к выдаче сертификатов. Let's Encrypt выдаёт бесплатные сертификаты автоматически. Domains получают сертификаты платно через центры сертификации.

Локальные сертификаты

Локальная разработка требует собственных сертификатов для тестирования HTTPS. Сертификаты подписывают самостоятельно или генерируют автоматически.

Процесс создания самоподписанного сертификата:

# Генерация приватного ключа
openssl genrsa -out localhost.key 2048

# Создание запроса на сертификат
openssl req -new -key localhost.key -out localhost.csr

# Генерация самоподписанного сертификата
openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt

Сертификат добавляют в хранилище доверенных центров сертификации операционной системы. После этого браузер принимает сертификат без предупреждений.

Конфигурация Nginx

Nginx конфигурируют для работы с HTTPS. Конфигурационный файл указывает пути к ключу и сертификату.

server {
listen 443 ssl http2;
server_name local.example.com;

ssl_certificate /etc/ssl/certs/localhost.crt;
ssl_certificate_key /etc/ssl/private/localhost.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
root /var/www/html;
index index.html;
}
}

Протоколы TLSv1.2 и TLSv1.3 поддерживают современные алгоритмы шифрования. Алгоритм MD5 используют только для целей совместимости. Настройка предпочтения серверных шифров обеспечивает выбор оптимального набора.

Аудит и мониторинг

Логирование событий

Логирование фиксирует все события в системе. Журналы содержат временные метки, типы событий и идентификаторы процессов. Аудит помогает восстанавливать ход атак и выявлять уязвимости.

Структура лога безопасности включает следующие поля:

ПолеТип данныхОписание
timestampdatetimeВремя события
levelenumУровень важности
event_typestringТип события
user_idstringИдентификатор пользователя
ip_addressstringIP источника
actionstringВыполненное действие
resultbooleanУспех или отказ

Рекомендуемые уровни логирования:

УровеньКоличествоНазначение
INFOВсе действияОбщая информация
WARNINGОшибки конфигурацииПредупреждения
ERRORСбои системыКритические ошибки
DEBUGПодробные данныеДля разработчиков

Инструменты анализа

SIEM (Безопасность Information and Event Management) агрегирует логи из разных источников. Система коррелирует события для выявления аномалий. Правила обработки формируют оповещения при подозрительной активности.

IDS (Intrusion Detection Система) отслеживает сетевой трафик. IPS (Intrusion Prevention Система) блокирует вредоносные пакеты. Сигнатурный метод обнаруживает известные угрозы. Поведенческий метод выявляет новые атаки.

Анализ логов выполняется с помощью следующих инструментов:

ИнструментЯзыкПрименение
SplunkproprietaryКорпоративный анализ
ELK StackJava/JSOpen Source сбор
GraylogJavaЦентрализованное логирование
WazuhC++SIEM + EDR

ELK Stack состоит из Elasticsearch, Logstash и Kibana. Elasticsearch хранит индексы данных. Logstash обрабатывает поток данных. Kibana визуализирует результаты.

# Пример конфигурации Filebeat
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/auth.log

processors:
- add_fields:
target: ""
fields:
service: auth-server

output.elasticsearch:
hosts: ["http://elasticsearch:9200"]

Резервное копирование

Резервные копии хранят в отдельном географическом местоположении. Правило трёх копий предусматривает три версии данных. Одна версия находится на основной системе. Две копии размещают в удалённых хранилищах.

Типы резервного копирования:

ТипЧастотаОбъёмВремя восстановления
ПолныйРаз в неделюБольшойМинуты
ИнкрементальныйЕжедневноСредний15 минут
ДифференциальныйЕжедневноРастущий5-10 минут

Полный бэкап создаёт копию всех данных. Инкрементальный бэкап сохраняет изменения после последнего копирования. Дифференциальный бэкап сохраняет изменения после полного копирования.

Процедура тестирования восстановления:

  1. Создать тестовую среду
  2. Восстановить данные из последней копии
  3. Проверить целостность файлов
  4. Запустить приложение в новой среде
  5. Сравнить результат с эталоном

Тестирование должно происходить минимум раз в месяц.

Режимы браузера

Возможности

Режим инкогнито сохраняет временные данные в памяти. Данные исчезают при закрытии окна. История посещений не сохраняется. Файлы cookie удаляют по завершении сеанса.

Функции режима инкогнито ограничены следующими возможностями:

ФункцияСтатус в режиме
Сохранение историиНет
Сохранение cookieТолько на время сеанса
Сохранение формНет
АнонимностьЧастичная
Защита от сканированияНет

Провайдер видит запросы вне зависимости от режима браузера. Веб-ресурсы определяют посетителя по IP адресу. Сервисы отслеживают активность по техническим параметрам устройства.

Альтернативы анонимности

Прокси-сервер перенаправляет трафик через другой узел. Протокол HTTP прокси передаёт данные без шифрования. Протокол SOCKS пересылает любые типы трафика. Tor направляет запросы через сеть узлов.

Настройки прокси в Chrome:

{
"proxy": {
"type": "fixed_servers",
"rules": {
"singleProxy": {
"scheme": "http",
"host": "proxy.example.com",
"port": 8080
}
}
}
}

Ограничения Tor включают низкую скорость соединения. Некоторые веб-ресурсы блокируют выходные узлы Tor. Сервисы распознают Tor по характеристикам трафика.

Практические рекомендации

Политика обновлений

Обновления системы исправляют уязвимости. Обновления библиотек устраняют дефекты кода. Обновления компонентов устраняют риски эксплуатации. Автоматические обновления снижают нагрузку администратора.

График обновлений выглядит следующим образом:

КатегорияЧастота
ОС и ядроЕженедельно
Библиотеки и фреймворкиЕжемесячно
Серверные приложенияПо необходимости
Веб-браузерыАвтоматически

Администратор проверяет список уязвимостей перед установкой обновлений. Тестирование проводит в изолированной среде. Развёртывание производят в рабочее время с минимальным воздействием.

Анализ зависимостей

Уязвимости библиотеки влияют на всю систему. Инструменты анализируют список зависимостей проекта. Инструменты ищут известные уязвимости в пакетах. Администраторы выбирают обновлённые версии.

Команда npm audit анализирует Node.js зависимости. Команда pip check анализирует Python зависимости. Команда cargo-audit анализирует Rust зависимости. Команда sbom-generate создаёт список компонентов.

Безопасная конфигурация серверов

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

Конфигурация SSH включает следующие параметры:

Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 60
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers developer
DenyGroups nogroup

Запрет логирования root предотвращает получение полного доступа. Использование ключей вместо паролей повышает безопасность. Лимит попыток подключения защищает от подбора паролей. Таймауты прерывают долго живые соединения.


См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).