VSFTPD 安裝配置

64位ubuntu14.04上安裝vsftpd 3.0.2,實現了禁用匿名用戶和虛擬用戶,只啓用本地用戶登錄。

首先安裝vsftpd:

apt-get install vsftpd

然後添加ftp用戶,由於只拿來登錄ftp,所以爲了安全把shell設置爲nologin,同時把對應的家目錄設置爲你要讓該用戶訪問的目錄,命令如下:

useradd -d /var/ftp -s /usr/sbin/nologin username

記得在/etc/shells中加上/usr/sbin/nologin, 否則ftp登陸是會503Login Incorect, 這樣就添加了一個名爲username的用戶,該用戶不能用作系統登陸。然後修改該用戶密碼:

passwd username

根據提示,連續輸入兩次密碼後就更改了username這個用戶的密碼。
現在開始最關鍵的vsftp的配置,主要配置文件是/etc/vsftpd.conf,內容如下:

#禁用匿名用戶登陸
anonymous_enable=NO

#允許本地用戶登陸
local_enable=YES

#允許本地用戶寫入
write_enable=YES
#掩碼,決定了上傳上來的文件的權限。設置爲000使之有最大權限
local_umask=000

#允許記錄日誌
xferlog_enable=YES

#允許數據流從20端口傳輸
connect_from_port_20=YES

#日誌路徑
xferlog_file=/var/log/vsftpd.log

#ftp歡迎語,可以隨便設置
ftpd_banner=hi,guys!

#只有文件中的可以更改root目錄,其他用戶限制在主目錄內
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list

#只有文件中的可以登陸,其他用戶禁止登陸
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.allowed_users

最後一步就是在我們userlist_file選項指定的文件裏添加允許ftp登陸的本地賬戶,一行寫一個即可,如我的就是/etc/vsftpd.allowed_users,內容如下:

username

下一步就是重啓vsftpd服務:

/etc/init.d/vsftpd restart

vsftpd配置文件詳解:
一、主要配置選項
VSFTP的主配置文件是/etc/vsftpd.conf 。由於可配置的選項實在太多,無法一一詳談,只能截取比較常用的功能配置選項來加以說明。完整說明可參考man vsftpd.conf。
這裏需要注意的是,每個配置選項都是由“配置項目名稱=配置值“所定義。在每個配置變量後,要緊跟等號,再緊跟設置的變量值。中間不允許出現空格之類的分隔符,否則導致配置錯誤,無法生效!
另外,如果需要開通上傳功能,則應注意用來登錄FTP的本地系統用戶對要操作的目錄需要具備寫權限,否則無法上傳文件!
版本vsftpd: version 2.0.6
啓動VSFTPD:sudo /etc/init.d/vsftpd start
停止VSFTPD:sudo /etc/init.d/vsftpd stop
重啓VSFTPD:sudo /etc/init.d/vsftpd restart
以下爲常用的配置選項:
1、listen=YES
若設置爲YES,開啓監聽網絡。
2、anonymous_enable
若設置爲YES,則允許匿名用戶訪問;若設置爲NO則拒絕匿名用戶訪問。
如果開啓的話,則可以通過用戶名ftp或者anonymous來訪問,密碼隨便。
3、local_enable
若設置爲YES,則允許通過本地用戶帳號訪問;若設置爲NO,則拒絕本地用戶帳號訪問。如果你拒絕了陌生人訪問,那麼這個必須設置爲YES吧,否則誰能訪問你的FTP呢?
4、write_enable
若設置爲YES,則開啓FTP全局的寫權限;若設置爲NO,則不開。
若爲NO則所有FTP用戶都無法寫入,包括無法新建、修改、刪除文件、目錄等操作,也就是說用戶都沒辦法上傳文件!!
5、anon_upload_enable
若設置爲YES,開啓匿名用戶的上傳權限。前提是write_enable有開啓,並且用戶具有對當前目錄的可寫權限。 若設置爲NO,則關閉匿名用戶的上傳權限。
6、anon_mkdir_write_enable
若設置爲YES,開啓匿名用戶新建目錄的權限。前提是write_enable有開啓,並且用戶具有對當前目錄的可寫權限。 若設置爲NO,則關閉匿名用戶新建目錄的權限。
7、dirmessage_enable
若設置爲YES,則可開啓目錄信息推送,也就是用戶登錄FTP後可以列出當前目錄底下的文件、目錄。 這個應該要開啓吧!
8、xferlog_enable
若設置爲YES,則開啓登錄、上傳、下載等事件的日誌功能。應開啓!
9、xferlog_file=/var/log/vsftpd.log
指定默認的日誌文件,可指定爲其他文件。
10、xferlog_std_format
若設置爲YES,則啓用標準的ftpd日誌格式。可以不啓用。
11、connect_from_port_20
若設置爲YES,則服務器的端口設爲20。
如果不想用端口20,可以另外通過ftp_data_port來指定端口號。
12、chown_uploads
若設置爲YES,則匿名用戶上傳文件後系統將自動修改文件的所有者。
若要開啓,則chown_username=whoever也需指定具體的某個用戶,用來作爲匿名用戶上傳文件後的所有者。
13、idle_session_timeout=600
不活動用戶的超時時間,超過這個時間則中斷連接。
14、data_connection_timeout=120
數據連接超時時間 。
15、ftpd_banner=Welcome to blah FTP service.
FTP用戶登入時顯示的信息 。
16、local_root=/home/ftp
指定一個目錄,用做在每個本地系統用戶登錄後的默認目錄。
17、anon_root=/home/ftp
指定一個目錄,用做匿名用戶登錄後的默認目錄。
18、chroot_local_user、 chroot_list_enable、chroot_list_file
這個組合用於指示用戶可否切換到默認目錄以外的目錄。
其中,chroot_list_file默認是/etc/vsftpd.chroot_list,該文件定義一個用戶列表。
若chroot_local_user 設置爲NO,chroot_list_enable設置爲NO,則所有用戶都是可以切換到默認目錄以外的。
若chroot_local_user 設置爲YES,chroot_list_enable設置爲NO,則鎖定FTP登錄用戶只能在其默認目錄活動,不允許切換到默認目錄以外。
若chroot_local_user 設置爲YES,chroot_list_enable設置爲YES,則chroot_list_file所指定的文件裏面的用戶列表都可以訪問默認目錄以外的目錄,而列表以外的用戶則被限定在各自的默認目錄活動。
若chroot_local_user設置爲NO,chroot_list_enable設置爲YES,則chroot_list_file所指定的文件裏面的用戶列表都被限定在各自的默認目錄活動,而列表以外的用戶則可以訪問默認目錄以外的目錄。
建議設置:chroot_local_user與chroot_list_enable都設置爲YES。這樣就只有chroot_list_file所指定的文件裏面的用戶列表可以訪問默認目錄以外的目錄,而列表以外的用戶則被限定在各自的默認目錄活動!
好處:所有人都被限制在特定的目錄裏面。如果某些特定用戶需要訪問其他目錄的權限,只需將其用戶名寫入chroot_list_file文件就可以賦予其訪問其他目錄的權限!
19、userlist_file、userlist_enable、userlist_deny
這個組合用於指示用戶可否訪問FTP服務。
其中,userlist_file默認是/etc/vsftpd.user_list,該文件定義一個用戶列表。
若userlist_enable設置爲YES,userlist_deny設置爲NO,則只有userlist_file所指定的文件裏面的用戶列表裏面的用戶可以訪問FTP。
若userlist_enable設置爲YES,userlist_deny設置爲YES,則userlist_file所指定的文件裏面的用戶列表裏面的用戶都被拒絕訪問FTP。
若userlist_enable設置爲NO,userlist_deny設置爲YES,則這個列表沒有實際用處,起不到限制的作用!因爲所有用戶都可訪問FTP。
建議設置:userlist_enable與userlist_deny都設置爲YES。這樣則userlist_file所指定的文件裏面的用戶列表裏面的用戶都被拒絕訪問FTP。
好處:只需將某用戶帳號加入到userlist_file所指定文件裏面的用戶列表,就可以起到暫時凍結該用戶的功能!
20、user_config_dir
指定一個目錄用於存放針對每個用戶各自的配置文件,比如用戶kkk登錄後,會以該用戶名建立一個對應的配置文件。
比如指定user_config_dir=/etc/vsftpd_user_conf, 則kkk登錄後會產生一個/etc/vsftpd_user_conf/kkk的文件,這個文件保存的配置都是針對kkk這個用戶的。可以修改這個文件而 不用擔心影響到其他用戶的配置。
二、我的VSFTP的配置方案
#首先要安裝VSFTP。源碼編譯或軟件包安裝都可以。

sudo apt-get install vsptpd

#以下方案實現以下功能:
#1、鎖定用戶在/home/ftp默認目錄活動,
# 並保留/etc/vsftpd.chroot_list文件裏面的用戶列表可訪問其他目錄。
#2、具備暫時凍結FTP用戶的功能,將需暫停的用戶名加入到/etc/vsftpd.usr_list即可。
#
#設置配置文件:
#複製以下文件並保存爲/etc/vsftpd.conf
#新建兩文件:touch /etc/vsftpd.chroot_list
# touch /etc/vsftpd.user_list
#新建目錄:mkdir /home/ftp
#新建羣組:addgroup ftp
#修改/home/ftp屬性:chown ftp:ftp /home/ftp
#新增FTP用戶: adduser –shell /bin/false –home /home/ftp your_usr_name
#把需要開通FTP的用戶名加入到ftp羣組:usermod -aG ftp your_usr_name
#注意:
#如果你的/etc/shells裏面沒有包含/bin/false,則你用上述的方法建立的用戶將法訪問#FTP,解決方法:編輯/etc/shells,加入/bin/false這行。
#
# Example config file /etc/vsftpd.conf
listen=YES
#listen_ipv6=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=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_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
anon_root=/home/ftp
local_root=/home/ftp
userlist_file=/etc/vsftpd.user_list
userlist_enable=YES
userlist_deny=YES
三、回答前面提到的問題
1、如何添加FTP用戶?
設置local_enable爲YES可以開放系統用戶訪問FTP。
在系統裏面添加用戶,將shell設置爲/bin/false,並將其家目錄若設置爲/home/ftp或者其他目錄。這樣就可以建立只訪問FTP而無法登錄shell環境的用戶。
注意:可以新建一個ftp組,把/home/ftp的所有者設爲ftp,羣組也設爲ftp。然後所有新添加的FTP用戶只需加入到FTP羣組就可以具有對/home/ftp的訪問權限了。這樣也方便管理用戶量比較大的FTP系統。如:
sudo addgroup ftp #如果有了就不用添加
sudo chown ftp:ftp /home/ftp #如果改過了就不用再改
sudo adduser –shell /bin/false –home /home/ftp user1 #添加用戶user1
sudo usermod -aG ftp user1 #把用戶user1加入到ftp組
這樣便可以通過用戶名user1來訪問FTP服務了。
2、如何臨時凍結某FTP用戶?
將userlist_enable與userlist_deny都設置爲YES。這樣userlist_file所指定的文件裏面的用戶列表裏面的用戶都 被拒絕訪問FTP。只需將某用戶帳號加入到userlist_file所指定文件裏面的用戶列表,就可以起到暫時凍結該用戶的功能!如需重新開通使用權 限,則只需從該文件中去掉相應的用戶名。
3、FTP用戶登入後的默認目錄?是否可以改變?
可以通過local_root、anon_root來指定相應的默認目錄。
4、如何鎖定FTP用戶可訪問的目錄範圍?
將chroot_local_user與chroot_list_enable都設置爲YES。這樣就只有chroot_list_file所指定的文件 裏面的用戶列表可以訪問默認目錄以外的目錄,而列表以外的用戶則被限定在各自的默認目錄活動!如果某些特定用戶需要訪問其他目錄的權限,只需將其用戶名寫 入chroot_list_file文件就可以賦予其訪問其他目錄的權限!
5、FTP用戶可以有哪些訪問權限?可否上傳文件?
設置write_enable可以開啓全局的寫權限。這樣FTP用戶就可以在本地帳號管理系統允許的範圍內進行寫操作了

6、root用戶無法登錄ftp?

編輯/etc/ftpusers,將root注視掉就ok了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章