さくらVPS 初期設定メモ

さくらのVPSを借りました。
初期設定についてまとめました。

# やったこと一覧

1. さくらVPSの起動
2. 基本設定
3. 作業ユーザーの設定
4. 認証鍵の設定
5. SSHの設定
6. ファイアーウォールの設定
7. Webサーバーの設定
8. PHPの設定
9. MySQLの設定

## 1.さくらVPSの起動

VPS申し込みから起動まで

### 申し込み

[さくらのVPS](http://vps.sakura.ad.jp/)

ここから申し込む

申し込むと数分後に [さくらのVPS] 仮登録完了のお知らせ というメールが届く。
パスワードやIPアドレスが書かれているので忘れないようにする。

### VPSの起動

先ほどのメールの情報を元にログインを済ませる。

- IPアドレス
- パスワード
- コントロールパネルのURL

VPSは初期状態だと停止している。稼動させる。
コントロールパネルに起動と書かれてるボタンがあるので押す。

「停止中」が「稼働中」に変わればVPSの起動は成功です。

## 2.基本設定

ここでターミナルを準備する。IPアドレス等をしてVPSに接続する。
私は[PuTTY ごった煮版](http://yebisuya.dip.jp/Software/PuTTY/)を使っています。


### アプリケーションを最新版に更新

```bash
$ yum update
```
yumとはCentOSなどで利用されるパッケージ管理ツールです。
yum updateでVPSのアプリケーションを最新の状態にします。

更新が無ければ以下の表示がされる。

```
No Packages marked for Update
```

ある場合は(y/n)で聞かれる。yで更新をかける。

### 日本語化

```bash
$ vim /etc/sysconfig/i18n
```
LANGの値を変える。

```
LANG="ja_JP.UTF-8"
```

反映のため、一度ログアウトしログインする。

## 3.作業ユーザーの設定

ユーザーを追加する。

```bash
$ useradd ユーザー名
$ passwd パスワード
```

### sudo権限を与える

sudoは、ユーザーが別ユーザーの権限でプログラムを実行するためのコマンドです。
root権限を利用するために必要になります。

ユーザをwheelグループに変更する
このwheelグループがsudoできるようにする。

```bash
$ usermod -G wheel ユーザー名
```


sudoersファイル(sudo周りの設定ファイル)を編集する。

```bash
$ visudo
```

コメントアウトを外す

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

保存して設定終了

追加したユーザー名、パスワードでログインできれば成功です

## 4.認証鍵の設定

公開鍵を入れるディレクトリを作る

```bash
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
```

公開鍵・秘密鍵を生成する、生成方法は環境によって変わるため割愛します。
私はPuttyに付属している鍵生成を使いました。

生成した公開鍵は以下のように保存する。
秘密鍵はローカルで保持する。

```bash
~/.ssh/authorized_keys
```

パーミッション変更

```bash
$ chmod 600 ~/.ssh/authorized_keys
```

設定した鍵認証でログインできれば成功です。

## 5.SSHの設定

鍵認証の設定だけではrootログイン等できてしまう。
さらにセキュリティを高める設定する。

- ポート番号の変更
- rootログインの禁止
- パスワードログインの禁止


root権限での処理が続くので変更する。

```bash
$ sudo -s
```

sshd_configを編集する。
SSHの設定します。

```bash
$ vim /etc/ssh/sshd_config
```

### ポート番号の変更
ポートはデフォルトで22が割り振られている。
そのため攻撃の対象になりやすいです。1024～65535までの範囲で設定する。

/Portで検索し、編集

```
#Port 22
↓
Port 1024～65535
```

### パスワードログインの禁止

```
PasswordAuthentication yes
↓
PasswordAuthentication no
```

### rootログインの禁止

```
#PermitRootLogin yes
↓
PermitRootLogin no
```

ここまで設定したら保存して終了し、sshdを再起動する。

```bash
$ service sshd restart
```
OKと出れば設定完了です。

## 6.ファイアーウォールの設定

iptablesを使います。
これはLinuxに実装されているパケットフィルタリング型のファイアウォール機能です。

新規作成し記述します。

```bash
$ vim /etc/sysconfig/iptables
```

例

```
*filter
:INPUT    DROP    [0:0]
:FORWARD  DROP    [0:0]
:OUTPUT   ACCEPT  [0:0]
:SERVICES -       [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4  -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j SERVICES
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --sport 123 --dport 123 -j ACCEPT
-A SERVICES -p tcp --dport 80 -j ACCEPT
-A SERVICES -p tcp --dport 443 -j ACCEPT
-A SERVICES -p tcp --dport (上で設定したポート番号) -j ACCEPT

COMMIT
```

iptablesを有効にします。

```bash
$ service iptables restart
```

OKが出れば設定完了です。

設定の確認をする。

```bash
$ iptables -L
```

ファイアーウォールの設定はこれで終了です。

## 7.Webサーバーの設定

Apacheをインストールする。
CentOSではhttpdはApacheのことを指します。

```bash
$ yum install httpd
```

自動起動するようにする。

```bash
$ chkconfig httpd on
```

セキュリティの設定をする。

```bash
$ vim /etc/httpd/conf/httpd.conf
```

3箇所以下のように書き換える。

```
ServerTokens OS
↓
ServerTokens Prod
```
```
ServerSignature On
↓
ServerSignature Off
```

```
Options Indexes FollowSymLinks
↓
Options -Indexes FollowSymLinks
```

設定が正しいかチェックし、起動する。

```bash
$ service httpd configtest
$ service httpd start
```

ブラウザでVPSのIPアドレスを入力し、Apache Test Pageと表示されればWebサーバーの設定は成功です。


## 8.PHPの設定

PHPをインストールする。

```bash
$ yum install php php-devel php-mysql php-mbstring php-gd
```

設定ファイルを編集する。

```bash
$ vim /etc/php.ini
```

エラーログの出力場所をわかりやすい場所に変更

```
;error_log = php_errors.log
↓
error_log = /var/log/php.log
```

日本語にする設定

```
;mbstring.language = Japanese
↓
mbstring.language = Japanese
```

```
;mbstring.internal_encoding = EUC-JP
↓
mbstring.internal_encoding = UTF-8
```

```
;mbstring.http_input = auto
↓
mbstring.http_input = auto
```

```
;expose_php = On
↓
expose_php = Off
```

タイムゾーンの設定

```
;date.timezone = 
↓
date.timezone = Asia/Tokyo
```

設定を反映させるため、httpdを再起動する。

```bash
$ service httpd restart
```

OKが出ればPHPの設定は完了です

## 9.MySQLの設定

MySQLをインストールする。

```bash
$ yum install mysql-server
```

設定ファイルを編集する。

```bash
$ vim /etc/my.cnf
```

文字コードをUTF8にするため、追記する。

```
[mysqld]
character-set-server = utf8
```

MySQLを起動する。

```bash
$ service mysqld start
```

セキュリティの設定をします。

```
$ mysql_secure_installation
```

いくつか質問をされます。

- rootパスワードの変更
- rootのリモートホストからのログインの禁止
- testデータベースの削除
- 匿名ユーザーの削除

基本的にyで承諾しながら進みます。

自動起動の設定もします。

```
$ chkconfig mysqld on
```

動作確認。
先ほど設定したパスワードを入力し、ログインする。

```
mysql -u root -p
```

MySQLが立ち上がれば設定完了です。