Membuat pengguna SFTP dan memenjarakan untuk chroot pada CentOS - kesalahan otentikasi pengguna

18

Saya punya rilis CentOs 6.4 dengan Digital Ocean dan ingin berhasil membuat pengguna SFTP dan memenjarakan mereka ke direktori home chroot milik pengguna, tetapi saya khawatir saya membuat kekacauan ini.

Saya sudah mencoba banyak hal, terlalu banyak untuk disebutkan di sini karena kebanyakan mungkin salah atau tidak masuk akal, tetapi apa yang saya rasa seharusnya merupakan proses yang benar dan apa yang saya coba adalah: -

Buat grup untuk sftp: -

groupadd sftp

Buat pengguna dan atur direktori home mereka: -

useradd -d /var/www/vhosts/domain.com dummyuser

Tetapkan kata sandi untuk pengguna: -

passwd dummyuser

Ubah grup pengguna menjadi 'sftp': -

usermod -g sftp dummyuser

Setel shell pengguna ke /bin/false: -

usermod -s /bin/false dummyuser

Edit Subsistem di sshd_config( /etc/ssh/): -

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Tambahkan yang berikut ke bagian bawah sshd_configfile: -

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Saya memastikan semua direktori berikut adalah root:root: -

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

Jika saya kemudian mencoba masuk ke server melalui SFTP dengan pengguna dummyuser(di WinSCP), saya mendapatkan yang berikut: -

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

Yang ingin saya capai adalah memenjarakan pengguna ke direktori home mereka. Saya juga sudah mengatur dan mengkonfigurasi vsftpd. Pengguna dapat masuk dengan baik tetapi akan memiliki akses ke seluruh server - Saya hanya belum berhasil memenjarakan bekerja sama sekali.

Edit

Lupa menyebutkan, saya kemudian memulai kembali sshdjuga: -

service sshd restart

Ketika kesalahan dihasilkan di WinSCP, halaman bantuan mereka di sini ada di sini .

Hasil Log

/var/log/secure

Saya mengganti nama server yang sebenarnya dengan 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
zigojacko
sumber
Apakah Anda memulai ulang sshd? Apa yang ada di file log di server?
faker
Ya saya lakukan, maaf saya lupa menambahkan itu ke akhir pertanyaan saya (akan termasuk sekarang). File log (dan lokasi) mana yang harus saya cari karena saya gagal menemukan file 'session log' sejauh ini? Terima kasih.
zigojacko
Anda akan ingin melihatnya /var/log/secure.
faker
Luar biasa, terima kasih - ini membantu (memperbarui pertanyaan dengan entri log).
zigojacko
fatal: kepemilikan buruk atau mode untuk komponen direktori chroot "/ var / www / vhosts /" sesuatu seperti ini yang saya duga tetapi vhostsada root:root.
zigojacko

Jawaban:

14

Ini perangkap umum:
Semua folder hingga rumah chroot harus dimiliki dan hanya dapat ditulis oleh rootpengguna.
Folder tidak dapat ditulis grup - bahkan jika grup itu root.

pemalsu
sumber
4
Saya baru saja belajar trik untuk mengecek ini dengan nyaman:namei -l /var/www/vhosts
clockworkgeek
5

Saya menemukan dan berhasil mengkonfigurasi sftp pada CentOS 6.5: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Edit sshd config:

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

Keluar dan simpan.

Kemudian:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

Untuk pengguna baru bernama "testuser" (anggota grup sftp-only dengan GID 500):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(Saya menggunakan kosong / etc / skel2 sehingga tidak ada. Bashrc dll disalin secara default oleh CentOS)

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

Jadi, dalam contoh ini, saya membuatnya untuk memberikan akses aman ke perusahaan konsultan eksternal yang mengelola situs web. Anda bisa setelah membuat semua ini dilakukan:

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)

Orang bisa memperbaiki semua ini sesuai kebutuhan.

Semoga ini bisa membantu!

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

Guy Boisvert
sumber
Selamat Datang di Kesalahan Server! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
masegaloeh
1
Karena Anda mengubah konfigurasi sshd, saya sarankan Anda me-restart:service sshd restart
Loïc