kagoya(カゴヤ)VPSのセキュリティ設定

※設定関係を色々と弄るので何か問題が発生するかもしれません。
そのため、本稿での内容を試す場合は全て自己責任でお願い致します。
設定ファイルを編集する場合はバックアップを取っておくと安全だと思います。

#背景・目的
参考サイト[[1]](https://vps-news.sakura.ad.jp/tutorials/centos7-initial-settings/)[[2]](https://www.slideshare.net/uemera/vps-14728897)を見ながらkagoyaVPS(＜KAGOYA CLOUD／2＞）でのセキュリティ設定を行っていたところいくつか躓いた点があったため備忘録目的として。また、少しでも他の方の参考になればと思い。そのため、参考サイト[[1]](https://vps-news.sakura.ad.jp/tutorials/centos7-initial-settings/)[[2]](https://www.slideshare.net/uemera/vps-14728897)の補足資料的な感じになると思います。

#事前準備
必要なければここは飛ばしてください。

- インスタンスの生成
<br>私の場合はwordpressを使いたかったので公式のチュートリアルを見て作りました(https://www.kagoya.jp/cloud/vps/tutorial/01.html) 。
- TeraTerm
<br>Mac OS, Linuxの人は必要ないかも（私の場合はWindowsで設定を行ったため使用しました）。
インストールは[公式サイト](https://ttssh2.osdn.jp/)からダウンロードして行ってください。zip形式を解凍して使おうとしたときに"dll"が足りないと言われたのでインストーラーを使ったインストールが無難かも。
- サーバーへの接続方法
<br>kagoyaVPSへの接続はインスタンスの生成で作成したログイン用認証キーを使ってログインを行います。実際のログイン手順は以下の公式マニュアルが参考になります。<br>
[マニュアル - KAGOYA CLOUD／2 サポートサイト - Tera Term の設定方法](
http://support.kagoya.jp/cloud/manual/content/26/11/ja/tera-term-%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95.html)

#セキュリティ設定
上記から分かる通りTeraTermで接続して設定を行っていきます。主に以下のことをやっていきます（ちなみにコマンドの#=root, $=一般ユーザーでの操作となります）。

- rootパスワード設定
- sudo パッケージのインストール
- 一般ユーザーの追加
- 公開鍵認証の設定
- sudo権限の付与(wheel)
- ポート変更、rootユーザーのログイン禁止、パスワード認証禁止
- ファイアウォールの設定(iptables)


##rootパスワード設定
kagoyaVPSのroot初期パスワードがわからないので一旦設定（kagoyaVPSの説明だとコントロールパネルにログインするパスワードと一緒らしいけどなぜか入れない？）。

```
# passwd root
```

##sudo パッケージのインストール
kagoyaVPSではデフォルトでsudoが入ってないみたいだったので、sudoパッケージをインストールしておきます。これは後に使うvisudoも一緒にインストールされます。

```
# yum -y install sudo
```


##一般ユーザーの追加
作業用一般ユーザーの追加とパスワードの設定を行います。

```
# useradd work-user
# passwd work-user
```
一般ユーザーの追加後、TeraTermでログインできるか確認してみてください（ログインには上記で設定したユーザー名とパスを使用）。

##公開鍵認証の設定
以下のサイトを参考にSTEP2まで行ってください（設定は先程追加した一般ユーザーで行ってください）。
[SSH接続の設定変更方法](https://help.sakura.ad.jp/hc/ja/articles/206208161?_ga=2.220662424.1028800860.1505693313-1894423068.1503837582&_bdld=3SjWi6.lUzJ7wN)
設定を行った後、秘密鍵でログインできることを確認してみてください。

##一般ユーザーへのsudo権限の付与(wheel)
rootユーザーへ切り替えます。

```
# su
```

その後、wheelグループへ一般ユーザーを追加します（単に-Gだけだと上書きされて大変なことになるらしい）。

```
# usermod -aG wheel work-user
```

wheelグループへの追加後、sudoersをvisudoで編集します（visudoでsudoersファイルを開いた後"/wheel"で検索するとすぐ見つかると思います）。

```
# visudo
```

sudoersファイルを開いた後、以下のコメントアウトを外します(#を消すだけ)。
変更前

```
# %wheel        ALL=(ALL)       ALL
```

変更後

```
%wheel        ALL=(ALL)       ALL
```

保存後、再ログインをするとsudoが有効になっているかと思います。

##ポート変更、rootユーザーのログイン禁止、パスワード認証禁止
公開鍵認証設定の際に参考にした以下サイトのSTEP3を行ってください。
[SSH接続の設定変更方法](https://help.sakura.ad.jp/hc/ja/articles/206208161?_ga=2.220662424.1028800860.1505693313-1894423068.1503837582&_bdld=3SjWi6.lUzJ7wN)
<font color="red">**ただし、設定を行った後ターミナルは閉じないでください。Tera Termでssh接続ができなくなってしまうので。。。**</font>

##ファイアウォールの設定(iptables)
先程のポート変更、rootユーザーのログイン禁止、パスワード認証禁止の項で行った後にファイアーウォールの設定をします。まず、現在のファイアーウォールの設定を確認します。

```
# cat /etc/sysconfig/iptables
```

この時点では、おそらくPort 22とPort 80が設定されているかと思います。なので、Port 22の箇所を先程設定したPort番号に変更します(e.g. Port 2222など)。
保存後、iptablesの再読込を行います。

```
# /etc/rc.d/init.d/iptables reload
```

再読込後、新しく設定したPort番号でssh接続ができればOKです。

#設定確認
ここでは、設定がうまくいっているかのチェック項目を以下に示します。

- rootでログインできないこと
- 一般ユーザーでsudoコマンドが使えること
- パスワード認証でのログインができないこと
- 変更したポートでssh接続ができること 

#参考サイト
[1]:[チュートリアル：CentOS 7（さくらのVPS）サーバ作成直後に設定しておくべき初期セキュリティ設定](https://vps-news.sakura.ad.jp/tutorials/centos7-initial-settings/)
[2]:[VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話](https://www.slideshare.net/uemera/vps-14728897)