Модуль 4.1: Зміцнення ядра та sysctl
Безпека Linux | Складність:
[MEDIUM]| Час: 25–30 хв
Передумови
Розділ «Передумови»Перед початком цього модуля:
- Обов’язково: Модуль 1.1: Архітектура ядра
- Обов’язково: Модуль 3.1: Основи TCP/IP
- Бажано: Розуміння основних концепцій безпеки.
Що ви зможете робити після цього модуля
Розділ «Що ви зможете робити після цього модуля»Після завершення цього модуля ви зможете:
- Налаштувати параметри sysctl для зміцнення вузла Kubernetes проти мережевих атак
- Оцінити рекомендації CIS benchmark та вирішити, які з них застосовувати
- Пояснити, як ASLR, stack protector та SYN cookies захищають від конкретних типів атак
- Перевірити стан безпеки ядра працюючої системи за допомогою sysctl та /proc
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»Ядро Linux має сотні параметрів, які можна налаштовувати для покращення безпеки. Багато з них за замовчуванням мають небезпечні значення заради сумісності. Правильне «зміцнення» (hardening) ядра зменшує поверхню атаки та запобігає багатьом експлуатам.
Розуміння зміцнення ядра допоможе вам:
- Захищати вузли Kubernetes — стандарти CIS require вимагають специфічних налаштувань sysctl.
- Скласти іспит CKS — зміцнення ядра є прямою темою перевірки.
- Запобігати мережевим атакам — відключення перенаправлення IP, ICMP редиректів.
- Захищати пам’ять — ASLR, обмеження ptrace тощо.
Коли сканер безпеки вказує на неправильні налаштування sysctl, ви повинні знати, що вони означають і як їх виправити.
Основи sysctl
Розділ «Основи sysctl»Що таке sysctl?
Розділ «Що таке sysctl?»sysctl — це інструмент для модифікації параметрів ядра під час роботи системи. Ці параметри представлені як віртуальні файли в директорії /proc/sys/.
/proc/sys/├── kernel/ # Поведінка ядра│ ├── randomize_va_space│ ├── pid_max│ └── ...├── net/ # Мережевий стек│ ├── ipv4/│ │ ├── ip_forward│ │ ├── tcp_syncookies│ │ └── ...│ └── ipv6/└── fs/ # Файлова система ├── file-max └── ...Мережеве зміцнення (Network Hardening)
Розділ «Мережеве зміцнення (Network Hardening)»IP Forwarding
Розділ «IP Forwarding»Має бути 0 на робочих станціях (не-роутерах). Проте, Kubernetes вузли потребують значення 1 для роботи мережі контейнерів.
ICMP Hardening
Розділ «ICMP Hardening»Заборона ICMP редиректів запобігає атакам типу Man-in-the-Middle (MITM).
# Не приймати ICMP редиректиnet.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.default.accept_redirects = 0Захист від TCP SYN Flood
Розділ «Захист від TCP SYN Flood»Увімкнення SYN cookies допомагає серверу вистояти під час атаки типу “відмова в обслуговуванні” (DoS).
net.ipv4.tcp_syncookies = 1Захист пам’яті (Memory Protection)
Розділ «Захист пам’яті (Memory Protection)»ASLR (Address Space Layout Randomization)
Розділ «ASLR (Address Space Layout Randomization)»Рандомізація адрес пам’яті робить експлуатацію вразливостей (наприклад, переповнення буфера) значно складнішою.
# Перевірити статус ASLR (має бути 2)sysctl kernel.randomize_va_spaceПостійне налаштування
Розділ «Постійне налаштування»Команди sysctl -w діють тільки до перезавантаження. Для постійного ефекту створюйте файли в /etc/sysctl.d/.
# Створити файл налаштуваньecho "net.ipv4.tcp_syncookies = 1" | sudo tee /etc/sysctl.d/99-security.conf
# Застосувати всі файли негайноsudo sysctl --systemТест
Розділ «Тест»-
Яка команда показує ВСІ доступні параметри ядра?
Відповідь
`sysctl -a`. -
Що робить параметр
net.ipv4.ip_forward = 1?Відповідь
Дозволяє ядру пересилати пакети між різними мережевими інтерфейсами. Це перетворює ваш комп'ютер на роутер. Це необхідно для роботи Kubernetes, але має бути вимкнено на звичайних десктопах. -
Навіщо потрібні SYN cookies?
Відповідь
Для захисту від атак типу SYN flood. Вони дозволяють серверу обробляти нові запити на з'єднання, не витрачаючи пам'ять на зберігання стану напіввідкритих з'єднань. -
Де в Linux зберігаються параметри ядра як віртуальні файли?
Відповідь
У директорії `/proc/sys/`.
Практична вправа
Розділ «Практична вправа»Завдання: Тимчасово змінити та перевірити параметр ядра.
- Перевірте поточний статус IP forwarding:
Terminal window sysctl net.ipv4.ip_forward - Увімкніть його тимчасово:
Terminal window sudo sysctl -w net.ipv4.ip_forward=1 - Перевірте зміну:
Terminal window cat /proc/sys/net/ipv4/ip_forward - Вимкніть його назад:
Terminal window sudo sysctl -w net.ipv4.ip_forward=0
Критерії успіху: Ви вмієте змінювати параметри ядра через sysctl та перевіряти їх через /proc.
Підсумок
Розділ «Підсумок»- sysctl керує поведінкою ядра “на льоту”.
- ASLR — база захисту пам’яті.
- SYN cookies — захист від DoS.
- Постійність досягається через файли в
/etc/sysctl.d/. - Kubernetes потребує специфічних налаштувань для своєї роботи.
Далі: Модуль 4.2: Профілі AppArmor — навчіться обмежувати дії програм на рівні операційної системи.