NENote of Exploiting


2007-03-26 : SSH Server Construction

 SSHサーバ構築メモ。SSHとは「Secure SHell」の省略形であり、暗号化によってセキュアな遠隔ログインを可能とする仕組みである。

Exemplification

 SSHサーバを構築するためには、まずSSHサーバをインストールする必要がある。次のようにタイプし、インストールを行う。なお、ここではシステムはDebian/GNU Linuxを利用している。

defolos@glazheim:~# apt-get install ssh

 次に、セキュリティを確保するために、設定ファイルを変更する。SSHサーバは3つの設定ファイルを読み込んで動作するので、これら3つのファイルを変更する必要がある。

 はじめに「/etc/ssh/sshd_config」ファイルを変更する。viなどのエディタでファイルを開き、次の2行を追加する。すでに行が存在する場合は「no」の部分やユーザ名が正しいか確認する。AllowUsersについては遠隔ログインを許可するユーザ数に応じて追加削除する。

defolos@glazheim:~# vi /etc/ssh/sshd_config
PermitRootLogin no #rootでのログインを禁止
AllowUsers len #ユーザlenのログインを許可 
[ESC] :wq

 次に「/etc/group」を変更する。この変更によって、OSが「su」コマンドを使ってrootになることを許可する新しいグループを追加する。ファイルに追加されたグループ以外のユーザがrootになることを許可しないようにする。このファイルを変更しただけではグループが追加されるだけであるため、次に編集するファイルで、このグループがrootになることを許可する。この例ではwheelというグループを追加しdefolosというユーザのみをグループに所属させているため、この次に編集するファイルを変更し終えた場合len以外のユーザがrootになることは許可されない。

defolos@glazheim:~# vi /etc/group
wheel:x:10:root,len #wheelというグループを追加
[ESC] :wq

 最後に「/etc/pam.d/su」を変更する。このファイルは誰が「su」コマンドを利用してrootになることを許可されているかを記録するファイルである。ユーザ名だけでなくグループ名による許可も可能なため、この例ではユーザ名の変わりにグループ名を指定して許可している。

defolos@glazheim:~# vi /etc/pam.d/su
auth required /lib/security/pam_wheel.so group=wheel #suでrootになれるユーザグループをwheelに限定
[ESC] :wq

 最後に、次のようにSSHデーモンを再起動する。

defolos@glazheim:~# /etc/init.d/sshd restart

Open to public

 sshサーバにインターネットから接続するには、ルータの設定を変える必要がある。さらに、IPアドレスによるサーバの指定ではルータの起動ごとにアドレスが変わるので指定が難しくなる。そこでDNSにドメインを登録する。

Router

 ポートマッピング設定で宛先ポート番号22のパケットを192.168.0.7(SSH Server)に転送するようにNATエントリを編集する。

 このままではサーバへのアクセスにはIPアドレスを使う必要がある。IPアドレスによる指定は先述のようにルータの再起動によってIPアドレスが変わってしまったり、覚えにくいという弱点があるため、DynamicDNS(DDNS)を利用する。

Regist to DDNS

 DDNSをサービスMyDNS(http://www.mydns.jp/)でドメイン名登録をする。メニューの「REGISTER」から新規登録する。ログイン情報が書かれたメールが送られてくるので、IDとパスワードを入力しログインする。ドメイン名はGLAZHEIM.MYDNS.JPなどのドメイン名として利用したいものにし、ホスト名1は*にし、後は空白にする。これで確認を押すと設定が保存され、ドメイン名の登録が完了する。

DiCE

 DiCEはIPアドレスが変更された時に自動的にDDNSにIPが変更されたことを通知するソフトウェアである。元はWindows版しか存在しなかったが、後にLinux版が配布されている。

 DiCE Linux(http://www.hi-ho.ne.jp/yoshihiro_e/dice/linux.html)からCUI版のDiCEをダウンロードする。適当なところに展開し、dicedを実行する。次のような画面が表示される。

=-=-=- DiCE DynamicDNS Client -=-=-=
 Version 0.19 for Japanese
 Copyright(c) 2001 sarad

 :

 設定をするために、addと打つ。

 :add
 新しくイベントを追加します

 DynamicDNSサービス名を入力してください
 "?"で対応しているサービスを一覧表示します
 (P)戻る
 >MyDNS.JP
 -------------------------------------------------
 << MyDNS Service >>
 [省略]
 =================================================
 ドメイン名を入力してください
 "?"でドメイン一覧を表示します
 (P)戻る
 >mydns.jp
 =================================================
 ホスト名を入力してください
 (P)戻る
 >glazheim
 =================================================
 ログインユーザ名を入力してください
 (P)戻る
 >メールで送られてきたユーザ名
 =================================================
 ログインパスワードを入力してください
 (P)戻る
 >メールで送られてきたパスワード
 =================================================
 登録するIPアドレスを入力してください
 空白にすると現在のIPアドレスを自動検出します
 (P)戻る
 >
 =================================================
 このイベントに題名を付けてください
 (P)戻る
 >Update of MyDNS
 =================================================
 このイベントを実行するスケジュールを設定します
 -------------------------------------------------
 実行する頻度を指定してください (番号入力)
 (0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
 (4)その他の周期 (5)IPアドレス変化時 (6)起動時
 (P)戻る
 >5
 -------------------------------------------------
 IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
 アカウントを削除されてしまうことがあります
 IPアドレスの変化が無い時に実行する間隔を指定してください
 (0)7日毎 (1)14日毎 (2)21日毎 (3)28日毎
 (4)35日毎 (5)56日毎 (6)84日毎
 (P)戻る
 >0
 =================================================
 このイベントを有効にしますか? (Y/N)
 (イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
 >y
 =================================================
 イベントを保存しますか? (Y/N)
 >y
 イベント"exampleの更新"を保存しました
 =================================================
 :exit

 これでイベントが設定できた。一応、ここで一度イベントを実行する。

 :ex 0

 後は次のようにタイプしてDiCEを再起動する。

# ./diced -d -l

Connecting

 WindowsによるSSHサーバへの接続は容易であり、準備物はSSHクライアントとログイン可能なアカウントのみである。ここではSSHクライアントとしてPuTTY(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) を利用する。
 はじめに、「putty.exe」をWebページからダウンロードし、実行する。正常に起動するとこのプログラムは次のようなウィンドウを表示する。

Figure:PuTTY SSH client standup window

 接続を行うために、「Host Name(or IP address)」フィールドにSSHサーバのIPアドレスを入力し、「Connection type」ラジオボタンを「SSH」に設定する。

 この設定情報を記録するために、「Save sessions」フィールドに適当な名前を入力し、「Save」ボタンを押す。例として次のような設定情報を挙げる。

Figure:PuTTY SSH client of my config

 次に、「Open」ボタンを押して接続する。正常に接続が完了すると黒いコマンドラインの画面になるため、ユーザ名とパスワードを入力してログインする。

Figure:PuTTY SSH client login

Copyleft (C) 2007 Len. All Rights Not Reserved.