Усиление сетевой защиты [334.1]

Рейтинг: 64.6% · 7 голосов
Специализация LPIC-3 303 (v3.0): криптография и PKI/X.509, шифрование ФС (LUKS/TPM2/Clevis), DNSSEC, hardening хоста, IDS, контроль доступа (SELinux/AppArmor), сетевая безопасность, nftables, VPN, пентест.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Усиление сетевой защиты [334.1]

Сообщение Sergey_Sysadmin »

Оглавление курса (16)
  1. Введение в LPIC-3 303: безопасность Linux
  2. X.509 и инфраструктура открытых ключей [331.1]
  3. X.509 для шифрования, подписи и аутентификации [331.2]
  4. Шифрование файловых систем [331.3]
  5. DNS и криптография [331.4]
  6. Усиление защиты хоста [332.1]
  7. Урок 6. Обнаружение вторжений на хосте: AIDE, auditd, сканеры руткитов и OpenSCAP
  8. Контроль ресурсов [332.3]
  9. Дискреционный контроль доступа: ACL и атрибуты [333.1]
  10. Мандатный контроль доступа: SELinux и AppArmor [333.2]
  11. Усиление сетевой защиты [334.1] (вы здесь)
  12. Сетевое обнаружение вторжений
  13. Фильтрация пакетов [334.3]
  14. Виртуальные частные сети (VPN) [334.4]
  15. Уязвимости и угрозы [335.1]
  16. Основы тестирования на проникновение [335.2]
Урок 10. Усиление сетевой защиты [334.1]

Брандмауэр на хосте - это только половина дела. Вторая половина живёт глубже, в самом сетевом стеке ядра Linux. Параметры sysctl определяют, верит ли ваша машина чужим маршрутам, отвечает ли на широковещательный пинг, защищена ли от SYN-флуда и как ведёт себя IPv6, который во многих дистрибутивах включён по умолчанию и про который часто забывают. В этом уроке мы разберём, какие именно ключи ядра закрывают классические сетевые атаки (спуфинг, ICMP-редиректы, отравление ARP), как отключить неиспользуемые протоколы на уровне модулей, и кратко посмотрим на безопасность Wi-Fi и аутентификацию через FreeRADIUS. Задача администратора - сделать так, чтобы стек по умолчанию не доверял сети, в которой стоит сервер.

Изображение

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

Сетевые параметры ядра доступны через псевдо-файловую систему /proc/sys/net и через утилиту sysctl. Запись в /proc/sys/net/ipv4/... меняет поведение немедленно, но не переживает перезагрузку. Чтобы изменения были постоянными, их кладут в файлы внутри /etc/sysctl.d/ (а исторический /etc/sysctl.conf оставлен для совместимости). При загрузке systemd-sysctl применяет эти файлы по порядку имён, поэтому именуйте свой файл с числовым префиксом, например 90-hardening.conf.

Защита от спуфинга строится на rp_filter (reverse path filtering). Когда приходит пакет, ядро проверяет: а ушёл бы ответный пакет обратно через тот же интерфейс, с которого пришёл запрос? Если маршрут асимметричный или адрес источника явно поддельный, пакет отбрасывается. Режим 1 - строгая проверка (RFC 3704 strict), режим 2 - нестрогая (loose), которая допустима на роутерах с несколькими аплинками.

ICMP-редиректы - это сообщения вида "ходи к этой сети через другой шлюз". Принимая их, хост позволяет любому в сегменте переписать свою таблицу маршрутизации - классический MITM. На обычном сервере приём и отправку редиректов отключают полностью. SYN cookies решают другую проблему: при SYN-флуде очередь полуоткрытых соединений переполняется, и ядро вместо хранения состояния кодирует его в начальный номер последовательности (ISN), не выделяя память до прихода ACK.

ARP работает на L2 и не имеет аутентификации - отсюда ARP spoofing. Полностью защититься средствами sysctl нельзя, но arp_ignore и arp_announce ограничивают, на какие ARP-запросы хост отвечает и какой адрес объявляет, снижая утечку адресов между интерфейсами.

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

Посмотреть и временно изменить параметр:

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

sysctl net.ipv4.conf.all.rp_filter
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -a | grep -E 'rp_filter|accept_redirects'
Постоянная конфигурация. Создаём /etc/sysctl.d/90-network-hardening.conf:

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

# Anti-spoofing: строгий reverse path filter
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# ICMP redirects - не принимаем и не шлём
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Source routing - запрещаем
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0

# SYN flood
net.ipv4.tcp_syncookies = 1

# Игнорировать broadcast ping (smurf) и битые ICMP
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Логировать марсианские пакеты (подделанные адреса)
net.ipv4.conf.all.log_martians = 1

# IPv6 hardening: не принимать RA, если хост не роутер
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
Применить без перезагрузки:

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

# Загрузить конкретный файл (современный способ)
sysctl --system

# или адресно
sysctl -p /etc/sysctl.d/90-network-hardening.conf
Отключение неиспользуемых протоколов делается на уровне загрузки модулей через /etc/modprobe.d/. Если хост не должен работать с DCCP, SCTP, RDS или экзотическими ФС, перенаправляем их загрузку в /bin/true:

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

# /etc/modprobe.d/blacklist-rare-net.conf
install dccp /bin/true
install sctp /bin/true
install rds /bin/true
install tipc /bin/true
Полное отключение IPv6, если он не нужен (но лучше не отключать, а укреплять):

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

# в /etc/sysctl.d/
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
Проверка, какие модули реально загружены и их параметры одинаково работает в обоих семействах - lsmod, modprobe, sysctl. Разница лишь в установке утилит: Debian/Ubuntu ставят пакет procps (apt install procps), RHEL/Fedora - тоже procps-ng через dnf install procps-ng. Имена файлов и ключей ядра идентичны на обоих семействах, так как это уровень ядра, а не дистрибутива.

FreeRADIUS обеспечивает централизованную аутентификацию (AAA) для сетевого оборудования и Wi-Fi через 802.1X/EAP. Конфиг в RHEL лежит в /etc/raddb/, в Debian - в /etc/freeradius/3.0/. Тестовый запуск с отладкой:

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

# Debian/Ubuntu
apt install freeradius
freeradius -X

# RHEL/Fedora
dnf install freeradius
radiusd -X
Флаг -X выводит полный лог обработки запросов - незаменимо при отладке EAP. Для Wi-Fi в 2026 актуален WPA3-Enterprise с EAP-TLS (сертификаты вместо паролей); WPA2 и тем более WPA/WEP считаются скомпрометированными.

Частые грабли
  • rp_filter в режиме 1 ломает асимметричную маршрутизацию (multi-homing, policy routing). На роутерах с несколькими аплинками ставьте 2 или настраивайте per-interface.
  • Установка только net.ipv4.conf.all.* не покрывает уже поднятые интерфейсы и новые - нужно дублировать в .default, а иногда и в конкретный интерфейс (.eth0).
  • disable_ipv6=1 не выгружает модуль и может ломать приложения, которые слушают ::1. Часто лучше укрепить IPv6, а не вырубать.
  • send_redirects по умолчанию включён - на не-роутере это лишний отпечаток сети, отключайте.
  • Изменение /proc/sys напрямую теряется после reboot - всегда дублируйте в /etc/sysctl.d/.
  • Порядок применения файлов в sysctl.d по алфавиту: ваш 90- может быть переопределён более поздним. Проверяйте sysctl -a после загрузки.
  • FreeRADIUS в фоне маскирует ошибки конфига; всегда отлаживайте через -X перед запуском сервиса.
Мини-лаба
  • Снимите текущие значения: sysctl net.ipv4.conf.all.rp_filter и net.ipv4.tcp_syncookies, запишите исходное состояние.
  • Создайте /etc/sysctl.d/90-network-hardening.conf с набором ключей из урока.
  • Примените sysctl --system и убедитесь, что значения изменились через sysctl -a | grep redirects.
  • С другой машины (или из netns) отправьте broadcast-ping и проверьте, что хост молчит.
  • Включите log_martians, отправьте пакет с поддельным src и найдите запись в journalctl -k.
  • Создайте blacklist в /etc/modprobe.d/, перезагрузитесь и проверьте lsmod, что dccp не загружен.
  • Поднимите freeradius -X, добавьте тестового клиента и пользователя, проверьте аутентификацию утилитой radtest.
Контрольные вопросы
  • Чем отличается rp_filter в режиме 1 от режима 2 и когда строгий режим недопустим?
  • Какой ключ sysctl защищает от SYN-флуда и за счёт какого механизма он не выделяет память до ACK?
  • Почему приём ICMP-редиректов опасен и какие два ключа его контролируют для IPv4?
  • Как через modprobe.d запретить загрузку модуля протокола и чем install /bin/true отличается от blacklist?
  • Какие параметры IPv6 нужно укрепить на хосте, который не является маршрутизатором, и почему accept_ra=0 важен?
  • В чём роль FreeRADIUS в схеме 802.1X и почему WPA2-PSK уступает WPA3-Enterprise с EAP-TLS?
👍3 ❤️2 🔥1 😄 🤔3
Аватара пользователя
NixosHacker
Сообщения: 1
Зарегистрирован: 20 май 2026, 03:46

Re: Усиление сетевой защиты [334.1]

Сообщение NixosHacker »

А если rp_filter поставить 1 на роутере с двумя провайдерами - у меня сразу часть клиентов отвалилась, ответ уходил не через тот интерфейс. Пришлось ставить 2, теперь понятно почему.
👍2 ❤️1 🔥 😄 🤔1
Аватара пользователя
zig21
Сообщения: 1
Зарегистрирован: 19 май 2026, 14:45

Re: Усиление сетевой защиты [334.1]

Сообщение zig21 »

Заметил что disable_ipv6=1 не убирает ::1 у lo, и postfix потом ругался что не может забиндиться. Лучше реально не вырубать, а accept_ra и redirects по нулям выставить.
👍2 ❤️ 🔥1 😄 🤔
Ответить
← Предыдущая глава
Мандатный контроль доступа: SELinux и AppArmor [333.2]
Следующая глава →
Сетевое обнаружение вторжений

Все главы курса «LPIC-3 303: безопасность Linux»

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

Вернуться в «LPIC-3 303: безопасность Linux»

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

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