{{category OpenBSD,OpenSSH,nolink}}OpenBSDのサーバ sshd の設定 (OpenBSD 6.8, OpenSSH 8.4, LibreSSL 3.2.2) !!!セキュアシェルサーバ(sshd)の設定 '''/etc/ssh/sshd_config''' に設定する。 デフォルトの設定でも使えるようになっている。インストール時にでっていした内容が反映され、コメントアウトで書かれている内容がデフォルト値になる。 *関連 man → [sshd(8)|http://man.openbsd.org/sshd.8] , [sftp-server(8)|http://man.openbsd.org/sftp-server.8] , [sshd_config(5)|http://man.openbsd.org/sshd_config.5] !! 設定変更例 ブルートフォースアタックが五月蠅いので、ポート番号を適当に変える。 #Port 22 Port 12345 root は、ログイン不可(インストール時に不可としてると no が設定される)。 PermitRootLogin no 一般ユーザー含め、公開鍵認証のみ(パスワード認証、チャレンジレスポンス認証 を無効にする)。 # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes PasswordAuthentication no # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no SFTP は、インプロセスSFTPサーバーを使用。 # override default of no subsystems #Subsystem sftp /usr/libexec/sftp-server Subsystem sftp internal-sftp !!!設定例 !!ローカルエリアからのルートログイン Match を利用した設定例。 ローカルエリア内から接続した場合のみ、保守用に root でもログインできるようにする。 # Connection from local area Match Address 192.168.0.* PermitRootLogin without-password #PasswordAuthentication yes !! chrooted sftp 条件分岐と chroot 機能(OpenSSH 4.9 以降)、インプロセスSFTPサーバ(internal-sftp, OpenSSH 4.8 以降) を使用して、特定のユーザが特定のディレクトリ以下のみを sftp のみアクセス出来るようにする。 今回 chroot されるユーザは、sftponly グループに所属するユーザ。自身のホームディレクトリ配下のみ参照可能で、sftp のみの利用できる。 注意点として、chroot されるディレクトリおよびその親ディレクトリすべてが root 所有で、他のユーザ・グループが書き込み出来ないようになっている必要がある。 ! sftponly グループの作成 bbb# groupadd sftponly ! サーバ設定の変更 /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 グループに所属 対象ユーザーを 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 !!!鍵ファイル !!ホスト鍵 ホスト認証用の公開鍵ペアが存在することとパーミッションを確認する。 秘密鍵が他のユーザに読める状態では 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://man.openbsd.org/ssh-keygen.1]