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

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


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

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

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

Брандмауер (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

де ім'я це назва послуги. Наприклад, щоб дозволити трафік для 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

де правити це тип правила (наприклад, порт, обслуговування, багате правило тощо), і специфікація правила є специфікацією самого правила.

Після внесення змін до конфігурації 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 не зберігаються автоматично після перезавантаження системи чи служби. Щоб зберегти правила, їх потрібно додати до конфігураційного файлу та відновити після перезавантаження. The iptables-збереження та iptables-відновлення утиліти можуть допомогти в цьому. Щоб зберегти правила, введіть команду:

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

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

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

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

Висновок

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

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

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

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