Безопасность, IDS и VPN [212.4 + 212.5]

Рейтинг: 60.1% · 14 голосов
Курс LPIC-2 (201-450 и 202-450): емкостное планирование, ядро, хранилище и RAID/LVM, продвинутая сеть, DNS/BIND, Apache/Nginx, Samba/NFS, DHCP/LDAP, почта, безопасность и VPN.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Безопасность, IDS и VPN [212.4 + 212.5]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-2 и уровень инженера
  2. Измерение и устранение проблем с ресурсами [200.1]
  3. Прогнозирование потребности в ресурсах
  4. Компоненты ядра Linux [201.1]
  5. Сборка ядра из исходников [201.2]
  6. Управление модулями ядра в рантайме [201.3]
  7. Кастомизация запуска системы [202.1]
  8. Восстановление системы [202.2]
  9. Альтернативные загрузчики [202.3]
  10. Работа с файловой системой Linux [203.1]
  11. Обслуживание файловых систем [203.2]
  12. Создание и настройка опций ФС [203.3]
  13. Программный RAID [204.1]
  14. Тюнинг доступа к устройствам хранения [204.2]
  15. Менеджер логических томов LVM [204.3]
  16. Базовая конфигурация сети [205.1]
  17. Продвинутая конфигурация сети [205.2]
  18. Диагностика сетевых проблем [205.3]
  19. Сборка и установка программ из исходников [206.1]
  20. Резервное копирование [206.2]
  21. Оповещение пользователей о событиях
  22. DNS-сервер BIND: базовая настройка [207.1]
  23. Зоны DNS: создание и сопровождение [207.2]
  24. Безопасность DNS-сервера [207.3]
  25. Веб-сервер Apache: базовая настройка [208.1]
  26. Apache и HTTPS [208.2]
  27. Кэширующий прокси Squid [208.3]
  28. Веб-сервер и обратный прокси Nginx [208.4]
  29. Файловый сервер Samba [209.1]
  30. Файловый сервер NFS [209.2]
  31. DHCP-сервер [210.1]
  32. Аутентификация PAM и SSSD [210.2]
  33. Использование LDAP-клиента
  34. Сервер OpenLDAP [210.4]
  35. Почтовый сервер Postfix [211.1]
  36. Управление доставкой почты и Sieve [211.2]
  37. Доступ к почтовым ящикам: Dovecot [211.3]
  38. Linux как маршрутизатор и фильтр [212.1]
  39. FTP-серверы [212.2]
  40. SSH углублённо [212.3]
  41. Безопасность, IDS и VPN [212.4 + 212.5] (вы здесь)
Урок 40. Безопасность, IDS и VPN [212.4 + 212.5]

Этот урок закрывает практичную часть безопасности: сначала смотрим на свой сервер глазами атакующего (сканируем порты и сервисы через nmap), потом ставим сторожа, который замечает атаку в трафике и в логах (Suricata/Snort и fail2ban), и в конце прячем доступ внутрь зашифрованного туннеля (OpenVPN, а рядом WireGuard и IPsec). Задача администратора тут одна: знать, что у тебя торчит наружу, видеть, когда это ломают, и пускать к закрытым сервисам только своих.

Изображение

Как это работает

Сканирование портов - это попытка достучаться до диапазона TCP/UDP-портов хоста и по реакции понять, что за ними слушает. nmap делает это аккуратно: при SYN-скане (-sS) он шлёт пакет SYN и по ответу решает, открыт порт (пришёл SYN/ACK), закрыт (RST) или фильтруется (тишина или ICMP unreachable). Полное TCP-рукопожатие не доводится до конца, поэтому скан быстрый и тише обычного подключения. Дальше определение версий (-sV) уже честно подключается к сервису и по баннеру/протоколу выясняет, что это, например, OpenSSH 9.6 или nginx 1.27 - именно версия подсказывает, есть ли известные дыры.

Проверка целостности - это контроль того, что важные файлы не подменили. Простой уровень - хэши (sha256sum) и подписи пакетов (rpm, dpkg сверяют контрольные суммы из своей базы). Серьёзный уровень - HIDS вроде AIDE: он один раз снимает слепок системы (хэши, права, владельцы, mtime) в базу, а потом регулярно сравнивает текущее состояние с эталоном и кричит про любое расхождение.

Сетевой IDS работает иначе - он смотрит не на файлы, а на пакеты. Suricata и Snort прогоняют трафик через набор правил (сигнатур): совпало с известным паттерном атаки - пишется алерт. В режиме IDS он только наблюдает и логирует, в режиме IPS (inline) - ещё и дропает пакет. fail2ban проще и точечнее: он не разбирает пакеты, а читает логи сервисов (sshd, веб-сервер), ловит regex-ом повторяющиеся неудачи и временно банит IP через файрвол.

VPN решает другую задачу - конфиденциальность и доступ. Туннель шифрует трафик и аутентифицирует стороны, так что закрытый сервис вообще не торчит в открытый интернет: до него дотянется только тот, у кого есть ключ или сертификат. OpenVPN строит туннель поверх TLS: сервер и клиенты опознают друг друга по сертификатам из общей PKI (свой CA подписывает каждый сертификат). Схема клиент-сервер - это много клиентов к одному серверу (типичный удалённый доступ), site-to-site - это два шлюза, сшивающих две сети в одну. Рядом стоят IPsec (стандарт, часто между железными шлюзами, два этапа IKE) и WireGuard - минималистичный современный протокол прямо в ядре Linux, где аутентификация это просто обмен публичными ключами Curve25519.

Команды и примеры

Установка nmap различается по семействам:

Код: Выделить всё

# Debian 13 / Ubuntu 24.04
apt install nmap
# RHEL 10 / Fedora 41+
dnf install nmap
Базовый аудит хоста - быстрый скан топовых портов с версиями, плюс полный TCP-скан:

Код: Выделить всё

nmap -sS -sV --top-ports 100 10.0.0.5
nmap -p- 10.0.0.5            # все 65535 TCP-портов
nmap -sU --top-ports 50 10.0.0.5   # UDP, медленнее
nmap -A 10.0.0.5            # версии + ОС + скрипты, шумно
Ключи: -sS это SYN-скан (нужен root), -sV определяет версии, -p- все порты, -sU это UDP, -A агрегированный режим. Чем шумнее скан, тем заметнее он для IDS.

Проверка целостности через AIDE (одинаково в обоих семействах, имена пакетов совпадают):

Код: Выделить всё

apt install aide   # или: dnf install aide
aide --init                       # снять эталон
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
aide --check                      # сверить с эталоном
Сетевой IDS - в 2026 ставьте Suricata 8.x или Snort 3.x (старый Snort 2 - наследие, многопоточности у него нет):

Код: Выделить всё

apt install suricata   # или: dnf install suricata
suricata-update                   # подтянуть правила ET Open
suricata -i eth0                  # запуск на интерфейсе
tail -f /var/log/suricata/fast.log   # алерты
fail2ban - защита sshd от перебора:

Код: Выделить всё

apt install fail2ban   # или: dnf install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 4
bantime = 1h

Код: Выделить всё

systemctl enable --now fail2ban
fail2ban-client status sshd       # сколько забанено
В 2026 fail2ban на свежих системах работает поверх nftables (бэкенд banaction по умолчанию), iptables-вариант - наследие.

OpenVPN, клиент-сервер. PKI поднимают через easy-rsa:

Код: Выделить всё

apt install openvpn easy-rsa   # или: dnf install openvpn easy-rsa
make-cadir ~/ca && cd ~/ca
./easyrsa init-pki
./easyrsa build-ca               # свой центр сертификации
./easyrsa build-server-full srv nopass
./easyrsa build-client-full client1 nopass
Ключевые строки server.conf:

Код: Выделить всё

dev tun
proto udp
port 1194
ca   ca.crt
cert srv.crt
key  srv.key
dh   dh.pem
server 10.8.0.0 255.255.255.0
Для site-to-site используют общий ключ или сертификаты и маршруты route на обоих концах. OpenVPN 2.6 умеет DCO (Data Channel Offload) - шифрование уходит в ядро (модуль ovpn, влит в Linux 6.16), что заметно ускоряет туннель.

WireGuard - на порядок короче по настройке:

Код: Выделить всё

apt install wireguard   # или: dnf install wireguard-tools
wg genkey | tee priv | wg pubkey > pub
# в /etc/wireguard/wg0.conf указываем [Interface] и [Peer] с ключами
wg-quick up wg0
wg show
Частые грабли
  • Сканировать чужие хосты без разрешения - это уже не учёба, а противоправное действие. nmap гоняйте только по своим стендам.
  • UDP-скан читают как закрытый из-за тишины: отсутствие ответа nmap честно метит open|filtered, а не open. Не делайте по нему поспешных выводов.
  • Забыть suricata-update перед запуском - движок поднимется, но правил нет, и алертов вы не увидите.
  • Снять базу AIDE на уже скомпрометированной машине - тогда эталоном станет дыра, и проверки будут чистыми. Базу снимают сразу после установки.
  • fail2ban банит по логам, а не по трафику: если сервис не пишет неудачные попытки в лог (или формат не тот) - jail молчит. Проверяйте filter и logpath.
  • В OpenVPN перепутать назначение: ca.crt раздают всем, а server.key и ca.key (ключ центра) не покидают сервер. Утёк ключ CA - вся PKI скомпрометирована.
  • Считать IDS файрволом. IDS в режиме наблюдения только сообщает об атаке, но не блокирует - блокировку дают IPS-режим, fail2ban или nftables.
  • Открыть VPN-порт, но забыть про маршруты и форвардинг (net.ipv4.ip_forward=1) - туннель встаёт, а до сети за ним пакеты не идут.
Мини-лаба
  • Поднимите два стенда: сервер (Debian 13) с sshd и веб-сервером и второй хост (Fedora 41+) для атак и сканов.
  • С атакующего выполните nmap -sS -sV --top-ports 100 на сервер, запишите открытые порты и версии. Затем nmap -p- и сравните, что добавилось.
  • На сервере поставьте AIDE, снимите эталон, измените один файл в /etc и докажите, что aide --check его поймал.
  • Поставьте и запустите Suricata на внешнем интерфейсе, прогоните suricata-update, повторите скан nmap -A и найдите алерты в fast.log.
  • Настройте fail2ban для sshd (maxretry 3), с атакующего сделайте несколько неверных логинов и убедитесь через fail2ban-client status sshd, что IP забанен.
  • Поднимите OpenVPN в схеме клиент-сервер: свой CA через easy-rsa, сертификаты сервера и клиента, подключитесь и пропингуйте сервер по адресу 10.8.0.1.
  • Соберите тот же доступ на WireGuard (пара ключей, wg0.conf, wg-quick up) и сравните объём конфигурации с OpenVPN.
Контрольные вопросы
  • Чем SYN-скан (-sS) отличается от полного TCP-подключения и почему он требует прав root?
  • Что показывает ключ -sV и почему версия сервиса важнее самого факта открытого порта?
  • В чём принципиальная разница между сетевым IDS (Suricata) и fail2ban по тому, на что они смотрят?
  • Почему базу AIDE нужно снимать сразу после установки системы, а не позже?
  • Какие файлы в PKI OpenVPN можно раздавать клиентам, а какие обязаны остаться только на сервере?
  • Чем схема клиент-сервер в OpenVPN отличается от site-to-site и для чего нужна каждая?
  • Чем WireGuard принципиально проще OpenVPN в части аутентификации сторон?
👍3 ❤️1 🔥4 😄 🤔2
Аватара пользователя
oldschooldeadlock
Сообщения: 1
Зарегистрирован: 12 май 2026, 14:01

Re: Безопасность, IDS и VPN [212.4 + 212.5]

Сообщение oldschooldeadlock »

А обязательно поднимать свой CA через easy-rsa, если клиент один? Думал просто статикой ключей обойтись, как в WireGuard, или это совсем не тот уровень безопасности?
👍1 ❤️1 🔥 😄 🤔
Аватара пользователя
dockersmith
Сообщения: 1
Зарегистрирован: 12 май 2026, 18:57

Re: Безопасность, IDS и VPN [212.4 + 212.5]

Сообщение dockersmith »

Поставил suricata, alert в fast.log идут, а трафик при этом не режется. Дошло не сразу: это же IDS-режим, наблюдатель. Для блокировки надо либо inline IPS, либо отдавать бан в nftables/fail2ban.
👍1 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
SSH углублённо [212.3]

Все главы курса «LPIC-2: инженер Linux (201 + 202)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-2: инженер Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость