さくらのVPSにDebian Wheezyを入れたら最低限やっておくこと

前回に引き続き、さくらのVPSにDebian Wheezyをインストールした後に最低限やるべきことを紹介します。別にさくらのVPSやDebianに特化したネタではありませんが、最低限のセキュリティ設定は必ず実施しましょうという話。
特にVPSサービスは無防備なグローバルIPアドレスが格安で提供されるというのがメリットでありリスクでもあります。そんなサーバを無自覚にさらしておくことは社会悪でしかありません。
インフラ屋の私としては、特にWebプログラマ寄りの人がVPSを使う際に、こういった辺りがおろそかになっているのではないかという疑念を持ってたりします。すべてがそうではないけど、VPSの自由度が高いが故にあるんではないかなと。VPSサービスを使うっていうことは、少なくともL3から上のレイヤー全てのセキュリティについては気を使わないといけません。

最低限やっておくこととは、不要なアクセス手段を塞ぐことと、必要なアクセス手段も適切な権限を設定することです。この辺の設定が不適切だと、場合によっては悪意の第三者の踏み台にされて利用されてしまったり、中の情報をぶっこ抜かれたりということは平気で起こります。VPSをしばらく運用してるとわかりますが、22番ポートへのアクセス試行なんてのは結構な頻度でやってくるもんです。

不要なサービスを停止・アンインストールする

まずは稼働してるプロセスとリッスンしてるポートが何なのかを見てみましょう。

# ps afx
# netstat -anp

さくらのVPSにDebian Wheezyを入れた場合、結構最小インストールになってるので自動起動しているプロセスはあまりないはずと思いきや意外とあるもんです。ニーズに応じてですが不要なものは止めるなりアンインストールするなりしてしまいます。
パッと見気になるのは、rpcbindとrpc.statdとexim4ですかね。NFSを使う予定もないですし、MTAは後ほどPostfixを入れてしまう予定なので、止めるどころかpurgeしてしまいます。

# /etc/init.d/exim4 stop && /etc/init.d/nfs-common stop && /etc/init.d/rpcbind stop
# aptitude purge exim4 exim4-base exim4-config exim4-daemon-light nfs-common rpcbind

もう一度、psやnetstatで見てみると、主要な起動サービスがsshdだけになって、リッスンポートも22番だけになっているはずです。

sudoとSSHの設定を適切に行う

続いてSSHがノーガードで起動してることが恐ろしいので、ここに対する手当をします。今回の方針としてはこういうところ。
・SSHログインは一般ユーザ、というか俺のみ
・rootログインはしない、一般ユーザからsudoする
・パスワード認証じゃなくて鍵認証
これくらいをやっておけば、とりあえず悪意ある人がいきなりrootを獲ったり、そもそもパスワードを破ってログインするという可能性は大幅に低減できます。

最初にsudoをインストールして設定をします。一般ユーザからrootのコマンドを使う場合は、suよりはsudoを使うのが作法だと思いますので、入れておきましょう。

# aptitude install sudo
# visudo

visudoを実行して適当な行に

hoge ALL=(ALL) ALL

という風にsudoできるユーザを設定します(この場合はhogeがユーザ名)。複数ユーザがいる場合はグループで設定するという手もあるけど、今回はニーズがないのでこれで行きます。
設定できたら一般ユーザでログインして

$ sudo -s

が通るか確認しましょう。これでrootになれればOKです。

続いて/etc/ssh/sshd_configを編集します。変更すべきはこの辺り。ポート番号は任意で設定しましょう。

Port xxxxx
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

お好みでこれを追加してもいいですね。

AllowUsers hoge

ここまで準備できたら一般ユーザのホームディレクトリに.sshディレクトリを作成して、その中にauthorized_keysというファイル名で公開鍵を設置します。また.sshディレクトリは700、authorized_keysファイルは600にパーミッションを変更します。例えばこんな具合ですね。

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

ここまで準備できたら

# /etc/init.d/ssh restart

で再起動すればOK。再起動後に「公開鍵認証でログインしてsudoできるかか」「rootでログイン出来ないか」などを確認しましょう。

さらにこれを踏まえたiptablesとhosts.allowなどでアクセスするIPアドレスを縛れるところまでいければベストです。アクセスする場所が固定IPアドレスであれば、そのIPアドレス限定にしてそれ以外はiptablesとhosts.allow/denyで拒否という二段構えが硬いですね。非固定の場合でも、さくらのVPSならコンソールログインして修正という技が使えるので、シェルスクリプトなどに仕込んで許可IPアドレスを書き換えるなどの小技を駆使してもいいかもしれません。
この辺の細かいところは議論もあるところなのでまたの機会にでも。

コメント

タイトルとURLをコピーしました