Налаштування Firewall в CentOS 7

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

Налаштовуємо Firewall в CentOS 7

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

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

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

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

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

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

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

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

  1. Запустіть класичний «Термінал» будь-яким зручним способом, наприклад, через меню «Додатки».
  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. З'явиться новий рядок. Значення «running» говорить про те, що фаєрвол працює.
  12. Відображення поточного стану фаервола в операційній системі CentOS 7

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

Детальніше: Відключення Firewall в CentOS 7

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

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

  1. Визначити функціонуючу за замовчуванням зону допоможе команда firewall-cmd --get-default-zone .
  2. Перегляд встановленої за замовчуванням зони фаервола в CentOS 7

  3. Після її активації ви побачите новий рядок, де відобразиться потрібний параметр. Наприклад, на скріншоті нижче активної вважається зона «public».
  4. Відображення встановленої за замовчуванням зони фаервола в CentOS 7

  5. Проте активними можуть бути відразу кілька зон, до того ж вони прив'язуються до окремого інтерфейсу. Дізнайтеся цю інформацію через firewall-cmd --get-active-zones .
  6. Перегляд всіх активних зон фаервола в CentOS 7

  7. Команда firewall-cmd --list-all виведе на екран правила, задані для зони за замовчуванням. Зверніть увагу на скріншот нижче. Ви бачите, що активній зоні «public» присвоєно правило «default» - функціонування за замовчуванням, інтерфейс «enp0s3» і додано два сервісу.
  8. Перегляд правил активних зон фаервола через термінал в CentOS 7

  9. Якщо з'явилася потреба дізнатися всі доступні зони брандмауера, введіть firewall-cmd --get-zones .
  10. Отримання списку всіх доступних зон фаервола через термінал в CentOS 7

  11. Параметри ж конкретної зони визначаються через firewall-cmd --zone=name --list-all , де name - назва зони.
  12. Відображення правил зазначеної зони фаервола через термінал в CentOS 7

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

Параметри зон інтерфейсів

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

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

При подібному зміні параметрів слід враховувати, що робота сервісів може бути скинута. Деякі з них не підтримують функціонування в певних зонах, припустимо, SSH хоч і доступний в «home», але в призначених для користувача або особливих сервіс працювати відмовиться. Переконатися в тому, що інтерфейс був успішно прив'язаний до нової гілки можна, запровадивши 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 - назва необхідного інтерфейсу.
  2. Відкриття конфігураційного файлу інтерфейсу фаервола в CentOS 7

  3. Підтвердіть справжність облікового запису для виконання подальших дій.
  4. Введення пароля для відкриття конфігураційного файлу інтерфейсу в CentOS 7

  5. Пошукайте параметр «ZONE» і поміняйте його значення на потрібне, наприклад, 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 - ім'я необхідної зони.

Призначення зони фаервола за замовчуванням в CentOS 7

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

Успішне призначення зони за замовчуванням в 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.

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

Додавання сервісу в певну зону фаервола CentOS 7

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

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

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

Перегляд списку перманентних сервісів фаервола CentOS 7

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

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

проброс порту

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

Відкриття порту в певній зоні фаервола CentOS 7

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

Відкриття діапазону портів в певній зоні фаервола 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 - ім'я файлу сервісу, а example.xml - назва його копії.
  2. Копіювання файлу налаштувань сервісу фаервола в CentOS 7

  3. Відкрийте копію для зміни через будь-який текстовий редактор, наприклад, sudo nano /etc/firewalld/services/example.xml .
  4. Запуск скопійованого файлу сервісу CentOS 7

  5. Для прикладу ми створили копію сервісу HTTP. У документі ви в основному бачите різні метадані, наприклад, коротке ім'я і опис. Впливає на роботу сервера тільки зміна номера порту і протоколу. Над рядком « »Слід додати , Щоб відкрити порт. tcp - використовується протокол, а 0000 - номер порту.
  6. Внесення змін до файл сервісу для відкриття портів в CentOS 7

  7. Збережіть всі зміни (Ctrl + O), закрийте файл (Ctrl + X), а потім перезапустіть фаєрвол для застосування параметрів через sudo firewall-cmd --reload . Після цього сервіс з'явиться в списку доступних, який можна переглянути через firewall-cmd --get-services .
  8. Перезапуск сервісу фаервола в CentOS 7

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

Створення призначених для користувача зон

Ви вже знаєте, що спочатку в FirewallD створено велику кількість різноманітних зон з певними правилами. Однак трапляються ситуації, коли системному адміністратору потрібно створити призначену для користувача зону, як, наприклад, «publicweb» для встановленого веб-сервера або «privateDNS» - для 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. Дайте їм необхідні послуги, наприклад, «SSH», «HTTP» і «HTTPS». Робиться це за допомогою команд sudo firewall-cmd --zone=publicweb --add-service=ssh , sudo firewall-cmd --zone=publicweb --add-service=http і sudo firewall-cmd --zone=publicweb --add-service=https , де --zone = publicweb - назва зони для додавання. Переглянути активність сервісів можна, прописавши firewall-cmd --zone=publicweb --list-all .
  6. Додавання сервісів в призначену для користувача зону CentOS 7

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

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