1. 程式人生 > >6.FTP服務

6.FTP服務

ftp

1、概述

1FTPFile transfer protocol)文件傳輸協議

常見的FTP

LinuxVSFTPVery Secure FTP)、ProFTPDDaemon 守護進程)

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

技術分享

Blinux系統

技術分享

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

解析:ftpweb服務器相結合

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

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

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

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

技術分享

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

[[email protected] Desktop]# vim /etc/vsftpd/vsftpd.conf

技術分享

技術分享

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

#98 打開chroot功能

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

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

技術分享

技術分享

#測試

技術分享

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

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

PAMPlugable 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服務