налаштування брандмауера в CentOS 7

Встановлений в операційній системі Firewall використовується для запобігання несанкціонованого проходження трафіку між комп'ютерними мережами. Вручну або автоматично створюються спеціальні правила для міжмережевого екрану, які і відповідають за управління доступом. В ОС, розробленої на ядрі Linux, CentOS 7 є вбудований фаєрвол, а управління ним здійснюється за допомогою брандмауера. За замовчуванням задіяний FirewallD, і про його налаштування ми б хотіли поговорити сьогодні.

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

Як вже було сказано вище, стандартним брандмауером в CentOS 7 призначена утиліта FirewallD. Саме тому настройка фаєрвола буде розглянута на прикладі цього інструменту. Задати правила фільтрації можна і за допомогою тієї ж iptables, але це виконується трохи іншим чином. З конфігурацією згаданої утиліти рекомендуємо ознайомитися, перейшовши за наступним посиланням, а ми ж почнемо розбір FirewallD.

Читайте також: Налаштування iptables на CentOS 7

Основні поняття брандмауера

Існує кілька зон &8212; наборів правил для управління трафіком на основі довіри до мереж. Всім їм задаються власні політики, сукупність яких і утворює конфігурацію брандмауера. Кожній зоні присвоюється один або кілька мережевих інтерфейсів, що також дозволяє регулювати фільтрацію. Від використовуваного інтерфейсу безпосередньо залежать застосовувані правила. Наприклад, при підключенні до загальнодоступного Wi-Fi мережевий екран підвищить рівень контролю, а в домашній мережі відкриє додатковий доступ для учасників ланцюга. У розглянутому фаєрволі присутні такі зони:

Зона опис
trusted максимальний рівень довіри до всіх пристроїв мережі
home група локальної мережі. Існує довіра до оточення, але при цьому вхідні з'єднання доступні тільки для певних машин
work робоча зона. Присутня довіра до більшості пристроїв, а також активуються додаткові сервіси
dmz Зона для ізольованих комп'ютерів. Такі пристрої від'єднані від решти мережі і пропускають тільки певний вхідний трафік
internal Зона внутрішніх мереж. Довіра застосовується до всіх машин, відкриваються додаткові сервіси
external зворотна до попередньої зона. У зовнішніх мережах активна маскування NAT, закриваючи внутрішню мережу, але не блокуючи можливість отримання доступу
public зона загальнодоступних мереж з недовірою до всіх пристроїв і індивідуальним прийомом вхідного трафіку
block всі вхідні запити скидаються з відправленням помилки icmp-host-prohibited або icmp6-adm-prohibited
drop мінімальний рівень довіри. Вхідні з'єднання скидаються без будь-яких повідомлень

Самі ж політики бувають тимчасові і постійні. При появі або редагуванні параметрів дія фаєрвола відразу змінюється без потреби перезавантаження. Якщо ж були застосовані Тимчасові правила, після рестарту FirewallD вони будуть скинуті. Перманентне правило на те так і називаються &8212; воно буде збережено на постійній основі при застосуванні аргументу -permanent .

Увімкнення брандмауера FirewallD

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

  1. Запустіть класичний&171; Термінал & 187; будь-яким зручним методом, наприклад, через меню & 171; Додатки&187; .
  2. Запуск терминала для дальнейшей настройки фаервола в CentOS 7
  3. Введіть команду sudo systemctl start firewalld.service і натисніть на клавішу Enter .
  4. Запуск сервисов фаервола в операционной системе CentOS 7
  5. Управління утилітою здійснюється від імені суперкористувача, тому доведеться підтвердити справжність, вказавши пароль.
  6. Ввод пароля для запуска сервисов фаервола в терминале CentOS 7
  7. Щоб переконатися у функціонуванні сервісу, вкажіть firewall-cmd --state .
  8. Просмотр текущего состояния фаервола через терминал в CentOS 7
  9. У відкритому графічному вікні повторно підтвердіть справжність.
  10. Ввод пароля для подтверждения подлинности при просмотре состояния фаервола CentOS 7
  11. Відобразиться новий рядок. Значення &171;running&187; говорить про те, що фаєрвол працює.
  12. Отображение текущего состояния фаервола в операционной системе CentOS 7

Якщо ж вам одного разу буде потрібно тимчасово або перманентно відключити брандмауер, радимо скористатися інструкцією, представленої в іншій нашій статті за наступним посиланням.

Детальніше: вимкнення брандмауера в CentOS 7

Перегляд правил за замовчуванням та доступних зон

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

  1. Визначити функціонуючу за замовчуванням зону допоможе команда firewall-cmd --get-default-zone .
  2. Просмотр установленной по умолчанию зоны фаервола в CentOS 7
  3. Після її активації ви побачите новий рядок, де відобразиться необхідний параметр. Наприклад, на скріншоті нижче активної вважається зона &171;public&187; .
  4. Отображение установленной по умолчанию зоны фаервола в CentOS 7
  5. Однак активними можуть бути відразу кілька зон, до того ж вони прив'язуються до окремого інтерфейсу. Дізнайтеся цю інформацію через firewall-cmd --get-active-zones .
  6. Просмотр всех активных зон фаервола в CentOS 7
  7. Команда firewall-cmd --list-all виведе на екран правила, задані для зони за замовчуванням. Зверніть увагу на скріншот нижче. Ви бачите, що активній зоні &171;public&187; присвоєно правило &171;default&187; &8212; функціонування за замовчуванням, інтерфейс &171;enp0s3&187; і додано дві служби.
  8. Просмотр правил активных зон фаервола через терминал в CentOS 7
  9. Якщо з'явилася потреба дізнатися всі доступні зони брандмауера, введіть firewall-cmd --get-zones .
  10. Получение списка всех доступных зон фаервола через терминал в CentOS 7
  11. Параметри ж конкретної зони визначаються через firewall-cmd --zone=name --list-all , де name &8212; назва зони.
  12. Отображение правил указанной зоны фаервола через терминал в CentOS 7

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

Налаштування зон інтерфейсів

Як Ви знаєте з інформації вище, для кожного інтерфейсу визначається своя зона за замовчуванням. Він буде перебувати в ній до тих пір, поки настройки не зміняться користувачем або програмно. Можливий ручний перенесення інтерфейсу в зону на одну сесію, і здійснюється він активацією команди sudo firewall-cmd --zone=home --change-interface=eth0 . Результат &171;success&187; свідчить про те, що перенесення пройшло успішно. Нагадаємо, що такі настройки скидаються відразу після перезавантаження фаєрвола.

Назначение определенного интерфейса для зоны фаервола в CentOS 7

При подібному зміні параметрів слід враховувати, що робота сервісів може бути скинута. Деякі з них не підтримують функціонування в певних зонах, припустимо, SSH хоч і доступний в &171;home&187; , але в призначених для користувача або особливих сервіс працювати відмовиться. Переконатися в тому, що інтерфейс був успішно прив'язаний до нової гілки можна, ввівши firewall-cmd --get-active-zones .

Просмотр активной зоны фаервола и ее интерфейс в CentOS 7

Якщо ви захочете Скинути вироблені раніше настройки, просто виконайте рестарт брандмауера: sudo systemctl restart firewalld.service .

Перезапуск фаервола после внесения изменений в CentOS 7

Часом не завжди зручно змінювати зону інтерфейсу всього на одну сесію. В такому випадку буде потрібно редагувати конфігураційний файл, щоб всі налаштування ввелися на перманентній основі. Для цього ми радимо використовувати текстовий редактор nano , який встановлюється з офіційного сховища sudo yum install nano . Далі залишається зробити такі дії:

  1. Відкрийте файл конфігурації через редактор, ввівши sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 , де eth0 &8212; назва необхідного інтерфейсу.
  2. Открытие конфигурационного файла интерфейса фаервола в CentOS 7
  3. Підтвердьте справжність облікового запису для виконання подальших дій.
  4. Ввод пароля для открытия конфигурационного файла интерфейса в CentOS 7
  5. Відшукайте параметр &171;ZONE&187; і поміняйте його значення на потрібне, наприклад, public або home .
  6. Изменение зоны интерфейса через конфигурационный файл в CentOS 7
  7. Затисніть клавіші Ctrl + O , щоб зберегти зміни.
  8. Запись изменений в текстовом редакторе CentOS 7
  9. Не змінюйте ім'я файлу, а просто натисніть на Enter .
  10. Назначение файла для записи изменений в текстовом редакторе CentOS 7
  11. Вийдіть з текстового редактора через Ctrl + X .
  12. Выход из текстового редактора после изменений CentOS 7

Тепер зона інтерфейсу буде такою, якою ви її вказали, до моменту наступного редагування конфігураційного файлу. Щоб оновлені параметри вступили в дію, виконайте sudo systemctl restart network.service і sudo systemctl restart firewalld.service .

Встановлення зони за замовчуванням

Вище ми вже демонстрували команду, яка дозволяла дізнатися встановлену за замовчуванням зону. Її також можна змінити, встановивши параметр на свій вибір. Для цього в консолі досить прописати sudo firewall-cmd --set-default-zone=name , де name &8212; назва необхідної зони.

Назначение зоны фаервола по умолчанию в CentOS 7

Про успішність виконання команди буде свідчити напис &171;success&187; в окремому рядку. Після цього всі поточні інтерфейси прив'яжуться до зазначеної зоні, якщо іншого не задано в конфігураційних файлах.

Успешное назначение зоны по умолчанию в CentOS 7

Створення правил для програм і утиліт

На самому початку статті ми розповіли про дію кожної зони. Визначення сервісів, утиліт і програм в такі гілки дозволить застосувати для кожної з них індивідуальні параметри під запити кожного користувача. Для початку радимо ознайомитися з повним списком доступних на даний момент сервісів: firewall-cmd --get-services .

Команда для просмотра доступных в системе сервисов CentOS 7

Результат відобразиться прямо в консолі. Кожен сервер розділений пропуском, і в списку ви зможете з легкістю відшукати цікавить Вас інструмент. Якщо ж потрібний сервіс відсутній, його слід додатково встановити. Про правила інсталяції читайте в офіційній документації програмного забезпечення.

Список доступных сервисов в CentOS 7

Наведена вище команда демонструє лише назви послуг. Детальна інформація по кожному з них виходить через індивідуальний файл, що знаходиться по шляху /usr/lib/firewalld/services . Такі документи мають формат XML, шлях, наприклад, до SSH виглядає так: /usr/lib/firewalld/services/ssh.xml , а документ має наступний вміст:

SSH
Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.

Активується підтримка сервісу в певній зоні вручну. В &171;терміналі&187; слід задати команду sudo firewall-cmd --zone=public --add-service=http , де &45;&45;zone=public & 8212; зона для активації, а &45;&45;add-service=http &8212; назва сервісу. Врахуйте, що така зміна буде діяти тільки в межах однієї сесії.

Добавление сервиса в определенную зону фаервола CentOS 7

Постійне додавання здійснюється через sudo firewall-cmd --zone=public --permanent --add-service=http , а результат &171;success&187; свідчить про успішне завершення операції.

Перманентное добавление сервиса в зону фаервола CentOS 7

Переглянути повний список постійних правил для певної зони можна, відобразивши список в окремому рядку консолі: sudo firewall-cmd --zone=public --permanent --list-services .

Просмотр списка перманентных сервисов фаервола CentOS 7

Рішення неполадки з відсутністю доступу до сервісу

Стандартно в правилах брандмауера вказані найпопулярніші і безпечні сервіси як дозволені, проте деякі стандартні або сторонні додатки він блокує. У такому випадку Користувачеві вручну потрібно змінити налаштування, щоб вирішити проблему з доступом. Зробити це можна двома різними методами.

Кидок порту

Як відомо, всі мережеві сервіси використовують певний порт. Він запросто виявляється міжмережевим екраном, і по ньому можуть виконуватися блокування. Щоб уникнути таких дій з боку фаєрвола, потрібно відкрити необхідний порт командою sudo firewall-cmd --zone=public --add-port=0000/tcp , де &45;&45;zone=public & 8212; зона для порту, &45;&45;add-port=0000/tcp &8212; номер і протокол порту. Опція firewall-cmd --list-ports відобразить список відкритих портів.

Открытие порта в определенной зоне фаервола CentOS 7

Якщо ж вам необхідно відкрити порти, що входять в діапазон, скористайтеся рядком sudo firewall-cmd --zone=public --add-port=0000-9999/udp , де &45;&45;add-port=0000-9999/udp &8212; діапазон портів та їх протокол.

Открытие диапазона портов в определенной зоне фаервола CentOS 7

Наведені вище команди лише дозволять протестувати застосування подібних параметрів. Якщо воно пройшло успішно, слід додати ці ж порти в постійні настройки, а робиться це шляхом введення sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp або sudo firewall-cmd --zone=public --permanent --add-port=0000-9999/udp . Список відкритих постійних портів проглядається так: sudo firewall-cmd --zone=public --permanent --list-ports .

Визначення послуги

Як бачите, додавання портів не викликає ніяких труднощів, але процедура ускладнюється в тому випадку, коли додатків використовується велика кількість. Відстежити всі використовуються порти стає важко, через що більш правильним варіантом стане визначення сервісу:

  1. Скопіюйте файл конфігурації, написавши sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml , де service.xml & 8212; ім'я файлу сервісу, а example.xml &8212; назва його копії.
  2. Копирование файла настроек сервиса фаервола в CentOS 7
  3. Відкрийте копію для зміни через будь-який текстовий редактор, наприклад, sudo nano /etc/firewalld/services/example.xml .
  4. Запуск скопированного файла сервиса CentOS 7
  5. Для прикладу ми створили копію сервісу HTTP. У документі ви в основному бачите різні метадані, наприклад, коротке ім'я та опис. Впливає на роботу сервера тільки зміна номера порту і протоколу. Над рядком &171;</service>&187; слід додати <port protocol="tcp" port="0000"/> , щоб відкрити порт. tcp &8212; використовується протокол, а 0000 & 8212; номер порту.
  6. Внесение изменений в файл сервиса для открытия портов в CentOS 7
  7. Збережіть усі зміни ( Ctrl + O ), закрийте файл ( Ctrl + X ), а потім перезапустіть фаєрвол для застосування параметрів через sudo firewall-cmd --reload . Після цього сервіс з'явиться в списку доступних, який можна переглянути через firewall-cmd --get-services .
  8. Перезапуск сервиса фаервола в CentOS 7

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

Створення користувацьких зон

Ви вже знаєте, що спочатку в FirewallD створено велику кількість різноманітних зон з певними правилами. Однак трапляються ситуації, коли системному адміністратору потрібно створити призначену для користувача зону, як, наприклад, &171;publicweb&187; для встановленого веб-сервера або &171;privateDNS&187; &8212; для DNS-сервера. На цих двох прикладах ми і розберемо додавання гілок:

  1. Створіть дві нові перманентні зони командами sudo firewall-cmd --permanent --new-zone=publicweb і sudo firewall-cmd --permanent --new-zone=privateDNS .
  2. Добавление новых пользовательских зон фаервола CentOS 7
  3. Вони будуть доступні після перезавантаження інструменту sudo firewall-cmd --reload . Для відображення перманентних зон введіть sudo firewall-cmd --permanent --get-zones .
  4. Просмотр доступных зон фаервола в CentOS 7
  5. Надайте їм потрібні послуги, наприклад, &171;SSH&187; , &171;HTTP&187; і &171;HTTPS&187; . Робиться це командами sudo firewall-cmd --zone=publicweb --add-service=ssh , sudo firewall-cmd --zone=publicweb --add-service=http і sudo firewall-cmd --zone=publicweb --add-service=https , де &45;&45;zone=publicweb &8212; назва зони для додавання. Переглянути активність сервісів можна, прописавши firewall-cmd --zone=publicweb --list-all .
  6. Добавление сервисов в пользовательскую зону CentOS 7

Ця стаття навчила вас створювати власні зони та додавати до них послуги. Про встановлення їх за замовчуванням і присвоєння інтерфейсів ми вже розповіли вище, вам залишається лише вказати правильні назви. Не забувайте перезавантажувати міжмережевий екран після внесення будь-яких перманентних змін.

Як бачите, брандмауер FirewallD &8212; досить об'ємний інструмент, що дозволяє зробити максимально гнучку конфігурацію міжмережевого екрану. Залишилося тільки переконатися в тому, що утиліта запускається разом з системою і зазначені правила відразу ж починають свою роботу. Зробіть це командою sudo systemctl enable firewalld .

більше статей на цю тему: