SaaSesが個人向けVPSサービスから撤退 ということで、月500円程度でそこそこ使えていた実験用サーバーの乗り換え先を検討していたのだけど、コストパフォーマンスから考えると GMOクラウド VPS マイクロ しかねーなという事で、新規契約して初期設定を行った時の内容をまとめてみた。
GMOというだけで割とマイナスイメージを持ってる人も多いかもだけど(自分含む)、個人的には以下のような理由で、2つめの契約をした次第。
後は電話サポートがあったり(以前メールでHDD増量頼んだら、電話連絡が来たのにはビビったけど)、設定代行やマネージドサービスもあるけど、まあこの辺りは使わないのでどうでもいいかな。
と、いい事ばかり書いてはみたけど、GMOは好きじゃないからやっぱり俺は他社VPSを選ぶぜ! って人にも下記の初期設定フローは多分使えると思うので、VPS借りて行う作業の参考にでもなれば幸い。
スポンサードリンク
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スクリプトを設置する。スクリプトは、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
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の公開鍵設定を行う。セキュリティ的には甘々なんだけど、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には、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等を借りたときに、常に行っている設定は以上の通り。ここから各種サービスのインストールになるわけだが、そちらは次回以降に続く、ということで。
スポンサードリンク
当サイトのコメント欄は承認制となっております。また、日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)
コメントを残す