図解で、IBM Cloud (SoftLayer) のセキュリティグループ設定

#読むより見て探したいから、がんばって図解。
- SoftLayerセキュリティグループの特性はこちらの記事が参考になります（[IBM Cloud Security Groups について、まとめてみた](https://qiita.com/khayama/items/cf0fe00a1351024faad8)）。
- 本記事では、SoftLayer管理ポータルでの設定パラメータを中心に書きます（データセンター内にあるDNSやNTPなど便利なサービスも通信を許可するとか、仮想サーバーにNICが２つあるのでそれぞれに許可するとか、AWSセキュリティグループと異なるポイントがあるので）。

## 最初の選択：サーバー毎に設定するか、複数サーバーをまとめてか？

### サーバー１台ずつ設定する場合
サーバーのネットワークインターフェース(NI)に通信ルール(ACL)を設定する（Windows FirewallやLinux Iptables/firewalldの様なイメージ）。この図の場合、パブリックNIの通信ルールはインターネットからの受信HTTPSだけ許可し、プライベートNIの通信ルールは受信・送信ともに全て許可とする。パブリックとプライベート側のNICには最大５個までルールを追加できる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/7759073c-3367-f0d4-a80f-be1f48769e75.png)

### 複数サーバーをまとめて設定する場合
まずはデフォルトのセキュリティグループ（allow_httpとかallow_sshとか）は全て削除することを推奨する。この図の場合、セキュリティグループを新規追加して、そのセキュリティグループに通信ルールを設定する（ファイアウォールやAWSセキュリティグループの様なイメージ）。サーバーのネットワークインターフェース(NI)にはセキュリティグループを設定する。複数のサーバーに、同じセキュリティグループを設定することができる。ネットワークインターフェースには最大5個のルールしか追加できないが、セキュリティグループなら最大50個までルールを追加できる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/492dbda0-b167-273d-b735-baa685e8e770.png)

### 同じ通信ルールを何度も設定するよりは、１ヶ所に設定した方が楽ですよね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/efae58a7-e64f-5023-a607-6e855496ed02.png)


## さて、セキュリティグループへの通信ルール設定

## ファイアウォール無しの場合
この場合は、別のFWサービスもしくはOSのFWをきちんと設定しないとセキュリティリスク特大。
【設定】セキュリティグループを適用しない　＝　ファイアウォール無し（つまり全て通信可能）
【検証】図の設定値では、２台のサーバーでお互いにping送受信できた。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/4c69eff3-c545-eb1b-d6c0-07260372baa1.png)

## 全ての通信をブロックする場合
【設定】セキュリティグループを適用する　＝　ファイアウォール有り（デフォルトでは許可ルールが無い）
【検証】図の設定値では、通信ルールを何も設定していないのでping送受信できない。
セキュリティグループを適用して通信ルールが無い場合は、RDPもSSHも何も接続できません。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/6f85d329-2776-48c4-8464-8c986e0cd9b4.png)

## 受信を許可する
【設定】受信（インバウンド）の設定では、送信元IPアドレス（ソース）とポートを指定する。
【検証】図の設定値では、SSH接続が出来た。Pingなど別の通信は応答できない。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/170fd711-41f1-ee4e-7a08-91ce114a4306.png)

## 送信を許可する
【設定】送信（アウトバウンド）の設定は、送信先IPアドレス（宛先）とポートを指定する。
【検証】図の設定値では、ping送信ができた。別のサーバーやping以外の送信は出来ない。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/808602e2-1651-4f93-ebd1-72a01ed12151.png)

## 複数のサーバーに、同じセキュリティグループを適用（サーバー間の許可ルール無し）
【設定】それぞれのサーバーに、同じセキュリティグループを適用する。セキュリティグループ内のサーバーは設定しない場合。
【検証】図の設定値では、許可したサーバーに対してはping送信出来るが、同じセキュリティグループ内のサーバー間は何も通信できない。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/cbbdc163-1a67-d6e3-ac1c-1edb68848cc4.png)

## 複数のサーバーに、同じセキュリティグループを適用（サーバー間の許可ルール有り）
【設定】それぞれのサーバーに、同じセキュリティグループを適用する。セキュリティグループ内のサーバー通信を設定する場合。
【検証】図の設定値では、全てのサーバーに対してPing送受信ができた。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/628ed9de-db24-a4df-2bfb-278981d2d2e9.png)

## 標準SSL-VPNが繋がらない！？
これは悩んだ。SSL-VPNが確立しているのにサーバーが応答しなかった。そうか、VPNのインバウンド通信を許可しなきゃダメだよね。
【設定】SSL VPN 接続でVPNクライアントに割り当てされるIPアドレスはレンジ<10.2.224.0/24>ですべて許可する。
【検証】SSL VPN 接続で、セキュリティグループ内のサーバーにSSH接続出来た。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/1db28849-4cfa-c2ef-45d7-46d586196273.png)

## SoftLayerバックエンドサービスと通信が出来ない！？
データセンター内のサーバーからインターネットの外部サーバーにドメイン名でアクセスできなかった。DNS名前解決できないって言っている。そうか、SoftLayerの便利なバックエンドサービスもすべて許可しなきゃだめか。
・DC内名前解決も出来ない　→　データセンター内部の宛先DNSを許可すればよい
・おお、時刻同期も必要か　→　データセンター内部の宛先NTPを許可すればよい
・他にもデータセンター内部にはWSUS、YUMリポジトリ、バックアップサーバーなどもあるぞ。
・だったら思いきって送信（アウトバウンド）は全て(0.0.0.0/0)許可するか？　それでも良し。

でも他のサーバーと通信させたくない場合に0.0.0.0/0を許可できない場合がある。その場合は↓。
【設定】SoftLayer標準サービスへの通信をすべて許可する（ユーザとして把握できている限り）。
【検証】内部DNS標準Ping監視のアラートが回復した。

    DNS Server                 10.0.80.11 
    DNS Server                 10.0.80.12 
    NTP Server                 time.service.networklayer.com (10.0.77.54)
    Windows KMS Server         10.0.76.42
    eVault Server              ev-vaulttok0201.service.softlayer.com (10.3.70.250)
    NIM Monitoring Server      10.3.67.60 
    NIM Monitoring Server      10.3.67.61 
    WSUS                       wsustok0201.service.softlayer.com (10.3.65.50)
    centosリポジトリ            mirrors.service.networklayer.com (10.0.77.54)
    脆弱性診断                  173.192.255.232, 172.17.19.38
    DOS緩和システム             161.202.116.0/24
    Load Balancer              161.202.117.0/24
    ※　東京DCの実機で独自に調べ(2018/5/19)　他にも追加すべきサービスあるかも。
    
    ↓
    
    許可すべきIPアドレスのレンジ（プライベートIPアドレス）
    SSLVPN (10.2.224.0/24)
    TOK02 (10.3.64.0/20) 10.3.64.0 ～ 10.3.79.255
    TOK04 (10.201.176.0/20) 10.201.176.0 ～ 10.201.207.255
    TOK05 (10.201.192.0/20) 10.201.192.0 ～ 10.201.191.255
    DAL01 (10.0.64.0/19) 10.0.64.0 ～ 10.0.95.255
    
    許可すべきIPアドレスのレンジ（パブリックIPアドレス）
    TOK02 (161.202.118.0/23) 161.202.118.1 ～ 161.202.119.254

![image.png](https://qiita-image-store.s3.amazonaws.com/0/189936/937c92e1-e31b-70e1-2f92-da6916e1c58b.png)

以上

【参考】IBM 公式サイト
[IBM Cloud の IP 範囲](https://console.bluemix.net/docs/infrastructure/hardware-firewall-dedicated/ips.html?pos=4)