さくらVPS 初期設定メモ


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

やったこと一覧

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

1.さくらVPSの起動

VPS申し込みから起動まで

申し込み

さくらのVPS

ここから申し込む

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

VPSの起動

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

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

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

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

2.基本設定

ここでターミナルを準備する。IPアドレス等をしてVPSに接続する。
私はPuTTY ごった煮版を使っています。

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

$ yum update

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

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

No Packages marked for Update

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

日本語化

$ vim /etc/sysconfig/i18n

LANGの値を変える。

LANG="ja_JP.UTF-8"

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

3.作業ユーザーの設定

ユーザーを追加する。

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

sudo権限を与える

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

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

$ usermod -G wheel ユーザー名

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

$ visudo

コメントアウトを外す

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

保存して設定終了

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

4.認証鍵の設定

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

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

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

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

~/.ssh/authorized_keys

パーミッション変更

$ chmod 600 ~/.ssh/authorized_keys

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

5.SSHの設定

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

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

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

$ sudo -s

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

$ vim /etc/ssh/sshd_config

ポート番号の変更

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

/Portで検索し、編集

#Port 22
↓
Port 1024~65535

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

PasswordAuthentication yes
↓
PasswordAuthentication no

rootログインの禁止

#PermitRootLogin yes
↓
PermitRootLogin no

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

$ service sshd restart

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

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

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

新規作成し記述します。

$ 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を有効にします。

$ service iptables restart

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

設定の確認をする。

$ iptables -L

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

7.Webサーバーの設定

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

$ yum install httpd

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

$ chkconfig httpd on

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

$ vim /etc/httpd/conf/httpd.conf

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

ServerTokens OS
↓
ServerTokens Prod
ServerSignature On
↓
ServerSignature Off
Options Indexes FollowSymLinks
↓
Options -Indexes FollowSymLinks

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

$ service httpd configtest
$ service httpd start

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

8.PHPの設定

PHPをインストールする。

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

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

$ 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を再起動する。

$ service httpd restart

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

9.MySQLの設定

MySQLをインストールする。

$ yum install mysql-server

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

$ vim /etc/my.cnf

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

[mysqld]
character-set-server = utf8

MySQLを起動する。

$ service mysqld start

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

$ mysql_secure_installation

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

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

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

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

$ chkconfig mysqld on

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

mysql -u root -p

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