6.FTP服務
1、概述
(1)FTP(File transfer protocol)文件傳輸協議
常見的FTP
Linux:VSFTP(Very Secure FTP)、ProFTPD(Daemon 守護進程)
Windows:Serv-U
(2)特點:安全、高速、穩定
(3)端口
21:傳指令
20:傳數據
2、服務安裝
(1)服務端
[[email protected] 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%]
[[email protected] Desktop]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[[email protected] 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)客戶端
[[email protected] 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)配置文件
[[email protected] Desktop]# ls /etc/vsftpd/vsftpd.conf
[[email protected] Desktop]# ls /var/ftp/#默認共享文件路徑
pub
(2)服務的使用
A、windows系統
瀏覽器訪問(ftp://172.18.58.111)或通過以下方式打開
B、linux系統
4、實戰演練
實例1:要求所有人(匿名用戶)都可以上傳和下載文件
[[email protected] Desktop]# vim /etc/vsftpd/vsftpd.conf
27 anon_upload_enable=YES
31 anon_mkdir_write_enable=YES
#12 允許匿名用戶訪問
#27 允許匿名用戶上傳文件
#31 允許匿名用戶創建目錄
[[email protected] Desktop]# mkdir /var/ftp/companydata
[[email protected] Desktop]# id ftp
uid=14(ftp) gid=50(ftp) groups=50(ftp)
[[email protected] Desktop]# chown ftp /var/ftp/companydata/
[[email protected] Desktop]# ll -d !$
ll -d /var/ftp/companydata/
drwxr-xr-x 2 ftp root 4096 Aug 11 16:20 /var/ftp/companydata/
[[email protected] 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主配置文件並作相應的修改(建議在原配置文件下修改)
[[email protected] 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
[[email protected] Desktop]# vim /etc/vsftpd/vsftpd_virtualuser.txt
[[email protected] Desktop]# cat /etc/vsftpd/vsftpd_virtualuser.txt
ftp
123456
vip
123456
B、生成數據庫
保存虛擬賬號和密碼的文本文件無法被系統賬號直接調用,我們需要使用db_load命令生成db數據庫文件。
[[email protected] Desktop]# rpm -qf `which db_load`
db4-utils-4.7.25-18.el6_4.x86_64
[[email protected] Desktop]# yum install -y db4-utils-4.7.25-18.el6_4.x86_64
[[email protected] Desktop]# db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db
-T:允許應用程序將文本轉譯載入數據庫
-t:使用hash方式加密
-f:指定包含了用戶名和密碼的文件
[[email protected] Desktop]# rm -fr /etc/vsftpd/vsftpd_virtualuser.txt #為了安全,應刪除此文件
C、修改數據庫文件訪問權限
[[email protected] Desktop]# chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
[[email protected] 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目錄,此目錄下保存著大量與認證相關的配置文件,並以服務名稱命名。
[[email protected] Desktop]# vim /etc/pam.d/vsftpd
[[email protected] 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
[[email protected] Desktop]# useradd -d /var/ftp//share ftpuser
[[email protected] Desktop]# useradd -d /var/ftp/vip ftpvip
#公共賬號ftp只允許下載,修改share目錄權限為rx,可讀可執行
[[email protected] Desktop]# chmod -R 500 /var/ftp/share/
#客戶賬號vip允許上傳和下載,所以對vip目錄權限設置為rwx,可讀可寫可執行
[[email protected] Desktop]# chmod -R 700 /var/ftp/vip/
[[email protected] Desktop]# ll -d /var/ftp/vip/
drwx------ 4 ftpvip ftpvip 4096 Aug 13 21:13 /var/ftp/vip/
[[email protected] Desktop]# ll -d /var/ftp/share/
dr-x------ 4 ftpuser ftpuser 4096 Aug 13 21:13 /var/ftp/share/
(4)建立配置文件
一個配置文件無法實現此功能,需要為每個虛擬賬號建立獨立的配置文件,並根據需要進行相應的設置。
A、修改vsftpd.conf主配置文件
[[email protected] 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的配置文件。
[[email protected] Desktop]# grep vuserconfig /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vuserconfig
[[email protected] Desktop]# mkdir /etc/vsftpd/vuserconfig
[[email protected] Desktop]# touch /etc/vsftpd/vuserconfig/ftp
[[email protected] Desktop]# touch /etc/vsftpd/vuserconfig/vip
[[email protected] Desktop]# vim /etc/vsftpd/vuserconfig/ftp
[[email protected] 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
[[email protected] Desktop]# vim /etc/vsftpd/vuserconfig/vip
[[email protected] 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、重啟服務
[[email protected] Desktop]# service vsftpd restart
Shutting down vsftpd: [FAILED]
Starting vsftpd for vsftpd: [ OK ]
#測試
(1)公共賬號ftp測試
[[email protected] Desktop]# cp /mnt/Packages/mysql-server-5.1.71-1.el6.x86_64.rpm /var/ftp/share/productinfo.xls
[[email protected] Desktop]# cp -r /boot/grub/ /var/ftp/share/
在linux下測試:
(2)合作公司vip測試
[[email protected] Desktop]# cp /mnt/Packages/mysql-server-5.1.71-1.el6.x86_64.rpm /var/ftp/vip/a.zip
在linux下測試:
註:lftp [email protected]168.1.103:~> mget *.txt#下載一類文件
lftp [email protected]:/> mirror grub/#下載目錄
上面的用戶都不能刪除或重命名文件,如需獲取刪除或重命名條件,在/etc/vsftpd/vuserconfig/目錄下對應的文件中加入以下語句:
anon_other_write_enable=YES
然後重啟服務即可
本文出自 “12025595” 博客,轉載請與作者聯系!
6.FTP服務