さくらVPSを借りる 初期設定編


家でも会社でも同じ環境で勉強したいのでVPSを借りてみる。
全くの初心者なので詰まりまくりです。おかしなところあればご指摘ください。

環境

VPS

借りたのはさくらインターネットのVPS2Gプラン、詳細は以下とこちら。

  • メモリ:2G
  • ディスク容量:200GB
  • CPU:仮想3コア
  • リージョン:石狩
  • OS:CentOS6.5(最初から入っていたのでとりあえず)

ツール

  • Putty
  • WinSCP

やること

ドットインストールさんのさくらVPS入門にしたがって初期設定をすすめていきます。

  • 初期設定
  • 作業用ユーザーの作成 & 設定
  • 鍵認証の設定
  • SSHの設定
  • Firewallの設定
  • Webサーバーの設定

とりあえずここまで頑張ります。

初期設定

インストールされているアプリケーションをまずは最新にします。

# yum update

(yumはアプリケーションを管理するコマンド。)

次に日本語化。
vimで該当ファイルを開き以下のように書き換える。

/etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
...

一旦ログアウトして再度ログインしdateコマンドを入力。

2014年  9月  4日 木曜日 12:17:34 JST

以下のように表示されていれば成功。

もしdateの結果が文字化けをしていたらPuttyの設定より、
ウィンドウ > 変換 > 文字コードの設定の設定がUTF-8になっているかどうかチェック。

作業用ユーザーの作成 & 設定

普段はrootではなく別のユーザーを使うのが一般的(セキュリティ目的?)のため作業用ユーザーを作成。

# useradd username
# passwd password

ユーザー名とパスワードを設定。
また、一般ユーザーでもroot権限で作業が出来るコマンドsudoを使えるように設定する。

まずは先ほど作成した作業用ユーザーをグループ(下記例ではwheel)に登録する。

# usermod -G wheel username

登録したwheelグループがsudoコマンドを使えるようにvisudoコマンドを実行、
該当行を以下のように編集する。(先頭の#を取る)

# visudo
visudo
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

鍵認証の設定

パスワード認証ではセキュリティが弱いため、鍵認証を設定する。
(鍵認証:公開鍵と秘密鍵と呼ばれる凄く長い文字列を使う認証方式。)

  • 公開鍵 -> VPSに保管する
  • 秘密鍵 -> 個人で保管する

鍵の生成

作業用ユーザーでログイン後、公開鍵を保管するディレクトリを作成し、移動。

$ mkdir .ssh/
$ cd .ssh/

キーを生成する。

$ ssh-keygen -t rsa

Enter file in which to save the key (/home/username/.ssh/id_rsa): (何も入力しないでENTER押下)
Enter passphrase (empty for no passphrase): (何も入力しないでENTER押下)
Enter same passphrase again: (何も入力しないでENTER押下)

公開鍵id_rsa.pubのファイル名をauthorized_keysへ変更する。

$ mv id_rsa.pub authorized_keys 

.sshディレクトリとauthorized_keysの権限を変更する。

$ cd /home/username/
$ chmod 700 .ssh/
$ chmod 600 .ssh/authorized_keys

秘密鍵をダウンロード

WinSCPなどを使いVPS上からid_rsaをダウンロード。

Puttyで変換してログイン

ダウンロードしたid_rsaはそのままではPuttyでは使用できないため、
PuTTYごった煮版で同梱されているPuTTYgenを使用し、Putty用の鍵に変更する。

  1. PuTTYgenで既存の秘密鍵の読込
  2. 鍵のパスフレーズ及びその確認を入力
  3. 秘密鍵の保存
  4. 接続 > SSH > 認証 > 認証のためのプライベートキーファイルを読み込み
  5. 保存し接続
  6. 2.で入力した鍵のパスフレーズを使用し認証、ログイン

SSHの設定

さらにセキュリティを強固にするためにSSHの設定をする。
下記コマンドは一般ユーザーから管理者に変更するもの。よく使う(はず)ので覚えておく。

$ sudo -s

この項目では/etc/ssh/sshd_configのみ編集します。
まず編集するファイルはバックアップを取る、忘れがちなので癖をつける。

# cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.org

sshd_configの設定

ポート番号の変更

デフォルトのポート22番はあまりにも広く使われているポートのため変更。
1024~65535までの間で設定可能。

/etc/ssh/sshd_config
#Port 22
...

  ↓

/etc/ssh/sshd_config
Port 9117
...

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

鍵認証を実装したためパスワードではログインできないよう禁止する。

/etc/ssh/sshd_config
...
PasswordAuthentication yes
...

  ↓

/etc/ssh/sshd_config
...
PasswordAuthentication no
...

rootログインの禁止

rootはpasswordが割れただけでマズいことになるのでrootへの直接ログインを禁止します。

/etc/ssh/sshd_config
...
#PermitRootLogin yes
...

  ↓

/etc/ssh/sshd_config
...
PermitRootLogin no
...

最後にsshdのrestart。これ忘れていて大変苦労しました。

$ sudo service sshd restart

Firewallの設定

ここが一番よく分かっていないのでもうちょっと理解したい。

ipv4の設定

こちらを参考にiptablesを設定する。

# vim /etc/sysconfig/iptables

ipv6の設定

こちらを参考にip6tablesを設定する。
ipv6の有効化や設定については最初から設定されていたようで、特にすること無し。

# vim /etc/sysconfig/ip6tables

Webサーバーの設定

Apacheのインストール

# yum install httpd

ついでにサービスの自動起動も設定しておく。

# chkconfig httpd on

編集するファイル/etc/httpd/conf/httpd.confのバックアップを取っておきます。

# cp -a /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

httpd.confの設定

攻撃者に有利となる情報の表示を減らす

攻撃者に有利な情報を極力表示しないよう修正。
こちらが参考になるかと思います。

/etc/httpd/conf/httpd.conf
...
ServerTokens OS

...
ServerSignature On

  ↓

/etc/httpd/conf/httpd.conf
...
ServerTokens Prod

...
ServerSignature Off

ファイル一覧を表示させないようにする

こちらが参考になるかと思います。

/etc/httpd/conf/httpd.conf
...
Options Indexes FollowSymLinks

  ↓

/etc/httpd/conf/httpd.conf
...
Options -Indexes FollowSymLinks

ドキュメントルートの設定

URLとしてアクセスしたときに、ここで指定したフォルダ以下にアクセスが可能となります。
今回は特に編集はしませんが、よく使うので覚えておきます。

/etc/httpd/conf/httpd.conf
...
DocumentRoot "/var/www/html"

Apacheの起動

まずは設定を変えたのでテスト。

# service httpd configtest

Syntax OKと表示されたら問題なし、Apacheを起動させる。

# service httpd start

VPSのIPに接続して、いつものApache Test Pageが表示されていればOK。

最後に

DocumentRoot(/var/www/html)下にindex.htmlなどを置いてテスト。
それもOKならここまでは大丈夫。(なはず)

引っかかった箇所

  1. 初期設定にてLANG="ja_JP.UTF-8"と書くべきところをLANG="ja_JP"と書いてしまい文字化け。
    • Puttyの文字コード設定でUTF-8/Auto-Detect Japaneseを選択することで文字化けは解消
    • 上記解決策は根本的解決ではないため非推奨。ちゃんとLANG="ja_JP.UTF-8"と記述しよう
  2. 鍵認証の設定にて、最初からPuttyで公開・秘密鍵を作ろうとしたらエラー。
    • 最初にssh-keygen -t rsaコマンドで鍵を作成し、それをPutty用に変換しよう