web-dev-qa-db-ja.com

CentOSでのSFTPユーザーの作成とchrootへの投獄-ユーザー認証エラー

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
18
zigojacko

これはよくある落とし穴です。
chrootホームまでのすべてのフォルダーは所有され、rootユーザーのみが書き込み可能である必要があります。
グループがrootであっても、フォルダをグループ書き込み可能にすることはできません。

14
faker

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

5
Guy Boisvert