さくらVPS初期設定メモ

## 1. サーバー再起動

* 申込完了メール記載の「VPSコントロールパネル ログイン情報」を参考に、ブラウザからVPSコントロールパネルへログイン
* 「起動」ボタンを押して仮想サーバーを起動する
* 「再起動」ボタンを押して仮想サーバーを再起動する（これをやらないとSSH接続ができない場合があるので必ずやる）



## 2. sshログイン

rootユーザーでsshログインする（0.0.0.0の部分はVPSのIPアドレスに置き換え）

```shell-session
$ ssh root@0.0.0.0
```

下記を聞かれたら「yes」と入力

```shell-session
Are you sure you want to continue connecting (yes/no)?
```

パスワードを聞かれるのでVPSのパスワードを入力



## 3. rootユーザーのパスワード変更

パスワード変更コマンドを入力

```shell-session
# passwd
```

新しいパスワードを入力、再入力したら完了

```shell-session
新しいパスワード:
```

一度ログアウト

```shell-session
# exit
```

新しいパスワードで再ログイン

```shell-session
$ ssh root@0.0.0.0
```



## 4. 一般ユーザー追加

ユーザー追加コマンドを入力（***の部分は任意のユーザー名に置き換え）

```shell-session
# useradd ***
```

パスワード変更コマンドを入力（***の部分は前述のユーザー名に置き換え）

```shell-session
# passwd ***
```

パスワードを入力、再入力したら一度ログアウト

```shell-session
# exit
```

新しいユーザー、パスワードで再ログイン

```shell-session
$ ssh ***@0.0.0.0
```



## 5. sudo設定

前述で追加したユーザーをwheelグループに追加（wheelグループというのはroot権限を得られる特別なユーザーグループのこと）

```shell-session
$ sudo usermod -G wheel ***
```

wheelにsudoを設定するためvisudoコマンド実行

```shell-session
$ sudo visudo
```

下記行頭の「#」を削除して保存（操作はvi）

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

wheel以外にsudo権限を与えない設定にする

```shell-session
$ sudo vi /etc/pam.d/su
```

下記行頭の「#」を削除して保存

```
# auth required pam_wheel.so use_uid
```

下記ファイルにも設定

```shell-session
$ sudo vi /etc/login.defs
```

最下部に下記行を追加

```
SU_WHEEL_ONLY yes
```



## ssh認証鍵設定

リモートに.sshディレクトリを作る

```shell-session
$ mkdir ~/.ssh/
$ chmod 700 ~/.ssh/
```

ローカルPCで下記scpコマンドを実行してリモートに鍵設定。
id_rsa.pubが既に生成されていることが前提。
0.0.0.0にはリモートのIPアドレス、USER_NAMEには前述のユーザー名をそれぞれ入力。

```shell-session
$ scp ~/.ssh/id_rsa.pub root@0.0.0.0:/home/USER_NAME/.ssh/authorized_keys
```

またリモートに戻り、認証ファイルの所有者や権限を変更。
USER_NAMEには前述のユーザー名を入力。

```shell-session
$ sudo chown USER_NAME:USER_NAME ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
```



## ssh接続を簡略化

ローカルPCで下記コマンドを実行

```shell-session
$ vi ~/.ssh/config
```

下記のような形式で記述して保存

```
Host test-server
    HostName        0.0.0.0
    Port            00000
    IdentityFile    ~/.ssh/id_rsa
    User            user_name
```

上記設定後はssh接続を簡略化できる

```shell-session
$ ssh test-server
```


## sshログイン設定の変更

リモートで下記ファイルを編集

```shell-session
$ sudo vi /etc/ssh/sshd_config
```

下記のように設定して保存（sshd再起動まで）

```
# ポート変更（10000〜65535の間で他と被らないような数値を指定）
Port 00000

# ルートログイン禁止
PermitRootLogin no

# パスワードログイン禁止
PasswordAuthentication no
```

sshdを再起動するため、下記コマンドを実行

```shell-session
$ sudo /etc/init.d/sshd restart
```



## ファイアウォール設定

特に何も設定されていないことを確認

```shell-session
$ sudo iptables -L
```

データを持たないパケットの接続を破棄に設定

```shell-session
$ sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
```

SYNflood攻撃と思われる接続を破棄に設定

```shell-session
$ sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
```

ステルススキャンと思われる接続を破棄に設定

```shell-session
$ sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
```

localhostからの通信とpingを許可に設定

```shell-session
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p icmp -j ACCEPT
```

確立済みの通信を許可に設定

```shell-session
$ sudo iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
```

許可した通信以外のサーバに受信するパケットを拒否し、サーバから送信するパケットを許可に設定

```shell-session
$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT ACCEPT
```

80番ポートによるhttp通信を許可

```shell-session
$ sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
```

前述で設定したポート番号によるssh接続を許可

```shell-session
$ sudo iptables -A INPUT -p tcp -m tcp --dport 00000 -j ACCEPT
```

iptablesの設定を設定ファイルに保存

```shell-session
$ service iptables save
```

正しく設定されていることを確認

```shell-session
$ sudo iptables -L
```



## システムアップデート

yumでシステムを最新の状態にする

```shell-session
$ sudo yum update -y
```



## 参考サイト

http://support.sakura.ad.jp/manual/vps/start/
http://morizyun.github.io/blog/sakura-vps-centos63-ssh-setup/
http://superbrothers.hatenablog.com/entry/20090730/1248971671