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