4 Налаштування брандмауера
У цьому розділі ви повинні бути адміністратором або вміти sudo
, щоб стати адміністратором.
Як і будь-який сервер, ви повинні переконатися, що він захищений від зовнішнього світу та у вашій локальній мережі. Ваш приклад сервера має лише інтерфейс локальної мережі, але можна мати два інтерфейси, кожен з яких спрямований до вашої мережі LAN та WAN.
Налаштування брандмауера - firewalld
¶
Для правил firewalld вам потрібно використовувати цю базову процедуру або бути знайомими з цими концепціями. Припущеннями є мережа LAN 192.168.1.0/24 і міст під назвою incusbr0. Щоб було зрозуміло, ваш сервер Incus може мати багато інтерфейсів, один з яких, можливо, спрямований до вашої WAN. Ви також створите зону для мостової та локальної мереж. Це лише для ясності зони. Інші назви зон не застосовуються. Ця процедура передбачає, що ви вже знаєте основи firewalld.
firewall-cmd --new-zone=bridge --permanent
Вам потрібно перезавантажити брандмауер після додавання зони:
firewall-cmd --reload
Ви хочете дозволити весь рух з мосту. Просто додайте інтерфейс і змініть ціль із «default» на «ACCEPT»:
Важливо
Зміна цільової зони «брандмауера» *має* здійснюватися за допомогою опції `--permanent`, тож ми можемо також ввести цей прапорець в інших наших командах і відмовитися від опції `--runtime-to-permanent`.
Примітка
Якщо вам потрібно створити зону, у якій ви хочете дозволити повний доступ до інтерфейсу чи джерела, але не хочете вказувати жодних протоколів чи служб, тоді ви *потрібно* змінити ціль із «default» на «ACCEPT». Те саме стосується «ВІДХИЛЕННЯ» та «ВІДХИЛЕННЯ» для певного IP-блоку, для якого у вас є спеціальні зони. Зона «скидання» подбає про це за вас, доки ви не використовуєте спеціальну зону.
firewall-cmd --zone=bridge --add-interface=incusbr0 --permanent
firewall-cmd --zone=bridge --set-target=ACCEPT --permanent
Якщо припустити, що помилок немає і все працює, перезавантажте:
firewall-cmd --reload
Якщо ви зараз перерахуєте свої правила за допомогою firewall-cmd --zone=bridge --list-all
, ви побачите:
bridge (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: incusbr0
sources:
services:
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Зверніть увагу, що ви також хочете дозволити свій локальний інтерфейс. Знову ж таки, включені зони названі невідповідно для цього. Створіть зону та використовуйте вихідний діапазон IP для локального інтерфейсу, щоб забезпечити доступ:
firewall-cmd --new-zone=local --permanent
firewall-cmd --reload
Додайте вихідні IP-адреси для локального інтерфейсу та змініть ціль на «ACCEPT»:
firewall-cmd --zone=local --add-source=127.0.0.1/8 --permanent
firewall-cmd --zone=local --set-target=ACCEPT --permanent
firewall-cmd --reload
Перерахуйте «локальну» зону, щоб переконатися, що ваші правила існують за допомогою firewall-cmd --zone=local --list all
, яка покаже:
local (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 127.0.0.1/8
services:
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Ви хочете дозволити SSH із нашої надійної мережі. Для цього дозвольте вихідним IP-адресам використовувати вбудовану «довірену» зону. За замовчуванням метою цієї зони є «ACCEPT».
firewall-cmd --zone=trusted --add-source=192.168.1.0/24
Додайте послугу в зону:
firewall-cmd --zone=trusted --add-service=ssh
Якщо все працює, перемістіть свої правила на постійні та перезавантажте правила:
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
Перелік вашої «довіреної» зони покаже:
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 192.168.1.0/24
services: ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
«Загальнодоступна» зона ввімкнена за замовчуванням, а SSH дозволено. З міркувань безпеки ви не хочете, щоб SSH дозволявся в «загальнодоступній» зоні. Переконайтеся, що ваші зони правильні та що доступ до сервера ви отримуєте через одну з IP-адрес локальної мережі (у нашому прикладі). Ви можете заблокувати себе на сервері, якщо не підтвердите це, перш ніж продовжити. Коли ви впевнені, що маєте доступ із правильного інтерфейсу, видаліть SSH із загальнодоступної зони:
firewall-cmd --zone=public --remove-service=ssh
Перевірте доступ і переконайтеся, що ви не заблоковані. Якщо ні, перенесіть свої правила на постійні, перезавантажте та винесіть зону "публічно", щоб забезпечити видалення SSH:
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-all
На вашому сервері можуть бути інші інтерфейси. Ви можете використовувати вбудовані зони, якщо це доречно, але якщо назви здаються недостатньо вдалими, ви можете додати зони. Просто пам’ятайте, що якщо у вас немає служб або протоколів, які вам потрібно дозволити або відхилити спеціально, вам потрібно буде змінити цільову зону. Ви можете зробити це, якщо він працює з використанням інтерфейсів, як у випадку з мостом. Якщо вам потрібен детальніший доступ до послуг, використовуйте натомість вихідні IP-адреси.
Author: Steven Spencer
Contributors: Ezequiel Bruni, Ganna Zhyrnova