このページの内容
例:Telnet および SSH アクセスをブロックするフィルターの設定
要件
共有ネットワーク リンクで Junos OS を実行するデバイスが 2 台必要です。この例を設定する前に、デバイスの基本的な初期化(管理インターフェイス、リモート アクセス、ユーザー ログイン アカウントなど)以外の特別な設定を行う必要はありません。厳格な要件ではありませんが、R2 デバイスへのコンソール アクセスを推奨します。
この例は、当社のコンテンツテストチームが検証し、更新しました。
概要とトポロジー
この例では、IPv4ステートレスファイアウォールフィルターを作成します。このフィルターは、発信元が192.168.1.0/30サブネットのパケットでない限り、ローカルルーティングエンジンに送信されたTelnetまたはSSHパケットをログに記録して拒否します。このフィルターはループバックインターフェイスに適用され、ローカルデバイスを宛先とするトラフィックのみが影響を受けるようにします。フィルターは入力方向に適用します。出力フィルターは使用しません。その結果、ローカルで生成されたすべてのトラフィックが許可されます。
-
特定のサブネットまたはIPプレフィックスから発信されたパケットを照合するには、入力方向に適用する
source-addressIPv4一致条件を使用します。 -
Telnet ポートと SSH ポート宛のパケットを照合するには、入力方向に適用された
port telnetおよびport sshの IPv4 一致条件と組み合わせたprotocol tcp一致条件を使用します。
トポロジーの例
図1 は、この例のテストトポロジーを示しています。ファイアウォールフィルターがR2デバイスに適用され、DUT(被試験デバイス)になります。R1 デバイスと R2 デバイスは、192.168.1.0/30 のサブネットが割り当てられたリンクを共有します。両デバイスとも、/32サブネットマスクを使用して192.168.255.0/30プレフィックスから割り当てられたループバックアドレスを持っています。この簡単な例では内部ゲートウェイプロトコルが設定されていないため、静的ルートはループバックアドレス間の到達性を提供します。
設定
次の例では、設定階層のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、 設定モードでのCLIエディターの使用を参照してください。
設計上、サンプル フィルターは、R1 の共有サブネットから発信されたものでない限り、R2 への Telnet および SSH アクセスを制限します。SSH または Telnet を使用して R2 デバイスに直接アクセスすると、フィルターが適用されて接続が失われます。この例を設定する際は、コンソールアクセスの取得をお勧めします。必要に応じて、R1デバイスをジャンプホストとして使用し、フィルター適用後にR2へのSSHセッションを開始できます。または、サンプルフィルターを変更して、R2デバイスへのアクセスに使用するマシンに割り当てられたIPサブネットも許可することもできます。
この例を設定するには、以下のタスクを実行します。
CLIクイックコンフィグレーション
R1 デバイスの簡易設定
R1 デバイスを迅速に設定するには、必要に応じて以下のコマンドを編集し、 [edit] 階層レベルのCLIに貼り付けます。変更を有効にするには、必ず commitイン設定モードを発行してください。
set system host-name R1 set system services ssh root-login allow set interfaces ge-0/0/0 description "Link from R1 to R2" set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.1/30 set interfaces lo0 unit 0 family inet address 192.168.255.1/32 set routing-options static route 192.168.255.2/32 next-hop 192.168.1.2
R2 デバイスの簡易設定
R2 デバイスを迅速に設定するには、必要に応じて以下のコマンドを編集し、 [edit] 階層レベルのCLIに貼り付けます。変更を有効にするには、必ずコンフィギュレーションモードで commit を発行してください。
デバイスへのリモートアクセスに影響を与える可能性のある変更を行う場合は、 commit-confirmed の使用を検討してください。 Junos OSの設定をアクティブ化しているが、確認が必要
set system host-name R2 set system services ssh root-login allow set system services telnet set interfaces ge-0/0/0 description "Link from R2 to R1" set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.2/30 set interfaces lo0 unit 0 family inet filter input local_acl set interfaces lo0 unit 0 family inet address 192.168.255.2/32 set firewall family inet filter local_acl term terminal_access from source-address 192.168.1.0/30 set firewall family inet filter local_acl term terminal_access from protocol tcp set firewall family inet filter local_acl term terminal_access from port ssh set firewall family inet filter local_acl term terminal_access from port telnet set firewall family inet filter local_acl term terminal_access then accept set firewall family inet filter local_acl term terminal_access_denied from protocol tcp set firewall family inet filter local_acl term terminal_access_denied from port ssh set firewall family inet filter local_acl term terminal_access_denied from port telnet set firewall family inet filter local_acl term terminal_access_denied then log set firewall family inet filter local_acl term terminal_access_denied then reject set firewall family inet filter local_acl term tcp-estab from protocol tcp set firewall family inet filter local_acl term tcp-estab from tcp-established set firewall family inet filter local_acl term tcp-estab then accept set firewall family inet filter local_acl term default-term then accept set routing-options static route 192.168.255.1/32 next-hop 192.168.1.1
R1 デバイスの設定
ステップバイステップの手順
以下の手順に従って、R1 デバイスを設定します。
-
インターフェイスを設定します。
[edit] user@R1# set interfaces ge-0/0/0 description "Link from R1 to R2" user@R1# set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.1/30 user@R1# set interfaces lo0 unit 0 family inet address 192.168.255.1/32
-
R2デバイスのループバックアドレスへのホスト名と静的ルートを設定します。Telnet および SSH アクセスも設定します。
[edit] user@R1# set system host-name R1 user@R1# set system services ssh root-login allow user@R1# set system services telnet user@R1# set routing-options static route 192.168.255.2/32 next-hop 192.168.1.2
R1 デバイスでの設定の確認とコミット
ステップバイステップの手順
以下の手順を実行して、R1 デバイスで候補の設定を確認し、コミットします。
-
show interfaces設定モードコマンドを使用してインターフェイスの設定を確認します。コマンド出力に意図した設定が表示されない場合は、この例の指示を繰り返して設定を修正します。[edit] user@R1# show interfaces ge-0/0/0 { description "Link from R1 to R2"; unit 0 { family inet { address 192.168.1.1/30; } } } lo0 { unit 0 { family inet { address 192.168.255.1/32; } } } -
R2デバイスのループバックアドレスに到達するのに使用する静的ルートと、SSHおよびTelnetアクセスが有効であることを確認します。
show routing-optionsおよびshow system services設定モードコマンドを使用します。コマンド出力に意図した設定が表示されない場合は、この例の指示を繰り返して設定を修正します。[edit] user@R1# show routing-options static { route 192.168.255.2/32 next-hop 192.168.1.2; } user@R1# show system services ssh { root-login allow; } telnet; -
R1 デバイスの設定に問題がなければ、受験者の設定をコミットします。
[edit] user@R1# commit
R2 デバイスの設定
ステップバイステップの手順
以下の手順を実行して、R2 デバイスを設定します。まず、Telnet および SSH アクセスを選択的にブロックするステートレス ファイアウォール フィルターを定義します。
-
edit firewall family inet filterlocal_acl階層に身を置きます。[edit] user@R2# edit firewall family inet filter local_acl
-
フィルター条件 terminal_accessを定義します。この条件は、指定されたソースプレフィックスからのTelnetとSSHを許可します。
[edit firewall family inet filter local_acl] user@R2# set term terminal_access from source-address 192.168.1.0/30 user@R2# set term terminal_access from protocol tcp user@R2# set term terminal_access from port ssh user@R2# set term terminal_access from port telnet user@R2# set term terminal_access then accept
-
フィルター条件 terminal_access_deniedを定義します。この条件は、 その他すべての 送信元アドレスからの SSH および Telnet を拒否します。この条件は、条件に一致するログを記録し、明示的なインターネット制御メッセージプロトコル(ICMP)宛先到達不能応答をパケットの送信元に返信するように構成されています。フィルターロギングオプションの詳細については、 ファイアウォールフィルターロギングアクション を参照してください。
ヒント:discardアクションを使用すると、送信元へのICMPエラーメッセージの生成を抑制できます。詳細については、ファイアウォールフィルター終了アクションを参照してください。[edit firewall family inet filter local_acl] user@R2# set term terminal_access_denied from protocol tcp user@R2# set term terminal_access_denied from port ssh user@R2# set term terminal_access_denied from port telnet user@R2# set term terminal_access_denied then log user@R2# set term terminal_access_denied then reject user@R2# set term default-term then accept
- オプション。
フィルター条件 tcp-estabを定義します。この条件は、インターネットへのアウトバウンドアクセスを許可し、ジュニパー Mistクラウドへの接続をサポートします(tcp-established はビットフィールド一致条件 tcp-flags "(ack | rst)"であり、これは確立されたTCPセッションを示しますが、TCP接続の最初のパケットではないことを示します)。
[edit firewall family inet filter local_acl] user@R2# set term tcp-estab from protocol tcp user@R2# set term tcp-estab from tcp-established user@R2# set term tcp-estab then accept
-
フィルター条件 default-termを定義します。この条件は、他のすべてのトラフィックを受け入れます。 Junos OS のステートレス フィルターの末尾には、暗黙的な deny 条件があることを思い出してください。 default-term は、明示的な accept アクションでフィルターを終了させることで、この動作を上書きします。フィルターが終了すると、他のすべてのトラフィックがファイラーによって受け入れられます。
注:この例では他のすべてのトラフィックを許可しますが、ご自身のネットワークでは、ルーティングエンジンを保護した方がよいでしょう。詳細については 、ルーティングエンジンの保護 を参照してください。
[edit firewall family inet filter local_acl] user@R2# set term default-term then accept
-
ループバックインターフェイスを設定し、入力方向にフィルターを適用します。
[edit] user@R2# set interfaces lo0 unit 0 family inet filter input local_acl user@R2# set interfaces lo0 unit 0 family inet address 192.168.255.2/32
-
ホスト名、ge-0/0/0インターフェイス、R1デバイスのループバックアドレスへの静的ルートを設定し、SSHおよびTelnet経由のリモートアクセスを有効にします。
[edit] user@R2# set system host-name R2 user@R2# set system services ssh root-login allow user@R2# set system services telnet user@R2# set interfaces ge-0/0/0 description "Link from R2 to R1" user@R2# set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.2/30 user@R2# set routing-options static route 192.168.255.1/32 next-hop 192.168.1.1
デバイスR2での設定の確認とコミット
ステップバイステップの手順
以下の手順を実行して、R2 デバイスで候補の設定を確認し、コミットします。
-
show firewall設定モードコマンドを使用して、ステートレスファイアウォールフィルターの設定を確認します。コマンド出力に意図した設定が表示されない場合は、この例の指示を繰り返して設定を修正します。[edit] user@R2# show firewall family inet { filter local_acl { term terminal_access { from { source-address { 192.168.1.0/30; } protocol tcp; port [ssh telnet]; } then accept; } term terminal_access_denied { from { protocol tcp; port [ssh telnet]; } then { log; reject; } } term default-term { then accept; } } } -
show interfaces設定モードコマンドを使用して、インターフェイスの設定とフィルターアプリケーションを確認します。コマンド出力に意図した設定が表示されない場合は、この例の指示を繰り返して設定を修正します。[edit] user@R2# show interfaces ge-0/0/0 { description "Link from R2 to R1"; unit 0 { family inet { address 192.168.1.2/30; } } } lo0 { unit 0 { family inet { filter { input local_acl; } address 192.168.255.2/32; } } } -
R1 デバイスのループバック アドレスに到達するために使用する静的ルートを確認し、Telnet および SSH アクセスが有効になっていることを確認します。
show routing-optionsおよびshow system services設定モードコマンドを使用します。コマンド出力に意図した設定が表示されない場合は、この例の指示を繰り返して設定を修正します。[edit] user@R2# show routing-options static { route 192.168.255.1/32 next-hop 192.168.1.1; } user@R2# show system services ssh { root-login allow; } telnet; -
R2 デバイスの設定に問題がなければ、受験者の設定をコミットします。
ヒント:デバイスへのリモートアクセスに影響を与える可能性のある変更を行う場合は、
commit-confirmedの使用を検討してください。[edit] user@R2# commit
ステートレスファイアウォールフィルターの確認
TelnetおよびSSHアクセスを制限するファイアウォールフィルターが正常に動作していることを確認します。
受け入れられたパケットの確認
目的
トラフィックが 192.168.1.0/30 サブネットから送信されている場合、ファイアウォール フィルターが SSH と Telnet を正しく許可していることを確認します。
アクション
-
ルーターまたはスイッチのファイアウォールログを消去します。
user@R2> clear firewall log
-
192.168.1.0/30サブネット 内の IPアドレスのホストから、
ssh 192.168.255.2コマンドを使用して、許可された送信元アドレスからSSHを使用してデバイスにログインできることを確認します。このパケットは受理されるべきですが、このパケットのパケット ヘッダー情報は、パケット転送エンジンのファイアウォール フィルター ログ バッファーに記録されるべきではありません。これらのデバイス間の user が最初のSSHログインである場合は、SSHホストキーを保存するように求められます。注:デフォルトでは、R1デバイスは、宛先に到達するために使用するエグレスインターフェイスからSSHトラフィックを送信します。その結果、このトラフィックは、R1デバイスのge-0/0/0インターフェイスに割り当てられた192.168.1.1アドレスから送信されます。
user@R1>ssh 192.168.255.2 Password: Last login: Wed Aug 19 09:23:58 2020 from 192.168.1.1 --- JUNOS 20.2R1.10 Kernel 64-bit JNPR-11.0-20200608.0016468_buil user@R2>
-
R2デバイスのCLIからログアウトして、SSHセッションを閉じます。
user@R2> exit logout Connection to 192.168.255.2 closed. user@R1>
-
192.168.1.0/30サブネット 内の IPアドレスのホストから、
telnet 192.168.255.2コマンドを使用して、許可された送信元アドレスからTelnetを使用してルーターまたはスイッチにログインできることを確認します。このパケットは受理されるべきですが、このパケットのパケット ヘッダー情報は、パケット転送エンジンのファイアウォール フィルター ログ バッファーに記録されるべきではありません。user@host-A> telnet 192.168.255.2 Trying 192.168.255.2... Connected to 192.168.255.2. Escape character is '^]'. login: user Password: --- JUNOS 20.2R1.10 Kernel 64-bit JNPR-11.0-20200608.0016468_buil user@R2>
-
CLI からログアウトして、R2 デバイスへの Telnet セッションを閉じます。
user@R2:~ # exit Connection closed by foreign host. root@R1>
-
show firewall logコマンドを使用して、R2デバイスのパケット転送エンジン(PFE)のファイアウォールログバッファに、192.168.1.0/30サブネット内の送信元アドレスを持つエントリが含まれていないことを確認します。user@R2> show firewall log
ログされたパケットと拒否されたパケットの確認
目的
ファイアウォールフィルターが、発信元が 192.168.1.0/30 サブネット ではない SSH および Telnet トラフィックを正しく拒否していることを確認します。
アクション
-
ルーターまたはスイッチのファイアウォールログを消去します。
user@R2> clear firewall log
-
R1デバイスのループバックアドレスから送信されたSSHトラフィックを生成します。このトラフィックの送信元アドレスは、許可された 192.168.1.0/30 サブネット の外 にあります。
ssh 192.168.255.2 source 192.168.255.1コマンドを使用して、この送信元アドレスからSSHを使用してデバイスにログイン できない ことを確認します。このパケットは拒否され、パケット ヘッダー情報はファイアウォール フィルター ログ バッファーに記録されるはずです。user@R1 ssh 192.168.255.2 source 192.168.255.1 ssh: connect to host 192.168.255.2 port 22: Connection refused root@R1>
出力は、SSH接続が拒否されたことを示しています。この出力は、フィルターが ICMP エラー メッセージを生成していること、および許可されない送信元アドレスから送信された SSH トラフィックを正しくブロックしていることを確認します。
-
R1デバイスのループバックアドレスから送信されたTelnetトラフィックを生成します。このトラフィックの送信元アドレスは、許可された 192.168.1.0/30 サブネット の外 にあります。
telnet 192.168.255.2 source 192.168.255.1コマンドを使用して、この送信元アドレスからTelnetを使用してデバイスにログイン できない ことを確認します。このパケットは拒否され、このパケットのパケット ヘッダー情報は PFE のファイアウォール フィルター ログ バッファーに記録されるはずです。user@R1> telnet 192.168.255.2 source 192.168.255.1 Trying 192.168.255.2... telnet: connect to address 192.168.255.2: Connection refused telnet: Unable to connect to remote host
出力結果は、Telnet 接続が拒否されたことを示しています。この出力は、フィルターが ICMP エラー メッセージを生成していること、および許可されない送信元アドレスから送信された Telnet トラフィックを正しくブロックしていることを確認します。
-
show firewall logコマンドを使用して、R2 デバイスのファイアウォール ログ バッファーに、送信元アドレスが 192.168.255.1 のパケットが拒否されたことを示すエントリーが含まれていないか確認します。user@R2> show firewall log Log : Time Filter Action Interface Protocol Src Addr Dest Addr 15:17:11 pfe R ge-0/0/0.0 TCP 192.168.255.1 192.168.255.2 15:12:04 pfe R ge-0/0/0.0 TCP 192.168.255.1 192.168.255.2
この出力から、送信元アドレス192.168.255.1からのトラフィックがフィルターの terminal_access_denied 条件に一致したことがわかります。
Action列には、これらのパケットが拒否されたことを示すRが表示されます。インターフェイス、トランスポート プロトコル、送信元アドレスと宛先アドレスも一覧表示されます。これらの結果から、この例においてファイアウォールフィルターが正しく動作していることが確認できます。