FireWallについて

Last-modified: Wed, 04 May 2016 15:43:57 JST (534d)
  • EdgeRouteLiteは、VyattaライクなEdgeOSで動作するルータです。
    コマンドの使い方などはVyattaとほぼ同様です。
    ここでは、EdgeRouterLiteに基本的な設定をする中で、ファイヤーウォールの
    基本的な動作設定を行います。
    なお、EdgeRouteLiteにはWeb画面があるのですが、ここではシリアルコンソールにて
    設定をしていきます。

まずは、基本的なブロードバンドルータとしての設定をします。
設定をする際は、直接インターネットと接続されていない安全な環境下で行ってください。

  • EdgeRouterLiteには、一般的なブロードバンドルータと違い、WAN、LANなどの
    区別はありません。それは設定する人が任意に定義します。
    ここでは、Eth0をWAN側、Eth2をLAN側として設定します。
# NICにIP割り当て
set interfaces ethernet eth0 address 'dhcp'
set interfaces ethernet eth0 description 'WAN'
set interfaces ethernet eth0 duplex 'auto'
set interfaces ethernet eth0 speed 'auto'

set interfaces ethernet eth2 address '10.0.0.1/24'
set interfaces ethernet eth2 description 'LAN'
set interfaces ethernet eth2 duplex 'auto'
set interfaces ethernet eth2 speed 'auto'
  • 一般的なブロードバンドルータ同様、LAN側にDHCPサーバを立てます。
    DHCPのアドレス範囲は100-200とします。
# DHCPサーバ設定
set service dhcp-server shared-network-name DHCP authoritative 'disable'
set service dhcp-server shared-network-name DHCP subnet 10.0.0.0/24 default-router '10.0.0.1'
set service dhcp-server shared-network-name DHCP subnet 10.0.0.0/24 dns-server '10.0.0.1'
set service dhcp-server shared-network-name DHCP subnet 10.0.0.0/24 lease '86400'
set service dhcp-server shared-network-name DHCP subnet 10.0.0.0/24 start 10.0.0.100 stop '10.0.0.200'
  • このままだと、LAN側でDNSが引けないので、DNSフォワードの設定をします。
# DNSフォワード設定
set service dns forwarding cache-size '150'
set service dns forwarding listen-on 'eth2'
set service dns forwarding 'system'
set system name-server '8.8.8.8'
  • LAN側の複数台マシンがWAN側と通信ができるよう、NAT(IPマスカレード)の設定をします。
    なお、この設定はEdgeOS独自の設定となります。
    ルールの番号は5000以上1000以下でないとダメという仕様です。
# IPマスカレード設定
set service nat rule 5000 description 'LAN_NAT'
set service nat rule 5000 outbound-interface 'eth0'
set service nat rule 5000 source address '10.0.0.1/24'
set service nat rule 5000 type 'masquerade'
  • いちいちシリアルコンソールから設定するのも辛いので、SSHサーバを立ち上げます。
# SSHサーバ設定
set service ssh port '22'
set service ssh protocol-version 'v2'
  • ここまで設定出来たら、commit、saveを行い、設定を有効化します。
    LAN側につないだPCにDHCPからIPが割り当てられ、WAN側へPINGが飛ぶはずです。
    また、SSHでルータに接続ができるはずです。
edgerouter-fw.png

さて、この設定はファイヤーウォールの設定をしていないので丸見えの状態です。
WAN側からルータにSSH接続できます。

ファイヤーウォールの設定をする前にまず疎通ができることを確認するのは重要です。
何故なら、通信が不能になった際、ファイヤーウォールの設定が悪いのかもともと通信ができていないのかの切り分けが難しくなるからです。

では、ファイヤーウォールの設定を行っていきます。
ファイヤーウォールの基本は、全てブロックし、必要なものを許可していく。という流れになります。

まずはWAN側全部の通信を遮断します。

# すべての通信を遮断
set firewall name from_wan default-action 'drop'
set firewall name from_wan description 'From_Wan_Policy'

set firewall name local default-action 'drop'
set firewall name local description 'Local_Poricy'

set firewall name to_wan default-action 'drop'
set firewall name to_wan description 'To_Wan_Poricy'

# eth0にルールを割り当てる。
set interfaces ethernet eth0 firewall in name 'from_wan'
set interfaces ethernet eth0 firewall local name 'local'
set interfaces ethernet eth0 firewall out name 'to_wan'
  • 作成したファイヤーウォールのポリシーをWAN側NICであるEth0に割り当てています。
    ほかのNICは影響がないので、LAN内からルータに対しSSH接続は問題なくできますが、
    WAN側からルータにSSH接続は出来なくなります。
    しかし、WAN側がすべての通信を遮断しているので、LAN内からWAN側へ通信ができません。
    なので、まずLANからWANへ抜ける通信はすべて許可しましょう。
set firewall name to_wan rule 900 action accept
set firewall name to_wan rule 900 description ALL_ACCEPT

これだけだと、LANからWANへの通信は通りますが、WAN側からの返事が拒否されているので、
実質一方通行で通信できません。
したがって、WANからLANへの戻りを許可します。
(state established、state relatedが戻りを表します)

set firewall name from_wan rule 900 action accept
set firewall name from_wan rule 900 description return_packet
set firewall name from_wan rule 900 state established enable
set firewall name from_wan rule 900 state related enable

これで、WAN側へPINGが飛ぶはずです。
しかし今度は、EdgeRouterにログインして、ルータ内部からWAN側にPINGを飛ばすと失敗します。
LAN側と同様EdgeRouter自身のルールを設定していないからです。
では、設定してみましょう。
なお、ルータあてへのルールは外から入ってくるもののみ設定できます。

set firewall name local rule 900 action accept
set firewall name local rule 900 description return_packet
set firewall name local rule 900 state established enable
set firewall name local rule 900 state related enable

これで、ルータ内部からもWAN側へPINGが飛ぶはずです。

以上の設定で、WAN側からルータへの通信はすべて拒否しつつ、LANやルータ内部から発生した
通信とその戻りは許可する設定ができました。

試しに、ルータのWAN側へPINGを飛ばし、応答を見てみましょう。
(WAN側のIPは192.168.1.7が割り当てられた例)

>ping 192.168.1.7

192.168.1.7 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

192.168.1.7 の ping 統計:
    パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、

ちゃんと拒否されていますね。
では、WAN側からの通信を許可する例として、PING応答を許可してみましょう。

set firewall name local rule 100 action accept
set firewall name local rule 100 description accept_ping
set firewall name local rule 100 protocol icmp
set firewall name local rule 100 icmp type-name ping

これで、WAN側からルータ自身へのPINGが許可されました。テストしてみます。

>ping 192.168.1.7

192.168.1.7 に ping を送信しています 32 バイトのデータ:
192.168.1.7 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.1.7 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.1.7 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.1.7 からの応答: バイト数 =32 時間 =1ms TTL=64

192.168.1.7 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 1ms、最大 = 1ms、平均 = 1ms

ちゃんとPING応答しているようです。


Counter: 391, today: 1, yesterday: 1

このページの参照回数は、391です。