03 FTP⽂文件傳輸服務
1.FTP服務原理理概述
2.FTP服務傳輸模式
3.FTP服務安裝配置
4.FTP匿匿名⽤用戶訪問
5.FTP本地⽤用戶訪問
6.FTPFTP企業案例例
FTP(File Transfer Protocol), 中⽂文爲 “⽂文件傳輸協議” 是⼀一種在互聯⽹網上進⾏行行⽂文件傳輸的協議, ⽤用於
在Internet上控制⽂文件的雙向傳輸。
FTP是⼀一個應⽤用程序, 基於客戶端/服務器器模式,默認使⽤用TCP 20/21端⼝口:
FTP控制鏈接:21端⼝口,⽤用於接受客戶端發出的相關FTP命令與參數
FTP數據鏈接:20端⼝口,⽤用於數據傳輸, ⽐比如: 上傳、下載數據
FTP服務端通常部署在企業內⽹網, 具有容易易搭建、⽅方便便管理理、安全穩定等特徵。 ⽽而且有些FTP客
戶端⼯工具⽀支持⽂文件的多點下載以及斷點續傳技術,因此FTP服務得到了了⼴廣⼤大⽤用戶的⻘青睞。
FTP協議的傳輸拓拓撲如下:
03 FTP⽂文件傳輸服務
1.FTP服務原理理概述
FTP登陸⽤用戶:
匿匿名⽤用戶 -->系統⽤用戶
系統⽤用戶 -->⼀一般關閉
虛擬⽤用戶 -->系統⽤用戶
FTP傳輸模式
1. 主動模式:服務端通過20端⼝口主動向客戶端連接,傳輸數據。
2. 被動模式:服務端啓動隨機端⼝口,等待客戶端發起連接,進⾏行行數據傳輸。
2.FTP服務傳輸模式
FTP傳輸模式總結:
FTP服務器器端啓⽤用防⽕火牆, 開啓21/20端⼝口,這時FTP只能⼯工作在主動模式
FTP客戶端開啓防⽕火牆,這時FTP只能選擇⼯工作在被動模式
FTP客戶端和FTP服務端都有防⽕火牆,那麼將⽆無法使⽤用FTP主動和被動模式
1.基礎環境準備
[root@ftp-server ~]# uname -r
3.10.0-693.el7.x86_64
[root@ftp-server ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
2.關閉防⽕火牆以及 selinux
[root@ftp-server ~]# systemctl stop firewalld
[root@ftp-server ~]# systemctl disable firewalld
[root@ftp-server ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@ftp-server ~]# setenforce 0
[root@ftp-server ~]# getenforce
3.FTP服務安裝配置
Disabled
3.安裝 vsftpd 服務
// 需要有 epel 倉庫
[root@ftp-server ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/r
epo/epel-7.repo
[root@ftp-server ~]# yum install vsftpd libdb-utils -y
4.啓動 ftp 服務並加⼊入開機⾃自啓動
[root@ftp-server ~]# systemctl enable vsftpd
[root@ftp-server ~]# systemctl start vsftpd
注意: 默認使⽤用匿匿名⽤用戶訪問共享⽬目錄站點爲 /var/ftp 僅擁有下載權限
5. vsftpd 全局配置⽂文件註釋
[root@ftp-server ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES // 是否啓⽤用匿匿名⽤用戶
local_enable=YES // 是否啓動本地⽤用戶
write_enable=YES // 開啓全局上傳⽂文件
local_umask=022 // 控制本地⽤用戶上傳⽂文件默認權限 , umask 表示要減掉的權限
anon_umask=022 // 控制匿匿名⽤用戶上傳⽂文件的默認權限
anon_upload_enable=YES // 允許匿匿名⽤用戶上傳
anon_mkdir_write_enable=YES // 允許創建⽬目錄
dirmessage_enable=YES // 配置⽤用戶⽬目錄顯示信息
xferlog_enable=YES // 啓動⽇日誌
xferlog_file=/var/log/vsftpd.log// 指定⽇日誌位置,配置 xferlog_enable 使⽤用
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES // 是否作爲⼀一個獨⽴立守護進程運⾏行行
chroot_local_user=YES // 禁錮所有⽤用戶在⽤用戶⽬目錄下
chroot_list_enable=YES // 配合 chroot_list_file 使⽤用
chroot_list_file=/etc/vsftpd/chroot_list // 禁錮⽤用戶列列表
pam_service_name=vsftpd ////PAM 認證⽂文件
userlist_enable=YES //ftpusers ⽂文件下的⽤用戶都被拒絕登陸訪問
tcp_wrappers=YES
guest_enable=YES // 開啓虛擬⽤用戶
guest_username=www //FTP 虛擬⽤用戶對應的系統⽤用戶
user_config_dir=/etc/vsftpd/ftplogin // 授權 FTP 虛擬⽤用戶所在⽬目錄
// 權限限制
local_root=/data/ftp // 指定本地⽤用戶訪問⽬目錄站點
anon_root=/data/ftp // 指定匿匿名⽤用戶訪問⽬目錄站點
// 資源控制
anon_max_rate=500000 // 匿匿名⽤用戶限速
local_max_rate=800000 // 本地⽤用戶限速
max_clients=100 // 同時能接收多少請求
max_per_ip=2 // ⼀一個 ip 同時能有多少連接
1.配置匿匿名⽤用戶訪問ftp服務,擁有創建⽂文件夾、上傳下載⽂文件、不不允許刪除、移動、重命令
// 編輯 vsftpd 主配置⽂文件
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf
// 啓動匿匿名⽤用戶、允許上傳和創建⽂文件權限
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
// 修改默認 ftp 共享⽬目錄站點權限,最後重新加載 vsftpd 服務
[root@ftp-server ~]# chmod -R 777 /var/ftp/
[root@ftp-server ~]# systemctl restart vsftpd
//Linux 下使⽤用 lftp 客戶端⼯工具訪問 vsftpd 服務驗證,安裝此⼯工具
[root@ftp-server ~]# yum install lftp -y
// 使⽤用匿匿名⽤用戶登錄 vsftpd
[root@ftp-client ~]# lftp 192.168.56.11
lftp 192.168.56.11:~> ls
drwxrwxrwx 2 0 0 4096 Mar 22 2017 pub
lftp 192.168.56.11:/> cd pub
// 創建⽬目錄
lftp 192.168.56.11:/pub> mkdir dir_ftp
mkdir ok, `dir_ftp' created
lftp 192.168.56.11:/pub> ls
drwx------ 2 14 50 4096 Nov 14 21:10 dir_ftp
// 切換系統其他⽬目錄
lftp 192.168.56.11:/pub> lcd /etc
lcd ok, local cwd=/etc
// 下載系統內⽂文件
lftp 192.168.56.11:/pub> put inittab
4.FTP匿匿名⽤用戶訪問
884 bytes transferred
lftp 192.168.56.11:/pub> ls
drwx------ 2 14 50 4096 Nov 14 21:10 dir_ftp
-rw------- 1 14 50 884 Nov 14 21:11 inittab
// 切回 ftp ⽬目錄
lftp 192.168.56.11:/pub> cd
cd ok, cwd=/
lftp 192.168.56.11:/> cd pub
lftp 192.168.56.11:/pub> ls
drwx------ 2 14 50 4096 Nov 14 21:10 dir_ftp
-rw------- 1 14 50 884 Nov 14 21:11 inittab
// 驗證刪除⽂文件權限
lftp 192.168.56.11:/pub> rm inittab
rm: Access failed: 550 Permission denied. (inittab)
本地⽤用戶訪問 ftp 默認擁有上傳和下載權限
1.本地⽤用戶訪問ftp服務
[root@ftp-server ~]# useradd ftp_test
[root@ftp-server ~]# echo "123"|passwd --stdin ftp_test
// 客戶端驗證
[root@ftp-client ~]# lftp 192.168.56.11
lftp 192.168.56.11:~> login ftp_test 123
lftp [email protected]:/> mkdir ftp
[root@ftp-server ~]# ls /home/ftp_test
ftp
2.拒絕特定的本地⽤用戶訪問ftp
[root@ftp-server ~]# echo "ftp_test" >> /etc/vsftpd/ftpusers
// 客戶端驗證
[root@ftp-client ~]# lftp 192.168.56.11
lftp 192.168.56.11:~> login ftp_test 123
lftp [email protected]:~> ls
ls: Login failed: 530 Login incorrect.
3.鎖定所有本地⽤用戶只能在⾃自⼰己的家⽬目錄操作,但允許bgx⽤用戶不不被鎖定家⽬目錄
chroot_local_user=YES // 鎖定所⽤用⽤用戶⾄至家⽬目錄
chroot_list_enable=YES // 排除某個⽤用戶不不被鎖定
5.FTP本地⽤用戶訪問
chroot_list_file=/etc/vsftpd/chroot_list // 對應的⽂文件
allow_writeable_chroot=YES //centos7 必須增加
公司爲了了宣傳最新的產品信息,計劃搭建FTP服務器器,爲客戶提供相關⽂文檔的下載。對所有權互
聯⽹網開放共享⽬目錄,允許下載產品信息。公司的合作單位能夠使⽤用FTP服務器器進⾏行行上傳和下載。
需求分析
根據企業的需求,對於不不同⽤用戶進⾏行行不不同的權限限制,FTP服務器器需要實現⽤用戶的審覈。需
考慮到服務器器的安全性,所以關閉實體⽤用戶登錄,使⽤用虛擬帳號驗證機制,並對不不同虛擬帳
號設置不不同的權限。爲了了保證服務器器的性能,還需要根據⽤用戶的等級,限制客戶端的連接數
及下載速度。
解決⽅方案
1.匿匿名⽤用戶允許下載我們公司的產品, 但需要對其限速50Kb
2.普通⽤用戶可以針對⾃自⼰己的⽬目錄進⾏行行上傳和下載,對其限速500Kb(虛擬⽤用戶)
3.管理理⽤用戶, 可以訪問所有⽬目錄資源, 並可以操作客戶的⽬目錄, 但不不允許操作對外
4.優化: 根據不不同的等級⽤用戶做不不同的限速, 限制客戶端連接次數(5)
[root@ftp-server ~]# /data/ftp //manager ⽤用戶能管理理所有⽬目錄 , 但不不能管理理 soft ⽬目錄
manager
bgx //bgx普通⽤用戶僅能查看⾃自⼰己的⽂文件和修改
soft //匿匿名⽤用戶僅能下載共享軟件包
1.建⽴立系統賬戶, 供與虛擬賬戶使⽤用
[root@ftp-server ~]# useradd virftp -s /sbin/nologin
//2.創建對應⽬目錄,賦予權限
[root@ftp-server ~]#mkdir -p /data/ftp/{manager,bgx,soft}
[root@ftp-server ~]#chown -R virftp.virftp /data/ftp/{manager,bgx}
//3.創建虛擬⽤用戶賬戶及密碼
[root@ftp-server ~]# cat > /etc/vsftpd/vsftpd_login <<EOF
manager
manager
bgx
bgx
EOF
[root@ftp-server ~]# chmod 600 /etc/vsftpd/vsftpd_login
6.FTPFTP企業案例例
//4.⽣生成對應的庫⽂文件
[root@ftp-server ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsf
tpd_login.db
//5.修改pam⽂文件
[root@ftp-server ~]# vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
//6.建⽴立虛擬⽬目錄
[root@ftp-server ~]# mkdir /etc/vsftpd/vsftpd_user_conf
//7.配置匿匿名⽤用戶權限,限速100k
//匿匿名⽤用戶登陸默認⽬目錄,必須要和/etc/passwd中的ftp⽤用戶的默認宿主⽬目錄要⼀一樣,否則也會出錯誤!
anonymous_enable=YES
anon_root=/data/ftp/soft
anon_max_rate=100000
//關閉之前修改過的匿匿名上傳和創建權限
anon_upload_enable=NO
anon_mkdir_write_enable=NO
//8.配置管理理⽤用戶, 限速2MB
cat > /etc/vsftpd/vsftpd_user_conf/manager <<EOF
local_root=/data/ftp/
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=2000000
EOF
//9.配置普通⽤用戶, 限速1MB
cat > /etc/vsftpd/vsftpd_user_conf/bgx <<EOF
local_root=/data/ftp/bgx
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=1000000
EOF
//10.配置⽂文件尾部追加如下內容
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
//11.使⽤用ftp客戶端驗證權限即可
![](https://s1.51cto.com/images/blog/202002/29/d75cd0a3aec54f20da6ddabbf8ce8393.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,ty
```pe_ZmFuZ3poZW5naGVpdGk=)
FTP⽂文件傳輸服務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.