vsftpd 錯誤:530 and 500 錯誤解決方法

Joe_vv發表於2014-03-28

VSFTP  530 Login incorrect  And    500 OOPS: vsftpd: refusing to run with writable anonymous root  錯誤的解決方法

 

530 Login incorrect  :
在檔案中限制匿名使用者,做如下設定:

anonymous_enable=NO
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list

 

這樣只有在 user_list 裡面的使用者才可以訪問 ftp。
但是在 service vsftpd restart 後,用 ftp localhost 測試,輸入正確的使用者名稱和密碼之後,卻一直顯示:

530 Login incorrect
Login Failed
後來發現在 etc下面有個 pam.d 資料夾,進去開啟 vsftpd 這個檔案,發現裡面對之前的使用者進行了限制,將裡面對應的限制註釋掉:

#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed


問題解決。

 

500 OOPS: vsftpd: refusing to run with writable anonymous root

如果我們已經把 vsFTPd 伺服器啟動好了,但登入測試是會出現類似下面的提示:
500 OOPS: vsftpd: refusing to run with writable anonymous root
這表示 ftp 使用者的根目錄的許可權不對,應該改過才對;

[root@localhost ~]# more /etc/passwd | grep ftp 
ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin 


我們發現 ftp 使用者的根目錄在 /var/ftp,就是這個 /var/ftp 的許可權不對所致,這個目錄的許可權是不能開啟所有許可權的;是您執行了 chmod 777 /var/ftp 所致;如果沒有 ftp 使用者這個根目錄,當然您要自己建一個; 如下 FTP 使用者的根目錄是不能針對所有使用者、使用者組、其它使用者組完全開放;

[root@localhost ~]# ls -ld /var/ftp 
drwxrwxrwx 3 root root 4096 2005-03-23 /var/ftp 


修正這個錯誤,可以用下面的辦法:

[root@localhost ~]# chown root:root /var/ftp 
[root@localhost ~]# chmod 755 /var/ftp 

 

有的弟兄可能會說,那匿名使用者的可讀、可下載、可上傳怎麼辦呢?這也簡單,在 /var/ftp 下再建一個目錄,許可權是 777 的就行了,再改一改 vsftpd.conf 就 OK 了;沒有什麼難的;
vsFTPd 出於安全考慮,是不準讓 ftp 使用者的根目錄的許可權是完全沒有限制的,您可以去讀一下 vsFTPd 的文件就明白的了;否則也不能稱為最安全的 FTP 伺服器了,對不對?"

 

另附上 VSFTP 的配置檔案:

#About host settings
connect_from_port_20=YES
#記得在前一小節提到的主動式連線使用的FTP伺服器的埠號嗎?這就是ftp-data的埠號;

listen_port=21
#vsftpd使用的命令通道之埠號,如果您想要使用非正規的埠號,在這個設定專案修改吧!不過你必須要知道,這個設定值僅適合以stand alone的方式來啟動喔! (對於super daemon無效)

dirmessage_enable=YES
#當使用者進入某個目錄時,會顯示該目錄需要注意的內容,顯示的檔案預設是.message ,你可以使用底下的設定專案來修訂!

message_file=.message
#當dirmessage_enable=YES時,可以設定這個專案來讓vsftpd尋找該檔案來顯示訊息!

listen=YES
#若設定為YES表示vsftpd是以standalone的方式來啟動的!

pasv_enable=YES
#啟動被動式連線模式(passive mode),一定要設定為YES的啦!

use_localtime=YES
#是否使用本地時間? vsftpd預設使用GMT時間(格林威治),所以會比臺灣晚8小時,建議設定為YES吧!

write_enable=YES
#如果你允許使用者上傳資料時,就要啟動這個設定值;

connect_timeout=60
#單位是秒,在資料連線的主動式連線模式下,我們發出的連線訊號在60秒內得不到使用者端的迴應,則不等待並強制斷線咯。

accept_timeout=60
#當使用者以被動式PASV來進行資料傳輸時,如果主機啟用passive port並等待client超過60秒而無迴應,那麼就給他強制斷線!這個設定值與connect_timeout類似,不過一個是管理主動連線,一個管理被動連線。

data_connection_timeout=300
#如果伺服器與使用者端的資料連線已經成功建立(不論主動還是被動連線),但是可能由於線路問題導致300秒內還是無法順利的完成資料的傳送,那使用者端的連線就會被我們的vsftpd強制剔除!

idle_session_timeout=300
#如果使用者在300秒內都沒有命令動作,強制離線!

max_clients=50
#如果vsftpd是以stand alone方式啟動的,那麼這個設定專案可以設定同一時間,最多有多少client可以同時連上vsftpd哩! ?

max_per_ip=5
#與上面max_clients類似,這裡是同一個IP同一時間可允許多少連線?

pasv_min_port=0, pasv_max_port=0
#上面兩個是與passive mode使用的port number有關,如果您想要使用65400到65410這11個port來進行被動式連線模式的連線,可以這樣設定pasv_max_port=65410以及pasv_min_port=65400。如果是0的話,表示隨機取用而不限制。

#ftpd_banner=一些文字說明

#當使用者連線進入到vsftpd時,在FTP使用者端軟體上頭會顯示的說明文字。不過,這個設定值資料比較少啦!建議你可以使用底下的設定值來取代這個專案;

banner_file=/etc/vsftpd/welcome.txt
#這個專案可以指定某個純文字檔作為使用者登入vsftpd伺服器時所顯示的歡迎字眼。
#

#
#
#Entity user settings
#
guest_enable=NO
#若這個值設定為YES時,那麼任何非anonymous登入的帳號,均會被假設成為guest (訪客)喔!至於訪客在vsftpd當中,預設會取得ftp這個使用者的相關許可權。但可以透過guest_username來修改。

guest_username=ftp
#在guest_enable=YES時才會生效,指定訪客的身份而已。

local_enable=YES
#這個設定值必須要為YES時,在/etc/passwd內的帳號才能以實體使用者的方式登入我們的vsftpd主機喔!

write_enable=YES
#是否允許實體使用者寫入

local_max_rate=60000
#實體使用者的傳輸速度限制,單位為bytes/second, 0為不限制。

chroot_local_user=YES
#將使用者限制在自己的家目錄之內(chroot)!這個設定在vsftpd當中預設是NO,因為有底下兩個設定專案的輔助喔!所以不需要啟動他
#但如果啟動了他,則表示實體使用者預設就已經被chroot,寫在/etc/vsftpd/chroot_list裡的使用者反而是沒有被chroot的.


chroot_list_enable=YES
#是否啟用將某些實體使用者限制在他們的家目錄內?預設是NO ,不過,如果您想要讓某些使用者無法離開他們的家目錄時,可以考慮將這個設定為YES ,並且規劃下個設定值

chroot_list_file=/etc/vsftpd/chroot_list
#如果chroot_list_enable=YES那麼就可以設定這個專案了!他裡面可以規定那一個實體使用者會被限制在自己的家目錄內而無法離開! (chroot)一行一個帳號即可!

userlist_enable=YES
#是否藉助vsftpd的抵擋機制來處理某些不受歡迎的帳號,與底下的設定有關;

userlist_deny=YES
#當userlist_enable=YES時才會生效的設定,若此設定值為YES時,則當使用者帳號被列入到某個檔案時,在該檔案內的使用者將無法登入vsftpd伺服器!該檔案檔名與下列設定專案有關。
userlist_file=/etc/vsftpd/user_list
#若上面userlist_deny=YES時,則這個檔案就有用處了!在這個檔案內的帳號都無法使用vsftpd喔!
#
#
#
#Anonymous settings
#
anonymous_enable=YES
#設定為允許anonymous登入我們的vsftpd主機!預設是YES ,底下的所有相關設定都需要將這個設定為anonymous_enable=YES之後才會生效!

anon_root=/var/ftp
anon_world_readable_only=YES
#僅允許anonymous具有下載可讀檔案的許可權,預設是YES。

anon_other_write_enable=YES
#是否允許anonymous具有寫入的許可權?預設是NO!如果要設定為YES,那麼開放給anonymous寫入的目錄亦需要調整許可權,讓vsftpd的PID擁有者可以寫入才行!

anon_mkdir_write_enable=YES
#是否讓anonymous具有建立目錄的許可權?預設值是NO!如果要設定為YES,那麼anony_other_write_enable必須設定為YES !

#是否讓anonymous具有上傳資料的功能,預設是NO,如果要設定為YES ,則anon_other_write_enable=YES必須設定。

deny_email_enable=YES
#將某些特殊的email address抵擋住,不讓那些anonymous登入!如果以anonymous登入主機時,不是會要求輸入密碼嗎?密碼不是要您輸入您的email address嗎?如果你很討厭某些email address ,就可以使用這個設定來將他取消登入的許可權!需與下個設定專案配合:

#banned_email_file=/etc/vsftpd/banned_emails
#如果deny_email_enable=YES時,可以利用這個設定專案來規定哪個email address不可登入我們的vsftpd喔!在上面設定的檔案內,一行輸入一個email address即可!

no_anon_password=YES
#當設定為YES時,表示anonymous將會略過密碼檢驗步驟,而直接進入vsftpd伺服器內喔!所以一般預設都是NO的!

anon_max_rate=40000
#這個設定值後面接的數值單位為bytes/秒,限制anonymous的傳輸速度,如果是0則不限制(由最大頻寬所限制),如果您想讓anonymous僅有30 KB/s的速度,可以設定『anon_max_rate=30000』

anon_umask=077
#限制anonymous的許可權!如果是077則anonymous傳送過來的檔案許可權會是-rw-------喔!
#
#
#
# About system settings
ascii_download_enable=YES
#如果設定為YES ,那麼client就可以使用ASCII格式下載檔案。

ascii_upload_enable=YES
#與上一個設定類似的,只是這個設定針對上傳而言!預設是NO

one_process_model=NO
#這個設定專案比較危險一點~當設定為YES時,表示每個建立的連線都會擁有一支process在負責,可以增加vsftpd的效能。不過,除非您的系統比較安全,而且硬體配備比較高,否則容易耗盡系統資源喔!一般建議設定為NO的啦!

tcp_wrappers=YES
#當然我們都習慣支援TCP Wrappers的啦!所以設定為YES吧!

xferlog_enable=YES
#當設定為YES時,使用者上傳與下載檔案都會被紀錄起來。記錄的檔案與下一個設定專案有關:

xferlog_file=/var/log/vsftpd.log
#如果上一個xferlog_enable=YES的話,這裡就可以設定了!這個是登入檔的檔名啦!

xferlog_std_format=NO
#是否設定為wu ftp相同的登入檔格式? !預設為NO ,因為登入檔會比較容易讀!不過,如果您有使用wu ftp登入檔的分析軟體,這裡才需要設定為YES

nopriv_user=nobody
#我們的vsftpd預設以nobody作為此一服務執行者的許可權。因為nobody的許可權相當的低,因此即使被入侵,入侵者僅能取得nobody的許可權喔!

pam_service_name=vsftpd
#這個是pam模組的名稱,我們放置在/etc/pam.d/vsftpd即是這個咚咚!


 

 參考:

http://www.extmail.org/forum/thread-12298-1-1.html




博主所有文章已轉自私人部落格 Joe 的個人部落格,謝謝關注!

 

相關文章