Справочник сисадмина

Безопасность и диагностика

Безопасность — не одна кнопка, а привычка и процесс. Лучше один раз настроить правильно, чем каждую неделю тушить пожар после взлома. Ниже — расширенный разбор фундаментальных и практических тем защиты инфраструктуры.

Основы безопасности

Триада CIA

  1. Confidentiality (Конфиденциальность) — доступ только у тех, кому положено (шифрование, ACL, минимум привилегий).
  2. Integrity (Целостность) — данные не искажены и не подменены без авторизации (хеши, подписи, контроль версий).
  3. Availability (Доступность) — сервис работает, когда нужен (защита от сбоев, DDoS, бэкапы, отказоустойчивость).

Ключевые принципы

Безопасность — баланс с удобством. Цель не «100% защита» (её не бывает), а повышение стоимости атаки выше выгоды взломщика.

Управление паролями и хеширование

Политики

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

Пароли хранятся НЕ в открытом виде, а как солёный хеш (односторонняя функция + уникальная соль). Проверка — пересчёт хеша ввода и сравнение.

АлгоритмСтатусПримечание
bcryptOKАдаптивный, встроенная соль, factor сложности. Де-факто стандарт.
Argon2 (id)OKПобедитель Password Hashing Competition, учитывает память/время/параллелизм. Современный выбор.
scryptOKТоже memory-hard, для защиты от ASIC/GPU.
PBKDF2OKМного раундов хеширования; требует большого числа итераций.
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

Менеджеры паролей и утечки

MFA / 2FA — многофакторная аутентификация

# 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
Где обязательно: почта, админ-панели, удалённый доступ (VPN/SSH), финансы, облачные консоли, DNS-регистратор. MFA — минимум; предпочтительнее FIDO2, чем SMS (SIM-своп атаки).

PKI и сертификаты

PKI (Public Key Infrastructure) — система выпуска/отзыва/проверки сертификатов. X.509 — стандарт сертификата (публичный ключ + subject + issuer + срок + расширения).

# Выпустить 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
Смена порта SSH — это «security through obscurity», снижает объём логов от ботов, но не заменяет ключи и fail2ban. Главное: ключи вместо паролей + fail2ban + доступ только через VPN/бастион.

Фаерволы

Принцип: 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 на границе сети.

Сегментация сети

Правило: серверы одного уровня не должны свободно «видеть» серверы другого (web → db только по нужному порту). Сегментация ограничивает распространение (латеральное перемещение) атакующего.

Харденинг ОС

# 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
AppArmor/SELinux — обязательное ограничение поведения служб (mandatory access control). Включите enforcing mode там, где поддерживается.

Управление уязвимостями

# Пример сканирования портов/сервисов (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.

# Простой бэкап папки с датой
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 — отправлять логи на центральный сервер
# /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 }

Защита конечных точек

# 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):

  1. Подготовка (Preparation) — план, инструменты, обучение, резервные каналы связи.
  2. Обнаружение/Анализ (Detection & Analysis) — мониторинг, идентификация, оценка серьёзности.
  3. Локализация (Containment) — изоляция хоста/сегмента, сброс сессий, блокировка IP, чтобы не распространялось.
  4. Искоренение (Eradication) — удаление вредоноса, закрытие дыры, сброс скомпрометированных ключей/паролей.
  5. Восстановление (Recovery) — развёртывание из чистого бэкапа, возврат в строй под наблюдением.
  6. Разбор (Lessons Learned) — постмортем: что случилось, как предотвратить, обновить план.
Если подозреваешь взлом — НЕ перезагружай сразу и не «лечи» на живой системе вслепую. Перезагрузка может стереть следы и активировать руткит из автозагрузки. Сначала изолируй (отключи от сети, но не выключай) и сними образ/снимок памяти и диска для анализа.
# Снять хеш образа для chain of custody
sha256sum disk-image.dd > disk-image.dd.sha256
# Изоляция: снять сеть, не выключая (на виртуалке — отключить vNIC),
# скопировать диск в офлайн-хранилище для форензики.

Социальная инженерия

Технические меры (фильтрация спама, DMARC, MFA) снижают риск, но человек — самое слабое звено. Без обучения и культуры «сомневаться и проверять» защита неполная.

Шифрование

# Шифровать файл (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) — кратко

Compliance — не самоцель, а рамка: помогает не забыть важное (доступы, шифрование, реагирование, учёт). Нарушение влечёт штрафы и репутационные потери.

Подборка инструментов безопасности (по категориям)

КатегорияИнструменты
Сканирование уязвимостейOpenVAS/Greenbone, Nessus, Nexpose, Nmap (nse vuln)
Аудит/харденингLynis, OpenSCAP, CIS-CAT, Chef InSpec
IDS / IPSSuricata, 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 / PKIFreeOTP, 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 (образы)
Инструмент бесполезен без процесса. Начните с фундамента: инвентаризация активов → управление доступами (PoLP, MFA) → бэкапы → патчи → мониторинг → реагирование.
Конец справочника ✓