!!!OpenBSD SSHサーバ {{category OpenBSD,OpenSSH,nolink}}OpenBSDのサーバ sshd の設定 (2010-07-08 OpenSSH 5.5 at OpenBSD 4.7 ベースに) !!!セキュアシェルサーバ(sshd)の設定 '''/etc/ssh/sshd_config''' に設定する。 デフォルトのままでもそこそこ使える設定にはなっている。コメントアウトされて書かれている内容がデフォルト値になる。 *関連 man → [sshd(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8&arch=i386] , [sshd_config(5)|http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5&arch=i386] *関連 → [OpenSSH 日本語マニュアルページ|http://www.unixuser.org/~euske/doc/openssh/jman/] (新山氏 個人訳) !!設定内容(方針) 重要そうな・変更した設定項目だけ。詳しくはマニュアル参照のこと。 デフォルトでは root がパスワード認証でログオン出来るので変更する。 ブルートフォースアタックが五月蠅いので、ポート番号を変えて、公開鍵認証のみにする。 *ポート番号を適当に変える **Port 123456 *プロトコルは、バージョンは2のみ **Protocol 2 *スーパーユーザ(root)のログオンは不可 **PermitRootLogin no *認証方法は、公開鍵認証のみ **RSAAuthentication yes **PubkeyAuthentication yes **PasswordAuthentication no **PermitEmptyPasswords no **ChallengeResponseAuthentication no *パーミッションチェックを行う **StrictModes yes *ホストベースド認証(rhosts)は利用しない **RhostsRSAAuthentication no **HostbasedAuthentication no **IgnoreRhosts yes *サブシステムで、sftp を利用可能にする。 **==Subsystem sftp /usr/libexec/sftp-server== **Subsystem sftp internal-sftp **※OpenBSD 4.3 または OpenSSH 4.8 から internal-sftp が使える !!!設定例 !!chrooted sftp 条件分岐と chroot 機能(OpenSSH 4.9 以降)を利用して、特定のユーザが特定のディレクトリ以下のみを sftp のみアクセス出来るようにする。また、internal-sftp (OpenSSH 4.8 以降)を利用すると別途コマンド類を chroot したディレクトリに配置する必要がなくなる。 chroot されるユーザは、sftponly グループに所属するユーザ。自身のホームディレクトリ配下のみ参照可能で、sftp のみの利用できる。 sftponly グループを作成する。 # groupadd sftponly /etc/group を編集して、対象のユーザを sftponly グループに所属させる。 sftponly:x:1002:user /etc/ssh/sshd_config に設定を追加して、chroot されるようにする。(sftpのみ可能とし、ポート転送も禁止する) # chrooted sftp Match group sftponly AllowTcpForwarding no X11Forwarding no ChrootDirectory %h ForceCommand internal-sftp shell も利用可能にする場合は、ForceCommand をなくす(か必要に応じた設定にする)。さらに、必要なコマンド類を chroot 後に利用できるように環境を整える必要がある。 chroot するディレクトリとそこまでのディレクトリすべてが root 所有で、他のユーザ・グループが書き込み出来ないようになっている必要がある。 って、それじゃホームディレクトリに指定してるのに、直下にファイルを置けないじゃん。「%h」を指定したときは、ユーザ所有でもOKにならないかな。 !!ローカルエリアからのルートログイン Match を利用した設定例。ローカルエリア内から接続した場合のみ、保守用にルートでもログインできるようにする。 # Connection from local area Match Address 192.168.0.* PermitRootLogin without-password #PasswordAuthentication yes !!!鍵ファイル !!ホスト鍵 ホスト認証用の公開鍵ペアが存在することとパーミッションを確認する。秘密鍵が他のユーザに読める状態では sshd は接続を受け付けない。 *公開鍵 (オーナは root, パーミッションは 644) **/etc/ssh/ssh_host_key.pub **/etc/ssh/ssh_host_dsa_key.pub **/etc/ssh/ssh_host_rsa_key.pub *秘密鍵 (オーナは root, パーミッションは 600) **/etc/ssh/ssh_host_key **/etc/ssh/ssh_host_dsa_key **/etc/ssh/ssh_host_rsa_key !!個人鍵 公開鍵認証に使う個人鍵は、ssh-keygen コマンドを使って作る。ホスト鍵同様に秘密鍵のパーミッションは600として自分以外が読めないようになっている必要がある。鍵ペアを作る場合は、"ssh-keygen -t type" として実行する。また、マシンにログインに利用する鍵ペアの公開鍵は、'~/.ssh/authorized_keys' へ追加する。 *関連 man → [ssh-keygen(1)|http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&sektion=1&arch=i386]