YAMAHAのルータのVPNの通信をフィルタリングする
前提
YAMAHAのルータでAWSのVPCとIPSecでVPNを張っている想定です。
ローカルネットワークを192.168.0.0/24、AWSのVPCを172.31.0.0/16とします。
AWS側にはEC2のWEBサーバ172.31.0.10があり、ローカルネットワークからVPN越しでWEBサーバにアクセスする運用です。
なんでフィルタリング?
AWSのWEBサーバはセキュリティグループの設定で192.168.0.0/24からの接続は80ポートしか許可していないものとします。
その場合、80ポートに絞っているのでセキュリティは保たれていると思われるかもしれません。
しかし、AWSのセキュリティグループはOUTバウンドが0.0.0.0/0で許可されており、INは制限をしていてもOUTはそのままにして運用されている場合も少なくありません。
その場合、AWS側からローカルネットワークへの接続は全許可の状態です。このままでは、AWS側が不正アクセスで侵害されてしまった場合にローカルネットワーク側にも難なく入られてしまい危険です。
YAHAMAルータのフィルタリング設定
https://www.rtpro.yamaha.co.jp/RT/manual/rt-common/ip/ip_filter.html
VPN接続にフィルタする場合は ip tunnel secure filter 〜のコマンドを使います。
最初に確認すること
まず、pass-logのフィルタを作成し、現在の接続がどのような通信をしているかSYSLOGに出力します。
※以下の設定はVPNがtunnel1とtunnel2で冗長化されている想定
ip filter 200001 pass-log * * tcp * *
tunnel select 1
ip tunnel secure filter in 200001
ip tunnel secure filter out 200001
tunnel select 2
ip tunnel secure filter in 200001
ip tunnel secure filter out 200001
そうするとIN側に設定すべきネットワークとポート、OUT側に設定すべきネットワークとポートが可視化されます。
意外と忘れがちなのがBGPのポートの通信の許可です。
ip filter 200002 pass * * tcp 179 *
ip filter 200003 pass * * tcp * 179
フィルタを作成しよう
ログにより、IN側は172.31.0.0/16の80ポートから192.168.0.0/24の任意のポートへ、OUT側は192.168.0.0/24の任意のポートから172.31.0.0/16の80ポートへ通信が発生していることがわかりました。
それらの通信を許可し、それ以外の通信は遮断するフィルタを作成します。
ip filter 200010 pass 172.31.0.0/16 192.168.0.0/24 tcp www *
ip filter 200019 reject 172.31.0.0/16 192.168.0.0/24 * * *
ip filter 200020 pass 192.168.0.0/24 172.31.0.0/16 tcp * www
ip filter 200029 reject 192.168.0.0/24 172.31.0.0/16 * * *
作成したフィルタを設定します。
tunnel select 1
ip tunnel secure filter in 200002 200003 200010 200019
ip tunnel secure filter out 200002 200003 200020 200029
tunnel select 2
ip tunnel secure filter in 200002 200003 200010 200019
ip tunnel secure filter out 200002 200003 200020 200029
これで設定ができました。
SYSLOGを確認しよう
フィルタを設定して通信が途絶えてしまった場合、SYSLOGを確認して必要な通信が遮断されていないか確認しましょう。