前回は、特別編としてGoogle I/O 2014の様子を紹介しましたが、再びServersMan@VSPSの話題に戻ります。
今回からは64bit版Debianのセットアップを行います。64bit版に変更する際にすべてHDDが消去されていますので、一から設定しなおす必要があります。
基本的には32bit時代に行った作業と同じになります。ここで記載している内容はすべてSSHでServersMan@VPSに接続して行います。
ルートのパスワード変更
まず最初にrootのパスワードを変更しておきます。passwdコマンドを実行して新しいパスワードを2回入力するだけです。
sudo passwd
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
一般ユーザの追加
次に一般用のユーザを追加します。一般用のユーザを作成する理由は
- rootで作業すると誤操作時に被害甚大。
- SSHでrootのログインを禁止することによりセキュリティ向上
の2点です。
新しくサーバを設定している場合は
sudo adduser foo
のようにadduserに続けて追加したいユーザ名を入力すればOKです。適当に質問に答えればユーザが出来上がります。
私のようにサーバを再セットアップする場合は同じユーザを追加することになると思いますが、この時にグループIDとユーザIDが以前と全く同じにしておいたほうが何かと都合がよくなります(バックアップしたファイルを元に戻したときにパーミッションがおかしくなっていない)。
その場合はいったんグループIDを指定してグループ(ユーザ名と同じ名称)を作成したのち、ユーザIDを指定してユーザを作成します。その際、作成したユーザがあらかじめ作っておいたグループに登録されるようにします
sudo addgroup --gid AAAA foo
Adding group `foo' (GID AAAA) ... Done.
sudo adduser –uid BBBB --gid AAAA foo
Adding user `foo' ... Adding new user `foo' (BBBB) with group `foo' ... Creating home directory `/home/foo' ... Copying files from `/etc/skel' ... Enter new UNIX password: パスワード Retype new UNIX password: パスワード passwd: password updated successfully Changing the user information for foo Enter the new value, or press ENTER for the default Full Name []: ユーザのフルネーム Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n]
AAAAが以前使っていたグループID、BBBBがユーザID、fooがユーザ名です。Debian GNU/Linuxではユーザ名とグループ名は同じになり、また、通常はグループID(AAAA)とユーザID(BBBB)は同じになります。
sudoグループへの追加
作成したユーザが一時的にルート権限でコマンドを実行できるsudoというコマンドを使えるようにします。この設定が終われば以降はrootで作業することはなくなります。
以前はvisudoコマンドで/etc/sudoersを編集しましたが、最近のDebianでは作成したユーザをグループsudoに追加すればOKです。
sudo addgroup foo sudo
SSHの設定
SSHの設定は不正ログインを防ぐためにも重要です。行うべきことは
- rootでのログインを禁止する・・・攻撃者はほとんどの場合rootでログインしようとしてきます。
- 鍵認証を使ったログインのみを許可する・・・万が一パスワードがばれてもアクセスできる人を限定できます
の2点です。
rootログインの禁止
/etc/ssh/sshd_configを編集することで行います。
「PermigRootLogin yes」という行があると思いますので、まずはその行の先頭に「#」を追記してコメントアウトします。次に下記の2行を追加します。fooの部分は先ほどsudoグループに追加したユーザ名になります。
PermitRootLogin no AllowUsers foo
編集が終わったらSSHサーバを再起動します。
sudo service ssh restart
rootで作業していたSSHのシェルを終了する前に、新しく作成したユーザがSSHでログインできることとsudoコマンドが使用できることを確認してください。万が一、設定を正しくない状態でrootで作業していたSSHのシェルを閉じてしまうと、二度とSSHでログインできなくなる可能性があります。
鍵認証を使ったSSH接続
秘密鍵と公開鍵のペアを作成し、秘密鍵を持っているユーザのみがSSHで接続できるようにする方式です。
ネットカフェなど秘密鍵がない環境からはSSHでVPSにアクセスできなくなりますが、セキュリティは格段に上がります。
秘密鍵と公開鍵の扱いについては本ページの記述には間違いがあります。
訂正版は下記になります。
https://scratchpad.jp/ssh-public-key-authentication/
サーバ側の設定
まず、サーバ側で鍵ペアを作成します。この作業はsudoグループに追加したユーザ(foo)で行います。
ssh-keygen
Generating public/private rsa key pair. Enter file in which to save the key (/home/foo/.ssh/id_rsa): Created directory '/home/foo/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/foo/.ssh/id_rsa. Your public key has been saved in /home/foo/.ssh/id_rsa.pub. ...
途中でパスフレーズの入力を求められるので入力しておきます(パスフレーズなしにもできますが、安全のため、やはりパスフレーズは設定しておきましょう)。
特に問題がなければ、ユーザfooの.sshディレクトリに、id_rsa.pubとid_rsaというファイルができます。
id_rsa.pubが公開鍵、id_rsaが秘密鍵になります。
この公開鍵・秘密鍵のペアをつかってログインできるように、公開鍵id_rsa.pubをauthorized_keysに追加します。
cd ~/.ssh ls id_rsa id_rsa.pub cat id_rsa.pub >> authorized_keys ls authorized_keys id_rsa id_rsa.pub
ついでに、次の処理に必要なので、秘密鍵を表示しておきます。
cat id_rsa
-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: ... ..... -----END RSA PRIVATE KEY-----
クライアント側の設定(Linuxの場合)
クライアントがLinuxの場合は割と簡単です。
先ほど画面に表示しておいた秘密鍵のテキストをすべてコピー&ペーストして「vps.key」というファイルを.sshディレクトリに作成します。またこのファイルのパーミッションを600にしておきます。
chmod 600 .ssh/vps.key
あとはsshコマンドでログインしてみます。
ssh -i .ssh/vps.key foo@VPSのIPアドレス –p SSHのポート番号
SSHのポート番号は22ではなく、別の番号なので注意してください。これでログインできれば問題ありません。
クライアント側の設定(Windowsの場合)
クライアントソフトとしてPuttyを使う場合を紹介します。
puttyはopenssh形式の鍵が読めないので、puttyについてくるputtygen.exeでファイル形式を変換する必要があります。
まずLinuxをクライアントにする場合と同様に、秘密鍵をコピペしてWindows上にファイルとして保存します(vps.keyとします)。
ここでputtygen.exeを起動して「変換メニュー」→「鍵のインポート」を選択して、作成したvps.keyを選択します。正常に読み込まれたら「ファイル」→「秘密鍵の保存」でPuTTY形式(?)の秘密鍵ファイルとして保存します(vps-key.ppkとします)。
変換に失敗した場合は、WinSCPをインストールしてWinSCPについてくるputtygen.exeを使ってみてください。WinSCPに付属するputtygen.exeのほうが対応しているフォーマットが多いようです。
putty形式の秘密鍵がよう出来たらputtyのセッションの設定を行います。
- 接続先のホスト名をVPSのIPアドレス、ポート番号はSSHのポート番号、接続タイプはSSHにする。
- 接続→データの「自動ログインのユーザ名」を「鍵を作成したユーザ名(foo)」にする
- 接続→SSH→認証の「認証のためのプライベートキーファイル」を作成した鍵ファイル(vps-key.ppk)にする
これで接続してputtyのウィンドウに
Using username "foo". Authenticating with public key "vps-key-openssh-key" Passphrase for key "vps-key-openssh-key":
と表示されたら成功です。ssh-keygenを実行したときに入力したパスフレーズを入力します。
SSH接続に鍵認証を必須にする
最後に再びサーバ(VPS)側の作業です。
SSHのログインを鍵認証のみに変更します。これにより鍵を持っていないユーザはアクセスすることができなくなります。
これには/etc/ssh/sshd_configに下記2つの変更を加えます
- 「PasswordAuthentication no」を追記する
- 下記の行の先頭の#をはずす
uthorizedKeysFile %h/.ssh/authorized_keys/pre>
忘れずにSSHサーバを再起動します。
sudo service ssh restart
まとめ
今回はServersMan@VPSを契約したら最初にやっておくべきこととして、ユーザの作成とSSHの設定を紹介しました。SSHを鍵認証方式に変更するのは若干面倒ですが、セキュリティ向上のため行っておくことをお勧めします。
次回は初期化前にバックアップしたファイルを戻しつつ、ServersMan@VPSのセットアップを進めていきます。
コメント