家でも会社でも同じ環境で勉強したいのでVPSを借りてみる。
全くの初心者なので詰まりまくりです。おかしなところあればご指摘ください。
#環境
##VPS
借りたのはさくらインターネットのVPS2Gプラン、詳細は以下とこちら。
- メモリ:2G
- ディスク容量:200GB
- CPU:仮想3コア
- リージョン:石狩
- OS:CentOS6.5(最初から入っていたのでとりあえず)
##ツール
- Putty
- WinSCP
#やること
ドットインストールさんのさくらVPS入門にしたがって初期設定をすすめていきます。
- 初期設定
- 作業用ユーザーの作成 & 設定
- 鍵認証の設定
- SSHの設定
- Firewallの設定
- Webサーバーの設定
とりあえずここまで頑張ります。
#初期設定
インストールされているアプリケーションをまずは最新にします。
# yum update
(yum
はアプリケーションを管理するコマンド。)
次に日本語化。
vimで該当ファイルを開き以下のように書き換える。
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
## 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用の鍵に変更する。
- PuTTYgenで既存の秘密鍵の
読込
-
鍵のパスフレーズ
及びその確認を入力 秘密鍵の保存
-
接続
>SSH
>認証
>認証のためのプライベートキーファイル
を読み込み - 保存し接続
- 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までの間で設定可能。
#Port 22
...
↓
Port 9117
...
###パスワードログインの禁止
鍵認証を実装したためパスワードではログインできないよう禁止する。
...
PasswordAuthentication yes
...
↓
...
PasswordAuthentication no
...
###rootログインの禁止
rootはpasswordが割れただけでマズいことになるのでrootへの直接ログインを禁止します。
...
#PermitRootLogin yes
...
↓
...
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の設定
###攻撃者に有利となる情報の表示を減らす
攻撃者に有利な情報を極力表示しないよう修正。
こちらが参考になるかと思います。
...
ServerTokens OS
...
ServerSignature On
↓
...
ServerTokens Prod
...
ServerSignature Off
###ファイル一覧を表示させないようにする
こちらが参考になるかと思います。
...
Options Indexes FollowSymLinks
↓
...
Options -Indexes FollowSymLinks
###ドキュメントルートの設定
URLとしてアクセスしたときに、ここで指定したフォルダ以下にアクセスが可能となります。
今回は特に編集はしませんが、よく使うので覚えておきます。
...
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ならここまでは大丈夫。(なはず)
#引っかかった箇所
- 初期設定にて
LANG="ja_JP.UTF-8"
と書くべきところをLANG="ja_JP"
と書いてしまい文字化け。
- Puttyの文字コード設定で
UTF-8/Auto-Detect Japanese
を選択することで文字化けは解消 - 上記解決策は根本的解決ではないため非推奨。ちゃんと
LANG="ja_JP.UTF-8"
と記述しよう
- 鍵認証の設定にて、最初からPuttyで公開・秘密鍵を作ろうとしたらエラー。
- 最初に
ssh-keygen -t rsa
コマンドで鍵を作成し、それをPutty用に変換しよう