IBMCloud 今から無料で始めるVPC③-セキュリティ設定編-

##セキュリティ設定編について
前回仮想サーバをオーダし、インターネットからのSSHでのアクセス確認までを実施した。
今回はサーバに対して、2つのセキュリティ対策を実施し、仮想サーバを保護する。

* 初期導入編:[IBMCloud 今から無料で始めるVPC①-初期導入編-](https://qiita.com/khoshina/items/92b7e259df9d17247867)
* サーバ導入編:[IBMCloud 今から無料で始めるVPC②-サーバ導入編-](https://qiita.com/khoshina/items/db8c49fcce7a7fc4ab1b)
* セキュリティ設定編:（**本ページ**)
* ストレージ追加編:[IBMCloud 今から無料で始めるVPC④-ストレージ編-](https://qiita.com/khoshina/items/dad5406ce806e6ae78bf)

[その他VPC関連]

* VPN:[IBM Cloud(VPC) x GCP IPsecVPN接続](https://qiita.com/khoshina/items/39d8e5671e3d59a968c9)
* AutoScale + LB：[AutoScale用VPCロードバランサ](https://qiita.com/khoshina/items/4094175ff8d58d6a3dbd)、[CPU負荷によるAutoScale VPC](https://qiita.com/khoshina/items/d10adf46cf2b787ed37e)


##セキュリティ設定
VPCでのアクセス制御は、セキュリティーグループとアクセス制御リストによる方法がある。
各方法に違いはこちら：[セキュリティー・グループとアクセス制御リストの比較](https://cloud.ibm.com/docs/vpc-on-classic-network?topic=vpc-on-classic-network-compare-security-groups-and-access-control-lists&locale=ja)

###セキュリティーグループ
仮想サーバインスタンスに対してのみ有効で、ストートフルで制御できる方法を実施する。
仮想サーバからの出ていく通信(outbound)については、デフォルトAll Permitになっている。
しかし、入ってくる通信(inbound)は、追加で許可が必要になるので、変更する。
今回は、インターネットからのHTTPトラフィックを許可する。

**セキュリティー・グループ** -> **デフォルトである名前**を選択
![IBM_Cloud_Infrastructure_と_「IBMCloud_今から無料で始めるVPC②_-サーバ導入編_-」を編集_-_Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/500f5edb-6860-c9cc-bc7c-80fdb659c1b9.png)

**ルール** -> **作成**を選択
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/872797a0-304a-8111-3bba-f046e3a25c1d.png)

プロトコル:**TCP**
ポート:**80**
ソースタイプ:**すべて**

最後に**保存**を選択
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/52c2ecda-4e60-a709-0821-f3278e95f25a.png)

設定後、すぐにルールが適用され、インターネットからHTTPでのアクセスが可能となった。

```
% curl 165.192.128.xx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
```

###アクセス制御リスト

**アクセス制御リスト** -> **デフォルトの名前**を選択
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/d612b0c9-63f1-810d-a1ab-6a7bc6e4ec4b.png)

デフォルトルールはAll Permitになっているので、まずはAll Denyに変更する。
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/a957b342-9b2f-468e-78d4-ab98f70e0a80.png)

**拒否**を選択し、**保存**を選択
同様にアウトバウンド・ルールも拒否にしておく。
![IBM_Cloud_Infrastructure_と_「IBMCloud_今から無料で始めるVPC③_-セキュリティ設定編_-」を編集_-_Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/cb7b1bff-1b57-2648-bf0c-a9ad27473b73.png)

ここまで実施すると、アクセス制御リストによって仮想サーバに対してSSHができなくなった。
セキュリティーグループでSSH22は許可されているが、アクセス制御リストで拒否している為

```
% ssh -i id_rsa root@165.192.128.xx
ssh: connect to host 165.192.128.xx port 22: Operation timed out
```

ソースIPを絞った上でTCP/22のみを許可する。

[インバウンドルール]
プロトコル:**TCP**
ソースIP:**106.160.57.xx**
ソースポート:**1 - 65535**
宛先IP:**すべて**
宛先ポート:**22**

[アウトバウンドルール]
プロトコル:**TCP**
ソースIP:**すべて**
ソースポート:**22**
宛先IP:**106.160.57.xx**
宛先ポート:**1 - 65535**

インバウンドルールの**作成**を選択
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/3466d896-4364-7ef7-9715-ddf9133c3296.png)

許可/拒否:**許可**
プロトコル:**TCP**

[ソース]
タイプ:**IPまたはCIDR**を選択し、**許可するソースIPを入力**
ポート:**すべて**

[宛先]
タイプ:**すべて**
ポート:最小および最大を**22**
優先度:<font color="red">上位に設定する</font>
アクセス制御リストは、上位ルールから順番に処理されるので拒否ルールの上位に設定しておく必要がある

最後に、**保存**を選択
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/b6bf72fb-abd5-21f6-7b42-9c480bdddd6e.png)

アウトバウンドルールの**作成**を選択
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/29c821b9-2bb4-31cb-7c62-f919ba342431.png)

許可/拒否:**許可**
プロトコル:**TCP**

[ソース]
タイプ:**すべて**
ポート:最小および最大を**22**

[宛先]
タイプ:**IPまたはCIDR**を選択し、**許可する宛先IPを入力**
ポート:**すべて**
優先度:<font color="red">上位に設定する</font>
アクセス制御リストは、上位ルールから順番に処理されるので拒否ルールの上位に設定しておく必要がある

最後に、**保存**を選択
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/c980ff35-59f0-b5af-11e4-3a748957780d.png)

##アクセス確認

```
% ssh -i id_rsa root@165.192.128.xx
Last login: Sat Oct 31 00:31:26 2020 from 106.160.57.xx
[root@centos ~]#
```