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

Anonim

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

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

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

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

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

Детальніше: Відключення 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.

Читати далі