搭建linux vsftpd服務器

一、vsftpd簡介


vsFTPd是一款在Linux發行版中最受推崇的FTP服務器程序;特點是小巧輕快,安全易用;能讓其自身特點得發發揮和掌握,也然最主要的是會用;目前在開源操作系統中常用的FTPD套件主要有ProFTPDPureFTPdwuftpd等;至於哪個FTP服務器套件更好,哪個是你最熟悉的,哪個就是最好的


二、vsftpd的兩種工作模式


FTP的連接一般是有兩個連接的,一個是用於客戶程和服務器傳輸命令的,另一個是用於數據傳送的連接。FTP服務程序一般會支持兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode),我先說說這兩種不同模式連接方式的分別。(先假設客戶端爲C,服務端爲S)


主動模式(Port Mode)命令連接的建立是由客戶端C的隨機端口向服務端STCP 21端口請求連接產生;數據連接的建立是由:(命令端口的連接建立在成功後)客戶端C會發送一條命令告訴服務端S(客戶端C在本地打開了一個端口隨機端口N在等着你進行數據連接)當服務端S收到這個Port命令後就會利用服務器S自己的TCP 20端口向客戶端打開的那個隨機端口N進行請求連接,最終連接成功。


被動模式(Pasv Mode)命令連接的建立也是由客戶端C的隨機端口向服務端STCP 21端口請求連接產生;(命令端口的連接建立在成功後)服務端S會發信息給客戶端C這個信息內容(服務端S在本地打開了一個高位端口M你現在去連接我吧)當客戶端C收到這個信息後,就利用客戶端自己的隨機端口向服務端SM端口進行連接,進而數據連接建立成功


三、vsftpd的安裝與啓動


Vsftpd的安裝程序在RHEL5安裝光盤的Server目錄中,名稱是:vsftpd-*(版本).rpm。在安裝之前您可以先查看自己的服務器上是否已經安裝。例如下所示:


#rpm -qa|grep vsftpd


vsftpd-2.0.5-10.e15


如果您的服務器上沒有安裝vsftpd的程序包,您可以使用以下命令安裝:


#rpm -ivh vsftp-2.0.5-10.e15.i386.rpm


當您的vsftpd程序包安裝上之後,就可以設置vsftpd服務開機自動啓動。命令如下:


#chkconfig vsftpd on


並設置手工啓動該服務,命令如下所示:


#service vsftpd start   或   #/etc/init.d/vsftpd start


四、vsftpd的用戶


Vsftpd服務支持三種用戶登錄ftp服務器,包括:匿名用戶、本地用戶、虛擬用戶。


匿名用戶在text模式下,要用用戶名ftp,密碼也是ftp,來進行登陸;如果是用FTP工具來匿名登陸的話,用戶名和密碼都爲:anonymous。默認情況下匿名用戶可以訪問和下載,但不能進行上傳、刪除、新建目錄、執行文件等操作!默認情況下匿名用戶登錄之後訪問的位置是/var/ftp目錄


本地用戶就是使用useradd手工建立的用戶,這些用戶的相關資料都存儲在/etc/passwd/etc/shadow文件中。當vsftpd的客戶端利用本地用戶的身份與口令登錄vsftpd時,默認訪問本地用戶自己的家目錄(主目錄)(提示:爲了提高vsftpd服務器的安全性,我們可以把一些vsftpd的本地用戶的shell設置爲/sbin/nologin,表示這些用戶不能在本地登錄系統,但可以使用ftp的方式訪問服務器上的資料)


虛擬用戶:即客戶端登錄vsftpd服務器時輸入的多個用戶名在服務器上根本不存在,這些用戶名都對應了一個vsftpd服務器上的本地用戶。所以當這些虛擬用戶在登錄時看到的主目錄都是相同的位置(就是對應的那個本地用戶的家目錄)。這樣可以提高vsftpd的安裝性。


五、vsftpd的配置文件:


Vsftpd相關的配置文件有:/etc/vsftpd/vsftpd.conf /etc/vsftpd/ftpusers/etc/vsftpd/user_list三個。其中/etc/vsftpd/ftpusersftp黑名單文件,即此文件中存儲的用戶名都禁止訪問vsftpd/etc/vsftpd/vsftpd.confvsftpd的主配置文件;/etc/vsftpd/user_list文件比較靈活,它根據vsftpd.conf主配置文件的不同配置,即可以充當黑名單文件(默認即是),也可以充當白名稱文件(即只允許該文件中存儲的用戶名訪問vsftpd),具體設置詳見本文相關介紹。


Vsftpd主配置文件/etc/vsftpd/vsftpd.conf的相關設置:


anonymous_enable=YES允許使用匿名用戶


anon_upload_enable=YES允許匿名用戶上傳數據


anon_mkdir_write_enable=YES允許匿名用戶創建目錄並在新目錄中寫入數據


anon_world_readable_only=NO  允許匿名用戶瀏覽已目錄中已經存在的數據


anon_other_write_enable=YES允許匿名修改、刪除文件


anon_umask=022設置匿名用戶上傳數據的默認權限


anon_max_rate=81920匿名用戶的最大傳輸速度(80K/s)



local_enable=YES允許使用本地用戶


write_enable=YES允許本地用戶上傳數據


local_umask=022設置本地用戶上傳數據的默認權限


local_max_rate=81920本地用戶的最大傳輸速度(80K/s)



max_clients=數字允許最大連接客戶端數量


max_per_ip=數字允許每個客戶端的最多線程數量



chroot_local_user=YES         鎖定所有本地用戶只允許訪問自己的家目錄


chroot_list_enable=YES    鎖定部分本地用戶只允許訪問自己的家目錄(用戶是手工指定的)


chroot_list_file=/etc/vsftpd.chroot_list  指定鎖定用戶的列表文件



userlist_enable=YES允許使用/etc/vsftpd/user_list文件


userlist_deny=YES            設置/etc/vsftpd/user_list文件中的用戶拒絕訪問ftp服務器;若爲NO


則是設置只允許user_list文件中的用戶訪問ftp服務器。



tcp_wrappers=YES設置允許使用tcp_wrapper來控制vsftpd的訪問


listen_port=21設置ftp服務的端口號默認爲21


ftpd_banner=*****設置ftp的登錄歡迎信息


六、創建vsftpd虛擬用戶(說明:以下實驗彩色字體中,顏色相同的部分內容必須相同)


1、建立虛擬用戶列表文件  


例:#vim ~/login.txt  (文件中奇數行寫虛擬用戶名,偶數行寫虛擬用戶口令)


   tom


   1234


   jack


   123


2、利用虛擬用戶列表文件生成虛擬用戶數據庫文件(rpm -ivh db4-util)


例:#db_load -T -t hash -f ~/login.txt/etc/vsftpd/vir_user.db


#chmod 600 /etc/vsftpd/vsfptd_login.db


說明:如果您的系統中沒有db_load命令說明您需要安裝db4-util的程序包,該程序包就RHEL5的系統安裝盤上Server目錄下。而且生成了虛擬用戶數據庫文件之後還需要將該數據庫文件的權限設置爲600


3、爲虛擬用戶建立pam認證文件:


例:#vim /etc/pam.d/vsftpd.vu,內容如下:


   auth required pam_userdb.so db=/etc/vsftpd/vir_user


   account required pam_userdb.so db=/etc/vsftpd/vir_user


4、建立需要映射的本地賬戶


例:#useradd vitrual_user


5、配置vsftpd.conf文件(包括:禁用匿名用戶相關項;啓用虛擬用戶功能;並指定映射賬戶;使用新的PAM文件)


例:#vim /etc/vsftpd/vsftpd.conf


anonymous_enable=NO (修改原文件中的相關行,禁用匿名用戶)


guest_enable=YES(添加新行,啓用虛擬用戶功能)


guest_username=virtual_user(添加新行,指定映射賬戶爲virtual_user)


pam_service_name=vsftpd.vu(修改原文件中的相關行,指定使用新的pam認證文件)


通過以上的操作虛擬用戶已經可以使用,但每個虛擬用戶登錄到系統後所持有的權限是相同的,因爲它們使用的配置文件都是/etc/vsftpd/vsftpd.conf。如果您希望不同的虛擬用戶持有不相同的權限,您可以爲虛擬用戶建立自己的私有配置文件。但首先要在vsftpd的主配置文件中添加以下行,目的是指定虛擬用戶私有配置文件的具體位置,然後再建立虛擬用戶的私有配置文件。


例:#mkdir /etc/vsftpd/vu_user_conf_dir


#vim /etc/vsftpd/vsftpd.conf


user_config_dir=/etc/vsftpd/vu_user_conf_dir (添加新行,指定虛擬用戶的配置文件存


儲在vu_user_conf_dir)


#vim /etc/vsftpd/vu_user_conf_dir/tom(建立tom用戶的私有配置文件,內容省略)


#vim /etc/vsftpd/vu_user_conf_dir/jack(建立jack用戶的私有配置文件,內容省略)

七、關於iptables防火牆的設置


由於vsftpd服務使用TCP21號端口輸送指令,在主動模式下使用TCP20號端口輸送數據,但在被動模式下使用高位動態端口做爲數據端口。這樣防火牆的設置就比較麻煩一些,不僅需要開啓tcp 21號端口,還需要開啓防火牆的跟蹤模式。操作如下:


#iptables -I INPUT -p tcp --dport 21 -j ACCEPT


#iptables -I INPUT -p tcp --dport 20 -j ACCEPT 支持主動模式


#iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 支持被動模式


#modprobe ip_conntrack_ftp  臨時加載ip跟蹤模塊


當然也可以將跟蹤模塊加載到iptables的配置文件(/etc/sysconfig/iptables-config)中,這樣它就永久生效了。操作如下:


#vim /etc/sysconfig/iptables-config


IPTABLES_MODULES="ip_conntrack_netbios_ns" 行更改成爲:


 IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp" 即可



由於時間關係本次關於vsftpd我就簡單的介紹到這裏,如果您有不同看法或意見,請跟我聯繫


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