1、概述
(1)FTP(File transfer protocol)文件傳輸協議
常見的FTP
Linux:VSFTP(Very Secure FTP)、ProFTPD(Daemon 守護進程)
Windows:Serv-U
(2)特點:安全、高速、穩定
(3)端口
21:傳指令
20:傳數據
2、服務安裝
(1)服務端
[root@server1 Desktop]# rpm -ivh /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm
warning: /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:vsftpd ########################################### [100%]
[root@server1 Desktop]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@server1 Desktop]# netstat -antup | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3396/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2183/sshd
tcp 0 0 0.0.0.0:53219 0.0.0.0:* LISTEN 1986/rpc.statd
tcp 0 0 :::22 :::* LISTEN 2183/sshd
(2)客戶端
[root@server2 Desktop]# rpm -ivh /mnt/Packages/lftp-4.0.9-1.el6.x86_64.rpm
warning: /mnt/Packages/lftp-4.0.9-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:lftp ########################################### [100%]
3、服務配置及其使用
(1)配置文件
[root@server1 Desktop]# ls /etc/vsftpd/vsftpd.conf
[root@server1 Desktop]# ls /var/ftp/#默認共享文件路徑
pub
(2)服務的使用
A、windows系統
瀏覽器訪問(ftp://172.18.58.111)或通過以下方式打開
B、linux系統
4、實戰演練
實例1:要求所有人(匿名用戶)都可以上傳和下載文件
[root@server1 Desktop]# vim /etc/vsftpd/vsftpd.conf
27 anon_upload_enable=YES
31 anon_mkdir_write_enable=YES
#12 允許匿名用戶訪問
#27 允許匿名用戶上傳文件
#31 允許匿名用戶創建目錄
[root@server1 Desktop]# mkdir /var/ftp/companydata
[root@server1 Desktop]# id ftp
uid=14(ftp) gid=50(ftp) groups=50(ftp)
[root@server1 Desktop]# chown ftp /var/ftp/companydata/
[root@server1 Desktop]# ll -d !$
ll -d /var/ftp/companydata/
drwxr-xr-x 2 ftp root 4096 Aug 11 16:20 /var/ftp/companydata/
[root@server1 Desktop]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
#測試
你會發現刪除已創建的文件或對其進行重命名都不被允許
實例2:公司內部有一臺ftp和web服務器,ftp的功能主要用於維護公司的網站內容,包括上傳文件、創建目錄、更新網頁等。公司現有兩個部門負責維護任務,他們分別對team1和team2賬號進行管理。現要求僅允許team1和team2賬號登錄ftp服務器,但是不能登錄本地系統,並將這兩個賬號的根目錄限制爲/var/www/html,不能進入該目錄以外的任何目錄。
解析:ftp和web服務器相結合
Web服務器根目錄:/var/wwwhtml
只允許team1和team2兩個用戶可以上傳,vsftp禁止匿名。
其次使用chroot功能將team1和team2鎖定在/var/www/html目錄下
(1)建立維護網站內容的ftp賬號team1和team2,並禁止本地登錄,然後設置其密碼.
(2)配置vsftpd.conf主配置文件並作相應的修改(建議在原配置文件下修改)
[root@server1 Desktop]# vim /etc/vsftpd/vsftpd.conf
#97 設置本地用戶的根目錄爲/var/www/html
#98 打開chroot功能
#100 設置鎖定用戶在根目錄中的列表文件,此文件中放置要鎖定的用戶
(3)建立/etc/vsftpd/chroot_list文件,添加team1和team2賬號
#測試
登錄後可以執行添加、刪除操作,並且在服務端可以查看
實例3:創建ftp虛擬賬號
公司爲了宣傳最新的產品信息,計劃搭建FTP服務器,爲客戶提供相關文檔下載。對所有互聯網開放共享目錄,允許下載產品信息,禁止上傳。公司的合作單位能夠使用FTP服務器進行上傳和下載,但不能刪除數據。需要保證服務器的穩定性並做優化。
分析:創建ftp賬號,允許客戶使用ftp賬號下載文件。但是合作伙伴的賬號vip可以上傳內部文件。需要考慮到服務器的安全性,所以應關閉實體用戶登錄,使用虛擬賬號驗證機制,並對不同虛擬賬號設置不同的權限。爲了保證服務器的性能,還需要根據用戶的等級,限制客戶端的連接數以及下載速度。
(1)創建用戶數據庫
A、創建用戶文本文件
先建立用戶文件文本vsftpd_virtualuser.txt,添加兩個虛擬賬號,客戶賬號ftp以及客戶賬號vip
[root@server1 Desktop]# vim /etc/vsftpd/vsftpd_virtualuser.txt
[root@server1 Desktop]# cat /etc/vsftpd/vsftpd_virtualuser.txt
ftp
123456
vip
123456
B、生成數據庫
保存虛擬賬號和密碼的文本文件無法被系統賬號直接調用,我們需要使用db_load命令生成db數據庫文件。
[root@server1 Desktop]# rpm -qf `which db_load`
db4-utils-4.7.25-18.el6_4.x86_64
[root@server1 Desktop]# yum install -y db4-utils-4.7.25-18.el6_4.x86_64
[root@server1 Desktop]# db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db
-T:允許應用程序將文本轉譯載入數據庫
-t:使用hash方式加密
-f:指定包含了用戶名和密碼的文件
[root@server1 Desktop]# rm -fr /etc/vsftpd/vsftpd_virtualuser.txt #爲了安全,應刪除此文件
C、修改數據庫文件訪問權限
[root@server1 Desktop]# chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
[root@server1 Desktop]# ll !$
ll /etc/vsftpd/vsftpd_virtualuser.db
-rw------- 1 root root 12288 Aug 13 20:27 /etc/vsftpd/vsftpd_virtualuser.db
(2)配置PAM文件
爲了使服務器能夠使用數據庫文件,對客戶端進行身份認證,需要調用系統的PAM模塊。
PAM概述:
PAM(Plugable Authentication Module)爲可插拔模塊,不必重新安裝應用數據庫,通過修改指定的配置文件,調整對該程序的認證方式。PAM模塊的配置文件路徑爲/etc/pam.d目錄,此目錄下保存着大量與認證相關的配置文件,並以服務名稱命名。
[root@server1 Desktop]# vim /etc/pam.d/vsftpd
[root@server1 Desktop]# tail -2 /etc/pam.d/vsftpd #將默認配置註釋,添加以下內容
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vstpd_virtualuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vstpd_virtualuser
(3)創建虛擬賬號對應的系統用戶及ftp共享目錄
對於公共賬號和客戶賬號,因爲需要配置不同的權限,所以可以將兩個賬號的目錄進行隔離,控制用戶的文件訪問。公共賬號ftp對應的系統賬號ftpuser,並指定其主目錄爲/etc/ftp/share,而客戶賬號vip對應的系統賬號ftpvip,指定主目錄爲/var/ftp/vip
[root@server1 Desktop]# useradd -d /var/ftp//share ftpuser
[root@server1 Desktop]# useradd -d /var/ftp/vip ftpvip
#公共賬號ftp只允許下載,修改share目錄權限爲rx,可讀可執行
[root@server1 Desktop]# chmod -R 500 /var/ftp/share/
#客戶賬號vip允許上傳和下載,所以對vip目錄權限設置爲rwx,可讀可寫可執行
[root@server1 Desktop]# chmod -R 700 /var/ftp/vip/
[root@server1 Desktop]# ll -d /var/ftp/vip/
drwx------ 4 ftpvip ftpvip 4096 Aug 13 21:13 /var/ftp/vip/
[root@server1 Desktop]# ll -d /var/ftp/share/
dr-x------ 4 ftpuser ftpuser 4096 Aug 13 21:13 /var/ftp/share/
(4)建立配置文件
一個配置文件無法實現此功能,需要爲每個虛擬賬號建立獨立的配置文件,並根據需要進行相應的設置。
A、修改vsftpd.conf主配置文件
[root@server1 Desktop]# vim /etc/vsftpd/vsftpd.conf
11 # Allow anonymous FTP? (Beware - allowed by default if you comment this out) .
12 anonymous_enable=NO
96 chroot_local_user=YES
117 pam_service_name=vsftpd
118 user_config_dir=/etc/vsftpd/vuserconfig
119 max_clients=300
120 max_per_ip=10
121 userlist_enable=YES
122 tcp_wrappers=YES
#96 是否將本地用戶限制在家目錄中,NO則不限制
#117 配置vsftpd使用的PAM模塊爲vsftpd
#118 設置虛擬賬號的主目錄爲vuserconfig
#119 設置FTP服務器最大接入客戶端數爲300個
#120 設置每個IP地址最大連接數爲10 個
B、建立虛擬賬號配置文件
在user_config_dir指定路徑下,建立與虛擬賬號同名的配置文件並添加相應的配置字段,首先建立公共賬號ftp的配置文件。
[root@server1 Desktop]# grep vuserconfig /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vuserconfig
[root@server1 Desktop]# mkdir /etc/vsftpd/vuserconfig
[root@server1 Desktop]# touch /etc/vsftpd/vuserconfig/ftp
[root@server1 Desktop]# touch /etc/vsftpd/vuserconfig/vip
[root@server1 Desktop]# vim /etc/vsftpd/vuserconfig/ftp
[root@server1 Desktop]# cat /etc/vsftpd/vuserconfig/ftp
1 guest_enable=yes
2 guest_username=ftpuser
3 anon_world_readable_only=no
4 anon_max_rate=50000
#1 開啓虛擬賬號登錄
#2 設置ftp對應的系統賬號ftpuser
#3 是否允許匿名用戶瀏覽整個服務器的文件系統
#4 限定傳輸速率爲500KB/s
[root@server1 Desktop]# vim /etc/vsftpd/vuserconfig/vip
[root@server1 Desktop]# cat /etc/vsftpd/vuserconfig/vip
1 guest_enable=yes
2 guest_username=ftpvip
3 anon_world_readable_only=no
4 write_enable=yes
5 anon_mkdir_write_enable=yes
6 anon_upload_enable=yes
7 anon_max_rate=100000
#1 開啓虛擬賬號登錄
#2 設置ftp對應的系統賬號ftpvip
#3 是否允許匿名用戶瀏覽整個服務器的文件系統
#4 允許在文件系統有寫權限
#5 允許創建文件夾
#6 開啓匿名賬號的上傳功能
#7 限定傳輸速率爲100KB/s
C、重啓服務
[root@server1 Desktop]# service vsftpd restart
Shutting down vsftpd: [FAILED]
Starting vsftpd for vsftpd: [ OK ]
#測試
(1)公共賬號ftp測試
[root@server1 Desktop]# cp /mnt/Packages/mysql-server-5.1.71-1.el6.x86_64.rpm /var/ftp/share/productinfo.xls
[root@server1 Desktop]# cp -r /boot/grub/ /var/ftp/share/
在linux下測試:
(2)合作公司vip測試
[root@server1 Desktop]# cp /mnt/Packages/mysql-server-5.1.71-1.el6.x86_64.rpm /var/ftp/vip/a.zip
在linux下測試:
注:lftp [email protected]:~> mget *.txt#下載一類文件
lftp [email protected]:/> mirror grub/#下載目錄
上面的用戶都不能刪除或重命名文件,如需獲取刪除或重命名條件,在/etc/vsftpd/vuserconfig/目錄下對應的文件中加入以下語句:
anon_other_write_enable=YES
然後重啓服務即可