いきなりですが、Windows をリモート管理することを考えてください。
何を思いつきますか?
- Windows 2000 Server以上 での リモートデスクトップ
- Windows 2000 Server以上 での (暗号化)telnet
- VNC
- DesktopOnCall
- pcAnyware
- etc.etc...
この中で、コンシューマーレベルで使えて
(Windows 2000 Server は普通もってないでしょ・・・)
無料 (低価格) のもので、コンソールで使うもので、セキュリティを守れるもの・・
と選ぶと、おおむね Cygwin 上の OpenSSH になるでしょう。
というより、OpenSSH が有能すぎて、
メリットが多すぎて、それに対抗できるものがありません。
コンソールでリモート管理がしたいなら迷わず入れましょう。
また、GUI だけでリモート管理する場合は、
単体アプリなら pcAnyware がずば抜けてよいと思いますが、
結構金額が高いです。
これに対抗して OpenSSH (トンネリング) + VNC などを使えば、
ほぼ同じ事が 無料 で行えてしまいます。
私的には、
「もう、入れるっきゃないよね!」 です。
私のページのインストール方法を使用した人は
特に確認する必要はありませんが、
それ以外の方法でインストールした人は Cygwin 本体以外に
以下のパッケージをインストールしておく必要があるので確認してください。
- openssh
- openssl
- zlib
- cygrunsrv
- ash
- gawk
また、これらは Cygwin 本体と深くかかわっています。
必ず同時期に配布されているパッケージですべて統一してください。
一部分だけのアップデートなどを行ってはいけません。
そして、インストールは Cygwin 標準の setup.exe から実施しましょう。
Server / Client モデルなので、サーバ側 & クライアント側両者について、
組み合わせた設定を行う必要があります。
セキュリティについて考えるときには、サーバの設定を締める ことになり、
クライアント側をそれに合わせて設定を行うようになります。
デフォルトのままなら、
$ ssh サーバのIPアドレス
でつながると思いますので、まずは接続を確認してください。
接続が確認できたら、そのあとはマニュアルやWeb、書籍を参照しながら
/etc/sshd_config とクライアントの設定をいじっていくことになります。
内容については SSH の仕組み自体も機能も複雑なので、
すべてを記述するのはとてもむりです。
設定の詰め方は各自の努力次第です。
ただ、ひとつの参考として、私が用いている
「ガチガチのシステム」の作り方だけ述べましょう。
ルーズな方に移行するのは (比較的) 簡単ですから。
まずはサーバの設定は以下のコンフィグどおりです。
/etc/sshd.config
パスワード認証は行わず、SSH2 による公開鍵認証系だけを許可した設定です。
また、私は OpenSSH サーバとは別に、
パケットフィルタでソース IP を制御しているので、
設定していませんが、OpenSSH サーバだけで通信を制御する方は
/etc/hosts.allow や /etc/hosts.deny
を使うことをおすすめしておきます。
これがサーバ側の設定として最もカタイと思います。
次にクライアント側をこれに合わせて設定します。
認証が公開鍵暗号系なので、クライアント側の SSH2 の公開鍵をマージして
サーバ側の ~/.ssh/ 配下に authorized_keys という名称で
保存しましょう。
パーミッションは 644 で良いでしょう。
この作業は 各ユーザごとに行えば完了です。
この状態では、authorized_keys に対応した秘密鍵を持っている
クライアントのみが ssh で接続できるようになります。
かなりセキュアな環境に出来ると思います。
もちろん接続時は、SSH2 を許可して接続しましょう。
明示的に SSH2 で接続するならこんな感じになります。
$ ssh -2 -l "サーバ側でのユーザ名" "サーバのIPアドレス"
最後に、おすすめの書籍を一冊だけご紹介です。
OpenSSH セキュリティ管理ガイド
OpenSSH を使うまでにはいくつかの難関があります。
- サービスを起動できるようにする
- クライアントが接続できるようにする
- セキュリティレベルを上げる
それぞれのおおむねの対処法を記述します。
「1. サービスを起動できるようにする」に引っかかったときは、
ほぼ間違いなく owner / group 及び パーミッションの設定依存です。
以下のように設定されていることが望ましいと思います。
(以下のものは標準の設定より、より現実的なパーミッションです)
/etc の内容(抜粋)
-rw-r--r--+ 1 admin admins 165 Jul 22 2001 ssh2.motd
-rw-r--r--+ 1 admin admins 1049 Sep 24 07:47 ssh_config
-r-------- 1 SYSTEM admins 668 Jul 22 2001 ssh_host_dsa_key
-r--r--r-- 1 SYSTEM admins 605 Jul 22 2001 ssh_host_dsa_key.pub
-r-------- 1 SYSTEM admins 530 Jul 22 2001 ssh_host_key
-r--r--r-- 1 SYSTEM admins 334 Jul 22 2001 ssh_host_key.pub
-r-------- 1 SYSTEM admins 883 Jul 22 2001 ssh_host_rsa_key
-r--r--r-- 1 SYSTEM admins 225 Jul 22 2001 ssh_host_rsa_key.pub
-rw-r--r--+ 1 admin admins 1655 Nov 4 23:15 sshd_config
/var の内容(抜粋)
drwx------+ 2 SYSTEM admins 0 Feb 1 07:12 empty/
drwxrwxr-x+ 5 SYSTEM admins 4096 Feb 1 16:38 log/
drwxrwxr-x+ 2 SYSTEM admins 0 Feb 1 16:40 run/
'ls -l' で表示される属性の一番右に "+" がついているのは
owner / group / other の rwx で表示できる以外のアクセス権が
ついていることを示していて、大雑把にいうと
NTFS 上のアクセス権設定で SYSTEM アカウントに
アクセス権 (フルコントロール) がついているということです。
ですので、まずは上記の二つのディレクトリ配下に相当する
Windows 上のフォルダに対して、NTFS で SYSTEM ユーザに
フルコントロールのアクセス権を設定します。
その後、chown chmod で上記のようなアクセス権設定としましょう。
おそらく以上で起動できるようになると思います。
なお、起動できない対処をするとき、
ssh-host-config スクリプトと
/var/log/sshd.log が多くの情報を与えてくれます。
起動できなくて行き詰まったら、これらは必ず参照すべきです。
「2. クライアントが接続できるようにする」に引っかかった時は、
まず最初に /etc/hosts.allow /etc/hosts.deny に問題が無いか確認しましょう。
Cygwin の OpenSSH は /etc/hosts.allow /etc/hosts.deny を参照します。
これが問題なければ、サーバとクライアントのメッセージを詳細表示にして、
どこが問題なのか確認するしかありません。
サーバ側のメッセージを詳細にするには、
レジストリをいじるのが近道です。
"CYGWIN sshd" サービスを一度停止したあと、
以下のレジストリファイルで on/off を設定したあとで開始してください。
デバッグメッセージを on (debug_sshd.reg)
デバッグメッセージを off (normal_sshd.reg)
出力は /var/log/sshd.log に吐き出されます。
クライアント側のメッセージを詳細表示にするには
"-v" オプションをつけてください。
出来る限り多く情報がほしい場合は、"-v -v -v" オプションをつけてください。
あとは出力メッセージから問題解決を頑張ってください。
ちなみに公開鍵認証系では大抵、サーバに置いてある公開鍵の
パーミッションと所有権の問題でした。
その際に望ましい公開鍵のパーミッションは以下のとおり。
~/.ssh での 'ls -la' の内容
drwxr-xr-x+ 2 k-square admins 4096 Feb 1 07:07 ./
drwxr-xr-x+ 6 k-square admins 4096 Feb 2 23:39 ../
-rw-r--r--+ 1 k-square admins 1013 Aug 1 2002 authorized_keys
-rw-r--r--+ 1 k-square admins 2512 Aug 1 2002 authorized_keys2
「3. セキュリティレベルを上げる 」に引っかかった時は、
・・・難しいです。
情報を集めましょう。
これは個人で頑張ってもらうしかないです。
それでも分からなければ、私の例をそのまま真似てください。