OpenSSH Configuration Manula †OpenSSH最新バージョン
2005/2/11 現在
OpenSSH 4.0
putty 0.57
目次 †sshd_configの設定 †Port 22 Protocol 2 ListenAddress 192.168.100.1 # HostKey for protocol version 1 #HostKey /etc/ssh/ssh_host_key # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key PermitRootLogin no #RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys #AuthorizedKeysFile .ssh/authorized_keys2 # rhosts authentication should not be used RhostsAuthentication no # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts no # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no # To disable tunneled clear text passwords, change to no here! PasswordAuthentication no PermitEmptyPasswords no # Change to no to disable s/key passwords ChallengeResponseAuthentication no X11Forwarding no Banner /some/path #Subsystem sftp /usr/libexec/openssh/sftp-server OpenSSHのセキュリティ設定 †Windowsから公開鍵認証を用いてログイン †はじめは、キーペアの作成を行う。
キーペアはPuTTYgenを用いて作成する キーが作成できたら公開キーをホスト側に転送しなければならない。 しかもPuTTYで作成したキーを使って、そのままの形でOpenSSHで認証キーとして使うことは出来ない。 PuTTYのキー形式からOpenSSHの形式へ変換する必要がある。 ssh-keygen -f key.pub -i > ~/.ssh/authorized_keys はじめは変換が必要だとは知らずにかなり手間取った。 ということで忘れずmemo! あと一応パーミッションを確認。700でなければならないので。 chmod 700 ~/.ssh/ Windows側ではPuTTYを用いて作成した公開キーを指定してログインすればOK! 特に書くこともないだろう。 ログインユーザの制限 †システムユーザの誰もがSSHアクセスできることを許可する必要はないであろう。 アクセスできるユーザを制限したい場合は以下のような設定をsshd_configに書き加えればいい。 AllowUsers testuser DenyUsers all もし複数のユーザに許可を与えたい場合、特定のグループに所属するユーザに許可をあたえるという手段もある。 たとえばsshgroupというグループを作り、このグループに属しているユーザのみログインを認めるという設定は以下のとおりである。 AllowGroups sshgroup DenyGroups all スーパーユーザ(root)への昇格制限 †一般ユーザからスーパーユーザ(root)へ昇格できるユーザを制限します。 まず例では"sample"というユーザのみに昇格権限を与えることとする。グループの編集画面を開き、wheelというグループに追加したいユーザを登録する。 # vigr ==================================== wheel:x:10:root,sample ==================================== 次にsuの設定を変更 # vi /etc/pam.d/su ==================================== #auth sufficient pam_wheel.so trust use_uid ==================================== ここのコメントを外すだけだと、rootへの昇格の際のパスワード入力を省略可能です。セキュリティ的に問題なので、上記のコメントを削除するのではなく以下の設定を実施。 # vi /etc/pam.d/su ==================================== #auth sufficient pam_wheel.so use_uid ==================================== こちらの行のコメントを削除すると、rootになる際にパスワードを聞かれます。 状況に応じて使い分ける。 puttyを用いたSSH-VPNの構築 †SSH-VPNとたいそうご丁寧に書いていますが、実はただのポートフォワードの設定です。 WindowsクライアントからSSHサーバへポートフォワードをさせてメールの送受信を安全に行おうという無いようです。 PuTTYの設定 †PuTTYにはSSHクライアント以外での兄弟アプリとも言うべきものがある。 「PuTTYtel・PSCP・PSFTP・Plink・Pagent・PuTTYgen」 これらが一連のソフトであり、Windows環境におけるSSH通信を協力にサポートしてくれる。 今回SSH-VPNを構築するために使用するのは「Plink・Pagent」である。 PlinkはコマンドラインでSSHを使用するためのプログラム。 Pagentは秘密キーをPuTTYソフトウェア群で自動的に使えるようにしてくれるプログラムである。 まずはじめに、作業ディレクトリを作成する。 「C:\putty」というディレクトリを作成し、Plink・Pagent・作成した秘密キーを格納する。 後はバッチファイルを作ればよい。 サンプルは以下のようである。 c:\putty\PAGEANT.EXE c:\putty\key.ppk c:\putty\PLINK.EXE -ssh -2 -P 22 -l testuser -L 25:127.0.0.1:25 192.168.0.1 「ssh-vpn.bat」という名前で保存すればよい。一番後ろのIPは接続先ホストのIPを指定する。
また、pageantにキーを登録する際に秘密キーのパスワードを入力する必要がある。 SSH-VPNを用いたメールの送受信 †最後にSSH-VPNを用いた具体的使用法をmemoしていく。 メールの送受信を外部からやろうとするとPOPのパスワードが平分で流れてしまう上に、 送受信するメールの内容も盗聴することが可能になってしまう。 そこで、SSH-VPNを用いてクライアントからメールサーバまでの通信を暗号化して安全にメールを送受信したいと思う。 メールの送受信は25番ポートと110番ポートを転送すればいいので以下のような設定をバッチファイルに書き込む。 c:\putty\PLINK.EXE -ssh -2 -P 22 -l testuser -L 65025:127.0.0.1:25 -L 65110:127.0.0.1:110 192.168.0.1 これで、クライアントマシン(127.0.0.1)の65025番で受け取ったパケットはサーバの25番ポートへ転送される。 さらに65110番で受け取ったパケットはサーバの110番ポートへ転送される。 サーバとの通信はすべて暗号化されるのでパスワード等が盗聴される危険性はない。 また、MUAで新しくメールサーバの設定をして、外から受信する際のメールサーバの設定を SMTP・POPサーバのIPを127.0.0.1にして、ポート番号をSMTPは65025、POPは65110とすればよい。 これで安心して外からメールの送受信が出来るというものである。 SOCKS Proxyを使う †例えば内部のアドレスからはアクセスを許可するようなサーバにアクセスしたい場合、 ポートフォワードで転送して、そこからさらにProxyを通すなどという方法もあるが、 そんなことをしなくてもSSHを使えば直接アクセスすることができる。 SOCKS ProxyにPuTTYを使う場合、「接続」→「Proxy」に設定を記述すればいい。 しかーし、私はなぜかコマンドラインのほうが好きなので、Plinkを使うこととする。 書式的には plink.exe -D <ListenIP:>ListenPort DistnationIP -l user_name 具体的には plink.exe -D 127.0.0.1:8080 192.168.100.1 -l testuser ぐらいでしょうか。 後はブラウザのプロキシ設定を「127.0.0.1:8080」にして目的のサーバへアクセス!! これで内部からしかアクセスを許さないサーバとかルータにも簡単にアクセスできるようになります。 便利な世の中だねぇ~ 参考リンク † |