Безопасность и диагностика
Безопасность — не одна кнопка, а привычка и процесс. Лучше один раз настроить правильно, чем каждую неделю тушить пожар после взлома. Ниже — расширенный разбор фундаментальных и практических тем защиты инфраструктуры.
Основы безопасности
Триада CIA
- Confidentiality (Конфиденциальность) — доступ только у тех, кому положено (шифрование, ACL, минимум привилегий).
- Integrity (Целостность) — данные не искажены и не подменены без авторизации (хеши, подписи, контроль версий).
- Availability (Доступность) — сервис работает, когда нужен (защита от сбоев, DDoS, бэкапы, отказоустойчивость).
Ключевые принципы
- Defense in depth (эшелонированная защита) — несколько независимых слоёв (фаервол + IDS + харденинг + мониторинг), чтобы провал одного не рушил всё.
- Zero Trust — «никому не доверяй, даже внутри сети»: каждая запрос проверяется (аутентификация, авторизация, шифрование), сеть не считается безопасной периметром.
- Принцип наименьших привилегий (PoLP) — давай пользователю/сервису ровно столько прав, сколько нужно, не больше.
- Разделение обязанностей (SoD) — критичные действия требуют участия двух сторон (кто создаёт платёж, не подтверждает его).
Управление паролями и хеширование
Политики
- Длина — приоритетнее сложности: ≥12–16 символов (лучше passphrase из 4+ слов).
- Сложность — смесь букв/цифр/символов, но не заставляйте «Password123!» (легко угадать). Длина + словарь важнее.
- История — запрет повторного использования последних N паролей, смена по событию (утечка), а не раз в 90 дней «ради галочки» (NIST рекомендует не заставлять менять без причины).
- Блокировка — временная блокировка после N неудач (защита от брутфорса) + MFA.
Хеширование паролей
Пароли хранятся НЕ в открытом виде, а как солёный хеш (односторонняя функция + уникальная соль). Проверка — пересчёт хеша ввода и сравнение.
| Алгоритм | Статус | Примечание |
|---|---|---|
| bcrypt | OK | Адаптивный, встроенная соль, factor сложности. Де-факто стандарт. |
| Argon2 (id) | OK | Победитель Password Hashing Competition, учитывает память/время/параллелизм. Современный выбор. |
| scrypt | OK | Тоже memory-hard, для защиты от ASIC/GPU. |
| PBKDF2 | OK | Много раундов хеширования; требует большого числа итераций. |
| MD5 / SHA1 | НЕТ | Быстрые, без соли — легко брутфорсятся (rainbow tables, GPU). Никогда для паролей. |
| SHA256 «в лоб» | НЕТ | Слишком быстрый, без соли/итераций. Не для паролей. |
# Python (пример, НЕ для продакшена как есть — используйте библиотеки):
# passlib / bcrypt / argon2-cffi делают правильно:
from passlib.hash import bcrypt, argon2
h = bcrypt.hash("correct horse battery staple")
bcrypt.verify("wrong", h) # False
# Linux: теневой файл хранит хеши (алгоритм $id$)
# $6$ = sha512, $y$ = yescrypt (современный), $2b$ = bcrypt
sudo grep user /etc/shadow
Менеджеры паролей и утечки
- Менеджеры: Bitwarden (open-source, self-host возможен), KeePass / KeePassXC (локальный файл БД, offline). Не помни всё в голове.
- Passphrase: «correct horse battery staple» — длинная фраза из случайных слов устойчивее короткого «P@ssw0rd».
- Утечки: проверяйте, не попал ли пароль/почта в базу через haveibeenpwned.com и API Pwned Passwords (k-анинимность).
MFA / 2FA — многофакторная аутентификация
- TOTP (RFC 6238) — одноразовые коды по времени (Google Authenticator, FreeOTP, Authy). Секрет в приложении, код меняется каждые 30 с.
- WebAuthn / FIDO2 — аппаратные ключи (YubiKey, Titan) и biometrics; устойчивы к фишингу (привязка к домену, крипто-челлендж).
- Аппаратные ключи — физический фактор «что-то своё»; рекомендуются два ключа (основной + запасной).
- Резервные коды — одноразовые, на случай потери устройства; храните офлайн.
# TOTP на Linux (Google Authenticator PAM)
sudo apt install libpam-google-authenticator
google-authenticator # сгенерировать секрет и QR
# подключить в /etc/pam.d/sshd (auth required pam_google_authenticator.so)
# и /etc/ssh/sshd_config: ChallengeResponseAuthentication yes
PKI и сертификаты
PKI (Public Key Infrastructure) — система выпуска/отзыва/проверки сертификатов. X.509 — стандарт сертификата (публичный ключ + subject + issuer + срок + расширения).
- CA (Certificate Authority) — доверенный центр, подписывающий сертификаты. Публичные (Let's Encrypt, DigiCert) vs внутренние (свой корпоративный CA для intranet).
- Цепочка доверия — leaf-сертификат → intermediate CA → root CA. Клиент доверяет root, проверяя всю цепочку.
- TLS — использует сертификаты для шифрования и аутентификации сервера. Версии: TLS 1.2/1.3 безопасны; SSLv3, TLS 1.0, TLS 1.1 — отключить (известные атаки POODLE, BEAST).
- HSTS — заголовок, принуждающий браузер использовать только HTTPS (защита от downgrade/sSL-strip).
- self-signed vs CA — self-signed дешев и годится для тестов/внутреннего use, но браузеры ругаются; для публичных сервисов — доверенный CA (Let's Encrypt бесплатно).
# Выпустить self-signed (для тестов)
openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365
# Просмотр сертификата сайта
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates -subject
# Включить только TLS 1.2/1.3 и HSTS (Nginx):
ssl_protocols TLSv1.2 TLSv1.3;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
SSH-харденинг
# /etc/ssh/sshd_config
PermitRootLogin no # корень не логинится
PasswordAuthentication no # только ключи (отсекает 99% брутфорса)
PubkeyAuthentication yes
AllowUsers deploy admin # whitelist пользователей
Port 2222 # смена порта — меньше шума в логах (не защита от сканов)
MaxAuthTries 3
LoginGraceTime 20
X11Forwarding no
KexAlgorithms sntrup761x25519-sha512@openssh.com # современные алгоритмы
# Применить:
sudo sshd -t && sudo systemctl restart ssh
fail2ban — блокирует IP после N неудачных попыток входа (читает логи, правит правила фаервола).
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
bantime = 1h
# Проверить:
sudo fail2ban-client status sshd
Фаерволы
Принцип: default deny (закрыто всё, открыто только нужное). Stateful inspection — отслеживание состояния соединений (пропускать ответы на разрешённые исходящие).
Linux: UFW и nftables
# UFW (обёртка над iptables/nft)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22,80,443/tcp
sudo ufw allow from 10.0.0.0/8 to any port 5432 # ограничить по источнику
sudo ufw enable
sudo ufw status numbered
# nftables (современный заменитель iptables)
sudo nft add table inet filter
sudo nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }'
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif "lo" accept
sudo nft add rule inet filter input tcp dport {22,80,443} accept
Windows Defender Firewall with Advanced Security
# PowerShell
New-NetFirewallRule -DisplayName "Web" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow
Set-NetFirewallProfile -Profile Domain,Public,Private -DefaultInboundAction Block
netsh advfirewall show allprofiles
Периметр: pfSense / OPNsense
Свободные файервол-дистрибутивы на базе FreeBSD (pf/iptables-подобный движок): маршрутизация, NAT, VLAN, VPN, IDS/IPS (Suricata), прокси, DHCP/DNS на границе сети.
Сегментация сети
- VLAN — логическое разделение одной физической сети (теги 802.1Q). Изолирует трафик на уровне L2.
- DMZ (демилитаризованная зона) — сегмент для публичных сервисов (веб, почта), отделённый от внутренней сети. При взломе веб-сервера атакующий не попадает сразу во внутреннюю сеть.
- Изоляция гостей/IoT — отдельные VLAN для гостевого Wi-Fi и умных устройств (камера/роутеры) без доступа к корпоративным ресурсам.
- Микросегментация — изоляция на уровне отдельных приложений/контейнеров (Zero Trust), часто через software-defined networking.
Харденинг ОС
- CIS Benchmarks — эталонные конфиги безопасности для ОС/сервисов (бесплатные).
- STIG (DISA) — жёсткие военные стандарты (для госсектора США).
- Отключение лишних служб — меньше софта = меньше дыр (удалите telnet, ftp, nfs там, где не нужны).
- Обновления — автоматические патчи (
unattended-upgrades, WSUS), но с тестовым контуром для критичного. - Удалённый доступ только через VPN — не выставляйте RDP/SSH/панели напрямую в интернет.
- Аудит — Lynis (Linux security scanner, даёт оценку и рекомендации), OpenSCAP (проверка на соответствие CIS/STIG).
# Lynis — аудит безопасности
sudo apt install lynis
sudo lynis audit system
# OpenSCAP — скан по профилю
sudo apt install libopenscap8
oscap xccdf eval --profile cis --report report.html /usr/share/xml/scap/ssg/content/ssg-ubuntu-ds.xml
Управление уязвимостями
- Сканирование: OpenVAS / Greenbone (open-source), Nessus (коммерция, есть free tier) — находят известные CVE, небезопасные конфиги, missing patches.
- Патч-менеджмент: централизованное применение обновлений (WSUS/SCCM, apt-cacher, Ansible, Spacewalk), с окном тестирования.
- CVSS (Common Vulnerability Scoring System) — числовая оценка серьёзности (0–10): базовый/временной/контекстный вектор. Помогает приоритизировать.
# Пример сканирования портов/сервисов (Nmap, не OpenVAS, но базово)
sudo apt install nmap
nmap -sV -sC target # версии и дефолтные скрипты
nmap --script vuln target # простые проверки уязвимостей
Бэкапы — страховочное снаряжение
Правило 3-2-1: 3 копии, на 2 разных носителях, 1 вне офиса (offsite). Для защиты от ransomware добавьте иммутабельность (WORM) и air-gap.
- Иммутабельность (WORM) — копию нельзя изменить/удалить до истечения срока (object-lock в S3, append-only в бэкап-софте типа Borg/Restic, режим immutable).
- Air-gap — физически отключённая копия (лента, внешний диск, недоступный по сети).
- Тестирование восстановления — бэкап, который нельзя восстановить, не существует. Регулярно проверяйте restore.
- Защита от ransomware — отдельные учётки для бэкапа (только write, не delete), оффлайн-копии, мониторинг целостности.
# Простой бэкап папки с датой
tar -czf /backup/www-$(date +%F).tar.gz /var/www
# rsync на удалённый сервер (с ограниченной учёткой)
rsync -avz --delete /var/www/ backup@backup-host:/backups/www/
# BorgBackup — дедупликация + шифрование + append-only (защита от удаления)
borg create --stats backup@host:/backup::www-{now:%Y%m%d} /var/www
borg prune -a 7 -d 30 # оставить 7 ежедневных, 30 ежедневных всего
Мониторинг и логи
- Централизованный сбор: rsyslog (форвардинг логов), ELK (Elasticsearch+Logstash+Kibana), Splunk — агрегация и поиск по логам всех хостов.
- SIEM (Security Information and Event Management) — корреляция событий из разных источников, выявление аномалий и инцидентов (Wazuh, Splunk ES, Sentinel).
- IDS/IPS: Suricata, Snort — анализ трафика по сигнатурам/поведению (IDS — предупреждает, IPS — ещё и блокирует).
- fail2ban — автоматическая блокировка по логам (см. SSH-харденинг).
- Аномалии: внезапный рост трафика, входы в нерабочее время, новые привилегированные учётки — сигналы к проверке.
# rsyslog — отправлять логи на центральный сервер
# /etc/rsyslog.d/10-forward.conf
*.* @@logserver.example.com:514
sudo systemctl restart rsyslog
# Ротация логов (logrotate)
# /etc/logrotate.d/nginx
/var/log/nginx/*.log { daily rotate 14 compress missingok sharedscripts postrotate kill -USR1 $(cat /run/nginx.pid) endscript }
Защита конечных точек
- EDR / XDR — Endpoint Detection & Response: мониторинг поведения, выявление и реакция на угрозы на хосте (CrowdStrike, SentinelOne, Wazuh-agent). XDR объединяет данные из сети/облака/почты.
- Антивирус — сигнатуры + поведенческий анализ (ClamAV на Linux, Defender на Windows).
- Контроль приложений: AppLocker / WDAC (Windows) — разрешать запуск только доверенных бинарников (whitelist, а не blacklist).
- Шифрование дисков: BitLocker (Windows), LUKS (Linux) — защита данных при краже/выключенном устройстве.
# LUKS — шифрование раздела (Linux)
sudo cryptsetup luksFormat /dev/sdb1
sudo cryptsetup open /dev/sdb1 secure
sudo mkfs.ext4 /dev/mapper/secure
# BitLocker (Windows, PowerShell)
Enable-BitLocker -MountPoint "C:" -EncryptionMethod XtsAes256 -UsedSpaceOnly -TpmProtector
Реагирование на инциденты
Стандартный цикл (по NIST/типовым playbook):
- Подготовка (Preparation) — план, инструменты, обучение, резервные каналы связи.
- Обнаружение/Анализ (Detection & Analysis) — мониторинг, идентификация, оценка серьёзности.
- Локализация (Containment) — изоляция хоста/сегмента, сброс сессий, блокировка IP, чтобы не распространялось.
- Искоренение (Eradication) — удаление вредоноса, закрытие дыры, сброс скомпрометированных ключей/паролей.
- Восстановление (Recovery) — развёртывание из чистого бэкапа, возврат в строй под наблюдением.
- Разбор (Lessons Learned) — постмортем: что случилось, как предотвратить, обновить план.
- Chain of custody — сохранение улик: кто, когда, как получил/передал образ; хеши (sha256) доказывают неизменность.
- Сброс ключей — после компрометации обнови SSH-ключи, пароли, токены, сертификаты, секреты приложений.
# Снять хеш образа для chain of custody
sha256sum disk-image.dd > disk-image.dd.sha256
# Изоляция: снять сеть, не выключая (на виртуалке — отключить vNIC),
# скопировать диск в офлайн-хранилище для форензики.
Социальная инженерия
- Фишинг — поддельные письма/сайты, выманивающие пароли/деньги (часто срочность и страх).
- Претекстинг — создание легенды/роли, чтобы вызвать доверие (звонок «я из поддержки, дайте код»).
- Обучение пользователей — регулярные тренинги: как распознать фишинг, не открывать вложения, проверять адрес отправителя.
- Проверки (GoPhish) — симуляция фишинговых рассылок внутри компании для оценки осведомлённости и обучения.
Шифрование
- At-rest (покое) — диски (LUKS/BitLocker), БД (TDE — Transparent Data Encryption), файлы (GPG, age). Защита при краже носителя.
- In-transit (при передаче) — TLS для веб/почты/БД-репликации, VPN (WireGuard/OpenVPN), SSH. Защита от перехвата.
- Управление ключами: KMS (Key Management Service, напр. AWS KMS, HashiCorp Vault) — хранение/ротация ключей; HSM (Hardware Security Module) — аппаратный модуль, где ключи никогда не покидают защищённое железо (для корневых CA, финансов).
# Шифровать файл (GPG)
gpg -c secret.txt # симметричное (пароль)
gpg -e -r admin@corp secret.txt # асимметричное (на публичный ключ получателя)
# TLS-туннель для БД-реплики (пример концепции)
# PostgreSQL: ssl=on, ssl_cert_file, ssl_key_file; клиент sslmode=verify-full
Соответствие (compliance) — кратко
- GDPR (EU) — защита персональных данных граждан ЕС: согласие, право на забвение, уведомление об утечке ≤72ч, штрафы до 4% оборота.
- 152-ФЗ (РФ) — «О персональных данных»: уведомление Роскомнадзора, локализация БД граждан РФ на территории РФ, требования к операторам ПДн, ФЗ-187 (КИИ).
- ISO/IEC 27001 — международный стандарт СУИБ (система управления информационной безопасностью): процессы, риски, контроли (Annex A), аудит/сертификация.
Подборка инструментов безопасности (по категориям)
| Категория | Инструменты |
|---|---|
| Сканирование уязвимостей | OpenVAS/Greenbone, Nessus, Nexpose, Nmap (nse vuln) |
| Аудит/харденинг | Lynis, OpenSCAP, CIS-CAT, Chef InSpec |
| IDS / IPS | Suricata, Snort, Zeek (Bro) |
| SIEM / логи | Wazuh, ELK Stack, Splunk, Graylog, Security Onion |
| Фаервол / периметр | pfSense, OPNsense, nftables/iptables, UFW, firewalld |
| Бэкап | BorgBackup, Restic, Veeam, Duplicati, rsync + snapshot |
| Шифрование / ключи | GPG, age, LUKS, BitLocker, HashiCorp Vault, AWS KMS, HSM |
| 2FA / PKI | FreeOTP, Google Authenticator, YubiKey (FIDO2), certbot/Lets Encrypt, step-ca, Vault PKI |
| Защита конечных точек | CrowdStrike, SentinelOne, Defender/EDR, ClamAV, Wazuh-agent, AppLocker/WDAC |
| Социальная инженерия (тренинг) | GoPhish, King Phisher |
| Мониторинг | Prometheus+Alertmanager, Zabbix, Nagios/Icinga, Uptime Kuma, Grafana |
| OSINT / разведка | theHarvester, Recon-ng, Shodan (для аудита своих ресурсов) |
| Форензика | Autopsy, Volatility (память), dd/FTK Imager (образы) |