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を用いて作成する
ssh01.gif
SSH2-DSAキーを選択し、キーサイズを2048ビットに設定。 Generateをクリックしキーペアが出来たら、秘密キーにパスフレーズを設定する。 公開キーは「key.pub」 秘密キーは「key.ppk」 として保存する。

キーが作成できたら公開キーをホスト側に転送しなければならない。 しかも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にキーを登録する際に秘密キーのパスワードを入力する必要がある。
ssh03.gif
一度入力すれば、Pageantを終了させるまでキーの再入力をする必要はない。 ちなみにPageantが起動していなかった場合、Pageantが起動しただけで処理が終了してしまう。 Pageantはスタートアップにでも入れておけばこの問題は回避できる。 起動しているかどうかは画面右下のタスクトレイを見ればすぐにわかる。
ssh02.gif

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」にして目的のサーバへアクセス!! これで内部からしかアクセスを許さないサーバとかルータにも簡単にアクセスできるようになります。 便利な世の中だねぇ~

参考リンク

openssh

putty

ARI's 資料館


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-01-01 (日) 20:56:27 (2674d)