GUiLZ Project Personal & Experimental Blog
このエントリーをはてなブックマークに追加
はてなブックマーク - GMOクラウド VPSを借りてまず行う初期設定内容
Facebook にシェア
[`evernote` not found]



GMOクラウド VPS 設定記事一覧

 

SaaSesが個人向けVPSサービスから撤退 ということで、月500円程度でそこそこ使えていた実験用サーバーの乗り換え先を検討していたのだけど、コストパフォーマンスから考えると GMOクラウド VPS マイクロ しかねーなという事で、新規契約して初期設定を行った時の内容をまとめてみた。

GMOというだけで割とマイナスイメージを持ってる人も多いかもだけど(自分含む)、個人的には以下のような理由で、2つめの契約をした次第。

 

  • 1年以上 guilz.org 含めて複数サイトを運用しているが、VPSの不具合による問題は一度も起こらなかった(SaaSesでは1年ちょいの間に2ケタ近い回数トラブり、問い合わせや対応を依頼する事態になった)
  • さくらのVPSでのトラブル のような、I/O負荷による制限などが起こる事がなかった(バックアップ処理時の負荷は、多分こちらの方が高いにも関わらず!)
  • 月1008円で、仮想3コア・2GBのメモリ・100GBの容量使えるのは最安。海外含めて探しても、スペックに対する価格対比は最高(ただしマイクロのみ。それ以上のプランはもっと安いところもある)
  • 仮想化基盤がKVMであること(OpenVZはサービス始まったばかりの頃にDTI Servers@Man使って懲りた。SaaSesはXenだけど、こちらはKVMと大差ない感覚)
  • サーバー稼働率99.95%のSLA保証・オートフェイルオーバーがある。物理マシンに問題が出たら、自動で別の正常な物理マシンに移動して障害発生を抑えるとか、この価格でやってるところはあまりない。SLAはその自信の裏付けかなと
  • アダルトもOK。いや、別に作らないけど、コンテンツの制限がないのはいいよね。運営者の恣意的な判断でBANされたりとか困るし
  • GMOの株主なので株主優待がある。年1万円キャッシュバックされるのは大きい

 

後は電話サポートがあったり(以前メールでHDD増量頼んだら、電話連絡が来たのにはビビったけど)、設定代行やマネージドサービスもあるけど、まあこの辺りは使わないのでどうでもいいかな。

と、いい事ばかり書いてはみたけど、GMOは好きじゃないからやっぱり俺は他社VPSを選ぶぜ! って人にも下記の初期設定フローは多分使えると思うので、VPS借りて行う作業の参考にでもなれば幸い。

スポンサードリンク

 

仮想マシン起動 – SSHdのポート変更

GMOクラウド VPS ではGMOクラウド側での設定完了後、仮想マシンが停止状態になっているので、コントロールパネルから起動する。余談だが、今回は申し込んでから16時間弱経って、ようやくrootパスワードとか送られてきて使えるようになった。以前は5時間くらいで利用開始メールが来てたが、混み合ってたのかねえ。

今回選んだCentOS 6.2 x64 プレーンパッケージでは、デフォルトでrootしかIDが無く、SSHからrootログイン可能になっている(さくらは別にクライアント用のIDがあったような)。リモートコンソールからしか繋がらないというような、セキュリティ高めな設定にはなっていないので、急いで作業を進める。

SSHでログイン後、まずはrootパスワードを変更する。

# passwd

その後、

# vi /etc/ssh/sshd_config

として、

Port 12345
#Port 22

以上のようにSSHdの待ち受けポートを22から変更(12345 は例)。これは自分が利用しているiptablesスクリプトで、待ち受け設定を22から変更しているからなのだが、自分だけしか使わないサーバーだし、気休めとはいえセキュリティ対策にはなるかなということで。本当はrootログインの設定なども変えたいけど、取り急ぎiptablesで防御固めたいので、上記変更が終わったらサービスを再起動する。

# service sshd restart

変更したポートに接続できるのを確認したら、iptablesスクリプトに必要なwgetのインストール(いつも忘れる)。CentOS 6.2 x64 プレーンパッケージには初期状態でwgetは入っていない(LAMPパッケージなら入ってるかも)。

# yum install wget

としてインストールすると、wget、make、opensslも一緒に入る。Heartbleedに対応したものが入ったのを確認。

 

iptablesスクリプトの設定

準備が整ったので、iptablesスクリプトを設置する。スクリプトは、CentOSで自宅サーバー構築 様のスクリプトを改造して使用。iptables.sh と iptables_functions をrootディレクトリに保存する。

中身はほとんどそのままでも問題ないと思うけど、iptables.sh の、

# 内部からのアクセスをすべて許可
# iptables -A INPUT -s $LOCALNET -j ACCEPT

は上記のようにコメントアウトする(VPSの場合、ローカルネットにある他のマシンも外部マシンなので)。自分の場合、SSHdの設定を別ポートでの待ち受け・固定IPからのみ接続可能としているため、あわせて以下のように変更。

iptables -A INPUT -p tcp -s 自分の固定IP --dport 待ち受けポート番号 -j ACCEPT_COUNTRY

iplist_check.sh は、上記サイト様だと /etc/cron.daily に保存されていたが、VPSのスペック次第では処理が重くなってサービスに影響するため、/etc/cron.weekly に保存する。

iptables.sh ならびに iplist_check.sh に実行権限をつけて、iptables.sh を実行。初回実行時には時間がかかるのと、場合によってはSSHdの接続が切れる事があるので、設定ミスがないか再度チェックしてから実行する。

# chmod 700 /etc/cron.weekly/iplist_check.sh
# chmod 700 /root/iptables.sh
# /root/iptables.sh

自分の場合、固定IPから接続するように自宅ルーターに設定する必要があるため、ルーターのルーティング設定を変更した。 参考 – NVR500でアクセス先によってプロバイダを使い分ける方法

スクリプトが適用されて通信が回復したら、起動時にiptablesが実行されるように設定する。

# chkconfig iptables on

 

CentOSのアップグレード

GMOクラウド VPS は、現時点ではCent OS 6.2がインストールできる最新バージョンとなっているため、6.5へアップグレードを行う。

# yum upgrade

139パッケージ・140MBくらいのダウンロードと更新が始まる。実行したのが21時くらいだからなのか、結構速い。10分かからずアップグレードは終了。ここまで終わったらリブートするが、以前はなぜか再起動時にカーネルパニックしたり復旧しようとしてもリモートコンソールで : が入力できずに詰んだりしたので、ささやき、いのり、えいしょう、ねんじろ。

# reboot

ちゃんとリブートしたら、

# cat /etc/redhat-release

で、きちんとアップグレードされたか確認。

CentOS release 6.5 (Final)

今回は上記のようになっていたので、OK。

 

SSHdの公開鍵認証設定

ここまでで最低限のセキュリティは確保できたので、続けてSSHdの公開鍵設定を行う。セキュリティ的には甘々なんだけど、rootログインのみ公開鍵認証、ほかのIDはパスワード認証可能にしておく。(SSHdには特定の固定IPのみ接続可能にしているのと、実験用ということから利便性を重視)

# vi /etc/ssh/sshd_config

として、

PermitRootLogin without-password

を追加する。

自分の場合は既存の公開鍵を使用して認証するので、初めからある .ssh/authorized_keys (多分リモートコンソールとかコントロールパネルから使用するキーなのかな) に、追記する形で保存。

# vi /root/.ssh/authorized_keys

ゼロから公開鍵・秘密鍵を作る場合は、

# ssh-keygen -t rsa

として鍵を作成。途中でパスフレーズを入力するが、これを忘れるとログインできなくなる(直接rootでは) ので、忘れないようにする。コマンドを実行したユーザー(この場合はrootで作成) の.sshディレクトリに公開鍵(id_rsa.pub) と秘密鍵(id_rsa) が作成されているのを確認。その後、id_rsaはSFTP等でクライアントマシンに保存する。

以下のコマンドで、作成した公開鍵をauthorized_keysに追加する。

# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

作成した公開鍵(id_rsa.pub) と秘密鍵(id_rsa) は、念のためにクライアントマシン等にバックアップを取ってから削除。(セキュリティ的には、サーバーに秘密鍵は残しておかないほうがいいため)

万一入れなくなったら困るので、ユーザーも追加しておく。(xxxは例)

# useradd xxx
# passwd xxx

以下のコマンドでSSHdをリスタート。

# service sshd restart

公開鍵認証でログインできるか確認して完了。

 

ログローテーションの設定

デフォルトだとログの保管期間は4週間分で、自動で圧縮もされない(保管期間が短いからかもだけど) ため、保管期間を延長して圧縮されるように変更する。

# vi /etc/logrotate.conf

として設定ファイルを編集する。変更点は以下の通り。

~ 省略 ~

# keep 4 weeks worth of backlogs
# rotate 4
rotate 30

~ 省略 ~

# uncomment this if you want your log files compressed
# compress
compress
delaycompress

~ 省略 ~

設定内容としては、30週間分のログを保管し、ログは圧縮(ただし1週前のデータは無圧縮で保存し、次のローテート時に圧縮) するように変更しただけ。特にサービスの再起動は必要ないので、保存したら終わり。

 

ntpdを止めてスクリプトで代替

ntpdには、2014年初めにも 脆弱性の関係でDDoSの加害者になりかねない問題 が発生していたり、そもそも常駐させてまで時間を厳密に設定しなくてもいいかなと思うので(多少なりともリソース食うわけだし)、cron.daily で時刻調整するスクリプトで代替する。

# service ntpd stop
# chkconfig ntpd off

として、サービスの停止と起動時の自動実行を止める。その後、以下のようにスクリプトを作成する。

# vi /etc/cron.daily/dateset.sh

内容は以下の通り。(NTPサーバーは任意の公開サーバーを設定)

#!/bin/bash
/usr/sbin/ntpdate ntp1.jst.mfeed.ad.jp

保存したら、実行権限を付けて終了。

# chmod 700 /etc/cron.daily/dateset.sh

 

初期設定まとめ

自分がVPS等を借りたときに、常に行っている設定は以上の通り。ここから各種サービスのインストールになるわけだが、そちらは次回以降に続く、ということで。

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。

当サイトのコメント欄は承認制となっております。また、日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

スポンサードリンク

Twitter
利用中のサービス

GUiLZ Project では、以下のサービスを利用しています。


関連サイト
巡回先サイト様
アーカイブ