ConoHaでVPSを立ち上げた時に設定した5つのこと
しばらくは清楚かわいいConoHaちゃんに媚びていく感じの記事でいきたいと思います。
タイトルにConoHaって入れとけばこのはちゃんが釣れるからな… ちょろいもんやで…
というわけでタイトル通り、ConoHaでVPS(WordPress TemplateなのでCentOS)を立ち上げたときに自分が即設定した内容をまとめます。
といっても他のVPSでも大体同じような話ですし、慣れてる人には当たり前のことが多いかもしれません。
一応何度も同じ手順を踏むのは面倒だと思うので、chef soloでの自動化についても触れていきます。
1. 管理用のユーザーを作る
デフォルトだとrootユーザーしかいないので、まずは管理作業時に使うためのユーザーを作成します。
suするためにwheelグループに所属させ、またsshログインのために公開鍵も設置しましょう。
chefだとuserリソースとgroupリソース、ファイル設置にdirectoryリソースとfileリソースを使っています。
recipeにユーザー名を埋め込むのはさすがに忍びないので、node設定に入れています。本当はdata_bag使ったほうが良いんでしょうが、ちょっと横着してますね。
data_bagの使い方に付いては参考にさせていただいたアルパカchef日記3日目さんにまとまっているので、そちらを参照すると良いかと思います。
2. wheelグループはnopasswordでsudoできるようにする
1.で作ったユーザーでchef soloを動かす際、パスワードを聞かれると面倒です。
このためwheelグループではnopasswordでsudoできるようにしておきます。
sudoerについては直接弄ると怖いので、opscodeのsudoクックブックを利用しました。
このcookbookを使う場合、自分で書くのはnodeファイルだけでオッケーです。
なお、本来であればwheelユーザーだけがsudoできるように/etc/pam.d/suや/etc/login.defs辺りも設定していくべきですが、今回は個人使用のVPSでwheelユーザー以外存在しないため省略しています。
resourceに変更済みファイルを置いてfileリソースで配置するだけなので、やっておいたほうが無難ではあります。
3. rootユーザーのsshログインを禁止する
sshで直接rootに入れる状態は攻撃されやすいため、rootユーザーについてはsshログインを禁止します。
やることは/etc/ssh/sshd_configを弄るだけです。
なお、この作業をちゃんとユーザーが作れてない、あるいはsudoが正しく出来ない状態でやってしまうと、sshログインできなくなって詰むため、1.で作ったユーザーで作業していきます。
(まぁConoHaちゃんなら最悪Webのコンソールパネルからなんとか出来るんですが)
今回はテンプレートを使っていますが、/etc/ssh/sshd_configをscpで持ってきた後、
PermitRootLogin no
を追記して、拡張子を.erbにしただけです。
今気づきましたがこれ変化する場所ないので、templateじゃなくてresourceでよかったですね…
4. iptablesを有効化する
デフォルトだとiptablesが無効になっておりポートが全開放になっているため、とりあえず必要であろうhttpポートとsshポートを残して他を全て閉じます。
テンプレートの方はこんな感じ。
「立ち上げ直後のiptablesを設定する」を参考にさせていただきました。
自分はiptables6も全く同じ設定で入れてありますが、そもそも使わない気がするのでipv6自体を無効化してしまったほうがいいかもしれないですね。
5. yumのパッケージをupdateする
初期状態で入っているパッケージは幾つか古くなっているので、最新のものにupgradeしておきます。
これについてはcookの度に毎回流れると時間がかかることと不安定なバージョンに勝手に上がってしまう危険性がありそうなので、自分はchefのレシピに入れずに手動で流しています。
$ yum upgrade -y
を流すだけです。
以上が、自分がVPS立ち上げて即実行した設定です。
他にもwheel以外でsudo出来ないようにする、sshのポート番号を変える、ログ監視やメール転送設定を入れる、などやっておいたほうがよいことは色々ありますが、上記くらいが最低限のラインじゃないかと思います。
なおchef soloでセットアップするに当たって、1と2をconoha_root.json、3と4をconoha.jsonといったように別nodeにした上で、.ssh/configにログイン設定を書いてあげると、
knife solo prepare conoha_root knife solo cook conoha_root knife solo cook conoha
の3行であっという間に設定が完了します。
この時、conoha_rootの方はコントロールパネルからダウンロードした秘密鍵を使わないといけないのに若干注意が必要です。
今回は自分が入門Chef Soloを勉強したてということでchefを使いましたが、プロビジョニングツールには他にもPuppet、Ansible、Saltなど色々選択肢があるので、使いやすいものを探してみると良いかもしれません。
以上、何かの参考になれば幸いです。