Yamaha RTXでファイアウォールルール(フィルタルール)を設定する場合の操作をまとめます。Yamaha RTXのファイアウォールはデフォルトの挙動は戻り方向を自動的に許可しないステートレスファイアウォールです。もし、戻り方向を自動的に許可したいならばdynamicオプションを指定します。
設定まとめ
ファイアウォールルールの定義 (ステートレス)
以下のようなコマンドでファイアウォールルールを定義する事ができます。
# ip filter <フィルタ番号> <タイプ> <送信元IPアドレス> [ <宛先IPアドレス> [ <プロトコル> [ <送信元ポート番号> [<宛先ポート番号>]]]]
タイプは通信を許可するか拒否するかなどの指定です。指定可能なタイプは以下の通りです。
タイプ | 挙動 |
---|---|
pass | 許可する (ログ記録なし) |
pass-log | |
pass-nolog | 許可する (ログ記録なし) |
reject | 拒否する (ログ記録あり) |
reject-log | |
reject-nolog | 拒否する (ログ記録なし) |
上記以外にも「restrict」「restrict-log」「restrict-nolog」という指定もあります。詳細は「9.1.10 IP パケットのフィルタの設定」を参照ください
例えば、icmpを全て許可するならば以下のような指定です。
ip filter 100000 pass * * icmp
例えば、192.168.100.0/24に対してicmpを許可するならば以下のような指定です。
ip filter 100100 pass * 192.168.100.0/24 icmp
例えば、udp tracerouteが使用するポート番号33434から33523までを許可するならば以下のような指定です。
ip filter 100200 pass * * udp * 33434-33523
ファイアウォールルールの定義 (ステートフル)
戻り方向を許可するならば、ip filterの後にdynamicを付与します。
# ip filter dynamic <フィルタ番号> <送信元IPアドレス> <宛先IPアドレス> <プロトコル>
dynamicは全てのプロトコル番号やポート番号を指定できるわけではありません。公式ドキュメントで「ニーモニック / IPプロトコル」のみが指定可能です
戻り方向も含めてsshを許可する例は以下の通りです。
ip filter dynamic 200000 * 200.0.0.0/8 ssh
戻り方向も含めてtcpを許可する例は以下の通りです。
ip filter dynamic 200100 * 200.0.0.0/8 tcp
ファイアウォールルールの適用
あらかじめ作成したファイアウォールルールを適用するには以下のコマンドを使用します。
ip lan2 secure filter <方向> <フィルタ列> [ dynamic <フィルタ列> ]
例えば、lan2のin(ingress)方向にフィルタを適用するには以下のように指定します。
ip lan secure filter in 100010 100020 100030
例えば、lan2のout(egress)方向に通常のフィルタとダイナミックフィルタを同時に適用するには以下のように指定します。
ip lan secure filter out 100010 100020 100030 dynamic 200010 200020
動作確認
動作確認の構成
以下の環境で動作確認を行います。
+-----------------+ | Rocky Linux 8.4 | | host201 | +-------+---------+ ens192 | .201 | | 201.201.201.0/24 | ens224 | .200 +-------+---------+ | Rocky Linux 8.4 | | host200 | +-------+---------+ ens192 | .200 | | 200.200.200.0/24 | lan2 | .1 +-------+---------+ | Yamaha RTX 810 | | R1 | +-------+---------+ lan1 | .1 | | 192.168.100.0/24 | ens192 | .100 +-------+---------+ | Rocky Linux 8.4 | | host100 | +-------+---------+ ens224 | .100 | | 192.168.101.0/24 | ens192 | .101 +-------+---------+ | Rocky Linux 8.4 | | host101 | +-----------------+
初期設定
lan2へのip addressとstatic routeが設定されている状態で動作確認をします。
[R1:RTX810] ip route default gateway 200.200.200.200 ip route 192.168.0.0/16 gateway 192.168.100.100 ip lan1 address 192.168.100.1/24 ip lan2 address 200.200.200.1/24 telnetd host lan dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.2-192.168.100.191/24
host100, host200はルーティングを許可する設定を投入します。
/sbin/sysctl -w net.ipv4.ip_forward=1
host100, host101, host200, host201はfirewalldを無効化します。
systemctl disable firewalld.service --now
動作確認 (1) 片方向の通信許可
WANからLANへの通信方向に対して、host101が属するセグメント(192.168.101.0/24)へのicmpを許可し、さらにhost100が属するセグメント(192.168.100.0/24)へのudp tracerouteを許可します。
[R1:RTX810] ip filter 100000 pass * 192.168.101.0/24 icmp ip filter 100010 pass * 192.168.100.0/24 udp * 33434-33523 ip lan2 secure filter in 100000 100010
host100へのpingは失敗するものの、host101へのpingは成功する事を確認します。
[Host200:Rocky8.4] [root@host200 ‾]# ping -c 3 192.168.100.100 PING 192.168.100.100 (192.168.100.100) 56(84) bytes of data. --- 192.168.100.100 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 81ms [root@host200 ‾]# [root@host200 ‾]# [root@host200 ‾]# [root@host200 ‾]# ping -c 3 192.168.101.101 PING 192.168.101.101 (192.168.101.101) 56(84) bytes of data. 64 bytes from 192.168.101.101: icmp_seq=1 ttl=62 time=1.07 ms 64 bytes from 192.168.101.101: icmp_seq=2 ttl=62 time=0.844 ms 64 bytes from 192.168.101.101: icmp_seq=3 ttl=62 time=0.867 ms --- 192.168.101.101 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 42ms rtt min/avg/max/mdev = 0.844/0.926/1.068/0.103 ms [root@host200 ‾]#
host100へのtracerouteは成功するものの、host101へのtracerouteは失敗する事を確認します。
[Host200:Rocky8.4] [root@host200 ‾]# traceroute -n 192.168.100.100 traceroute to 192.168.100.100 (192.168.100.100), 30 hops max, 60 byte packets 1 200.200.200.1 0.773 ms 0.685 ms 0.650 ms 2 192.168.100.100 1.004 ms 0.990 ms 0.977 ms [root@host200 ‾]# [root@host200 ‾]# [root@host200 ‾]# traceroute -n 192.168.101.101 traceroute to 192.168.101.101 (192.168.101.101), 30 hops max, 60 byte packets 1 * * * 2 * * * 3 * * * 4 * * * 5 * * * 6 *^C [root@host200 ‾]#
動作確認 (2) 戻り含む通信許可
LANからWANへの通信方向に対して、host201へのsshを許可します。dynamicオプションを付与し戻り方向も自動的に許可するようにします。
[R1:RTX810] ip filter dynamic 200000 * 201.201.201.201 ssh ip lan2 secure filter out dynamic 200000
host201へのpingは失敗するものの、sshは成功する事を確認します。
[Host100:Rocky8.4] [root@host100 ‾]# ping -c 3 201.201.201.201 PING 201.201.201.201 (201.201.201.201) 56(84) bytes of data. --- 201.201.201.201 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 77ms [root@host100 ‾]# [root@host100 ‾]# [root@host100 ‾]# ssh 201.201.201.201 Last login: Sat Jul 3 19:47:19 2021 from 200.200.200.1 [root@host201 ‾]#