Налаштування DMZ за допомогою VLAN

DMZ — це концепція безпеки. Вона полягає в розділенні внутрішньої мережі (LAN) принаймні на дві частини: мережу користувачів (LAN) і зону DMZ. Зазвичай зона DMZ ізольована: з Інтернету дозволено доступ лише до певних портів у зоні DMZ, тоді як сама зона DMZ не має права ініціювати з'єднання до WAN чи LAN. Таким чином, навіть якщо сервер у DMZ буде зламаний, шкода обмежується цією зоною. Мета DMZ — створити окремий набір правил файрволу, який суворо регулює вхідний і вихідний трафік DMZ.

Публічні сервери завжди є найуразливішою частиною будь-якої мережі, навіть якщо вони:

  • налаштовані та захищені професійно,
  • регулярно оновлюються,
  • та ретельно моніторяться (журнали відправляються поштою і переглядаються).

Багато шкідливих сканерів у мережі перевіряють відомі TCP-порти, намагаючись використати вразливості. Наприклад, Apache — один із найпоширеніших вебсерверів — має численні POV (точки вразливості). Див. базу CVE щодо вразливостей Apache або вразливості Apache 2.4.

Докладніше про поділ вашої LAN-секції на кілька мереж (типово це один міст):

Можна налаштувати правила файрволу просто на основі IP-адрес публічних серверів (див. NAT для публічного сервера в LAN), але це менш безпечно. Якщо зловмисник отримає доступ до публічного сервера — усі інші вузли можуть опинитися під загрозою.

Більш безпечне рішення — створити окрему VLAN для DMZ, додати її в нову зону файрволу і налаштувати правила лише для цієї зони.

Нижче приклад конфігурації перемикача (switch), який присвоює порти VLAN відповідно до зон DMZ.

:!: Пристрої в DMZ мають бути підключені через дротовий Ethernet (а не Wi-Fi): це і продуктивніше, і легше для VLAN-конфігурації.

Налаштуйте перемикач у /etc/config/network або через LuCI → Network → Switch.

Цей приклад заснований на референсній топології. Пристрій STA-server2 — це публічний вебсервер з доступом з Інтернету.

Для перевірки портів перемикача використовуйте:

swconfig list
swconfig dev switch0 show

:!: Зверніть увагу, що фізичне маркування портів на корпусі може не відповідати їх номерам у системі.

Відповідність портів (приклад для Atheros/Qualcomm):

  • 0 — WAN
  • 1–4 — порти GigE LAN
  • 5 — eth1 (до CPU)
  • 6 — eth0 (до CPU і WLAN)

WLAN (2.4GHz 802.11n) також працює через eth0.

Типовий `/etc/config/network` має такі VLAN:

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'
 
config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 5'
 
config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '1 2 3 4 6'

Щоб виділити DMZ, перенаправте порт 1 до окремої VLAN:

config switch_vlan
        option device 'switch0'
        option vlan '102'
        option ports '2 3 4 6t'
	list comment 'vlan102: LAN порти'
 
config switch_vlan
        option device 'switch0'
        option vlan '103'
        option ports '1 6t'
	list comment 'vlan103: DMZ в LAN'

:!: Обов'язково вказуйте тегування (6t) для CPU (і WLAN, якщо потрібно).

:!: Уникайте використання параметра `vid`, оскільки за замовчуванням він дорівнює `vlan` — додаткове вказування може призвести до помилок.

:!: Для деяких комутаторів (Realtek/Atheros) слід очищати ARL-кеш після зміни VLAN, інакше пакети можуть бути відкинуті через неправильне MAC-відображення.

Додайте інтерфейс для DMZ:

config 'interface' dmz
        option 'ifname' eth0.103
        option 'proto'   static
        option 'ipaddr'  192.168.30.1
        option 'netmask' 255.255.255.0

Значення `ifname` — це `<інтерфейс>.<vlan>`. Підмережа повинна бути унікальною.

Після налаштування файрволу DNS буде доступний, а от DHCP потрібно налаштувати вручну в /etc/config/dhcp:

config dhcp 'dmz'
	option interface 'dmz'
	option start '50'
	option limit '70'
	option leasetime '12h'

Також бажано закріпити публічний сервер через статичний DHCP:

config host
	option name 'STA-server2'
	option dns '1'
	option mac '24:B6:FD:24:59:B9'
	option ip '192.168.30.20'
	option leasetime '12h'

Найважливіше — це налаштування правил файрволу. Кожна VLAN має бути окремою зоною:

config 'zone'
       option 'name' 'dmz'
       option 'input' 'REJECT'
       option 'output' 'REJECT'
       option 'forward' 'REJECT'
       option 'network' 'dmz'

Наступний крок — дозволити:

1. HTTP/HTTPS із WAN до STA-server2 2. DHCPDISCOVER / DHCPOFFER 3. DNS із DMZ 4. SSH з LAN до DMZ (для обслуговування)

# Переадресація HTTP(S)
config redirect             
        option target 'DNAT'
        option src 'wan'
        option src_dport '80 443'
        option proto 'tcp'
        option family 'ipv4'
        option dest 'dmz'
        option dest_ip '192.168.30.20'
        option dest_port '80'
        option name 'DNAT-HTTP-WAN-DMZ'
        option enabled '1'
 
# DHCPDISCOVER
config 'rule'
	option src 'dmz'
	option proto 'udp'
	option family 'ipv4'
	option src_port 68
	option dest_port 67
	option target 'ACCEPT'
	option name 'ACCEPT-DHCPDISCOVER-DMZ'
	option enabled '1'
 
# DHCPOFFER
config 'rule'
	option dest 'dmz'
	option proto 'udp'
	option family 'ipv4'
	option src_port 67
	option dest_port 68
	option target 'ACCEPT'
	option name 'ACCEPT-DHCPOFFER-DMZ'
	option enabled '1'
 
# DNS
config 'rule'
       option src 'dmz'
       option proto 'tcp udp'
       option dest 'wan'
       option dest_port 53
       option target 'ACCEPT'
       option name 'ACCEPT-DNS-DMZ-WAN'
       option enabled '1'
 
# SSH із LAN
config rule   
       option src 'lan'
       option dest 'dmz'
       option proto 'tcp'
       option family 'ipv4'
       option dest_port '22'
       option target 'ACCEPT'      
       option name 'ACCEPT-SSH-LAN-DMZ'
       option enabled '1'

:!: Якщо ви хочете отримати доступ до LuCI з WAN, але порт 80 вже використовується — використовуйте інший порт (наприклад, 8080):

config redirect
        option target 'DNAT'
        option src 'wan'
        option src_dport '8080'
        option proto 'tcp'
        option family 'ipv4'
        option dest_port '80'
        option name 'DNAT-HTTP-WAN-DEVICE'
        option enabled '1'
  • Last modified: 2025/06/01 11:12
  • by vazaz