OPNsense — це дистрибутив брандмауера на основі операційної системи FreeBSD. На відміну від інших представлених програмних компонентів, OPNsense є незалежною операційною системою.
У концепції мережі OPNsense відповідає не лише за брандмауер. Скоріше, це комунікаційний центр, який, зокрема, виконує такі завдання:
Брандмауер і NAT
DNS сервер
сервер DHCP
NTP сервер
Проксі-сервер (для мережі LAN_OFFICE)
URL-фільтр (лише для мережі LAN_OFFICE)
Зворотний проксі
Керування сертифікатами
VPN сервер
Поточні описи базуються на OPNsense версії 20.
Спочатку завантажте офіційний стабільний DVD-образ amd64 зі сторінки завантаження OPNsense, розпакуйте завантажений файл bz2 і розмістіть витягнутий файл ISO на хост віртуалізації.
Створіть нову віртуальну машину – приклад розміру:
ОС: FreeBSD x64
2 ЦП
100 Гб місця на жорсткому диску
8 Гб оперативної пам'яті
3 мережеві карти з доступом до внутрішньої мережі LAN з такими VLAN:
VLAN 10 без тегів для LAN_MANAGEMENT
VLAN 11 для LAN_SERVER
VLAN 12 для LAN_OFFICE
VLAN 13 для LAN_BOSS
1 мережева карта з доступом до зовнішньої мережі WAN
У налаштуваннях віртуальної машини виберіть ISO-файл для зберігання даних як компакт-диск і вкажіть розташування ISO-файлу OPNsense, завантаженого вище. Також виберіть опцію «Підключатися при включенні».
Після запуску віртуальної машини відкрийте вікно консолі. Тепер ви повинні побачити текстовий майстер встановлення OPNsense.
Під час встановлення необхідно виконати наступні кроки:
Увійдіть за допомогою імені користувача «installer» і пароля «opnsense»
Почніть установку з «OK, let's go»
Змініть розкладку клавіш на не обхідну за допомогою "Змінити розкладку"
Прийміть налаштування середовища за допомогою «Прийняти ці налаштування»
Розпочніть керовану інсталяцію за допомогою "Accept these settings" (Керована інсталяція)
Вибір жорсткого диска, на який потрібно встановити OPNsense
Встановіть режим встановлення на "GPT/UEFI mode"
Підтвердьте запропонований розмір розділу підкачки, натиснувши "Yes"
Встановити пароль root
Перезапустіть систему
Після перезапуску віртуальні мережеві карти зазвичай ще потрібно правильно призначити. Мережеві карти в системі називаються, наприклад, залежно від використовуваного (віртуального) обладнання. Наприклад, em0, em1, ... або igb0, igb1, ... або hn0, hn1, ... або ...
Спочатку увійдіть до консолі OPNsense як root і виберіть опцію "1) Assign Interfaces" (Призначити інтерфейси).
VLAN тут не потрібні, оскільки вони вже призначені віртуальним мережевим картам через хост віртуалізації.
На хості віртуалізації знайдіть MAC-адреси чотирьох віртуальних мережевих карток OPNsense, а потім призначте правильні імена мережевих карток.
Подальше налаштування в основному здійснюється через веб-інтерфейс OPNsense.
Тепер ви можете отримати доступ до веб-інтерфейсу в мережі (внутрішній) за допомогою IP-адреси локальної мережі, яка відображається на консолі OPNsense (зазвичай: https://192.168.1.1).
Деталі доступу для цього:
Ім'я користувача: root
Пароль: <ви призначили собі під час процесу встановлення>
Увійдіть у веб-інтерфейс і увійдіть.
Коли ви вперше запускаєте веб-інтерфейс, майстер налаштування проведе вас через важливі компоненти початкової конфігурації. Рекомендується така інформація:
General Information
Ім'я хосту: напр. opensense
Домен: напр. gromada.intra
Поставте прапорець «Дозволити заміну DNS-серверів DHCP/PPP у WAN», якщо ви хочете використовувати DNS-сервер свого інтернет-провайдера.
Unbound DNS
Відзначте "Enable Resolver"
Time Server Information
Часовий пояс: Європа/Київ
Configure WAN Interface
Тип конфігурації IPv4: DHCP, за умови, що ваш Інтернет-провайдер призначив вам IP-адресу
Відзначте "Block RFC1918 Private Networks"
Поставте галочку "Block bogon networks"
Configure LAN Interface
IP-адреса локальної мережі: Наприклад 10.1.0.1
Маска підмережі: напр. 20
Після натискання "Reload" налаштування буде оновлено. Якщо ви змінили IP-адресу локальної мережі, ви повинні ввести нову IP-адресу в браузері, щоб знову отримати доступ до веб-інтерфейсу.
Ви можете отримати доступ до цього майстра налаштування пізніше в розділі «Система/Майстер налаштування».
Примітка. Якщо ви не використовуєте DHCP для налаштувань WAN, вам не слід залишати висхідний шлюз IPv4 встановленим на "Auto" в розділі Interfaces→WAN, а явно вказати шлюз. З налаштуванням "Auto" непередбачувана поведінка може відбуватися в різних місцях.
Якщо ви хочете отримати доступ до консолі OPNSense (наприклад, через Putty) або файлової системи (наприклад, через WinSCP) за допомогою клієнта SSH, вам потрібно активувати сервер SSH:
System / Settings / Administration / Secure Shell
Сервер Secure Shell: позначте: увімкнути Secure Shell
Якщо ви не використовуєте сертифікат для автентифікації:
Користувальний вхід: Перевірте: Дозволити вхід користувача root
Спосіб автентифікації: Перевірити: Дозволити вхід із паролем
Інструкції на цих сторінках базуються на наступному прикладі конфігурації мережі.
Це, звичайно, можна адаптувати до ваших власних потреб.
Підказки:
Маска підмережі та стандартний шлюз учасників мережі — це IP пов’язаного інтерфейсу OPNsense.
Класичної DMZ навмисно уникали: учасники мережі, які особливо заслуговують на захист, розміщені у власних підмережах (LAN_MANAGEMENT і LAN_SERVER) і захищені відповідними правилами брандмауера. Сервіси, доступні для працівників, доступні лише зсередини та ззовні будівлі через HAProxy.
Якщо це ще не зроблено, віртуальні мережеві карти потрібно призначити мережевим інтерфейсам за допомогою OPNsense у розділі «Інтерфейси/Призначення». Необхідні такі інтерфейси:
LAN_MANAGEMENT
LAN_SERVER
LAN_OFFICE
LAN_BOSS
WAN
Детально внутрішні мережеві інтерфейси налаштовані таким чином:
Interfaces/LAN_MANAGEMENT
General Configuration
Відзначте "Enable interface"
Description: LAN_MANAGEMENT
IPv4 Configuration Type: static
Static IPv4 configuration
IPv4 address: 10.1.254.1/24
IPv4 Upstream Gateway: Auto-detect
Interfaces/LAN_SERVER
General Configuration
Відзначте "Enable interface"
Description: LAN_SERVER
IPv4 Configuration Type: static
Static IPv4 configuration
IPv4 address: 10.1.100.1/24
IPv4 Upstream Gateway: Auto-detect
Interfaces/LAN_OFFICE
General Configuration
Відзначте "Enable interface"
Description: LAN_OFFICE
IPv4 Configuration Type: static
Static IPv4 configuration
IPv4 address: 10.1.0.1/24
IPv4 Upstream Gateway: Auto-detect
Interfaces/LAN_BOSS
General Configuration
Відзначте "Enable interface"
Description: LAN_BOSS
IPv4 Configuration Type: static
Static IPv4 configuration
IPv4 address: 10.1.16.1/24
IPv4 Upstream Gateway: Auto-detect
Усі необхідні правила брандмауера пояснюються на цій сторінці. Обов’язково видаліть усі правила за замовчуванням у формі "Default allow XXX to any rule", оскільки вони — без відповідних попередніх правил блокування — можуть призвести до прогалин у безпеці.
Для базового розуміння функціональності брандмауера OPNSense слід сказати, що...
Для кожного інтерфейсу можна визначити правила.
Весь трафік даних на інтерфейсі блокується без будь-яких правил.
Коли трафік даних відбувається в інтерфейсі, правила обробляються послідовно, починаючи зверху, доки не буде застосовано правило.
Спочатку створюється псевдонім з назвою RFC1918. Це стосується всіх приватних мереж і пізніше знадобиться в різних місцях під час визначення правил брандмауера:
Firewall/Aliases → Add
Name: RFC1918
Type: Network(s)
Content:
192.168.0.0/16
172.16.0.0/12
10.0.0.0/8
В принципі, запити, що надходять із мережі LAN_MANAGEMENT, повинні бути дозволені в усіх інших мережах (включаючи Інтернет).
Firewall/Rules/LAN_MANAGEMENT → Add
Action: Pass
Interface: LAN_MANAGEMENT
TCP/IP Version: IPv4+IPv6
Protocol: any
Source: LAN_MANAGEMENT net
Destination: any
Description: Allow LAN_MANAGEMENT to any
Починаючи з мереж LAN_SERVER, LAN_OFFICE і LAN_BOSS, запити до Інтернету та до самого брандмауера (наприклад, для служб DNS або NTP) повинні бути дозволені.
Підказки:
Примусове встановлення зв’язку через веб-фільтр у мережі LAN_OFFICE показано нижче. Тим не менш, наступні правила також повинні бути встановлені для цієї мережі.
Щоб дозволити Інтернет-зв’язок, нам потрібен псевдонім RFC1918, створений вище, і інвертуйте його (усі приватні мережі → інвертовано: Інтернет).
Firewall/Rules/LAN_SERVER sowie Firewall/Rules/LAN_OFFICE sowie Firewall/Rules/LAN_BOSS → Add
Action: Pass
Interface: LAN_SERVER (або мережа LAN_SERVER або мережа LAN_OFFICE)
TCP/IP Version: IPv4+IPv6
Protocol: any
Source: LAN_SERVER net (або мережа LAN_SERVER або мережа LAN_OFFICE)
Destination / Invert: гачок
Destination: RFC1918
Description: Дозволити неприватні мережі (Інтернет)
Firewall/Rules/LAN_SERVER sowie Firewall/Rules/LAN_SCHUELER sowie Firewall/Rules/LAN_BOSS → Add
Action: Pass
Interface: LAN_SERVER (або мережа LAN_SERVER або мережа LAN_OFFICE)
TCP/IP Version: IPv4+IPv6
Protocol: any
Source: LAN_SERVER net (або мережа LAN_SERVER або мережа LAN_OFFICE)
Destination: This Firewall
Description: Дозволити брандмауер
Зв’язок між мережею LAN_BOSS і мережею LAN_OFFICE, може бути дозволений (наприклад, для використання принтерів).
Firewall/Rules/LAN_BOSS
Action: Pass
Interface: LAN_BOSS
TCP/IP Version: IPv4+IPv6
Protocol: any
Source: LAN_BOSS
Destination: LAN_OFFICE
Description: Дозволити LAN_OFFICE
На запити DNS у мережах LAN_BOSS і LAN_OFFICE зазвичай має відповідати OPNSense.
Firewall/NAT/Port Forward → Add
Interface: LAN_BOSS und LAN_OFFICE (декілька варіантів!)
TCP/IP Version: IPv4
Protocol: TCP/UDP
Destination: any
Destination port range: from: DNS to: DNS
Redirect target IP: Single host or network: 127.0.0.1
Redirect target port: DNS
Description: перенаправляти DNS-запити на незв’язаний
Концепція мережі передбачає, що такі пристрої, як принтери або рішення для потоків (наприклад, HDMI-Sticks, Airserver, ...) розташовані в мережі LAN_OFFICE. Для автоматичного виявлення цих пристроїв за допомогою сервісу Bonjour з мережі LAN_BOSS необхідно встановити та налаштувати модуль повторювача MDNS.
Установка:
System/Firmware/Plugins/os-mdns-repeater → Install
конфігурація
Відзначте Enabled
Listen Interfaces: LAN_OFFICE, LAN_BOSS
Щоб клієнтам, підключеним до мережі, автоматично призначалися IP-адреси та інша мережева інформація, сервер DHCP для LAN_OFFICE має бути активований і налаштований.
Для цього перейдіть до Services/DHCPv4/LAN_OFFICE і встановіть такі налаштування:
General Options
Прапорець: : Enable DHCP server on the LAN_OFFICE interface
Діапазон: напр. з 10.1.11.1 по 10.1.11.254
NTP
Якщо ви хочете використовувати OPNsense як сервер часу для підключених пристроїв, введіть тут їх IP-адресу.
NTP Servers: напр. 10.1.0.1
Статичні відображення DHCP для цього інтерфейсу
Якщо ви хочете призначити статичні IP-адреси для пристроїв у мережі (наприклад, принтерів) через DHCP, спочатку знайдіть відповідну MAC-адресу пристрою та створіть новий статичний запис, натиснувши на символ плюса. напр. наприклад:
MAC Address: XX:XX:XX:XX:XX:XX
IP Address: 10.1.3.1
Hostname: PRN-EDV-3
Description: Drucker im Raum EDV 3
Навіть якщо в підмережах LAN_MANAGEMENT і LAN_SERVER переважно встановлені вручну IP-адреси, також рекомендується активувати для них сервер DHCP, щоб можна було швидко й легко встановити початковий зв’язок із підключеними клієнтами.
Приклади конфігурацій для DHCPv4 і LAN_BOSS, LAN_MANAGEMENT і LAN_SERVER відповідно
Services/DHCPv4/LAN_BOSS
Увімкнути: позначте Enable DHCP server on the LAN_BOSS interface
Діапазон: від 10.1.27.1 до 10.1.31.254
Сервери NTP: 10.1.16.1 (IP OPNsense)
Services/DHCPv4/LAN_MANAGEMENT
Увімкнути: позначте Enable DHCP server on the LAN_MANAGEMENTS interface
Діапазон: від 10.1.254.200 до 10.1.254.254
Сервер NTP: 10.1.254.1 (IP OPNsense)
Services/DHCPv4/LAN_SERVER
Увімкнути: поставте прапорець Enable DHCP server on the LAN_SERVER interface
Діапазон: від 10.1.100.200 до 10.1.100.254
Сервер NTP: 10.1.100.1
Формувальник дозволяє OPNsense якнайкраще використовувати доступну пропускну здатність Інтернету з точки зору якості обслуговування (QoS). Наступний підхід показує рівномірний розподіл доступної пропускної здатності між усіма учасниками мережі.
Firewall / Shaper / Settings / Pipes (Leitungen)
Pipe (для визначення швидкості Upload )
Відзначте enabled
bandwidth: <вкажіть тут швидкість завантаження вашої лінії Інтернету >
bandwith Metric: <укажіть правильну одиницю для вказаної вище швидкості >
mask: <залиште порожнім >
description:Наприклад: Вивантаження каналу (Upload)
Pipe (для вказівки швидкості Download )
Відзначте enabledbandwidth: <вкажіть тут швидкість завантаження вашої лінії Інтернету >
bandwith Metric: <вкажіть правильну одиницю для вказаної вище швидкості >
mask: <залиште порожнім >
description: Наприклад: Завантаження каналу (Download)
Firewall / Shaper / Settings / Queues (Черги)
Queue (для Upload)
Відзначте enabled
pipe: <Виберіть канал Upload>
weight: 100
mask: source
description: Черга-Upload
Queue (для Download)
Відзначте enabled
pipe: <Виберіть канал Download>
weight: 100
mask: destination
description: Черга-Download
Firewall / Shaper / Settings / Rules (Правила використання пропускної здатності)
Rule (для Upload)
Відзначте enabled
sequenze: <автоматично призначає систему >
interface: WAN
proto: ip
source: <Вкажіть тут мережу з маскою підмережі, напр. Наприклад: 10.1.0.0/20 >
src-port: any
destination: any
dst-port: any
target: <Вибір черги-Upload>
description: Правило-Upload
Rule (для Download)
Відзначте enabled
sequenze: <автоматично призначає систему >
interface: WAN
proto: ip
source: any
src-port: any
destination: <вкажіть тут мережу з маскою підмережі, напр. Наприклад: 10.1.0.0/20 >
dst-port: any
target: <Вибір черги-Download>
description: Правило-Download
Численні інші параметри налаштування можливі для формувача - наприклад для визначення пріоритетності телефонних дзвінків Voice-Over-IP або чогось подібного.
Концепція мережі передбачає, що доступ до веб-сайтів з мережі LAN_OFFICE можливий лише через проміжний проксі. Лише тоді перегляди веб-сайтів через порт 80 (http) або порт 443 (https) можна ефективно фільтрувати за допомогою фільтра URL-адрес squidGuard (див. нижче). Щоб максимально спростити роботу з проксі для всіх користувачів, він працює в прозорому режимі. Це означає, що жодних налаштувань не потрібно робити чи розповсюджувати клієнтам.
Щоб зашифровані https-запити також могли оброблятися через прозорий проксі-сервер відповідно до норм захисту даних, тобто без порушення сертифікатів, концепція мережі використовує опцію фільтрації за допомогою SNI (Індикація імені сервера): перш ніж браузер встановить зашифроване з’єднання з веб-сервер, він надсилає його, дає бажаний хост (FQDN) у незашифрованому вигляді. Цю інформацію може зчитувати прозорий проксі та використовувати для фільтрації.
До налаштувань за замовчуванням потрібно внести такі зміни:
Services / Web Proxy / Administration
General Proxy Settings
Позначте: Enable Proxy
Позначте : Enable DNS v4 first
Enable access logging: тут ви можете зареєструвати доступ до проксі-сервера, якщо це необхідно.
Local Cache Settings
Позначте: Enable local cache
Cache size in Megabytes: 10240
Прапорець: Enable Windows Update Cache (кешує оновлення Windows з Інтернету та робить їх доступними для інших клієнтів Windows у мережі. Це значно зменшує навантаження на лінію Інтернету, спричинене оновленнями Windows, якщо у вас немає власного сервера WSUS для Windows використовуються оновлення. )
General Forward Settings
Proxy Interfaces: LAN_OFFICE
Proxy Port: 3128
Позначте: Enable Transparent HTTP Proxy
Позначте: Enable SSL inspection (обмежується лише інформацією SNI, установивши прапорець нижче)
Позначте: Log SNI information only
SSL Proxy Port: 3129
CA to use: Наприклад: gromada.intra-ca
Якщо ви ще не створили центр сертифікації для сертифікатів (CA), зробіть це, виконавши такі дії:
System / Trust / Authorities → Add
Descriptive name: Наприклад: gromada.intra-ca
Method: Create an internal Certificate Authority
Відповідна інформація для: Country Code, State, City, Organization und Email Address
Два основних порти для викликів зовнішніх веб-сайтів (RFC1918 інвертований!) перенаправляються на проксі:
Firewall / NAT / Port Forward
1. Правило
Interface: LAN_OFFICE
TCP/IP Version: IPv4
Protocol: TCP
Destination / Invert: Галочка
Destination: RFC1918
Destination port range: from: HTTP to: HTTP
Redirect target IP: Single host or Network: 127.0.0.1
Redirect target Port: 3128
Description: Перенаправлення інтернет-http-трафіку на проксі
2. Правило
Interface: LAN_OFFICE
TCP/IP Version: IPv4
Protocol: TCP
Destination / Invert: Галочка
Destination: RFC1918
Destination port range: from: HTTPS to: HTTPS
Redirect target IP: Single host or Network: 127.0.0.1
Redirect target Port: 3129
Description: Перенаправлення інтернет-https-трафіку на проксі
Основною метою використання проксі-сервера є використання його в поєднанні з URL-фільтром, який призначений для захисту учнів від небажаного вмісту в Інтернеті.
«UT1-web-categorization-list Університету Тулузи — це вільнодоступний, регулярно оновлюваний список, упорядкований за категоріями, який можна використовувати разом із веб-фільтром OPNsense для класифікації відвідувань веб-сайтів за темами (наприклад, порнографія, прославлення насильства). , соціальні мережі, ...) Тут слід зазначити, що хоча це працює дуже добре, ніколи не може бути 100% захисту від веб-вмісту.
Services / Web Proxy / Administration / Remote Access Control Lists → Додайте список, натиснувши на символ плюса
Перевірка enabled
Filename: UT1
URL: ftp://ftp.ut-capitole.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
Description: UT1
→ Save changes
→ Download ACLs
Завантаження списку може зайняти деякий час. Після завершення завантаження ви можете знову відредагувати щойно створений вами список (shallalist) і вибрати предметні області в категоріях, які слід заблокувати в мережі.
Рекомендації щодо блокування (блокування слід проводити за погодженням з керівництвом):
anonvpn (Служби анонімізації )
chat (служби чату)
dating (сайти знайомств)
dynamic (доступ до адрес DynDNS; наприклад, домашня мережа студента)
gamble (Ігри)
hacking (Hacking)
hobby_games-misc (онлайн ігри )
hobby_games-online (онлайн ігри )
porn (порнографія )
sex_lingerie (порнографія )
socialnet (соціальні мережі)
spyware (шпигунське програмне забезпечення )
violence (насильство)
warez (Hacking)
Приклад: щотижневе оновлення Shallalist у понеділок о 00:00
Services / Web Proxy / Administration / Remote Access Control List → Розклад із Cron
Перевірка enabled
Minutes: 0
Hours: 0
Day of month: *
Months: *
Days of week: 1
Command: Download and reload external proxy ACLs
Description: отримати ACL проксі
Services / Web Proxy / Administration / Forward Proxy / Access Control List
Whitelist
Для доменів/URL-адрес, які ви не хочете блокувати, але заблоковані Shallalist
<вкажіть потрібні записи, розділені комами >
Blacklist
Для доменів/URL-адрес, які ви хочете заблокувати, але не включені до списку Shallalist
<вказати небажані записи, розділені комами >
Щоб користувачі не могли просто обійти фільтр URL-адрес, ввівши відповідну IP-адресу веб-сайту в адресний рядок браузера замість URL-адреси, введення IP-адрес як URL-адрес можна заблокувати за допомогою такого регулярного виразу:
Services / Web Proxy / Administration / Forward Proxy / Access Control List
Blacklist: [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
З міркувань безпеки доступ до служб у мережі має бути лише зашифрованим. Щоб створити дійсні сертифікати для цього, для кожної служби потрібне повне ім’я публічного домену. Це також робить можливим безпечний доступ до служб ззовні (можна запобігти за бажанням).
Більшість уже забезпечили відповідне доменне ім’я для своєї домашньої сторінки (тут як приклад: lutskrada.gov.ua). Якщо ваш веб-хост підтримує це, ви можете створити відповідні субдомени для служб у мережі, які потім мають бути спрямовані на підключення до Інтернету - напр. наприклад:
Веб-сервіси
nextcloud.gromada.gov.ua (доступ до Nextcloud)
www.nextcloud.gromada.gov.ua (Багато користувачів вводять «www» як субдомен перед послугою. Ось чому Nextcloud також має бути доступним через «www...».
collabora.gromada.gov.ua (онлайн-офіс для Nextcloud)
usermanagement.ihre-schule.de (доступ до менеджера облікових записів LDAP для керування користувачами)
selfservice.ihre-schule.de (доступ до служби паролів самообслуговування)
fog.ihre-schule.de (доступ до сервера зображень FOG)
Інші послуги
ldap.ihre-schule.de (доступ для зовнішніх запитів ldap)
radius.ihre-schule.de (сертифікат для сервера Radius)
OPNsense налаштовано в розділі «Встановлення та налаштування зворотного проксі-сервера», щоб зазначені доменні імена можна було використовувати для доступу до служб як усередині мережі, так і, за бажанням, ззовні. Наприклад, використовує Наприклад, працівник може отримати доступ до Nextcloud як з дому, так і зі локальної мережі, вказавши URL-адресу https://nextcloud.gromada.gov.ua (а не вказавши IP-адресу).
Існує два варіанти, щоб створені субдомени вказували на IP-адресу підключення до Інтернету для локальної мережі:
У цьому випадку ви вказуєте запис A із фіксованою IP-адресою підключення до Інтернету в мережі для кожного субдомену, створеного в налаштуваннях сервера імен на веб-хостингу.
У цьому випадку вам потрібен постачальник DynDNS, з пулу якого ви можете зарезервувати доменне ім’я, яке вказує на IP-адресу підключення до Інтернету в мережі. Щоб оновити регулярні зміни IP-адреси для доменного імені, зарезервованого постачальником DynDNS, ви можете скористатися вбудованим клієнтом оновлення OPNsense:
Services / Dynamic DNS → Add
Відзначте галочкою Enable
Service Type: тут ви можете вибрати з багатьох постачальників DynDNS
Interface to monitor: WAN
Hostname: Наприклад, gromada-xyz.dynprovider.org
Username / Password: доступ до даних провайдера DynDNS
Після успішного налаштування служби DynDNS ви вказуєте запис CNAME із доменним іменем DynDNS підключення до Інтернету в мережі для кожного створеного субдомену в налаштуваннях сервера імен на веб-хосту.
Зворотний проксі вирішує, чи і кому він пересилає запити, адресовані йому.
Якщо ви хочете зробити лише одну службу доступною ззовні (наприклад, Nextcloud), ви також можете вибрати простіший маршрут і працювати з відповідними правилами NAT у маршрутизаторі (наприклад, для портів 80 і 443).
Однак є вагомі причини для використання зворотного проксі-сервера в концепції мережі:
Є кілька служб, які повинні бути доступні ззовні через ті самі порти (наприклад, Nextcloud, Collabora, Password Service), тому для цього недостатньо правил NAT.
Зворотний проксі також використовується в концепції мережі для надання відповідних сертифікатів для запитів. Це значно зменшує навантаження на основний веб-сервер (наприклад, Nextcloud).
Зворотний проксі-сервер також використовується для запитів із мережі, тому такі служби, як Nextcloud, також можуть бути доступні звідти в зашифрованому вигляді через їхнє повне доменне ім’я та маршрутизуються внутрішньо, а не через Інтернет.
Спочатку потрібно встановити зворотний проксі під назвою HAProxy:
System / Firmware / Plugins / os-haproxy → Install
Після цього необхідно активувати HAProxy:
Services / HAProxy / Settings / Service Settings
Позначте: Enable HAProxy
Щоб відрізнити запити до HAProxy, які дозволені лише з внутрішньої (lan) або внутрішньої та зовнішньої (lan_wan), потрібні дві віртуальні IP-адреси локальної мережі, які HAProxy може слухати:
Interfaces / Virtual IPs / Settings → Add
1. Virtual IP (інтерфейс HAProxy для внутрішніх і зовнішніх запитів )
Mode: IP Alias
Interface: LAN_SERVER
Address: 10.1.100.2/32
Description: HAProxy_lan_wan
2. Virtual IP (інтерфейс HAProxy виключно для внутрішніх запитів )
Mode: IP Alias
Interface: LAN_SERVER
Address: 10.1.100.3/32
Description: HAProxy_lan
Крім того, імена псевдонімів зберігаються в OPNsense для обох IP-адрес, доступ до яких здійснюється пізніше:
Firewall / Aliases → Add
1. Alias (інтерфейс HAProxy для внутрішніх і зовнішніх запитів)
Name: HAProxy_lan_wan
Type: Host(s)
Content: 10.1.100.2
2. Alias (інтерфейс HAProxy виключно для внутрішніх запитів)
Name: HAProxy_lan
Type: Host(s)
Content: 10.1.100.3
Як зовнішні, так і внутрішні запити HTTP і HTTPS слід пересилати на відповідні інтерфейси HAProxy.
Firewall / NAT / Port Forward → Add
1. Перенаправлення (на порт 80)
Interface: WAN
TCP/IP Version: IPv4
Protocol: TCP
Destination: any
Destination port range: from: HTTP to: HTTP
Redirect target IP: HAProxy_lan_wan
Redirect target Port: http
Description: HAProxy_lan_wan
2. Weiterleitung (auf Port 443)
Interface: WAN
TCP/IP Version: IPv4
Protocol: TCP
Destination: any
Destination port range: from: HTTPS to: HTTPS
Redirect target IP: HAProxy_lan_wan
Redirect target Port: https
Description: HAProxy_lan_wan
Щоб внутрішні виклики до веб-служб у мережі надходили безпосередньо на зворотний проксі-сервер, а не маршрутизувалися через Інтернет, має існувати відповідне перенаправлення сервера імен на віртуальну IP-адресу потрібного модуля HAProxy. Якщо веб-служба має бути доступна лише в будівлі, перенаправте на віртуальну IP-адресу HAProxy_lan, інакше на HAProxy_lan_wan.
Приклад веб-сервісу Nextcloud, який також має бути доступним ззовні:
Services / Unbound DNS / Overrides / Host Overrides → Add
Host: nextcloud
Domain: Наприклад ihre-gromada.gov.ua
Type: A or AAAA (IPv4 or IPv6 address)
IP: z. B. 10.1.100.2 (virtuelle IP von HAProxy_lan_wan)
З мережі LAN_OFFICE запити до HAProxy направляються через веб-проксі (Squid). Оскільки в мережі LAN_BOSS немає активного веб-проксі, потрібні два додаткові правила:
Firewall/Rules/LAN_BOSS → Add
Action: Pass
Interface: LAN_BOSS
TCP/IP Version: IPv4+IPv6
Protocol: any
Source: LAN_BOSS net
Destination: HAProxy_lan_wan
Description: Allow HAProxy_lan_wan
Firewall/Rules/LAN_BOSS → Add
Action: Pass
Interface: LAN_BOSS
TCP/IP Version: IPv4+IPv6
Protocol: any
Source: LAN_LEHRER net
Destination: HAProxy_lan
Description: HAProxy_lan
Справжні сервери — це служби, доступ до яких здійснюється через HAProxy.
Налаштуйте реальний сервер для кожної вашої веб-служби – незалежно від того, мають вони бути доступні ззовні чи ні:
nextcloud.gromada.gov.ua
collabora.gromada.gov.ua
Приклад для веб-сервісу nextcloud.gromada.gov.ua:
Services / HAProxy / Settings / Real Servers → Add
Name: nextcloud_host
FQDN or IP: 10.1.100.8 (IP-адреса вашого Nextcloud )
Port: 80
SSL: жодних перешкод
Verify SSL CA: жодних перешкод
Один або кілька справжніх серверів можна об’єднати з резервним пулом. Навіть якщо для кожної веб-служби надається лише один реальний сервер (наприклад, є лише один сервер Nextcloud), на цьому етапі для кожної служби потрібно налаштувати пул серверів.
Приклад для веб-сервісу nextcloud.gromada.gov.ua:
Services / HAProxy / Settings / Virtual Services / Backend Pools → Add
Name: nextcloud_backend
Servers: nextcloud_host
Публічні служби HAProxy — це контактні точки, які приймають внутрішні та зовнішні запити.
Для концепції мережі потрібні три державні служби:
один для внутрішніх і зовнішніх запитів через http,
один для внутрішніх і зовнішніх запитів через https і
один для виключно внутрішніх запитів через https.
Services / HAProxy / Settings / Virtual Services / Public Services → Add
Name: http_lan_wan
Description: внутрішні та зовнішні http запити
Listen Addresses:
Наприклад: 10.1.100.2:80 (HAProxy_lan_wan)
Наприклад: 10.1.100.3:80 (HAProxy_lan)
Type: HTTP / HTTPS (SSL offloading)
Default Backend Pool: none
Enable SSL offloading: Без перешкод
X-Forwarded-For header: Галочкак
Services / HAProxy / Settings / Virtual Services / Public Services → Add
Name: https_lan_wan
Description: внутрішні та зовнішні https запити
Listen Addresses:
Наприклад: 10.1.100.2:443 (HAProxy_lan_wan)
Наприклад: 10.1.100.3:443 (HAProxy_lan)
Type: HTTP / HTTPS (SSL offloading)
Default Backend Pool: немає
Enable SSL offloading: перехоплення
Certificates: Web GUI SSL certificate (пізніше буде замінено на сертифікати Let's Encrypt )
X-Forwarded-For header: Галочкак
Services / HAProxy / Settings / Virtual Services / Public Services → Add
Name: https_lan
Description: тільки внутрішні https запити
Listen Addresses:
Наприклад: 10.1.100.3:443 (HAProxy_lan)
Type: HTTP / HTTPS (SSL offloading)
Default Backend Pool: none
Enable SSL offloading: перехоплення
Certificates: Web GUI SSL certificate (пізніше буде замінено на сертифікати Let's Encrypt )
X-Forwarded-For header: Галочкак
Умови — це попередньо визначені умови, необхідні для наступних правил реакцій HAProxy.
По-перше, вам потрібна умова для кожної веб-служби, яка застосовується, якщо запит із відповідним ім’ям домену надсилається до HAProxy.
Приклад для веб-сервісу nextcloud.gromada.gov.ua:
Services / HAProxy / Settings / Rules & Checks / Conditions → Add
Name: nextcloud
Condition type: Host ends with
Host Suffix: nextcloud.gromada.gov.ua
Вам також потрібна умова, за якої HAProxy розпізнає, що запит до нього не був зашифрований:
Services / HAProxy / Settings / Rules & Checks / Conditions → Add
Name: not-ssl
Condition type: Traffic is SSL (локально розшифрований )
Negate condition: Галочкак
Правила — це попередньо визначені правила щодо того, як HAProxy має реагувати, коли виникає одна чи більше умов.
По-перше, вам потрібне правило для кожної веб-служби, яке обманом змушує HAProxy перенаправляти запит, адресований йому, у відповідний серверний пул.
Приклад для веб-сервісу nextcloud.gromada.gov.ua:
Services / HAProxy / Settings / Rules & Checks / Rules → Add
Name: nextcloud
Test type: if
Select conditions: nextcloud
Execute function: Use specified Backend Pool
Use backend pool: nextcloud_backend
Вам також потрібно правило, яке переспрямовує незашифровані HTTP-запити на https:
Services / HAProxy / Settings / Rules & Checks / Rules → Add
Name: redirect_ssl
Test type: if
Select conditions: not-ssl
Execute function: http-request-redirect
HTTP Redirect: scheme https code 301
Оскільки кожен http-запит до однієї з веб-служб має бути перенаправлений на https, вони призначають правило dir redirect_ssl кожному серверному пулу.
Приклад для бекенд-пулу nextcloud_backend:
HAProxy / Settings / Virtual Services / Backend Pools / nextcloud_backend → Edit
Select Rules: redirect_ssl
Загальнодоступна служба http_lan_wan має перенаправляти всі запити, зроблені до неї, до відповідного бекенду опитування:
HAProxy / Settings / Virtual Services / Public Services / http_lan_wan → Edit
Select Rules: Наприклад: nextcloud керування користувачами opnsense collabora
Загальнодоступна служба https_lan має відповідати лише на запити https, які мають бути доступні лише внутрішньо:
HAProxy / Settings / Virtual Services / Public Services / https_lan → Edit
Select Rules: Наприклад: туман керування користувачами opnsense
Загальнодоступна служба https_lan_wan призначена для відповіді як на внутрішні, так і на зовнішні https-запити:
HAProxy / Settings / Virtual Services / Public Services / https_lan_wan → Edit
Select Rules: Наприклад: nextcloud collabora
Якщо ви використовуєте HAProxy для пересилання запитів до Nextcloud, запити до служб Caldav і Carddav Nextcloud все одно повинні враховуватися.
Services / HAProxy / Settings / Rules & Checks / Conditions → Add
1. Condition:
Name: nextcloud-caldav
Condition type: Path starts with
Path Prefix: /.well-known/caldav
2. Condition:
Name: nextcloud-carddav
Condition type: Path starts with
Path Prefix: /.well-known/carddav
Services / HAProxy / Settings / Rules & Checks / Rules → Add
Name: nextcloud-caldav-carddav
Test type: if
Select conditions: nextcloud-caldav, nextcloud-carddav
Logical operator for conditions: OR
Execute function: http-request set-path
Set path: /remote.php/dav
1. Public Service
HAProxy / Settings / Virtual Services / Public Services / http_lan_wan → Edit
Додати до вибраних правил: nextcloud-caldav-carddav
2. Public Service
HAProxy / Settings / Virtual Services / Public Services / https_lan_wan → Edit
Додати до вибраних правил: nextcloud-caldav-carddav
Якщо ви хочете використовувати Nextcloud Talk/Spreed, вам потрібно трохи збільшити параметр тайм-ауту сервера HAProxy, щоб уникнути тайм-ауту сигнального сервера.
Services / HAProxy / Settings / Settings / Default Parameters
Server Timeout: 40s
Використовуючи сервер OpenVPN, ви можете, наприклад, B. отримати доступ до внутрішньої мережі ззовні як адміністратор.
Для налаштування сервера OpenVPN доступний майстер, який також зберігає необхідні налаштування брандмауера:
VPN / OpenVPN / Servers → Скористайтеся майстром для налаштування нового сервера
Type of Server: Local User Access
Certificate Authority → Add new CA
Descripive Name: напр. gromada.intra-ca
Country Code:напр. UA
Відповідні записи для : State or Province, City, Organization, und Email
→ Add new CA
Виберіть сертифікат сервера → Додати новий сертифікат
Descriptive name: напр. gromada.intra
Country Code: напр. UA
Відповідні записи для: State or Province, City, Organization, und Email
→ Button: Add Certificate
General OpenVPN Server Information
Interface: WAN
Protocol: UDP
Local Port: 1194
Tunnel Settings
IPv4 Tunnel Network: 10.0.8.0/24 (мережа відмінна від мережі вашої локальної)
IPv4 Local Network: напр. 10.1.0.0/20,10.1.16.0/20,10.1.100.0/24,10.1.254.0/24 (для адміністраторів, усі внутрішні підмережі - налаштуйте, якщо потрібно )
Трафік від клієнтів до сервера
Перевірте правило брандмауера
Трафік від клієнтів через VPN
Поставте галочку біля правила OpenVPN Rule
Створивши групу для доступу до VPN, ви можете зробити такі налаштування:
Дозвіл на підключення через VPN лише для учасників групи
Обмеження веб-інтерфейсу OPNsense членами групи, щоб пов’язані користувачі могли змінювати лише свій пароль
System / Access / Groups → Add
Group name: openvpnusers → Save
Знову відредагуйте групу openvpnusers
Assigned Privileges → Додати: Перевірте систему GUI: User Password Manager
System / Access / Users → Add
Username: <бажане ім'я користувача >
Password: <бажаний пароль Passwort>
Full Name: <ПІБ>
Group membership: openvpnusers
Членство в групі: openvpnusers
Certificate: Позначте: Натисніть, щоб створити сертифікат користувача → Save
Method: Create an internal Certificate
Descriptive name: <введіть тут те саме ім’я, що й вище для імені користувача >
Certificate authority: <введіть тут той самий центр сертифікації, що й під час налаштування сервера OpenVPN, напр. gromada.intra >
VPN / OpenVPN / Client Export
Hostname: IP oder Dyndns-Adresse
Поставте прапорець: Використовувати випадковий локальний порт, щоб кілька клієнтів могли підключитися одночасно
Після створення користувача VPN ви можете надати йому файли, персоналізовані для його системи (наприклад, Windows, Mac, ...) для встановлення та налаштування клієнта OpenVPN:
VPN / OpenVPN / Client Export
→ OpenVPN Clients
→ Виберіть потрібні файли для відповідного користувача