6.FTP服務

1、概述

1FTPFile transfer protocol)文件傳輸協議

常見的FTP

LinuxVSFTPVery Secure FTP)、ProFTPDDaemon 守護進程)

WindowsServ-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)或通過以下方式打開

wKiom1mc8c6SGfmVAAAoQsEgb7s408.png 

Blinux系統

wKiom1mc8d_xshGdAAAfxRgP6Yk871.png 

4、實戰演練

實例1:要求所有人(匿名用戶)都可以上傳和下載文件

[root@server1 Desktop]# vim /etc/vsftpd/vsftpd.conf

wKioL1mc8eThMUaHAABFscaJ1S8119.png 

 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  ]

#測試

wKioL1mc8iyig8B_AAArUZPDXks265.png 

wKioL1mc8jzSEDJEAAByWgQqJ-A840.png 

wKiom1mc8lbCDOoPAABo53glPk4364.png 

你會發現刪除已創建的文件或對其進行重命名都不被允許

實例2:公司內部有一臺ftpweb服務器,ftp的功能主要用於維護公司的網站內容,包括上傳文件、創建目錄、更新網頁等。公司現有兩個部門負責維護任務,他們分別對team1team2賬號進行管理。現要求僅允許team1team2賬號登錄ftp服務器,但是不能登錄本地系統,並將這兩個賬號的根目錄限制爲/var/www/html,不能進入該目錄以外的任何目錄。

解析:ftpweb服務器相結合

Web服務器根目錄:/var/wwwhtml

只允許team1team2兩個用戶可以上傳,vsftp禁止匿名。

其次使用chroot功能將team1team2鎖定在/var/www/html目錄下

1)建立維護網站內容的ftp賬號team1team2,並禁止本地登錄,然後設置其密碼.

wKioL1mc8l6Dr5dxAAA6511sTBE319.png 

2)配置vsftpd.conf主配置文件並作相應的修改(建議在原配置文件下修改

[root@server1 Desktop]# vim /etc/vsftpd/vsftpd.conf

wKiom1mc8n3gwJ4zAAAuZlxAfWs128.png 

wKioL1mc8oLxjzfuAAAp-SWQRJ8495.png 

#97 設置本地用戶的根目錄爲/var/www/html

#98 打開chroot功能

#100 設置鎖定用戶在根目錄中的列表文件,此文件中放置要鎖定的用戶

3)建立/etc/vsftpd/chroot_list文件,添加team1team2賬號

wKioL1mc8pDh1NWQAABJQYELyYI345.png 

wKiom1mc8qjxYQfXAAA1rn-r4bo618.png 

#測試

wKioL1mc8q2zPo-QAACyvHjnesw160.png 

登錄後可以執行添加、刪除操作,並且在服務端可以查看

實例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概述:

PAMPlugable 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下測試:

wKioL1mc8snTeX_QAACbdM6fNd4977.png 

(2)合作公司vip測試

[root@server1 Desktop]# cp /mnt/Packages/mysql-server-5.1.71-1.el6.x86_64.rpm /var/ftp/vip/a.zip

linux下測試:

 wKiom1mc8uaCdR1hAAClPKDfQNA960.png 

注:lftp [email protected]:~> mget *.txt#下載一類文件

lftp [email protected]:/> mirror grub/#下載目錄

上面的用戶都不能刪除或重命名文件,如需獲取刪除或重命名條件,在/etc/vsftpd/vuserconfig/目錄下對應的文件中加入以下語句:

anon_other_write_enable=YES

然後重啓服務即可


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