Linux Ubuntu上架設FTP
操作系統:ubuntu (GNU/Linux)
為了在機子上架設ftp服務器,我們需要安裝ftp服務器軟件。Linux下具有代表性的ftp服務器軟件有Wu-FTP,ProFTP和Vsftp。
Wu-FTP(Washington University FTP)由美國華盛頓大學開發。它的功能強大,配置較復制。由于開發時間較早,應用十分廣泛,也因此成為黑客們主要的攻擊目標。
ProFTP針對Wu-FTP的弱項而開發,在安全性方面進行了改進,并提供了一些Wu-FTP沒有的功能,大大簡化了架設和管理FTP服務器的工作。
Vsftp在安全性,高性能及穩定性3個方面上有上佳的表現。它提供的主要功能包括虛擬IP設置,虛擬用戶,standalone(可自行單獨啟動的daemon),inetd操作模式(由一支特殊的super daemon管理),強大的單用戶設置能力以及帶寬限流等。接下來我們主要講解在ubuntu上如何架設vsftpd。
vsftpd的安裝:
在ubuntu可直接通過apt安裝 sudo apt-get install vsftpd
安裝完畢,檢查vsftpd進程是否已啟動,可以查看進程或者查看監聽端口
ps -eaf|grep vsftpd

vsftpd進程已開啟
netstat -tnl|grep :21

端口21正在被監聽
vsftpd的配置文件:
在ubuntu中,vsftpd的主要配置文件分布如下:
/etc/vsftpd.conf vsftpd服務器的配置文件
/usr/sbin/vsftpd vsftpd服務器的進程文件
/etc/pam.d/vsftpd vsftpd服務器的PAM接口配置文件
/var/ftp vsftpd服務器匿名用戶的工作目錄
配置vsftpd服務器:
vsftpd服務器的配置文件以及各參數代表的意義如下:
/etc/vsftpd.conf
匿名用戶配置:
配置匿名用戶,使得
1 FTP服務器支持匿名用戶(帳號:anonymous 密碼:任意)登錄
2 只要ftp用戶(操作系統用戶)在操作系統有讀權限,就可以下載文件
3 匿名用戶登錄后進入/var/ftp/anonymous目錄,可以下載該目錄中的文件
4 可以上傳文件到目錄/var/ftp/anonymous/upload目錄中,但不能下載或刪除該目錄中的文件
利用vim修改vsftpd.conf文件
anonymous_enable=YES
anon_world_readable_only=NO
anon_root=/var/ftp/anonymous
anon_upload_enable=YES
chown_uploads=YES
在/var目錄下新建目錄anonymous,所以者為root,在/var/anonymous目錄下新建目錄upload,所有者為ftp
重啟vsftpd進程
sudo killall -HUP vsftpd
測試匿名用戶
以匿名用戶登錄本地FTP服務器(127.0.0.1)

列出目錄,下載文件


進入upload目錄,上傳文件,列出目錄

測試完畢
虛擬主機的配置:
何為虛擬主機?vsftpd的虛擬主機是指在一臺主機上配置多個vsftpd服務,各個vsftpd服務可以采用不同的配置,給用戶的感覺好像這些vsftpd服務是不同的主機上運行的。vsftpd的虛擬主機是基于IP地址。既然是基于IP地址的,那您可能會問我只有一個網卡一個IP怎么配置虛擬主機?
這時,我們可以利用linux的邏輯網卡來實現不同IP。
一個虛擬主機的配置例子:
1 增加邏輯網卡,我現在的IP地址為192.168.1.100,增加邏輯網卡IP為192.168.1.101
sudo ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0 up
2 停止vsftpd服務
sudo killall vsftpd
3 修改vsftpd.conf配置,增加以下一欄
listen_address=192.168.1.100
4 重新啟動vsftpd服務 & 表示后臺運行
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &
5 為第二個vsftpd服務器建立匿名用戶對應的本地帳號以及個人目錄,參數-d指定個人目錄,需自己建立,-s指定登錄shell,/sbin/nologin是一種不登錄shell
sudo useradd -d /var/ftp/myftp -s /sbin/nologin myftp
6 創建/var/ftp/myftp目錄,改變/var/ftp/myftp的所有者(默認就是root),目的是使myftp用戶對其沒有寫權限
sudo mkdir /var/ftp/myftp
sudo chown root /var/ftp/myftp
7 復制vsftpd.conf,命名為myvsftpd.conf放在/etc目錄下
sudo cp /etc/vsftpd.conf /etc/myvsftpd.conf
8 修改myvsftp.conf
ftpd_banner=Welcome to my virtual FTP server
ftp_username=myftp
listen=YES
listen_address=192.168.1.101
9 啟動第二個vsftpd
sudo /usr/sbin/vsftpd /etc/vsftpd/myvsftpd.conf
測試虛擬主機:
登錄192.168.1.100 和 192.168.1.101

測試完畢
虛擬用戶的配置:
vsftpd中的用戶有3種。匿名用戶,本地用戶。還有一種就是接下來介紹的虛擬用戶,該用戶無法登錄你的操作系統,但是能夠登錄FTP服務器,而且當存在很多虛擬用戶,您并不需要在操作系統上為每個虛擬用戶新建一個不可登錄的本地用戶,只需要一個。而且還有一個更強大的用法,我們可以通過為每個虛擬帳號創建一個配置文件來不同虛擬帳號不同的權限,目錄,這將對我們管理FTP用戶有很大的方便。
1 新建user.txt,輸入以下內容,表示有2個虛擬用戶,分別為xuni1(密碼pass1),xuni2(密碼pass2)
2 接下來我們需要生成虛擬帳號數據庫,先安裝DB庫工具
sudo apt-get install db4.8-util
在/etc下新建目錄/etc/vsftpd
sudo mkdir /etc/vsftpd
將數據庫文件導入到剛剛產生的目錄
sudo db4.8_load -T -t hash -f /home/stone/user.txt /etc/vsftpd/vsftpd_login.db
將數據庫文件設置權限為600,并不需要被其他用戶讀,修改
sudo chmod 600 /etc/vsftpd/vsftpd_login.db
3 新建/etc/pam.d/vsftpd_login文件,輸入以下內容
所有支持PAM的程序都有一個與PAM進行對接的配置文件,它們存放在/etc/pam.d目錄,vsftpd與PAM的對接配置文件名可以由vsftpd.conf文件中的pam_service_name選項指定,默認是pam_service_name=vsftpd,當以后認證本地用戶時,會根據/etc/pam.d/vsftpd文件的配置內容進行認證。
4 建立所有FTP虛擬用戶帳號使用的操作系統帳號,需要我們自己新建目錄,并設置該帳號工作目錄的權限,所有者(貌似可以修改使之自動新建目錄)
sudo useradd -d /home/ftpsite -s /sbin/nologin ftp_virt
sudo mkdir /home/ftpsite
sudo chown ftp_virt /home/ftpsite
sudo chgrp ftp_virt /home/ftpsite
sudo chmod 700 /home/ftpsite
5 在vsftpd.conf配置文件中添加有關虛擬帳號用戶的配置內容
guest_enable=YES
guest_username=ftp_virt
pam_service_name=vsftpd_login
最后一項將于原來的默認值沖突,可以注釋掉原來的項,重啟vsftpd之后,你將發現本地用戶無法登錄vsftpd了
6 設置虛擬用戶的權限,我們可以通過添加下面這一行,來指定放置用戶配置文件的目錄位置是/etc/vsftpd
user_config_dir=/etc/vsftpd
解釋下這一項的作用,添加這一項之后,當我們以虛擬用戶登錄vsftpd時,服務器將會尋找/etc/vsftpd目錄下于虛擬用戶名相同的配置文件,從而確定該虛擬用戶的權限等屬性。這方便了我們管理FTP虛擬用戶。
7 配置虛擬用戶配置文件
在/etc/vsftpd下,我們新建文件xuni1,輸入以下內容
新建文件xuni2,輸入以下內容
8 然后重啟vsftpd
先關閉
sudo killall vsftpd
啟動
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &
測試

虛擬用戶具體的權限,目錄配置方法將可以通過各種方法來配置,這里不再描述。
繼續編輯中...