CentOSでSFTPユーザーを作成し、chrootに投獄する-ユーザー認証エラー


18

Digital Oceanを備えたCentOsリリース6.4を手に入れ、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をセットアップして構成しました。ユーザーは正常にログインできますが、サーバー全体にアクセスできます。刑務所に入れることができませんでした。

編集

言及するのを忘れて、私sshdもそれから再起動しました-

service sshd restart

エラーがWinSCPで生成される場合、これに関するヘルプページはこちらです。

ログ結果

/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

再起動しましたsshdか?サーバー上のログファイルには何が含まれていますか?
フェイカー14

はい、しました。申し訳ありませんが、質問の最後にそれを追加するのを忘れてしまいました(今すぐ含めます)。これまで「セッションログ」ファイルを見つけられなかったため、どのログファイル(および場所)を検索する必要がありますか?ありがとう。
zigojacko

をご覧ください/var/log/secure
フェイカー

すばらしい、ありがとう-これは役立ちます(ログエントリで質問を更新する)。
zigojacko

致命的:chrootディレクトリコンポーネント「/ var / www / vhosts /」の所有権またはモードが不正vhostsですroot:root
zigojacko

回答:


14

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


4
これを便利にチェックするコツを学んだばかりですnamei -l /var/www/vhosts
。– clockworkgeek

5

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専用グループのメンバー):

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)

必要に応じてこれをすべて微調整できます。

これが役に立てば幸いです!

Guy Boisvert IngTegration Inc. http://www.ingtegration.com


サーバー障害へようこそ!これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
マセガロー14

1
sshdの設定を変更したので、再起動することをお勧めします。service sshd restart
Loïc16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.