トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

OpenBSD/sshd

INDEX

その他:4.7, 6.8, 7.1, 7.7

OpenBSD SSHサーバ

OpenBSDのサーバ sshd の設定 (OpenBSD 7.7, OpenSSH_10.0, LibreSSL 4.1.0)

セキュアシェルサーバ(sshd)の設定

/etc/ssh/sshd_config に設定する。

デフォルトの設定でも使えるようになっている。インストール時に設定した内容が反映され、コメントアウトで書かれている内容がデフォルト値になる。

  設定変更例

ブルートフォースアタックが五月蠅いので、ポート番号を適当に変える。

#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' へ追加する。

最終更新時間:2025年07月06日 18時28分25秒 指摘や意見などあればSandBoxのBBSへ。