JuniperNetworks社のSSGからSRXへコンフィグのマイグレーション行ったのでまとめ

この記事は[ウェブクルー Advent Calender2018](https://qiita.com/advent-calendar/2018/webcrew)最終日の記事です。

#はじめに
弊社ではJuniperNetworks社製ファイアウォール（SSG）を使用していますが、現在販売が終了している為、
同社が販売している後継機種（SRX）への機器リプレイスを行っています。

私も先日SSGからSRXへのマイグレーション作業で、初めてSRXに触れる機会があったのですが、
搭載されているOSの変更（ScreenOS→JUNOS）もあり正直苦戦しました。

なので振り返りついでにまとめます。


#SRX（JUNOS）関連
###基礎知識
基本的なことは既によくまとめられている物が有ったりするので私が参考にしたURL置いときます。
https://www.infraeye.com/study/studyz2.html

以下は公式でまとめられている日本語のドキュメントです。
[ジュニパーのセキュリティソリューションご紹介サイト](https://www.juniper.net/jp/jp/dm/security/)


###覚えておくと便利な操作
先に貼ったリンク先にもまとめられているかと思いますが、事前に知っていた方が
作業が捗りそうな操作をいくつか紹介します。

###１． 階層移動
JUNOSのコンフィグファイルはshowコマンド等で参照すると以下のような階層構造になっています。

◆security階層表示例

```
# show
～省略～
security {
    zones{
        security-zone Trust {
            interfaces {
                ge-0/0/3 {
                    host-inbound-traffic {
                        system-services {
                            ping;
                            ssh;
                            ntp;
                            https;
                        }
                    }
                }
            }
        }
    }
}
～省略～
```

例えば上記表示例の場合、以下のような階層イメージです。

```
security 
    ↳zones
 　 　　↳security-zone
　　        　↳Trust（対象ゾーン名）
　　　　        　 ↳interface
　　　　          　 　 ↳ge-0/0/3（対象インターフェース）
　　     　　       　　　　　↳host-inbound-traffic
　　　　　    　　　        　　　　　　　↳system-services
　　　　　　　 　　　　　　　       　　　　　　　↳ping ssh ntp http（サービス名）
```

この階層の最下部のsystem-servicesで指定している4つのサービスは以下コマンドで定義を行います。

```
set security zones security-zone Trust interfaces ge-0/0/3 host-inbound-traffic system-services ping
set security zones security-zone Trust interfaces ge-0/0/3 host-inbound-traffic system-services ssh
set security zones security-zone Trust interfaces ge-0/0/3 host-inbound-traffic system-services ntp
set security zones security-zone Trust interfaces ge-0/0/3 host-inbound-traffic system-services http
```

このように設定するconfigの階層が深くなると入力が非常に面倒です。定義量が多かったりするとさらに面倒・・
その場合以下の階層移動コマンドを使って、任意の階層に移動することで定義の入力を省略できます。

◆階層移動操作
**edit**（指定した階層に移動）
**up**（一つ上の階層に移動）
**top**（最上位の階層に移動）

先程と同様の定義をeditコマンドを使用して以下のように設定できます。

```
edit security zones security-zone Trust interfaces ge-0/0/3.0 host-inbound-traffic system-services
set ping
set ssh
set ntp
set http
```

※設定をcommitする場合は一旦topコマンドで最上位階層に戻る必要があります。



###2. 設定のコピー
copyコマンドを使用して定義の複製が可能です。全く同じ内容の別名定義を作成する場合や、
多少内容の異なる定義を複数作成する場合等はまずcopyコマンドで複製するのが手っ取り早いです。

例えば複数のLANインターフェースに同じ設定を入れたい場合、1つのLANインターフェースに対して
必要な設定を行った後copyコマンドで複製するだけで2つ目以降のインターフェースの設定を省略できます。

copyコマンドの構文は以下の通りです。

```
copy 対象の階層 コピー元 to コピー先
```

◆使用例

```
copy security zones security-zone Trust interfaces ge-0/0/3.0 to ge-0/0/4.0
```

###3. 設定のリネーム
構文は以下の通りです。

```
rename 対象の階層 変更対象 to 変更後定義
```
使用方法は先程のcopyコマンドと同様です。対象の定義が新しい名前で置き換わります。
unixコマンドのcpとmvの違いみたいな感じですね。


ここまでの操作を覚えておけばconfigの導入作業にかかる時間もかなり短縮できるのではないでしょうか？
自分は当初地道に設定コマンド実行してたので苦労しました・・・

#SSG（ScreenOS）とSRX（JUNOS）比較
ScreenOSからJUNOSへコンフィグのマイグレーションを行うにあたり、コマンドの構文が違ったり
設定できる項目が変わってたりで少々苦戦したので私の独断と偏見でいくつか載せておこうと思います。

１．デフォルトユーザ

```
【SSG】
　netscreen
【SRX】
　root
```

２．設定確認コマンド

```
【SSG】
　get
【SRX】
　show
```

３．タイムゾーン設定

```
【SSG】
  set click timezone 9
【SRX】
  set system time-zone Asia/Tokyo
```

４．ntp設定

```
【SSG】
  set clock ntp
　set ntp server "NTPサーバーIPアドレス"
【SRX】
  set system ntp server "NTPサーバーIPアドレス"
```

５．セキュリティゾーン設定

```
【SSG】
  set zone "セキュリティゾーン名"
【SRX】
  set security zones security-zone "セキュリティゾーン名"
```

６．インターフェースとセキュリティゾーンの割り当て

```
【SSG】
  set interface "対象インターフェース" zone "セキュリティゾーン"
【SRX】
  set security zones security-zone "セキュリティゾーン" interfaces "対象インターフェース"
```

７．host-inbound-traffic設定（自分宛のトラフィックの許可設定）

```
【SSG】
  set interface "対象インターフェース" manage "対象のサービス"
【SRX】
  set security zones security-zone "セキュリティゾーン" interfaces "対象インターフェース" host-inbound-traffic system-services "対象のサービス"
  set security zones security-zone "セキュリティゾーン" interfaces "対象インターフェース" host-inbound-traffic protocols  "対象のプロトコル"
```

８．サービスの有効化

```
【SSG】
  set "対象サービス" enable
【SRX】
  set system services "対象サービス"
```

９．スタティックルート設定

```
【SSG】
  set route "宛先アドレス" interface "出力インターフェース" gateway "ネクストホップ"
【SRX】
  set routing-options static route "宛先アドレス" next-hop "ネクストホップ"
```

１０．カスタムアプリケーション設定

```
【SSG】
  set service "カスタムアプリケーション名" protocol "プロトコル" src-port "ソースポート番号" dst-port "宛先ポート番号" timeout "タイムアウト値（秒）" 
【SRX】
  set applications application "カスタムアプリケーション名" protocol "プロトコル" source-port "ソースポート番号" destination-port "宛先ポート番号" inactivity-timeout "タイムアウト値（秒）"
```

１１．アドレスブック設定

```
【SSG】
  set address "セキュリティゾーン" "アドレスブック名" "対象アドレス"
【SRX】
  set security address-book "アドレスブック名" address "セキュリティアドレス名" "対象アドレス"
　set security address-book "アドレスブック名" attach zone "セキュリティゾーン"
```

１２．セキュリティポリシー設定

```
【SSG】
  set policy id "ポリシーid" from "ソースゾーン" to "宛先ゾーン"  "ソースアドレスブック" "宛先アドレスブック" "対象サービス" "ポリシー一致時動作"
【SRX】
  set security policies from-zone "ソースゾーン" to-zone "宛先ゾーン" policy "ポリシー名" match source-address "ソースアドレスブック"
　set security policies from-zone "ソースゾーン" to-zone "宛先ゾーン" policy "ポリシー名" match destination-address "宛先アドレスブック"
　set security policies from-zone "ソースゾーン" to-zone "宛先ゾーン" policy "ポリシー名" match application "対象サービス"
　set security policies from-zone "ソースゾーン" to-zone "宛先ゾーン" policy "ポリシー名" then "ポリシー一致時動作"
```


#その他
SRXへの設定移行ツールなるものもあるらしいです。※要会員登録
https://j-partnernet.juniper.net/PHnewsletter/contents/201505/security_01.html



#最後に
まだまだ書かなければいけない内容はありますが、私の脳みそに詰め込むスピードが追い付かないので以上になります。

このような記事を書くのは初めてなので、また機会があれば書きたいなと思いましたが段々気持ちが薄れてきています。
クリスマスだからでしょう。お正月を過ぎれば完全に消え去る勢いです。

最近ますます寒さが厳しいですが、皆さん体調と周りにガスが発生している際の火の取り扱いには気を付けましょう。
それではよい年末をお過ごしください。


***
ウェブクルーでは一緒に働いていただける方を随時募集しております。
お気軽にエントリーくださいませ。

[開発エンジニアの募集](https://hrmos.co/pages/1004681658307198976/jobs/0000005)
[フロントエンドエンジニアの募集](https://hrmos.co/pages/1004681658307198976/jobs/0000001)