[CentOS7]セキュリティの初期設定

# はじめに

[前回の記事](https://qiita.com/caique/items/3fb91fb0dcd7a5ad9e15)では、さくらVPSにスタートアップスクリプト「CentOS_LAMP」を使用してCentOS7をインストールした。
今回はセキュリティの設定をする。

# セキュリティの設定

セキュリティのための以下の設定をする。

1. rootでログインできないようにする
2. 公開認証鍵でログインする
3. SSH接続するポートを変更する

## rootでログインできないようにする

### 一般ユーザーの作成

仮にユーザー名をtestuserとする。
ユーザーを追加してパスワードを設定する。

```
# useradd testuser
# passwd testuser
Changing password for user testuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
```

試しに一旦ログアウトして、一般ユーザーでログインしてみる。
ログイン成功！

### sudo設定

一般ユーザーでsudoコマンドが使えるようにする。

```
# usermod -G wheel testuser
```

ちゃんとsudoコマンドが使えるか確認する。
再度ログインすると設定が有効になるそうなので、一旦ログアウトする。

testuserでログインする。
`sudo id`コマンドで試す。

```
$ sudo id
[sudo] password for testuser:
uid=0(root) gid=0(root) groups=0(root)
```
ちゃんとsudoコマンドが使えた。

## 公開認証鍵でログインする

### 公開鍵と秘密鍵の生成

PuTTYをインストールすると一緒にインストールされるPuTTYgenを使用する。

- [PuTTY Download](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)

PuTTYgenを起動する。
![puttygen.JPG](https://qiita-image-store.s3.amazonaws.com/0/322587/b6cca06d-0cbf-e892-377a-1a6cbc546259.jpeg)
1. `RSA`にチェック
2. `Number of bits in a generated key:`は`2048`
3. `Generate`をクリック
4. ウインドウ内でマウスを動かす
![puttyegen2.JPG](https://qiita-image-store.s3.amazonaws.com/0/322587/0d6ecaeb-53aa-2fcc-dad3-5b2da987abd4.jpeg)

1. `Key passphrase`にパスフレーズを入力**（忘れないようにメモすること！）**
2. `Confirm passphrase`に同じパスフレーズを入力
3. `Save public key`をクリックし、`id_rsa.pub`と名前を付けて保存（公開鍵）
4. `Save private key`をクリックし、`id_rsa.ppk`と名前を付けて保存（秘密鍵）
5. PuTTYgenを閉じる

### 公開鍵をVPSにアップロード

Windowsコンソールを使用する。
まず、PuTTYをインストールしたフォルダに移動

```
cd C:\Program Files\PuTTY
```
そこに`pscp.exe`があることを確認する
`dir`コマンドで移動したフォルダ内を一覧表示

```
dir
```
以下のコマンドでアップロードする

```
pscp 保存したディレクトリ\id_rsa.pub testuser@VPSのIPアドレス:id_rsa.pub
testuser@VPSのIPアドレス's password:
id_rsa.pub                | 0 kB |   0.5 kB/s | ETA: 00:00:00 | 100%
```
Windowsコンソールを閉じる

### 公開鍵を登録する

PuTTYでSSH接続する
testuserでログインする

```
$ cd
$ mkdir .ssh
$ chmod 700 .ssh/
$ ssh-keygen -i -f id_rsa.pub >> authorized_keys
$ mv authorized_keys .ssh
$ chmod 600 .ssh/authorized_keys
$ rm -f id_rsa.pub
```
上記のコマンドは、
`.ssh`ディレクトリを作成して、
`ssh-keygen`で公開鍵の形式を変換、
`rm`で変換する前の公開鍵を削除している。

## SSH接続するポートを変更する

### firewallのポート開放

まず`su`コマンドでrootユーザーに変更

SSH接続はデフォルトではポート22だが、セキュリティのため別の任意のポートでアクセスするように設定する。
ここでは仮に`2000`とする。

```
$ su -
Password:
# firewall-cmd --zone=public --add-port=2000/tcp
success
# firewall-cmd --zone=public --add-port=2000/tcp --permanent
success
```
`--permanent`で恒久化させる


### sshd_configの書き換え

`vi`コマンドで編集

```

# vi /etc/ssh/sshd_config
```
sshd_configファイルを書き換える
ポートは任意のポートを指定する。（ここでは仮に`2000`とする）
以下のように修正する

```
#Port 22 
Port 2000 
```
`Port`の前の`#`を削除してポート番号を書き換える

```
#PermitRootLogin yes 
PermitRootLogin no 
```
`PermitRootLogin`の前の`#`を削除して`no`に書き換える

```
PasswordAuthentication yes 
PasswordAuthentication no
```
`PasswordAuthentication`を`no`に書き換える
`vi`を終了する

sshdを再起動する

```
# systemctl restart sshd.service
```

締め出されると怖いのでSSH接続をつないだままにしておく

### 接続の確認

別のウィンドウでPuTTYを起動する
![join.JPG](https://qiita-image-store.s3.amazonaws.com/0/322587/6d86692b-02b8-ef90-d9b9-ecbb43c6f71f.jpeg)
サーバーのIPとさっき設定したポートを入力
さらに、`Connection > SSH > Auth`の画面にある`Private key file for authentication:`の`Browse`ボタンを押す。
`id_rsa.ppk`ファイルを指定する。
![auth.JPG](https://qiita-image-store.s3.amazonaws.com/0/322587/abe49499-a3ff-d356-8c8f-e78122d1136f.jpeg)

この設定で接続できるかを確認する。
パスワードを聞かれるが、この時は**公開鍵と秘密鍵の生成した時のパスフレーズを使用**する。

接続できれば設定完了！

# まとめ

SSH接続の設定変更はさくらのサポート情報にも[記事](https://help.sakura.ad.jp/hc/ja/articles/206208161?_ga=2.89752728.262759021.1544857229-1222746466.1522724326)があった。
そちらではTeraTermを使用していたが、今回はPuTTYで設定してみた。

公開鍵をアップロードする作業はドラッグアンドドロップでできるのでTeraTermの方が簡単そうですね。

次回はLet's Encryptを用いた[SSL接続の設定](https://qiita.com/caique/items/0ba98ca9f449c0761b30)をしてみます。