[CentOS] sftpサーバ(OpenSSH)でchrootする件
FTPじゃ暗号されなくていやーんとなってきたのでsftpを調査
sftpといってもSSHが外部に公開されるので攻撃されたら困るので、sftpユーザはchrootすることとシェルでログインできないようにする設定
/etc/ssh/sshd_configの最後ぐらいに追記
Match User test-* ChrootDirectory ~ ForceCommand internal-sftp #ログを/var/log/secureに落としたい場合 #ForceCommand internal-sftp -f local5 -l INFO
sftpを利用するユーザは「test-*」の命名規則にする
ログイン後chrootされて、「/upload/」 フォルダが読み書き可能
「/」はownerがrootのため、読み込みのみで書き込みはできない
のようにする場合は、以下のような感じ。
adduser test-sftp01 chown root:root /home/test-sftp01/ chmod 755 /home/test-sftp01/ mkdir /home/test-sftp01/upload/ chown test-sftp01:test-sftp01 /home/test-sftp01/upload/
chrootしたディレクトリのOwnerがrootでないと以下のようなエラーとなる
/var/log/secure
fatal: bad ownership or modes for chroot directory component "/home/test-sftp01/" [postauth]
sftpでchrootに設定しているユーザがSSHで繋ごうとすると以下のようなメッセージで接続拒否する
This service allows sftp connections only.
<追記>
CentOS6の場合
(openssh-server-5.3p1-123.el6_9)
#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp
として、大本のsftpのSubsystemを切り替えておかないと
以下のようなメッセージで怒られることが判明、
Match User句でForceCommandでinternal-sftpを指定して
いてもNGな模様。
subsystem request for sftp error: subsystem: cannot stat /usr/libexec/openssh/sftp-server: No such file or directory subsystem request for sftp failed, subsystem not found The session allows sftp connections only
> CentOS7(openssh-server-7.4p1-13.el7_4)はSubsystemは変更なしでもOKでした。
<その他メモ>
Match User の中にsshd_configで個別ユーザに設定できるような制御も可能
→鍵認証のみにする、しない
PasswordAuthentication no
→umaskを変えたい場合
ForceCommand internal-sftp -u 002
カテゴリー: Linux
最近のコメント