Встановлений в операційній системі Firewall використовується для запобігання несанкціонованого проходження трафіку між комп'ютерними мережами. Вручну або автоматично створюються спеціальні правила для брандмауера, які і відповідають за управління доступом. В ОС, розробленої на ядрі Linux, CentOS 7 є вбудований фаєрвол, а управління ним здійснюється за допомогою брандмауера. За замовчуванням задіяний FirewallD, і про його налаштування ми б хотіли поговорити сьогодні.
Налаштовуємо Firewall в CentOS 7
Як вже було сказано вище, стандартним брандмауером в CentOS 7 призначена утиліта FirewallD. Саме тому настройка фаервола буде розглянута на прикладі цього інструменту. Задати правила фільтрації можна і за допомогою тієї ж iptables, але це виконується трохи іншим чином. Зі зміною згаданої утиліти рекомендуємо ознайомитися, перейшовши за наступним посиланням, а ми ж почнемо розбір FirewallD.Якщо ж вам одного разу буде потрібно тимчасово або перманентно відключити брандмауер, радимо скористатися інструкцією, представленої в інший нашій статті за наступним посиланням.
Детальніше: Відключення Firewall в CentOS 7
Перегляд правил за замовчуванням і доступних зон
Навіть працює в штатному режимі фаєрвол має свої певні правила і доступні зони. Перед початком редагування політик радимо ознайомитися з поточною конфігурацією. Робиться це за допомогою простих команд:
- Визначити функціонуючу за замовчуванням зону допоможе команда firewall-cmd --get-default-zone.
- Після її активації ви побачите новий рядок, де відобразиться потрібний параметр. Наприклад, на скріншоті нижче активної вважається зона «public».
- Проте активними можуть бути відразу кілька зон, до того ж вони прив'язуються до окремого інтерфейсу. Дізнайтеся цю інформацію через firewall-cmd --get-active-zones.
- Команда firewall-cmd --list-all виведе на екран правила, задані для зони за замовчуванням. Зверніть увагу на скріншот нижче. Ви бачите, що активній зоні «public» присвоєно правило «default» - функціонування за замовчуванням, інтерфейс «enp0s3» і додано два сервісу.
- Якщо з'явилася потреба дізнатися всі доступні зони брандмауера, введіть firewall-cmd --get-zones.
- Параметри ж конкретної зони визначаються через firewall-cmd --zone = name --list-all, де name - назва зони.
Після визначення необхідних параметрів можна переходити до їх зміни і додаванню. Давайте детально розберемо кілька найпопулярніших конфігурацій.
Параметри зон інтерфейсів
Як ви знаєте з інформації вище, для кожного інтерфейсу визначається своя зона за замовчуванням. Він буде перебувати в ній до тих пір, поки налаштування не зміняться користувачем або програмно. Можливий ручної перенесення інтерфейсу в зону на одну сесію, і здійснюється він активацією команди sudo firewall-cmd --zone = home --change-interface = eth0. Результат «success» свідчить про те, що перенесення пройшов успішно. Нагадаємо, що такі настройки скидаються відразу після перезавантаження фаервола.
При подібному зміні параметрів слід враховувати, що робота сервісів може бути скинута. Деякі з них не підтримують функціонування в певних зонах, припустимо, SSH хоч і доступний в «home», але в призначених для користувача або особливих сервіс працювати відмовиться. Переконатися в тому, що інтерфейс був успішно прив'язаний до нової гілки можна, запровадивши firewall-cmd --get-active-zones.
Якщо ви захочете скинути зроблені раніше настроювання, просто виконайте рестарт брандмауера: sudo systemctl restart firewalld.service.
Часом не завжди зручно змінювати зону інтерфейсу всього на одну сесію. У такому випадку потрібно редагувати конфігураційний файл, щоб всі налаштування ввелись на перманентної основі. Для цього ми радимо використовувати текстовий редактор nano, який встановлюється з офіційного сховища sudo yum install nano. Далі залишається провести такі дії:
- Відкрийте конфігураційний файл через редактор, ввівши sudo nano / etc / sysconfig / network-scripts / ifcfg-eth0, де eth0 - назва необхідного інтерфейсу.
- Підтвердіть справжність облікового запису для виконання подальших дій.
- Пошукайте параметр «ZONE» і поміняйте його значення на потрібне, наприклад, public або home.
- Затисніть клавіші Ctrl + O, щоб зберегти зміни.
- Не змінюйте ім'я файлу, а просто натисніть на Enter.
- Вийдіть з текстового редактора через Ctrl + X.
Тепер зона інтерфейсу буде такою, якою ви її вказали, до моменту наступного редагування конфігураційного файлу. Щоб оновлені параметри вступили в дію, виконайте sudo systemctl restart network.service і sudo systemctl restart firewalld.service.
Установка зони за замовчуванням
Вище ми вже демонстрували команду, яка дозволяла дізнатися встановлену за замовчуванням зону. Її також можна змінити, встановивши параметр на свій вибір. Для цього в консолі досить прописати sudo firewall-cmd --set-default-zone = name, де name - ім'я необхідної зони.
Про успішність виконання команди буде свідчити напис «success» в окремому рядку. Після цього всі поточні інтерфейси прив'яжуться до зазначеної зоні, якщо іншого не задано в конфігураційних файлах.
Створення правил для програм і утиліт
На самому початку статті ми розповіли про дії кожної зони. Визначення сервісів, утиліт і програм в такі галузі дозволить застосувати для кожної з них індивідуальні параметри під запити кожного користувача. Для початку радимо ознайомитися з повним списком доступних на даний момент сервісів: firewall-cmd --get-services.
Результат відобразиться прямо в консолі. Кожен сервер розділений прогалиною, і в списку ви зможете з легкістю відшукати Вас інструмент. Якщо ж потрібний сервіс відсутній, його слід додатково встановити. Про правила інсталяції читайте в офіційній документації програмного забезпечення.
Зазначена вище команда демонструє тільки назви сервісів. Детальна інформація по кожному з них виходить через індивідуальний файл, що знаходиться по шляху / 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 - назва сервісу. Врахуйте, що така зміна буде діяти тільки в межах однієї сесії.
Перманентне додавання здійснюється через sudo firewall-cmd --zone = public --permanent --add-service = http, а результат «success» свідчить про успішне завершення операції.
Переглянути повний список постійних правил для певної зони можна, відобразивши список в окремому рядку консолі: sudo firewall-cmd --zone = public --permanent --list-services.
Рішення неполадки з відсутністю доступу до сервісу
Стандартно в правилах брандмауера вказані найпопулярніші і безпечні сервіси як дозволені, проте деякі стандартні або сторонні додатки він блокує. У такому випадку користувачеві вручну потрібно змінити налаштування, щоб вирішити проблему з доступом. Зробити це можна двома різними методами.
проброс порту
Як відомо, всі мережеві сервіси використовують певний порт. Він запросто виявляється фаєрволом, і по ньому можуть виконуватися блокування. Щоб уникнути таких дій з боку фаервола, потрібно відкрити необхідний порт командою sudo firewall-cmd --zone = public --add-port = 0000 / tcp, де --zone = public - зона для порту, --add-port = 0000 / tcp - номер і протокол порту. Опція firewall-cmd --list-ports відобразить список відкритих портів.
Якщо ж вам необхідно відкрити порти, що входять в діапазон, скористайтеся рядком sudo firewall-cmd --zone = public --add-port = 0000-9999 / udp, де --add-port = 0000-9999 / udp - діапазон портів і їх протокол.
Наведені вище команди лише дозволять протестувати застосування подібних параметрів. Якщо воно пройшло успішно, слід додати ці ж порти в постійні настройки, а робиться це шляхом введення 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.
визначення сервісу
Як бачите, додавання портів не викликає ніяких труднощів, але процедура ускладнюється в тому випадку, коли додатків використовується велика кількість. Відстежити всі використовуються порти стає важко, через що більш правильним варіантом стане визначення сервісу:
- Скопіюйте конфігураційний файл, написавши sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml, де service.xml - ім'я файлу сервісу, а example.xml - назва його копії.
- Відкрийте копію для зміни через будь-який текстовий редактор, наприклад, sudo nano /etc/firewalld/services/example.xml.
- Для прикладу ми створили копію сервісу HTTP. У документі ви в основному бачите різні метадані, наприклад, коротке ім'я і опис. Впливає на роботу сервера тільки зміна номера порту і протоколу. Над рядком «» слід додати, щоб відкрити порт. tcp - використовується протокол, а 0000 - номер порту.
- Збережіть всі зміни (Ctrl + O), закрийте файл (Ctrl + X), а потім перезапустіть фаєрвол для застосування параметрів через sudo firewall-cmd --reload. Після цього сервіс з'явиться в списку доступних, який можна переглянути через firewall-cmd --get-services.
Вам залишається тільки вибрати найбільш підходящий метод вирішення проблеми з доступом до сервісу і виконати наведені інструкції. Як бачите, всі дії виконуються досить легко, і ніяких труднощів виникнути не повинно.
Створення призначених для користувача зон
Ви вже знаєте, що спочатку в FirewallD створено велику кількість різноманітних зон з певними правилами. Однак трапляються ситуації, коли системному адміністратору потрібно створити призначену для користувача зону, як, наприклад, «publicweb» для встановленого веб-сервера або «privateDNS» - для DNS-сервера. На цих двох прикладах ми і розберемо додавання гілок:
- Створіть дві нові перманентні зони командами sudo firewall-cmd --permanent --new-zone = publicweb і sudo firewall-cmd --permanent --new-zone = privateDNS.
- Вони будуть доступні після перезавантаження інструменту sudo firewall-cmd --reload. Для відображення перманентних зон введіть sudo firewall-cmd --permanent --get-zones.
- Дайте їм необхідні послуги, наприклад, «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.
З цієї статті ви дізналися, як створювати призначені для користувача зони і додавати в них сервіси. Щодо розміщення їх за замовчуванням і присвоєння інтерфейсів ми вже розповіли вище, вам залишається лише вказати правильні назви. Не забувайте перезавантажувати міжмережевий екран після внесення будь-яких перманентних змін.
Як бачите, брандмауер FirewallD - досить об'ємний інструмент, що дозволяє зробити максимально гнучку конфігурацію брандмауера. Залишилося тільки переконатися в тому, що утиліта запускається разом з системою і зазначені правила відразу ж починають свою роботу. Зробіть це командою sudo systemctl enable firewalld.