G2.4 SSHの接続元を制限する #
対象機種: AG10(ほかの機種はインターフェイス名が異なります。『G1.4 インターフェイスとポートの対応』を参照してください)
パケットフィルタリングで、本製品への SSH 接続を、LAN 側と特定の管理端末からだけ受け付けるように制限します。
注意: パケットフィルタリングの設定は、入力した時点ですぐに反映されます。手順の順序を誤ると、作業中の SSH 接続が切れ、本製品に接続できなくなります。特に WAN 側(LTE 回線など)からリモートで作業する場合は、許可するルールをすべて作成してから、最後にデフォルトポリシーを drop にしてください。可能であれば、LAN 側やシリアルコンソールから作業してください。
要件
- SSH を有効にする。
- LAN 側(br0)からの本製品宛ての通信は、SSH を含めてすべて許可する(DHCP 要求、DNS 問い合わせなども含む)。
- LTE 回線(ecm0)側からの SSH 接続は、管理端末 203.0.113.10 からだけ許可する。
- 上記以外の本製品宛ての通信は破棄する。
この設定例は、G2.1〜G2.3 の構成を前提にしています。
構成
管理端末 203.0.113.10 その他の端末
| SSH 許可 | 破棄
+-----------+--------------+
|
インターネット
|
ecm0
+-------------------+
| 本製品(AG10) |
+-------------------+
br0 192.168.0.254/24
| すべて許可(SSH、DHCP、DNS など)
LAN 192.168.0.0/24
本製品宛てのパケットは、パケットフィルタリングの input で扱います。input のルールは、インデックス番号の小さい順に確認され、最初に合致したルールが適用されます。どのルールにも合致しなかったパケットには、デフォルトポリシーが適用されます。
| インデックス | 合致条件 | ポリシー | 目的 |
|---|---|---|---|
| 10 | 接続の状態が related、established | accept | 本製品から開始した通信の戻りパケットを許可する |
| 20 | 入力インターフェイスが lo | accept | 本製品内部の通信を許可する |
| 30 | 入力インターフェイスが br0 | accept | LAN 側からの通信をすべて許可する |
| 40 | 入力インターフェイスが ecm0、送信元が 203.0.113.10、TCP の宛先ポートが 22 | accept | 管理端末からの SSH を許可する |
| デフォルトポリシー | ― | drop | 上記以外を破棄する(最後に設定する) |
手順
SSH を有効にします。SSH は初期状態で無効です。すでに有効な場合(
show config sshでenableと表示される場合)は不要です。amnimo# configure amnimo(cfg)# ssh amnimo(cfg-ssh)# enable amnimo(cfg-ssh)# exit amnimo(cfg)#現在の input の設定を確認します。インデックス番号 10、20、30、40 が使われていないこと、デフォルトポリシーが accept であることを確認します。
amnimo(cfg)# show config filter input戻りパケットと内部の通信を許可するルールを作成します。
amnimo(cfg)# filter input 10 amnimo(cfg-fin-10)# policy accept amnimo(cfg-fin-10)# match conntrack state related,established amnimo(cfg-fin-10)# enable amnimo(cfg-fin-10)# exit amnimo(cfg)# filter input 20 amnimo(cfg-fin-20)# policy accept amnimo(cfg-fin-20)# match in-interface lo amnimo(cfg-fin-20)# enable amnimo(cfg-fin-20)# exitLAN 側(br0)からの通信を許可するルールを作成します。このルールがないと、デフォルトポリシーを drop にした時点で、LAN 側からの SSH や GUI へのアクセス、本製品の DHCP サーバーや DNS への要求も破棄されます。
amnimo(cfg)# filter input 30 amnimo(cfg-fin-30)# policy accept amnimo(cfg-fin-30)# match in-interface br0 amnimo(cfg-fin-30)# enable amnimo(cfg-fin-30)# exitmatch in-interfaceには、ブリッジ配下のインターフェイス(lan0 など)ではなく、ブリッジ(br0)を指定します。ブリッジ配下のインターフェイスを指定すると、ルールに合致しません。- eth0 を LAN 側として使う場合は、eth0 についても同様のルールを作成します。eth0 を WAN 側として使う場合は作成しないでください。
管理端末からの SSH を許可するルールを作成します。1 つのルールに設定した複数の
matchは、すべてに合致したときだけ適用されます(AND 条件)。amnimo(cfg)# filter input 40 amnimo(cfg-fin-40)# policy accept amnimo(cfg-fin-40)# match in-interface ecm0 amnimo(cfg-fin-40)# match src-ip 203.0.113.10 amnimo(cfg-fin-40)# match protocol tcp dst-port 22 amnimo(cfg-fin-40)# enable amnimo(cfg-fin-40)# exit- SSH のポート番号を 22 から変更している場合(
show config sshのport)は、その番号を指定します。 - 管理端末が複数ある場合は、インデックス番号を変えて同様のルールを作成します。
- SSH のポート番号を 22 から変更している場合(
作成したルールを表示し、誤りがないことを確認します。リモートで作業している場合は、作業中の接続元が、ルール 10〜40 のいずれかで許可されることを必ず確認してください。
amnimo(cfg)# show config filter input最後に、デフォルトポリシーを drop にします。
amnimo(cfg)# filter input default-policy drop新しい SSH 接続を、管理端末と LAN 側の端末から開けることを確認します(作業中の接続は切らずに残しておきます)。問題がなければ設定を保存します。
amnimo(cfg)# config file save
補足: config file saveを実行するまでは、設定は保存されていません。設定を誤って接続できなくなった場合でも、保存する前であれば、本製品を再起動すると保存済みの設定で起動します(現地での電源操作が必要です)。動作を確認してから保存してください。
各コマンドの詳細は、次の節を参照してください。
- 7.4.2 SSHを設定する(ssh、enable)
- 6.4.3 パケットフィルタリングのルールを設定する(filter input、policy、enable)
- 6.6.2 パケット合致条件を設定する(match conntrack state、match in-interface、match src-ip、match protocol tcp dst-port)
- 6.4.2 パケットフィルタリングのデフォルトポリシーを設定する(filter input default-policy)
- 3.4 アムニモ設定情報に書き込む(config file save)
完成した設定
管理者モード(amnimo#)で貼り付けます。許可するルールを先に、デフォルトポリシーの drop を最後に設定する順序になっています。順序を入れ替えないでください。
configure
ssh
enable
exit
filter input 10
policy accept
match conntrack state related,established
enable
exit
filter input 20
policy accept
match in-interface lo
enable
exit
filter input 30
policy accept
match in-interface br0
enable
exit
filter input 40
policy accept
match in-interface ecm0
match src-ip 203.0.113.10
match protocol tcp dst-port 22
enable
exit
filter input default-policy drop
config file save
補足: 同じ接続元からの SSH の接続回数を制限する(ブルートフォース攻撃への対策)例は、『6.6.2 パケット合致条件を設定する』の実行例(JC-STAR★1 適合基準番号 S1.1-04)を参照してください。
確認方法
input の設定を表示します(6.4.1 パケットフィルタリングの設定を表示する)。
amnimo# show config filter input- 見どころ: 先頭に
filter input default-policy dropが表示されること。ルール 10〜40 がそれぞれenable、policy acceptで、手順どおりのmatchが表示されること。
- 見どころ: 先頭に
SSH の設定を表示します(7.4.1 SSHの設定を表示する)。
amnimo# show config ssh- 見どころ:
enableと表示され、portがルール 40 の宛先ポートと一致していること。
- 見どころ:
次の接続を試し、結果を確認します。
接続元 期待する結果 LAN の端末から 192.168.0.254 へ SSH 接続できる 管理端末(203.0.113.10)から ecm0 のアドレスへ SSH 接続できる それ以外の端末から ecm0 のアドレスへ SSH 接続できない LAN の端末の DHCP によるアドレス取得 取得できる - 破棄されたパケットを確認したい場合は、ルールにログ出力を設定します(6.6.5 ログ出力を設定する)。
よくある失敗
| 症状 | 確認すること |
|---|---|
| デフォルトポリシーを drop にした時点で接続が切れた | 作業中の接続元を許可するルールがなかった、または誤っていました。保存前であれば、再起動すると保存済みの設定で起動します。保存後の場合は、LAN 側やシリアルコンソールから接続して設定を直します。 |
| LAN の端末がアドレスを取得できなくなった、名前解決できなくなった | br0 を許可するルール(30)があるか。match in-interface にブリッジ配下のインターフェイス(lan0 など)を指定していないか。 |
| 管理端末から接続できない | 管理端末の送信元アドレスが、本製品から見て 203.0.113.10 になっているか(途中で NAT されていないか)。宛先ポートが SSH のポート番号と一致しているか。SSH が有効か。 |
| 制限したはずの端末から接続できる | ルール 40 より前(インデックス番号の小さい側)に、ecm0 からの通信を広く許可するルールがないか。ルールはインデックス番号の小さい順に確認され、最初に合致したルールが適用されます。 |
詳しい切り分けは『G3.4 本製品にアクセスできなくなった』を参照してください。
関連する設定例
- G2.6 拠点間をIPsecで接続する(input を drop にしている場合は、IPsec の通信を許可するルールが必要です)

注意: パケットフィルタリングの設定は、入力した時点ですぐに反映されます。手順の順序を誤ると、作業中の SSH 接続が切れ、本製品に接続できなくなります。特に WAN 側(LTE 回線など)からリモートで作業する場合は、許可するルールをすべて作成してから、最後にデフォルトポリシーを drop にしてください。可能であれば、LAN 側やシリアルコンソールから作業してください。