База знань Проста інструкція по роботі з сервісом Профітсервер
головний База знань Налаштування брандмауера в Linux

Налаштування брандмауера в Linux


Брандмауер у Linux відіграє важливу роль у захисті комп’ютерної системи. Він діє як бар’єр, контролюючи та фільтруючи мережевий трафік, щоб захистити систему від несанкціонованого доступу, атак та інших загроз. Без правильно налаштованого брандмауера сервер може бути вразливим до різних типів кібератак, що призведе до серйозних наслідків для безпеки та конфіденційності даних.

У цій статті ми розглянемо два основні інструменти для налаштування брандмауера Linux: firewalld та iptables. Ми проведемо порівняльний аналіз їхніх можливостей, функціональності та переваг. Крім того, ми надамо детальні інструкції щодо налаштування та використання кожного з цих інструментів, а також обговоримо найкращі практики захисту вашої системи за допомогою брандмауера на платформі Linux. Всі дії будуть продемонстровані на віртуальному сервері з root-доступом.

Налаштування брандмауера в Linux

Firewalld (Firewall Daemon) — це програма для керування брандмауером в операційних системах Linux. Вона надає користувацький інтерфейс для налаштування правил брандмауера, дозволу або блокування підключень мережевих програм. Вона попередньо встановлена ​​за замовчуванням у більшості серверних дистрибутивів. Якщо Firewalld не попередньо встановлений, його можна встановити незалежно з офіційних репозиторіїв дистрибутива.

Для систем Red Hat (таких як RHEL, CentOS, Fedora) інсталяція виконується командою:

yum install firewalld

Для Debian/Ubuntu:

apt-get install firewalld

Після інсталяції його можна відразу запустити та активувати командою:

systemctl start firewalld

Далі потрібно додати службу до автозавантаження:

systemctl enable firewalld
Додавання брандмауера в автозавантаженні Linux

На цьому етапі ми рекомендуємо вимкнути ufw, оскільки одночасне використання цього інструменту з firewalld або iptables не рекомендується. Перевірте статус:

systemctl status ufw
Перевірка ufw linux

Щоб зупинити його, введіть команду:

systemctl stop ufw

Для повної дезактивації:

ufw disable

Після цих дій можна переходити до налаштування брандмауера.

По-перше, необхідно визначити зони довіри. Firewalld використовує концепцію зон для визначення рівня довіри для мережевих інтерфейсів. Кожному інтерфейсу призначається одна зона, і правила брандмауера застосовуються на основі зони. Список усіх доступних зон відкривається командою:

firewall-cmd --get-zones

Зазвичай використовуються 4 основні зони:

  1. громадськості: Ця зона для мереж, які ви вважаєте небезпечними;
  2. приватний: Застосовується до домашніх мереж або інших надійних мережевих підключень;
  3. Внутрішній: Використовується для внутрішніх мереж, наприклад мереж у межах організації чи корпоративної мережі;
  4. DMZ: у цій зоні зазвичай розміщуються сервери, які мають бути доступні з Інтернету.

Однак це лише один приклад. Ви можете додати власну зону за допомогою команди:

firewall-cmd --permanent --new-zone=nameyourzone

Після додавання потрібне перезавантаження:

firewall-cmd --reload

Для видалення зони використовується аналогічний спосіб

firewall-cmd --permanent --delete-zone=nameyourzone

Після визначення зон необхідно дозволити трафік для потрібних сервісів і портів. Щоб дозволити певний сервіс, використовуйте команду:

firewall-cmd --zone=public --add-service=name

Де name — це назва служби. Наприклад, щоб дозволити трафік для Apache:

firewall-cmd --zone=public --add-service=http

Щоб визначити допустимі порти, використовуйте команду:

firewall-cmd --zone=public --add-port=number/protocol

Наприклад, стандартний 22 порт для SSH виглядатиме так:

firewall-cmd --zone=public --add-port=22/tcp

На цьому етапі основні правила вже створені. Далі слід визначити, як буде оброблятися трафік залежно від джерела, пункту призначення, порту та інших критеріїв. Щоб додати правило (на прикладі публічної зони):

firewall-cmd --zone=public rule

Наприклад, щоб дозволити вхідний трафік з будь-якого джерела на порт 80 (HTTP):

firewall-cmd --zone=public --add-port=80/tcp --permanent

Щоб видалити правило:

firewall-cmd --permanent --remove-rule=rule_specification

Де правило – це тип правила (наприклад, порт, служба, rich-правило тощо), а специфікація_правила – це специфікація самого правила.

Після внесення змін до конфігурації Firewalld їх необхідно зберегти та застосувати. Щоб зберегти зміни, використовуйте команду:

firewall-cmd --runtime-to-permanent

Щоб застосувати зміни:

firewall-cmd --reload

Після завершення налаштування ви можете перевірити вибрані параметри, відкривши список усіх правил:

firewall-cmd --list-all
правила брандмауера Linux

Якщо виникають проблеми, перевірте журнали Firewalld командою:

journalctl -u firewalld

Примітка: Ми розглянули лише загальний алгоритм налаштування підключення. Інструмент має широкий функціонал. Для отримання повної інформації про всі доступні опції ви можете скористатися офіційною документацією або відкрити довідку:

firewall-cmd --help

Налаштування iptables в Linux

На відміну від Firewalld, iptables є старішим, але все ще широко використовуваним інструментом у Linux для керування брандмауером. Він забезпечує більш прямий і гнучкий підхід до правил фільтрації пакетів на рівні ядра Linux. Однак iptables вимагає більших знань і досвіду порівняно з Firewalld, що робить його менш доступним для початківців. Перевірте попередньо встановлену версію інструменту командою:

iptables -V

Якщо засіб не встановлено, його потрібно встановити. Команда для встановлення на Ubuntu, Debian:

apt install iptables

Для систем Red Hat (наприклад, CentOS, Fedora):

yum install iptables

Команда для активації після установки:

systemctl start iptables

Щоб додати до запуску, виконайте:

systemctl enable iptables

Перш ніж почати налаштування iptables, важливо зрозуміти, як це працює. Цьому сприяє синтаксис програми. Виглядає це наступним чином:

iptables -t table action chain additional_parameters

Розберемося глибше в кожному пункті.

Iptables має чотири основні таблиці: filter, nat, mangle та raw . Кожна з них призначена для обробки певних типів пакетів і має власні ланцюжки правил:

  1. фільтрувати: це найбільш часто використовувана таблиця, яка містить правила фільтрації пакетів. Він використовується для прийняття рішень щодо дозволу чи заборони пакетів.
  2. nat: Ця таблиця використовується для зміни мережевих адрес і портів у пакетах. Його часто використовують для налаштування маскування (NAT).
  3. гадюка: у цій таблиці ви можете змінювати заголовки пакетів. Він використовується для спеціальних операцій з пакетами, наприклад для маркування.
  4. сировина: Ця таблиця використовується для налаштування правил, які застосовуються до того, як вони пройдуть через систему відстеження з’єднань. Зазвичай він використовується для встановлення правил, які система відстеження не повинна змінювати, як-от відкидання пакетів із певних адрес.

Кожна таблиця містить набір ланцюжків. Ланцюжки — це послідовність правил, які послідовно перевіряються. Є три попередньо визначені ланцюги:

  1. INPUT (вхідні). Правила в цьому ланцюжку визначають, що робити з вхідними пакетами.
  2. ВИХІД (вихідний). Цей ланцюжок застосовується до всіх пакетів, які ваш комп’ютер надсилає іншим пристроям або комп’ютерам у мережі.
  3. FORWARD (пересилання). Правила в цьому ланцюжку визначають, що робити з пересланими пакетами.

Нарешті, кожен ланцюжок має певну дію (ціль). На практиці використовуються 5 основних дій:

  1. ПРИЙНЯТИ: дозволити пакету пройти через брандмауер.
  2. DROP: Відхилити пакет і відхилити його без відповіді.
  3. ОТХОДИТИ: відхилити пакет і надіслати відправнику повідомлення про помилку ICMP.
  4. ВХІД: зареєструйте пакет у системному журналі та виконайте іншу дію (наприклад, ПРИЙНЯТИ або ВИДАЛИТИ).
  5. ПОВЕРНЕННЯ: припинити перевірку правил у поточному ланцюжку та повернутися до ланцюжка викликів (якщо застосовно).

Щоб почати налаштування, відкрийте список існуючих правил командою:

iptables -L
Налаштування брандмауера в Linux

Як посібник із налаштування Iptables, давайте розглянемо практичні приклади найбільш часто використовуваних команд. Для зручності розділимо приклади на 3 групи в залежності від конкретного ланцюжка.

ВХІД ланцюга :

  1. Дозволити вхідний трафік через протокол TCP на порт 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

2. Дозволити вхідний трафік через протокол UDP на порт 22:

iptables -A INPUT -p udp --dport 22 -j ACCEPT

3. Заблокуйте вхідний трафік із певної IP-адреси:

iptables -A INPUT -s 192.168.1.100 -j DROP

ВИХІД ланцюга :

  1. Дозволити вихідний трафік через протокол TCP на порт 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

2. Дозволити вихідний трафік через протокол UDP на порт 80:

iptables -A OUTPUT -p udp --dport 80 -j ACCEPT

3. Заблокувати вихідний трафік на певний порт (наприклад, 21):

iptables -A OUTPUT -p tcp --dport 21 -j DROP

Ланцюг ВПЕРЕД :

  1. Блокувати перенаправлений трафік із певного діапазону IP-адрес:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP

2. Заблокуйте пересилання пакетів із певного мережевого інтерфейсу:

iptables -A FORWARD -i eth1 -j DROP

3. Обмежте кількість одночасних з’єднань для певного порту (у цьому прикладі 10 з’єднань на хвилину на порту 80):

iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT

Як бачимо, в кожному окремому випадку використовується додатковий аргумент (команда). Щоб отримати повний список можливих аргументів і загальну підтримку функціональності інструменту, введіть:

iptables -h
Список команд налаштування iptables Linux

Щоб переконатися, що налаштування правильні, повторно введіть команду, щоб переглянути список правил:

iptables -L
Перевірка правил iptables Linux

Щоб видалити певне правило, використовуйте команду:

iptables -D chain rule_number

Наприклад, якщо ви хочете видалити правило номер 1 із ланцюжка INPUT, команда виглядатиме так:

iptables -D INPUT 1

Щоб видалити всі правила однією командою:

iptables -F

Важливе зауваження : правила iptables не зберігаються автоматично після перезавантаження системи або служби. Щоб зберегти правила, їх потрібно додати до файлу конфігурації та відновити після перезавантаження. У цьому можуть допомогти утиліти iptables-save та iptables-restore . Щоб зберегти правила, введіть команду:

iptables-save > /etc/iptables/rules.v4

Це збереже поточні правила iptables у файл rules.v4. Для відновлення після перезавантаження введіть:

iptables-restore < /etc/iptables/rules.v4

Ця команда відновлює правила з файлу rules.v4.

Висновок

Налаштування брандмауера в Linux за допомогою firewalld або iptables є важливим аспектом забезпечення безпеки сервера. Обидва інструменти пропонують надійні засоби керування мережевим трафіком і захисту системи від несанкціонованого доступу та кібератак. Вибір між firewalld та iptables залежить від конкретних потреб і вподобань користувача, враховуючи їхню різну функціональність та сильні сторони.

❮ Попередня стаття Діагностика навантаження на сервер
Наступна стаття ❯ Користувачі Linux: керування та дозволи

Запитайте нас про VPS

Ми завжди готові відповісти на ваші запитання в будь-який час дня і ночі.