INDEX
OpenBSD SSHサーバ
OpenBSDのサーバ sshd の設定 (OpenBSD 7.7, OpenSSH_10.0, LibreSSL 4.1.0)
セキュアシェルサーバ(sshd)の設定
/etc/ssh/sshd_config に設定する。
デフォルトの設定でも使えるようになっている。インストール時に設定した内容が反映され、コメントアウトで書かれている内容がデフォルト値になる。
- 関連 man → sshd(8) , sftp-server(8) , sshd_config(5)
設定変更例
ブルートフォースアタックが五月蠅いので、ポート番号を適当に変える。
#Port 22 Port 12345
root は、ログイン不可(インストール時に不可としてると no が設定される)。
PermitRootLogin no
一般ユーザー含め、公開鍵認証のみ(パスワード認証、チャレンジレスポンス認証 を無効にする)。
#PasswordAuthentication yes PasswordAuthentication no
#KbdInteractiveAuthentication yes KbdInteractiveAuthentication no
SFTP は、インプロセスSFTPサーバーを使用。
#Subsystem sftp /usr/libexec/sftp-server Subsystem sftp internal-sftp
設定の確認
sshd -t でエラーとならないか確認する。
設定例
ローカルエリアからのルートログイン
Match を利用した設定例。
ローカルエリア内から接続した場合のみ、保守用に root でもログインできるようにする。
# Connection from local area Match Address 192.168.3.* PermitRootLogin without-password #PasswordAuthentication yes
chrooted sftp
条件分岐と chroot 機能(OpenSSH 4.9 以降)、インプロセスSFTPサーバ(internal-sftp, OpenSSH 4.8 以降) を使用して、特定のユーザが特定のディレクトリ以下のみを sftp のみアクセス出来るようにする。
今回 chroot されるユーザは、sftponly グループに所属するユーザ。自身のホームディレクトリ配下のみ参照可能で、sftp のみの利用できる。
注意点として、chroot されるディレクトリおよびその親ディレクトリすべてが root 所有で、他のユーザ・グループが書き込み出来ないようになっている必要がある。
サーバ設定の変更
/etc/ssh/sshd_config に設定を追加する。ユーザのホームディレクトリに chroot され、sftp のみ利用可能とする。シェルはもちろん、ポート転送も禁止する。
# chrooted sftp Match Group sftponly AllowTcpForwarding no X11Forwarding no ChrootDirectory %h ForceCommand internal-sftp
全体の設定で internal-sftp を使うようにしていない場合は、Subsystem の設定も必要になる。
internal-sftp でなく、sftp-server を使うこともできるが、その場合は必要なライブラリやコマンドなどを chroot 後に利用できるように環境を整える必要がある。これは shell やほかのコマンドも同様。
また、パスワードファイル(/etc/passwd)やグループファイル(/etc/group)などがないため、ユーザー名などが表示されない。
(メモ) sftponly グループの作成
bbb# groupadd sftponly
(メモ) sftponly グループに所属
対象ユーザーを sftponly グループに所属させる。
bbb# usermod -G sftponly sftpuser
(メモ) ホームディレクトリの権限変更
chroot できるように、ディレクトリの権限を修正する(所有者を root で、所有者のみ書き込み可)。
bbb# chown root /home/sftpuser bbb# chgrp sftponly /home/sftpuser
このような権限設定になる
/: drwxr-xr-x 4 root wheel 512 Jan 16 23:30 home/ /home: drwxr-xr-x 3 root sftponly 512 Jan 16 23:30 sftpuser/ /home/sftpuser/: -rw-r--r-- 1 sftpuser general 359 Jan 16 23:30 .login -rw-r--r-- 1 sftpuser general 212 Jan 16 23:30 .profile drwx------ 2 sftpuser general 512 Jan 16 23:30 .ssh/ /home/sftpuser/.ssh/: -rw------- 1 sftpuser general 738 Jan 16 23:37 authorized_keys
(メモ) パスワードファイルとグループファイルの作成
なくても実害はないが、ユーザやグループ名が表示されるようになる。
bbb# cd /home/sftpuser/ bbb# mkdir -m 755 -p ./etc bbb# grep /etc/group -e "^wheel" -e "^_shadow" -e "sftponly" -e "^general" > ./etc/group bbb# grep /etc/passwd -e "^root" -e "^sftpuser" > ./etc/passwd bbb# grep /etc/master.passwd -e "^root" -e "^sftpuser" > ./etc/master.passwd bbb# chown -R root:wheel ./etc bbb# pwd_mkdb -d ./etc ./etc/master.passwd
鍵ファイル
ホスト鍵
ホスト認証用の公開鍵ペアが存在することとパーミッションを確認する。秘密鍵が他のユーザに読める状態では sshd は接続を受け付けない。
- 公開鍵 (オーナは root, パーミッションは 644)
/etc/ssh/ssh_host_key.pub/etc/ssh/ssh_host_dsa_key.pub- /etc/ssh/ssh_host_rsa_key.pub
- /etc/ssh/ssh_host_ecdsa_key.pub
- /etc/ssh/ssh_host_ed25519_key.pub
- 秘密鍵 (オーナは root, パーミッションは 600)
/etc/ssh/ssh_host_key/etc/ssh/ssh_host_dsa_key- /etc/ssh/ssh_host_rsa_key
- /etc/ssh/ssh_host_ecdsa_key
- /etc/ssh/ssh_host_ed25519_key
個人鍵
公開鍵認証に使う個人鍵は、ssh-keygen コマンドを使って作る。ホスト鍵同様に秘密鍵のパーミッションは 600 として自分以外が読めないようになっている必要がある。
鍵ペアを作る場合は、"ssh-keygen -t type" として実行する。
また、マシンにログインに利用する鍵ペアの公開鍵は、'~/.ssh/authorized_keys' へ追加する。
- 関連 man → ssh-keygen(1)
最終更新時間:2025年07月06日 18時28分25秒 指摘や意見などあればSandBoxのBBSへ。