vsftp的安裝和使用


1、vsftpd的簡介
vsftpd是“very secure TTP daemon”的縮寫,是一個完全免費的、開放源代碼的ftp服務器軟件

2、特點
vsftpd是一款在Linux發行版中最受推崇的ftp服務器程序,小巧輕快,安全易用,支持虛擬用戶,支持帶寬限制等功能

3、安裝(關閉防火牆和setenforce 0
檢查Linux系統是否安裝了vsftpd的命令:rpm -qa|grep vsftpd

卸載vsftpd的命令yum remove vsftpd

執行yum -y install vsftpd

[root@localhost ~]# yum -y install vsftpd

 

使用whereis vsftpd 查看安裝路徑

[root@localhost ~]#whereis vsftpd

注:

(1)是否使用sudo權限執行,請根據具體環境決定

(2)yum安裝vsftpd的默認配置文件在/etc/vsftpd/vsftpd.conf

4、創建虛擬用戶
(1)選擇在根目錄或用戶目錄下創建ftp文件目錄:mkdir ftpfile,如/ftpfile,

[root@localhost ~]# cd /

[root@localhost /]# mkdir ftpfile

[root@localhost /]# ls

 

通過ftp上傳時就會傳到這個文件夾下

(2)添加匿名用戶:useradd ftpuser -d /ftpfile/ -s /sbin/nologin #添加用戶沒有登錄機器的權限,只有上傳ftpfile有權限.

[root@localhost ftpfile]# useradd ftpuser -d /ftpfile/ -s /sbin/nologin

 

(3)修改ftpfile權限:chown -R ftpuser.ftpuser /ftpfile/ #把創建的用戶和創建的文件夾的權限對應上。-R表示遍歷,把用戶或者用戶組賦予到/ftpfile這個文件夾的權限上

[root@localhost ftpfile]# chown -R ftpuser.ftpuser /ftpfile/

查看該文件目錄的權限

此時的用戶名和用戶組的權限都為ftpuser

(4)重設ftpuser密碼:passwd ftpuser 123456(這里設置的密碼為123456)

[root@localhost /]# passwd ftpuser

(5)在vsftpd文件目錄下創建測試文件zxr.txt

[root@localhost /]# cd ftpfile/

[root@localhost ftpfile]# touch zxr.txt

[root@localhost ftpfile]# ls

zxr.txt

[root@localhost ftpfile]# vi zxr.txt

 

5、vsftpd服務器的配置
(1)vsftpd.conf文件

查看ftp服務器的安裝路徑

[root@localhost ftpfile]# whereis vsftpd

 

進入/etc/vsftpd/目錄下

[root@localhost ftpfile]# cd /etc/vsftpd/

 

編輯vsftpd.conf文件,把創建的用戶配置上

修改客戶端登錄,提示的歡迎信息(vi打開文件輸入/然后將banner輸入,再點擊enter鍵,能快速找到banner信息)

需要將注釋取消掉,改為自己想要的提示信息

還需要添加一些重要的屬性節點(注意不能有空格,復制下面要把注釋去掉

local_root=/ftpfile #把本地賬戶指向創建的ftpfile文件夾

anon_root=/ftpfile #添加匿名賬戶訪問ftpfile目錄

use_localtime=YES #ftp服務器用到的是本地的時間

查找chroot_list節點

#chroot_local_user=YES #這個節點為是否鎖定創建的/ftpfile為根目錄,不解除注釋,默認為chroot_local_user=NO,鎖定創建的/ftpfile為根目錄,如果解除后設置為chroot_local_user=YES,那么就沒有鎖定創建的/ftpfile為根目錄,在命令行是可以訪問到/ftpfile的上級目錄,也就是系統的根目錄,這是絕對不安全的。所以這個節點不用解除注釋,或者解除更改為chroot_local_user=NO。

編輯該節點,解除

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

添加節點

allow_writeable_chroot=YES #加上這行解決了無法登陸的問題

兩條命令的注釋,將新建的用戶添上。

查找節點anonymous_enable

將該節點改為anonymous_enable=NO,不允許匿名用戶登錄

在該文件的末尾添加傳輸接口的范圍,最大接口61001,最大接口62000,限定嚴格的設置防火牆。

添加范圍

pasv_min_port=61001

pasv_max_port=62000

 

編輯完成保存退出。

(2)配置chroot_list文件

該文件目錄的節點在上一步配置vsftpd.conf文件中已解除注釋。

進入到/etc/vsftpd/目錄下創建文件chroot_list

[root@localhost vsftpd]# cd /etc/vsftpd/

[root@localhost vsftpd]# vi chroot_list

#用編輯器打開文件時,如果沒有這個文件,會默認自動創建一個該文件。

 

將用戶添加進入該新建的chroot_list文件中

 

保存退出。

(5)編輯文件/etc/selinux/config文件

[root@localhost vsftpd]# vi /etc/selinux/config

修改為SELINUX=disabled,如果不改的話,匿名賬戶無法創建文件文件或者文件目錄

 

:wq保存退出

注:如果在驗證的時候碰到550拒絕訪問請執行:

sudo setsebool -P ftp_home_dir 1

然后重啟Linux服務器,執行reboot命令。

6、vsftpd配置文件說明
sudo vi /etc/vsftpd/vsftpd.conf

vsftpd.conf文件的配置文件的添加或更新配置

本項目要用到的配置項:

1)local_root=/ftpfile(當本地用戶登入時,將被更換到定義的目錄下,默認值為各用戶的家目錄)

2)anon_root=/ftpfile(使用匿名登入時,所登入的目錄)

3)use_localtime=YES(默認是GMT時間,改成使用本機系統時間)

4)anonymous_enable=NO(不允許匿名用戶登錄)

5)local_enable=YES(允許本地用戶登錄)

6)write_enable=YES(本地用戶可以在自己家目錄中進行讀寫操作)

7)local_umask=022(本地用戶新增檔案時的umask值)

8)dirmessage_enable=YES(如果啟動這個選項,那么使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,如果有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。默認值為開啟)

9)xferlog_enable=YES(是否啟用上傳/下載日志記錄。如果啟用,則上傳與下載的信息將被完整紀錄在xferlog_file 所定義的檔案中。預設為開啟。)

10)connect_from_port_20=YES(指定FTP使用20端口進行數據傳輸,默認值為YES)

11)xferlog_std_format=YES(如果啟用,則日志文件將會寫成xferlog的標准格式)

12)ftpd_banner=Welcome to mmall FTP Server(這里用來定義歡迎話語的字符串)

13)chroot_local_user=NO(用於指定用戶列表文件中的用戶是否允許切換到上級目錄)

14)chroot_list_enable=YES(設置是否啟用chroot_list_file配置項指定的用戶列表文件)

15)chroot_list_file=/etc/vsftpd/chroot_list(用於指定用戶列表文件)

16)listen=YES(設置vsftpd服務器是否以standalone模式運行,以standalone模式運行是一種較好的方式,此時listen必須設置為YES,此為默認值。建議不要更改,有很多與服務器運行相關的配置命令,需要在此模式下才有效,若設置為NO,則vsftpd不是以獨立的服務運行,要受到xinetd服務的管控,功能上會受到限制)

17)pam_service_name=vsftpd(虛擬用戶使用PAM認證方式,這里是設置PAM使用的名稱,默認即可,與/etc/pam.d/vsftpd對應) userlist_enable=YES(是否啟用vsftpd.user_list文件,黑名單,白名單都可以

18)pasv_min_port=61001(被動模式使用端口范圍最小值)

19)pasv_max_port=62000(被動模式使用端口范圍最大值)

20)pasv_enable=YES(pasv_enable=YES/NO(YES)

若設置為YES,則使用PASV工作模式;若設置為NO,則使用PORT模式。默認值為YES,即使用PASV工作模式。

FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。

一、PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。

當需要傳送數據時,客戶端在命令鏈路上用 PORT命令告訴服務器:“我打開了****端口,你過來連接我”。於是服務器從20端口向客戶端的****端口發送連接請求,建立一條數據鏈路來傳送數據。

二、PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。

當需要傳送數據時,服務器在命令鏈路上用 PASV命令告訴客戶端:“我打開了****端口,你過來連接我”。於是客戶端向服務器的****端口發送連接請求,建立一條數據鏈路來傳送數據。

從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數據鏈路的建立方法就完全不同。而FTP的復雜性就在於此。

)

7、防火牆的配置
防火牆的配置(這里采用的是centos6,用的還是Iptables文件設置防火牆)

(1)編輯防火牆文件

sudo vi /etc/sysconfig/iptables

(2)添加防火牆規則到配置文件中

-A INPUT -p TCP --dport 61001:62000 -j ACCEPT

-A OUTPUT -p TCP --sport 61001:62000 -j ACCEPT

-A INPUT -p TCP --dport 20 -j ACCEPT

-A OUTPUT -p TCP --sport 20 -j ACCEPT

-A INPUT -p TCP --dport 21 -j ACCEPT

-A OUTPUT -p TCP --sport 21 -j ACCEPT

(3):wq保存退出

(4)sudo service iptables restart 執行命令重啟防火牆

8、vsftpd的驗證
(1)執行sudo service vsftpd restart

[root@localhost vsftpd]# service vsftpd restart

 

注:第一次啟動時Shutting down vsftpd是failed不用理會,因為這是重啟命令,保證Starting vsftpd for vsftpd是OK即代表vsftpd服務成功。、

service vsftpd stop #表示關閉vsftpd

(2)執行ifconfig查看運行vsftpd服務器的ip地址

 

(3)打開瀏覽器訪問:ftp://192.168.244.128/

 

(4)輸入之前創建的ftp匿名用戶賬號和密碼

例如:用戶名:ftpuser,密碼:123456

(5)看到如圖界面代表訪問成功

 

或者通過ftp客戶端軟件

例如:cuteftp、filezilla、viperftp、flashftp、leapftp等進行連接ftp服務器,進行上傳文件、下載驗證

9、vsftpd的常用命令
(1)啟動:sudo service vsftpd start

(2)關閉:sudo service vsftpd stop

(3)重啟:sudo service vsftpd restart

10、反復需要驗證ftp身份問題解決
在安裝vsftpd的時候如果在瀏覽器中一直提示需要身份驗證,此時在命令行行登錄會報530 Login incorrect錯誤。

在vsftpd的配置文件目錄/etc/vsftpd下中的vsftpd.conf文件中會配置有pam_service_name=vsftpd指定pam下的文件在該文件中內容如下:

 

其中可能導致登錄不成功(反復需要身份驗證)的問題主要在於以下兩個配置

問題配置一

 

在/etc/vsftpd/ftpusers這個文件中的用戶是禁止登錄的用戶,先檢查需要登錄的賬戶是否在該文件中,如果在,就將該賬戶注釋或者從該文件中去除

問題配置二:

 

該配置是允許用戶的shell為 /etc/shells文件內的shell命令時,才能夠成功

 

此處多留意有的系統里面的shells中的bash會多一些,比如

 

所以就需要查看當前系統shells文件中的內容與創建ftp用戶的時候,為了禁止ssh登錄,跟上的命令在shells中是否存在;

比如:我當前的shells文件內容為

 

但是我在創建ftp用戶的時候的命令為

[root@localhost ~]# useradd ftpuser -d /ftpfile/ -s /sbin/nologin

所以此時創建用戶后-s /sbin/nologin並不是有效的。

這時的解決方案為修改/etc/pam.d/vsftpd文件中的

auth required pam_shells.so

修改為auth required pam_nologin.so

最后重啟vsftpd

[root@localhost ~]# service vsftpd restart


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM