Pesan galat "500 OOPS: vsftpd: menolak untuk dijalankan dengan root yang dapat ditulis di dalam chroot ()" - membuat pengguna tetap dipenjara

19

Sejauh ini saya tidak dapat menyimpan pengguna FTP yang dipenjara di direktori situs web mereka. Apakah ada solusi yang memperbaiki bug ini dan membuat pengguna tetap dipenjara di direktori mereka?

Pengaturan vsFTPd saya yang saya ubah:

listen_port=9000
Set: anonymous_enable=NO
Uncomment: local_enable=YES
Uncomment: write_enable=YES
Uncomment: local_umask=022
Set: connect_from_port_20=NO
Uncomment: idle_session_timeout=600
Uncomment: data_connection_timeout=120
Comment out: #ftpd_banner=Welcome to blah FTP service. [should be on line 104]
Added: banner_file=/etc/issue.net
Uncomment: chroot_local_user=YES
Uncomment: chroot_local_user=YES
Uncomment: chroot_list_enable=YES
Uncomment : chroot_list_file=/etc/vsftpd.chroot_list

Di akhir file saya menambahkan:

# Show hidden files and the "." and ".." folders.
# Useful to not write over hidden files:
force_dot_files=YES

# Hide the info about the owner (user and group) of the files.
hide_ids=YES

# Connection limit for each IP address:
max_per_ip=10

# Maximum number of clients:
max_clients=5

# FTP Passive Settings
pasv_enable=YES
#If your listen_port is 9000 set this range to 7500 and 8500
pasv_min_port=[port range min]
pasv_max_port=[port range max]

Pengguna yang dimaksud,, mybloguserdipenjara di direktori situs webnya di bawah /srv/www/myblogdan pengguna ini bukan bagian dari nano /etc/vsftpd.chroot_listfile. Direktori rumah pengguna juga /srv/www/myblogdigunakan untuk bekerja di masa lalu.

Saya mencoba allow_writeable_chroot=YESsolusi yang tidak berhasil, dan benar-benar memecahkan vsFTPd sepenuhnya.

Saya telah mencoba:

Bagaimana kita bisa memperbaiki kesalahan ini dan menjaga pengguna tetap di-jailed ke direktori home mereka?

Chris Hough
sumber
Entah bagaimana, bagi saya, setidaknya dengan pengguna ftp "virtual", hanya menambahkan pengaturan allow_writeable_chroot=YESsudah cukup dan benar-benar bekerja "seperti yang diharapkan" FWIW ...
rogerdpack

Jawaban:

18

Untuk VSFTPD 3,

  1. Pergi ke: /etc/vsftpd.conf
  2. dan tambahkan ini:

    allow_writeable_chroot=YES
    

    Tambahkan saja jika belum ada.

  3. Mulai ulang layanan vsftpd:

    service vsftpd restart
    

Dan itu seharusnya berhasil.

Carlos Sura
sumber
3
Penanya sebenarnya menyatakan bahwa dia sudah mencoba ini dan itu tidak berhasil, jadi ini bukan jawaban untuk pertanyaannya.
Requist
2
Di mana saya bisa membaca tentang implikasi keamanan dari pilihan ini?
flickerfly
bekerja untuk saya (ini juga disebutkan dalam komentar dari jawaban yang diterima)
Sverre
16

Solusi nyata dari masalah ini: folder home dari pengguna seharusnya tidak dapat ditulis hanya dapat dibaca.

Jadi, jika situs pengguna ada di folder tersebut cat/example.com/http/, folder catharus ada chmod 555dan semua akan beres.

nikita
sumber
12
Itu tidak masuk akal. Direktori pengguna tidak boleh ditulisi ???
Kevin Bowen
6
Bagaimana sebenarnya pengguna seharusnya UPLOAD file jika mereka tidak bisa menulis ?!
Cerin
Ini berfungsi baik untuk ftp anonim tanpa hak unggah, terima kasih!
palacsint
Baik! sekarang tidak masalah
user1406691
5
Ini bekerja dengan sempurna! Cukup buat rumah untuk pengguna dengan chmod 555 dan kemudian, di dalamnya, buat rumah untuk situs web (atau situs web), dengan chmod 755 atau yang Anda butuhkan: semuanya akan berfungsi dan pengguna akan memiliki izin menulis.
lucaferrario
13

Setelah meninjau lebih lanjut posting ini, di komentar sebuah paket diposting yang memperbaiki masalah saya. Anda dapat mencarinya dengan nama saya atau Dokumentasi "Marks": http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/ . Inilah detail saya tentang bagaimana saya memperbaikinya lebih lanjut.

PENGGUNA MASIH JAILED KEPADA DIREKTUR RUMAH MEREKA !!!

# ------------------------------------------------------------------------------
# SETUP FTP USERS --------------------------------------------------------------
# ------------------------------------------------------------------------------

# create the ftp users and lock them to the website directories
useradd -d /srv/www/[website/appname] -m [ftp user name]

# set the ftp account passwords
passwd [ftp user name]

# add the ftp users to the www-data user/group
adduser [ftp user name] www-data

# BUG FIX: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
sudo add-apt-repository ppa:thefrontiergroup/vsftpd
sudo apt-get update
sudo apt-get install vsftpd

# Edit the vsftpd.conf and append this setting to the end of the file to keep users' jailed!
nano /etc/vsftpd.conf

# add all of the text between the starting [[ and ending ]]
# [[

# Keep non-chroot listed users jailed
allow_writeable_chroot=YES

# ]]

# restart the service for changes to take effect
sudo service vsftpd restart

#test ftp via secondary terminal window:
ftp [ftp user name]@[server ipaddress] [ftp port]
Chris Hough
sumber
11
Harap Dicatat: Solusi Chris akan menambahkan server paket pihak ketiga ke daftar repositori Anda! Mengapa menginstal server FTP yang aman dan chroot ketika Anda secara buta menerima paket perangkat lunak asing untuk diinstal pada sistem Anda. (Chris: Saya tidak berpikir Anda akan mengambil keuntungan, tetapi menggunakan solusi ini IMHO sysadmining buruk)
reto
1
apakah Anda memiliki pendekatan yang lebih baik untuk menyelesaikan dilema ini @reto? Sudah berantakan kecil untuk dipecahkan. Terima kasih untuk bantuannya.
Chris Hough
jika ada paket yang diperbarui dari distribusi saya akan mencoba menggunakannya. Sebagian besar distribusi menyediakan backport untuk rilis yang lebih lama. Jika itu tidak mungkin, saya akan mendapatkan sumbernya dari pengembang asli dan membangunnya sendiri. Jika ada tambalan melayang di sekitar saya mungkin menerapkannya (biasanya mereka kecil dan secara manual dapat diperiksa).
reto
Utas ini memiliki 12.000 pandangan, mari kita asumsikan 5% menggunakan solusi Anda dan menambahkan repo Anda. Anda dapat dengan mudah menambahkan versi baru dari paket inti dengan backdoor terintegrasi. Dalam seminggu Anda bisa memiliki akses ke 600 sistem di luar sana. Saya tidak berpikir Anda akan melakukan itu, tetapi menambahkan repo pihak ketiga tidak aman.
reto
1
Saya tidak perlu memperbarui dari repo. Bagi saya menambahkan baris "allow_writeable_chroot = YA" memperbaiki bug
abumalick
7

Menurut jawaban sebelumnya "Solusi NYATA dari masalah ini: folder rumah pengguna seharusnya tidak dapat ditulis hanya dibaca.". Pemikiran umum benar, tetapi dengan realisasi yang salah.

Di bawah ini saya akan mencoba memberikan contoh sederhana:

Untuk memulai, kita perlu membangun topologi direktori pengguna:

 / rumah (ro)
   | -someuser (rw, 700)
         | -ftp_upload (ro, 555) - ch_rooting di sini, hanya bisa dibaca oleh vsftpd :(
           | -temp (rw, 755)
           | -in_box (rw, 755)
           | -out_box (rw, 755)

vsftpd.conf cut:

# Aktifkan chroot
chroot_local_user = YA

# chroot semua pengguna kecuali didengarkan di dalam chroot_list
chroot_list_enable = YA

# Daftar pengecualian. Idealnya, harus kosong;)
chroot_list_file = / etc / vsftpd / chroot_list

# Peta direktori root ftp ke direktori tertentu
local_root = / home / someuser / ftp

Konfigurasi ini berfungsi baik dengan konfigurasi satu pengguna . Untuk multi-pengguna, arahan "user_config_dir" harus digunakan sebagai tambahan.

** PEMBARUAN 20/09

------ **

Berikut ini pemecahan masalah yang rumit, bukan ide terbaik untuk digunakan, tetapi .... Jika Anda memerlukan folder root ftp yang dapat ditulisi, cukup masukkan izin ubah perintah dalam perintah pra-mulai dan pasca-mulai.

  1. Pra-mulai - ubah izin menjadi hanya-baca, yang diperlukan oleh server (:

  2. Mulai server

  3. Pasca-mulai - ubah izin untuk baca-tulis, atau yang Anda butuhkan.

Reishin
sumber
Saya mencoba banyak variasi tetapi tidak dapat membuatnya berfungsi untuk server WP. Apakah ini berfungsi untuk Anda pada konfigurasi WP?
Chris Hough
lihat untuk memperbarui bagian, mauby varian ini dapat membantu Anda, itu tidak sepenuhnya aman untuk melakukannya, tetapi jika tidak ada kemungkinan lain ...
Reishin
1

Ini cukup banyak apa yang disebutkan toastboy70. Buat dir ftp-root chown'd menjadi ftp.ftp dan tidak dapat ditulis (/etc/vsftpd.conf): anon_root = / srv / ftp

Kemudian buat direktori anak yang dapat ditulisi: / srv / ftp / unggah

AsifHaswarey
sumber
0

Saya perlu menambahkan yang berikut ini ke file /etc/vsftpd.conf juga:

seccomp_sandbox=NO

DAN tidak perlu untuk repo kustom !!

Dan batalkan komentar pada baris:

write_enable=YES
MuffinMan
sumber
0

Perbaikan sederhana adalah dengan melakukan seperti yang disarankan pesan kesalahan: buat root tidak dapat ditulis dan kemudian jika Anda perlu mengaktifkan unggahan, buatlah subdirektori yang memang memiliki izin menulis. Tidak diperlukan perubahan konfigurasi.

toastboy70
sumber
0

Setelah 3 jam googling saya dapat Ubuntu 14.04.2 LTS VSFTPd 3 bekerja. Folder rumah akan terlihat / home / vimal setelah diakses dengan klien. Saya telah login dengan vimal dengan privilege root. Saya memiliki folder ftpShare dibuat, tetapi tidak memiliki banyak arti.

sudo chown vimal:vimal /home/vimal/ftpShare/

beberapa perintah yang berguna:

sudo nano /etc/vsftpd.conf
sudo service vsftpd restart
sudo apt-get purge vsftpd
netstat -a | grep ftp
tcp        0        0        *:ftp         *:*        LISTEN
ftp://12.345.23.xxx/  for browser login

Di atas berarti ftp daemon berfungsi

Saya memiliki konfigurasi berikut:

seccomp_sandbox=no
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=NO
secure_chroot_dir=/var/run/vsftpd/empty
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES

Setelah FTP berfungsi, Anda dapat menyesuaikannya dengan kebutuhan khusus, beberapa di atas memiliki nilai default, tetapi saya tidak ingat persisnya.

Kesalahan terlihat di Klien FTP:

1. 500 OOPS: prctl PR_SET_SECCOMP gagal

Larutan.

seccomp_sandbox=no    

[tambahkan di baris pertama vsftpd.conf, setelah bagian komentar awal berakhir]

2. 500 OOPS: vsftpd: menolak dijalankan dengan root yang bisa ditulis di dalam chroot ()

allow_writeable_chroot=YES

Saya menambahkannya di baris terakhir.

krishna vimal
sumber
0

Saya memecahkan masalah vsFTPd yang menolak untuk dijalankan dengan root yang dapat ditulis di dalam chroot () di server Ubuntu saya sebagai berikut:

Saya baru saja menambahkan baris di bawah ini dalam vsftpd.conffile:

allow_writeable_chroot=YES
Somnath Das
sumber