VyOS Firewall (ACL) 設定は以下2種類があります
- Interface に設定する
- eth0 等の各インターフェースに、通過するパケットの向き(local/in/out)に応じ設定
- zone-policy を使った設定
- インターフェースを zone に割り当て、zone間のトラフィックに対し設定
Interface に比べ zone-policy は設定行数が多くなりがちですが、
-
eth0 (global) -> eth1 (DMZ)
のトラフィックは許可 -
eth0 (global) -> eth2 (internal)
のトラフィックは禁止 -
eth1 (DMZ) -> eth2 (internal)
のトラフィックは許可
といった、より細かなトラフィック制御が可能となります。
今回は 「インターネットからVyOS自身へのICMPパケットを許可」 というルールを、Interface / zone-policy それぞれで試した際の設定をメモとして記録しておきます。
なお、以下 VyOS フォーラム記事を参考にしました。
Question zone-policy for local-zone
設定サンプル
VyOSバージョン:1.1.7
注意点:
- Interface設定では、インターネットからVyOS宛てのみ制御しているため、VyOSからのトラフィックは全て許可されます。
- zone-policy設定では "local-zone = VyOS自身との通信" のみ制御しているため、VyOS経由のトラフィックは全て許可されます。
構成
-
eth0
: Global (インターネット) -
eth3
: admin (管理ポート) -
eth0 <-> VyOS
: ICMPのみ許可 -
eth3 <-> VyOS
: すべて許可
Interface based firewall
set firewall name internet_to_global default-action 'drop'
set firewall name internet_to_global rule 1 action 'accept'
set firewall name internet_to_global rule 1 protocol 'icmp'
set interfaces ethernet eth0 address '10.0.0.1/24'
set interfaces ethernet eth0 firewall local name 'internet_to_global'
zone-policy based firewall
set zone-policy zone global default-action 'drop'
set zone-policy zone global description "Zone eth0"
set zone-policy zone global interface 'eth0'
set zone-policy zone thisvyos default-action drop
set zone-policy zone thisvyos description "This VyOS itself"
set zone-policy zone thisvyos local-zone
set zone-policy zone admin default-action 'drop'
set zone-policy zone admin description "Zone eth3"
set zone-policy zone admin interface 'eth3'
## Allow anything to/from admin port "eth3"
set firewall name admin_to_thisvyos default-action 'accept'
set firewall name thisvyos_to_admin default-action 'accept'
set zone-policy zone thisvyos from admin firewall name 'admin_to_thisvyos'
set zone-policy zone admin from thisvyos firewall name 'thisvyos_to_admin'
## Allow ICMP from global to this vyos (local)
set firewall name global_to_thisvyos default-action 'drop'
set firewall name global_to_thisvyos rule 1 action 'accept'
set firewall name global_to_thisvyos rule 1 protocol 'icmp'
set zone-policy zone thisvyos from global firewall name 'global_to_thisvyos'
set firewall name thisvyos_to_global default-action 'drop'
set firewall name thisvyos_to_global rule 1 action 'accept'
set firewall name thisvyos_to_global rule 1 protocol 'icmp'
set zone-policy zone global from thisvyos firewall name 'thisvyos_to_global'