Linux

使用 VSFTPD 的 FTP “拒絕訪問”

  • March 4, 2016

我正在執行 Ubuntu 10.04 i386。我使用 Cyber​​duck(FTP GUI 客戶端)連接到我的伺服器 mysub.domainname.com(在此處更改)。

這就是我希望能夠做到的:

  1. 將 apache2 根從 更改/var/www/home/myuser/webroot以提供諸如 index.html 之類的文件

2)允許FTP寫入/home/myuser/webroot

  1. 允許myuser使用他的使用者登錄/通過 FTP 組合併在myuser文件夾內的任何位置讀/寫

Apache2 根文件夾工作正常。去 myserver.com/index.html 工作。但我無法讓 FTP 寫入,即使我在以下位置更改了這些行etc/vsftpd.conf

listen=YES
#listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
#local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
# chroot_list_enable below.
#chroot_local_user=YES
#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

問題

每當我嘗試在其中創建文件夾/home/myuser或在我的 FTP 程序 Cyber​​duck 中/home/myuser/webroot出現錯誤時。Create directory operation failed.

也許有用的資訊:

drwxrwsr-x 2 myuser www-data 4096 2011-04-18 03:04 webroot

我也在這裡更改了權限:

-rw-rwSr-- 1 myuser root 69 2011-04-18 02:14 index.html

…但沒有運氣。我仍然無法使用 FTP 上傳或寫入。任何建議或指示都會很棒,我完全迷失了這一點。

更新:

我嘗試為 FTP 啟用匿名登錄,但我什至無法讓它工作……我認為唯一的解決方案是完全清除 vsftpd 和 apache2 的系統,然後重新開始

對於權限,您需要擁有文件夾和其中的文件,myuser以便可以從 myuser 帳戶訪問它們。

如果 apache(或您的腳本)需要寫入文件夾,那麼最好的辦法是使用chgrp將應寫入的特定位置分配給 www-data 組,然後chmod g+w是該位置或文件。如果您授予對文件夾的chmod g+sw寫入權限,則將授予對該文件夾的寫入權限,並確保在那裡創建的文件也屬於 www-data 組。

在這種情況下,文件和目錄看起來像:

drwxrwxr-x 2 myuser   www-data    4096 2011-04-18 03:04 webroot
-rw-rw-r-- 1 myuser   www-data    1000 2011-04-18 03:04 index.html
drwxrwsr-x 2 myuser   www-data    4096 2011-04-18 03:04 folderwithg+ws

不過,您需要非常小心地將文件和文件夾的寫入權限授予 apache,否則攻擊者可能會想辦法讓您的腳本覆蓋自己或替換 index.html 或其他任何東西。

否則,如果 apache 不需要寫入您的文件目錄,則權限應該沒問題,因為只要所有子目錄和文件都是世界可讀的(並且目錄是世界可訪問的)。

對於 SSL/TLS,你錯過了

ssl_enable=YES

您可以強制使用者使用加密:

force_local_logins_ssl=YES
force_local_data_ssl=YES

ssl_ciphers= 如果您想將其限制為 HIGH 或特定的密碼列表,還有一個選項。如果您想要“隱式 SSL”(而不是AUTH SSLAUTH TLS命令開始加密,加密是在連接開始時協商的),那麼就是implicit_ssl=YES

引用自:https://serverfault.com/questions/261081