FTP⽂文件傳輸服務

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=)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章