簡介:
vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。
vsftpd 是一個 UNIX 類操作系統上運行的服務器的名字,它可以運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開放源代碼的ftp服務器軟件,支持很多其他的 FTP 服務器所不支持的特征。
比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創建虛擬用戶、支持IPv6、速率高等。
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。
特點:
1.安裝vsftpd
環境:CentOS Linux release 7.6.1810 (Core)
vsftpd版本:vsftpd.x86_64 0:3.0.2-25.el7
1.1、執行yum命令安裝
[root@Sungeek ~]# yum -y install vsftpd
1.2、修改配置文件
按照下面修改配置文件
[root@Sungeek ~]# cd /etc/vsftpd
[root@Sungeek ~]# vim vsftpd.conf
#是否允許匿名,默認no anonymous_enable=NO #這個設定值必須要為YES 時,在/etc/passwd內的賬號才能以實體用戶的方式登入我們的vsftpd主機 local_enable=YES #具有寫權限 write_enable=YES #本地用戶創建文件或目錄的掩碼 local_umask=022 #當dirmessage_enable=YES時,可以設定這個項目來讓vsftpd尋找該檔案來顯示訊息!您也可以設定其它檔名! dirmessage_enable=YES #當設定為YES時,使用者上傳與下載日志都會被紀錄起來。記錄日志與下一個xferlog_file設定選項有關 xferlog_enable=YES
xferlog_std_format=YES #上傳與下載日志存放路徑 xferlog_file=/var/log/xferlog #開啟20端口 connect_from_port_20=YES #關於系統安全的設定值: #ascii_download_enable=YES(NO) #如果設定為YES ,那么 client 就可以使用 ASCII 格式下載檔案。 #一般來說,由於啟動了這個設定項目可能會導致DoS 的攻擊,因此預設是NO。 #ascii_upload_enable=YES(NO) #與上一個設定類似的,只是這個設定針對上傳而言!預設是NO。 ascii_upload_enable=NO ascii_download_enable=NO
#通過搭配能實現以下幾種效果: #①當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list文件中列出的用戶,可以切換到其他目錄;未在文件中列出的用戶,不能切換到其他目錄。 #②當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到其他目錄。 #③當chroot_list_enable=NO,chroot_local_user=YES時,所有的用戶均不能切換到其他目錄。 #④當chroot_list_enable=NO,chroot_local_user=NO時,所有的用戶均可以切換到其他目錄。 chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #這個是pam模塊的名稱,我們放置在/etc/pam.d/vsftpd pam_service_name=vsftpd #當然我們都習慣支持TCP Wrappers的啦! tcp_wrappers=YES #不添加下面這個會報錯:500 OOPS: vsftpd: refusing to run with writable root inside chroot() allow_writeable_chroot=YES #ftp的端口號 listen_port=60021
#啟動被動式聯機(passivemode) pasv_enable=YES #上面兩個是與passive mode 使用的 port number 有關,如果您想要使用65400到65410 這 11 個 port 來進行被動式資料的連接,可以這樣設定 pasv_min_port=65400 pasv_max_port=65410 #FTP訪問目錄 local_root=/data/ftp/
1.3、添加防火牆開啟相關端口
這里要是測試可以先關閉防火牆
[root@tsemongo01 vsftpd]# systemctl stop firewalld
如果是正式環境,最好開啟防火牆,添加相應端口
#添加主端口 [root@tsemongo01 vsftpd]# firewall-cmd --permanent --zone=public --add-port=60021/tcp success #添加被動端口 [root@tsemongo01 vsftpd]# firewall-cmd --permanent --zone=public --add-port=65400-65410/tcp success [root@tsemongo01 vsftpd]# firewall-cmd --reload success
2、創建FTP用戶
添加FTP用戶命令:useradd XXX
設置FTP用戶密碼:passwd XXX
[root@Sungeek vsftpd]# useradd -d /data/ftp/ -s /sbin/nologin ftpuser [root@Sungeek vsftpd]# passwd ftpuser
查看FTP用戶是否設置不能通過SSH登錄,只能使用FTP
[root@Sungeek vsftpd]# vim /etc/passwd
找到創建的用戶把/bin/bash修改為/sbin/nologin
設置用戶訪問權限:
[root@Sungeek vsftpd]# chown -R ftpuser /data/ftp
3、設置vsftpd服務開機啟動
[root@Sungeek ~]# systemctl enable vsftpd.service
4、啟動暫停查看服務狀態命令
[root@Sungeek ~]# systemctl start vsftpd.service
[root@Sungeek ~]# systemctl status vsftpd.service
5、安裝ftp客戶端驗證能否連接
隨便用一個ftp客戶端訪問測試是否連接成功即可!我用的是FileZilla Client
6、常見問題
6.1、問題1:
這種情況是說明配置文件里面設置的chroot_list_file=/etc/vsftpd/chroot_list沒找到這個文件
直接去/etc/vsftpd目錄cp一個user_list或者把配置文件里面改名就行
6.2、問題2:
這種情況是selinux沒有關閉,關閉selinux即可
[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled
更多詳細的vsftpd的配置說明:https://baike.baidu.com/item/vsftpd/5254770?fr=aladdin