2010/12/02

DTIのServersMan@VPSでdebianを選択して最初にやったこと

以前から気になっていたDTIのServersMan@VPSでdebianがOSとして選択できるようになってしばらく経ちましたが、Alixより少しパワーが欲しかったのと、Debian Squeezeのテスト環境を兼ねて使ってみることにしました。

Debian LennyをSqueezeにする手順はまとめている方がいらっしゃるのと、それほど難しくないので、それ以前にやった事のメモを残しておきます。

初回ログインの第一印象

ssh経由とはいえ、rootユーザでのログインはなんだか斬新な感じです。

世界中からパスワードが分かればログインできるというのも、なんとなく不安な感じです。

ゆくゆくは作業用の一般ユーザを作るとして、それ以前にやった方がいい事がいくつかあったのでまとめておきます。

localesの設定

apt-getなどPerlを呼び出す場面ではロケール関連のエラーが表示されます。

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = "ja_JP.UTF-8",
	LC_ALL = (unset),
	LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

ロケールが適切に設定されていない事が原因なので再設定します。

# dpkg-reconfigure locales

一覧からlocaleを選択しますが、おすすめは次の3つです。

  • en_US.UTF-8
  • ja_JP.EUC-JP
  • ja_JP.UTF-8

EUCは時代遅れですが、まだ古いrubyを使っていてEUCで動いているアプリケーションもあるので、念のため選択しています。

最終的に選択した3つのロケール

デフォルトロケールとしてen_US.UTF-8を選択しています。

パッケージ更新の前に/etc/apt/sources.listの調整

デフォルトの設定ではftp.debian.orgにアクセスしようとします。

日本国内にあるサーバから海外にアクセスするのは遅い上に無駄なので、これを修正します。

修正後の/etc/apt/sources.listファイル

deb http://ftp.jp.debian.org/debian/ lenny main
deb-src http://ftp.jp.debian.org/debian/ lenny main

deb http://ftp.riken.jp/Linux/debian/debian-security lenny/updates main
deb-src http://ftp.riken.jp/Linux/debian/debian-security lenny/updates main
#deb http://security.debian.org/ lenny/updates main
#deb-src http://security.debian.org/ lenny/updates main

deb http://ftp2.jp.debian.org/debian-volatile lenny/volatile main
deb-src http://ftp2.jp.debian.org/debian-volatile lenny/volatile main
#deb http://volatile.debian.org/debian-volatile lenny/volatile main
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

volatileやsecurityパッケージは国内のミラーサーバからだと失敗した経験があるので、コメントアウトしたものも残しておきます。必要に応じて切り替えてください。

サーバ名は volatileパッケージのミラーsecurityパッケージのミラー(ftp.riken.jpを参照)の情報を参照して変更することもできます。

パス名が変更になる場合もあるので動いている設定とリストの記述をよくみてください。

不要なパッケージの削除

自分の目的にはdbusやlprngは不要なので、まとめて削除しました。

# apt-get remove lprng dbus sasl2-bin libnss-ldap
apacheを起動しないように設定

開いているポートの確認はnetstat -naなどで行ないますが、apacheはしばらく使わないので止めておきます。

# update-rc.d -f apache2 remove

起動時や停止時にapache2を操作する/etc/init.d/apache2スクリプトへのシンボクックリンクを/etc/rc?.d/*apache2シンボリックリンクを削除してくれます。

SSH経由でのログインを制限する

できればLinuxなどのクライアントの方が良いですが、ssh-keygenを使ってVPSログイン用のSSHの公開鍵と秘密鍵のペアを作ってSSHのパスワードログインは使わないようにします。

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/id_rsa_vpslogin
Enter passphrase (empty for no passphrase): xxxxxxxxxx
Enter same passphrase again: xxxxxxxxxx
Your identification has been saved in /root/id_rsa_vpslogin.
Your public key has been saved in /root/id_rsa_vpslogin.pub.
The key fingerprint is:
c7:a1:a3:ac:61:9b:1d:d0:d8:26:32:fe:0e:d7:aa:2e root@dti-vps-srv02
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          .      |
|     +   o .     |
|  o + + S o      |
| . o * . o       |
|  o + =          |
|E  = B .         |
| oooB .          |
+-----------------+

これで2つのファイルが手に入ります。

  • /root/id_rsa_vpslogin - 秘密鍵
  • /root/id_rsa_vpslogin.pub - 公開鍵
/root/id_rsa_vpslogin - 秘密鍵の取り扱い

VPSサーバでkeygenを実行した場合は、このファイルをクライアントマシンにコピーしてサーバからは削除します。

/root/id_rsa_vpslogin.pub - 公開鍵の取り扱い

このファイルは、VPSサーバ上の /root/.ssh/authorized_keys として配置します。

VPSサーバ上でkeygenを実行していればmvするだけです。

# mkdir -p /root/.ssh
# chmod 0700 /root/.ssh
# mv /root/id_rsa_vpslogin.pub /root/.ssh/authorized_keys
# chmod 600 /root/.ssh/authorized_keys
鍵ファイルを使ったログインテスト

クライアントマシンにある id_rsa_vpslogin ファイルを使って、VPSサーバにログインします。

$ ssh -i id_rsa_vpslogin root@127.x.x.x

パスワードを聞かれずにログインできれば終了です。

SSHでパスワードを使ったログインを禁止する前に

VPSの特徴として、リモートでログインできなくなったら終りというのがあります。

一般ユーザでログインして、sudoを使おうとした場合には、ホスト名とIPアドレスの変換が最低でも/etc/hostsを経由して行なえなければいけません。

DNSにも/etc/hostsにも記述のないホスト名を/etc/hostnameに記述すると、次回の再起動後にsudoが使えなくなります。

パスワードを使ったログインを禁止するのは簡単ですが、少なくともrootと一般ユーザの2つに別々のキーを作成しておき、ログインできるかどうかのテストを入念に行なう必要があります。

一般ユーザでログインできればsuコマンドでrootになれますが、いろいろ調子に乗って変更すると落とし穴にはまる可能性があるので注意が必要です。

最後にパスワードを使ったログインを禁止する

いろいろテストを入念にやった最後の最後にパスワードを使ったログインを禁止しておきます。

この作業は自信がなければ行なわずに、確信が持ててから行なう事が必要です。

ま、始めたばかりですから初期化すればいいんですけどね。

変更後の/etc/ssh/sshd_configファイル編集個所

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

いろいろなオーケストレーションツールはrootでのログインとか、公開鍵を使ったssh経由でのログインを必要としますが、パスワードを設定できなかったりすると嫌ですね。

SSHを使えば安全というものでもないので、ssh-keygenで鍵を作成する時にはパスフレーズを必ず適当なフレーズで設定してあげてください。

さいごに

ServersMan@VPSでのdebianの選択は、経験というよりも責任を自分で取る覚悟がないと、お勧めできないですね。 パッケージの多さは魅力的なんですが、しばらくすると時代遅れになりますし、いざという時には自分の腕が頼りです。

自習目的ならいいですが、不用意にポートを開けて不幸を呼び込まないか心配な面もあります。

CentOSはパッケージの数が少ないですが、ビジネスユースならまずはRedHatベースのCentOSに慣れるべきだと思います。 まぁビジネスのためには「慣れるべき」とはいえ、CentOSを勧める理由は常に○×養成ギブス的な意味合いが強いのが、ちょっと悲しいところです。

ServersMan@VPSには、いろいろな変更を加えていますが、とりあえず最低限はこれぐらい必要でしょう。 できれば推測されにくい名前の一般ユーザでログインして、rootでのログインも禁止( PermitRootLogin yes on /etc/ssh/sshd_config)してください。

0 件のコメント: