標籤:
前面筆者寫過一篇"FTP本機使用者"隨筆,那隻是一個案例,並沒有完整的寫出來作用、設定檔解析和原理,今天筆者將發布"FTP伺服器的原理以及虛擬使用者的配置"隨筆
FTP服務的原理
- FTP(File Transfer Protocol)是一個非常古老並且應用十分廣泛的檔案傳輸通訊協定,FTP協議是現今使用最為廣泛的網路檔案分享權限設定協議之一
- 現在也一直有在用著FTP協議來進行各種檔案的傳輸,FTP為人們提供了一種可靠的方式在網路上進行檔案的共用
- FTP是C/S架構的服務,擁有一個伺服器端和一個用戶端,FTP底層通過TCP協議來作為傳輸協議,所以FTP協議是一種可靠的檔案傳輸方式
- FTP提供了兩個連接埠號碼,20和21號連接埠,20號是資料介面,提供資料之間的傳輸,21號是命令介面,提供命令之間的傳輸
- FTP服務端與用戶端串連一般有兩種模式:主動模式和被動模式
† PORT(主動模式)
- FTP用戶端串連到FTP伺服器的21連接埠,發送使用者名稱和密碼登入,登入成功後要list列表或者讀取資料時,用戶端隨機開放一個連接埠(1024以上的就行),發送 PORT命令到FTP伺服器,告訴伺服器用戶端採用主動模式並開放連接埠
- FTP伺服器收到PORT主動模式命令和連接埠號碼後,通過伺服器的20連接埠和用戶端開放的連接埠串連,進行發送資料
† PASV(被動模式)
- FTP用戶端串連到FTP伺服器的21連接埠,發送使用者名稱和密碼登入,登入成功後要list列表或者讀取資料時,發送PASV命令到FTP伺服器, 伺服器在本地隨機開放一個連接埠(1024以上),然後把開放的連接埠告訴用戶端, 用戶端再串連到伺服器開放的連接埠進行資料轉送
兩種模式的區別和哪種比較適合
† 主動模式傳送資料時是"伺服器"串連到"用戶端"的連接埠
† 被動模式傳送資料是“用戶端"串連到"伺服器"的連接埠
- 通常還是使用的是被動串連的模式,因為伺服器端都有配置防火牆,而防火牆對於內網串連外網的連接埠一般是允許存取的,而外網來串連內網的連接埠則一般是有限制的,所以這時如果使用主動模式串連的話,連接埠可能被防火牆攔截,導致無法串連FTP服務
- 如果要將內外的FTP通過NAT技術共用至外網,那麼肯定需要選擇被動串連才可行,可安全!
FTP服務程式"Vsftpd"的安裝
- vsftpd是Very Secure FTP的簡寫形式,從名字可以看出,提供了非常安全的FTP服務!
- 這款軟體是基於GPL開發的,被設計為Linux平台下穩定、快速、安全的FTP軟體,它還支援IPv6以及SSL加密
- 它支援很多其他的 FTP 伺服器不支援的特徵:
† 非常高的安全性需求
† 頻寬節流設定
† 建立虛擬使用者
- 在Linux Cnetos 系統中預設是沒有安裝Ftp服務程式"Vsftpd"的、如果要想使用vsftpd實現FTP資料共用,首先需要安裝vsftpd軟體,該軟體已經在Centos光碟片中(RPM格式)備配,如果沒有光碟片,也可以使用線上方式安裝或者部署
- 如果是本地安裝,那麼將光碟片掛載至/mnt目錄,配置本地yum源最後通過命令:yum -y install vsftpd 進行安裝
[[email protected] ~]# mount /dev/cdrom /mnt/ //掛載到/mnt目錄下mount: block device /dev/sr0 is write-protected, mounting read-only[[email protected] ~]# cd /etc/yum.repos.d/ //進入yum源定義檔案目錄[[email protected] yum.repos.d]# vim CentOS-Media.repo //配置Yum源(副檔名是.repo) [c6-media] //[]中是Yum源唯一的ID,名稱可為任一字元串name=CentOS-$releasever - Media //指定Yum源的名稱,名稱可為任一字元串baseurl=file:///mnt //指定Yum源的URL路徑,這裡是我的光碟片掛載路徑# file:///media/cdrom/# file:///media/cdrecorder/gpgcheck=0 //安裝軟體是否檢測簽名“0為禁用,1為啟用”enabled=1 //是否啟用Yum源“0為禁用,1為啟用”gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 //檢測簽名的密鑰檔案 :wq! //儲存並退出 [[email protected] yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak //移動該檔案到目前的目錄並加上.bak,如果不注釋掉這個預設會線上安裝
[[email protected] ~]# yum -y install vsftpd
- 如果是線上安裝,首先保證Linux作業系統可以訪問外網並且可以解析網域名稱
[[email protected] ~]# ping -c 2 www.baidu.comPING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.64 bytes from 61.135.169.121: icmp_seq=1 ttl=52 time=39.5 ms64 bytes from 61.135.169.121: icmp_seq=2 ttl=52 time=39.9 ms
[[email protected] ~]# yum -y install vsftpd[[email protected] ~]# chkconfig vsftpd on //開機啟動[[email protected] ~]# service vsftpd start //啟動服務[[email protected] ~]# netstat -ntulp | grep :21 //查看是否啟動成功並監聽tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4117/vsftpd
- 無論是Yum本地安裝,還是通過線上Yum安裝!都是安裝的RPM格式的軟體,該軟體的主程式是/usr/sbin/vsftpd 以下是vsftpd相關的核心檔案目錄列表說明
[[email protected] ~]# rpm -ql vsftpd //查看vsftpd的安裝目錄/etc/logrotate.d/vsftpd //日誌輪轉備份檔案/etc/pam.d/vsftpd //基於PAM的vsftpd驗證設定檔/etc/rc.d/init.d/vsftpd //vsftpd的開機檔案,可使用server調用/etc/vsftpd //vsftpd的主目錄/etc/vsftpd/ftpusers //預設的vsftpd的黑名單/etc/vsftpd/user_list //可通過主設定檔來設定該檔案為黑名單或白名單/etc/vsftpd/vsftpd.conf //vsftpd的主設定檔/usr/sbin/vsftpd //vsftpd主程式/var/ftp //預設vsftpd共用目錄
FTP服務程式"Vsftpd"的設定檔解析
listen=YES //是否監聽連接埠,獨立運行守護進程listen_port=21 //監聽入站ftp請求的連接埠號碼write_enable=YES //是否允許寫操作,全域開關download_enable=YES //如果設定為NO,則拒絕所有的下載請求dirmessage_enable=YES //使用者進入目錄是否顯示訊息 //在登陸的目錄下建立一個.message檔案寫入登陸提示資訊xferlog_enable=YES //是否開啟xferlog日誌功能xferlog_std_format=YES //xferlog日誌格式connect_from_port_20=YES //使用主動串連,啟用20連接埠pasv_enable=YES //是否啟用被動串連pasv_max_port=5000 //被動串連最大連接埠號碼pasv_min_port=6000 //被動串連最小連接埠號碼max_clients=1000 //最大可允許1000個用戶端串連,0代表無限制max_per_ip=0 //每個用戶端的最大串連限制,0代表無限制tcp_wrappers=YES //是否啟用tcp_wrappersguest_enable=YES //如果為YES 則所有的非匿名登入都映射為guest_username指定賬戶guest_username=ftp //設定來賓使用者user_config_dir/etc/vsftpd/conf //指定目錄,在該目錄下可以為使用者佈建獨立的設定檔選項dual_log_enable=NO //是否啟用雙日誌功能,生存兩個記錄檔
local_enable=YES //是否啟用本地賬戶功能local_max_rate=500000 //FTP伺服器的匿名使用者最大傳輸速率 B/s,0為無限制local_umask=077 //本地賬戶許可權掩碼chroot_local_user=YES //為YES時在 chroot_list中不給使用者切換到上級目錄,其他都給與切換chroot_list_enable=NO //為YES時 在 chroot_list中給使用者切換到上級目錄,其他的不允許 //當這兩個都為YES時 chroot_list_enable 優先 chroot_list_file=/etc/vsftpd/chroot_list //chroot_list的檔案目標userlist_enable=YES //是否啟用userlist使用者列表userlist_deny=YES //是否禁用userlist檔案中的賬戶訪問ftplocal_root=/ftp/common //本地賬戶訪問的FTP根路徑
anonymous_enable=YES //是否允許匿名使用者登入anon_mkdir_writ_enable=YES //是否允許匿名賬戶建立目錄,預設禁止anon_other_writ_enable=YES //是否允許匿名賬戶進行所有其他寫操作anon_umask=077 //匿名上傳許可權掩碼anon_root=/var/ftp //匿名預設登陸的目錄anon_upload_enable=YES //是否允許匿名使用者上傳檔案,則開啟全域write_enable=YESchown_uploads=YES //是否允許匿名使用者改變上傳檔案的屬主chown_usernamed=xxx //屬主改為xxx"與上面配套使用"no_anon_password=YES //若是啟動這項功能,則使用匿名登入時,不會詢問密碼anon_max_rate=200000 //FTP伺服器的匿名使用者最大傳輸速率 B/s,0為無限制
- vsfptd預設是不給匿名檔案給予W許可權的,所以想要匿名使用者上傳檔案,就需要在匿名檔案下建立一個新的檔案給予777許可權就可以了
- 點擊下載主設定檔解析
FTP使用者和檔案分享權限設定
- vsftpd是通過使用使用者來作為管理單位的,想要訪問某個ftp的共用檔案,必須要以某一特定的使用者身份登陸,我們可以配置一下幾種類型的使用者
Centos FTP伺服器的原理以及虛擬使用者的配置