CentOのリリース6.4にDigital Oceanがあり、SFTPユーザーを正常に作成し、ユーザー自身のchrootホームディレクトリに投獄したいのですが、これを台無しにするのではないかと心配しています。
私は多くのことを試しましたが、実際にはここにリストするには多すぎるため、ほとんどが正しくないか、あまり意味がありませんが、正しいプロセスであるはずであると私が感じたのは、次のとおりです。
sftp
のグループを作成:-
groupadd sftp
ユーザーを作成し、ホームディレクトリを設定します。
useradd -d /var/www/vhosts/domain.com dummyuser
ユーザーのパスワードを設定します:-
passwd dummyuser
ユーザーのグループを「sftp」に変更します。
usermod -g sftp dummyuser
ユーザーのシェルを/bin/false
に設定します:-
usermod -s /bin/false dummyuser
sshd_config
(/etc/ssh/
)でサブシステムを編集:-
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
以下をsshd_config
ファイルの最後に追加します。
Match group sftp
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
次のすべてのディレクトリがroot:root
であることを確認します:-
/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com
その後、ユーザーdummyuser
(WinSCP内)を使用してSFTP経由でサーバーにログインしようとすると、次のようになります。
Authentication log (see session log for details):
Using username "dummyuser".
Authentication failed.
私が達成したいのは、ユーザーをホームディレクトリに投獄することだけです。 vsftpdもセットアップして構成しました。ユーザーはうまくログインできますが、サーバー全体にアクセスできます-私は、jailをまったく機能させることができませんでした。
言及するのを忘れて、私はsshd
も再起動しました:-
service sshd restart
WinSCPでエラーが発生した場合、このヘルプページは here です。
/var/log/secure
実際のサーバー名をserver_name
に置き換えました。
Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser
これはよくある落とし穴です。
chrootホームまでのすべてのフォルダーは所有され、root
ユーザーのみが書き込み可能である必要があります。
グループがroot
であっても、フォルダをグループ書き込み可能にすることはできません。
CentOS 6.5でsftpを見つけて設定しました: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/
Sshd設定を編集します。
vim/etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server (comment out the default with "#")
add:
Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
終了して保存します。
次に:
mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only (take note the GID (Group ID). Here, in my example it's 500)
「testuser」という名前の新しいユーザー(GID 500のsftp-onlyグループのメンバー)の場合:
useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --Shell /sbin/nologin testuser
(私は空の/ etc/skel2を使用するので、CentOSはデフォルトで.bashrcなどをコピーしません)
mkdir -p /var/www/testuser/home/testuser
chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser
chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home
chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser
したがって、この例では、Webサイトを管理する外部のコンサルティング会社に安全にアクセスできるようにしました。これをすべて作成した後、次のことができます:
mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:Apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so Apache would get read access)
これらすべてを必要に応じて微調整できます。
これが役に立てば幸い!
ガイ・ボワズバート・インテグレーション株式会社 http://www.ingtegration.com