19.FTP服務器配置

​ FTP(file transfer protocol)是文件傳輸協議的縮寫。利用ftp服務可以實現文件的上傳及下載等相關的文件傳

輸服務。

一、FTP服務描述

​ ftp服務就是文件傳輸服務,即文件傳輸協議,具備更強的文件傳輸可靠性和更高的效率。文件傳輸協議(file

transfer protocol,ftp),基於該協議FTP客戶端與服務端可以實現共享文件、上傳文件、下載文件。用戶可以通

過客戶端向FTP服務端上傳、下載、刪除文件,ftp服務器端可以同時提供給多人共享使用。

​ ftp最主要的功能是在服務器端和客戶端之間進行文件的傳輸。

​ ftp是以TCP封包的模式來進行服務器與客戶端之間的連接,當連接建立後,用戶便可以在客戶端連接ftp服務

器來進行文件的上傳和下載,同時也可以直接管理用戶在tfp服務器上的文件。

1.FTP工作原理

ftp是基於客戶端/服務器模式,工作原理如下

  • 首先,客戶端向服務器發出連接請求,同時客戶端系統動態打開一個大於1024(如端口1030)的端口等候服務器的連接.
  • 當ftp服務器的端口21偵聽到該請求後,會在客戶端1030端口與服務器的21端口之間建立一個ftp會話連接。
  • 當需要傳輸數據時,ftp客戶端再動態打開一個大於1024的端口(如端口1031)連接到服務器的20端口,並在這兩個端口之間進行數據的傳輸。
  • 數據傳輸完畢後,ftp客戶端將斷開與ftp服務器的連接,客戶端動態分配的端口將自動釋放掉。

2.匿名用戶

​ 要使用ftp服務來實現文件的傳輸,首先需要登錄到服務器,然後再進行文件的傳輸。但是對於很多公開提供軟件下載的服務器來說非常不方便。爲了解決該問題,匿名用戶訪問隨之產生。
​ 匿名用戶是通過使用一個公用用戶名anonymous,密碼不限的策略管理,讓任何用戶都可以方便地從這些服務器上下載相關資源。

3.ftp服務的傳輸模式

ftp的兩種工作模式

  • 主動傳輸模式active ftp
  • 被動傳輸模式passive ftp

主動傳輸模式

​ 在主動傳輸模式下,ftp客戶端隨機開啓一個大於1024的端口N(如1031)向服務器的21端口發起連接,然後開放N+1端口(1032)進行監聽,並向服務器發出port 1032命令。服務器接收到命令後,會用其本地的ftp數據端口(通常是20)來連接客戶端指定的端口1032並進行數據傳輸。

在這裏插入圖片描述

被動傳輸模式

​ 在被動傳輸模式下,ftp客戶端隨機開啓一個大於1024端口(如1031)向服務器的21端口發起連接,同時會開啓N+1號端口(1032),然後向服務器發送pasv命令,通知服務器自己處於被動模式。服務器收到命令後,會開放一個大於1024的端口(如1521)進行監聽,然後用port p命令通知客戶端,自己的數據端口是1521.客戶端收到命令後,會通過1032號端口鏈接服務器的1521端口,然後在這兩個端口之間進行數據傳輸。

在這裏插入圖片描述

​ 總之,主動傳輸模式的ftp是指服務器主動連接客戶端的數據接口,被動傳輸模式的ftp是指服務器被動地等待客戶端連接自己的數據端口。

4.流行的ftp服務器軟件簡介

​ vsftp(very secure FTP),該ftp的目的是構建一個安全的ftp服務器程序。
vsftp具有的主要特點
1.安全、高速、穩定的ftp服務器
2.可以做多個ip的虛擬ftp主機服務器
3.方便地設置匿名登錄
4.不執行任何外部程序,從而減少了安全隱患
5.支持帶寬限制
6.支持兩種認證方式

二、vsfpt服務器配置

1.檢查是否安裝vsftp

命令:rpm -qa vsftpd

2.安裝vsftpd

命令:yum vsftpd

3.啓動、重啓、停止服務命令

啓動service vsftpd start

重啓重啓service vsftpd restart

停止service vsftpd stop

4.自動啓動vsftp服務

​ 執行“ntsysv”命令啓動自動服務配置程序,找到“vsftpd”服務選項,按空格鍵在前面加上星號,按tab鍵,選擇確定即可。

5.查看配置文件

命令:cat /etc/vsftpd/vsftpd.conf

anonymous_enable=YES		# 允許匿名用戶訪問
local_enable=YES			# 啓用本地系統用戶訪問
write_enable=YES			# 本地系統寫入權限
local_umask=022				# 本地用戶創建文件及目錄默認權限掩碼
anon_upload_enable=YES		# 允許匿名用戶上傳文件
anon_mkdir_write_enable=YES # 允許匿名用戶創建目錄
anon_other_write_enable=YES # 允許匿名用戶其他寫入權限
dirmessage_enable=YES		# 打印目錄顯示信息,通常用於用戶第一次訪問目錄時,信息提示
xferlog_enable=YES			# 啓用上傳日誌、下載日誌記錄
connect_from_port_20=YES	# 使用20端口進行數據傳輸
xferlog_std_format=YES		# 日誌文件將根據xferlong的標準格式寫入
listen=YES					# 不以獨立的服務啓動,通過xinetd服務服務管理
pam_service_name=vsftpd		# 登錄ftp服務器,依據/etc/pam.d/vsftpd中的內容進行認證
userlist_enable=YES			# vsft.user_list和ftpusers配置文件裏用戶禁止訪問ftp
 
tcp_wrappers=YES			# 設置vsftpd與tcp  wrapper結合進行主機的訪問控制,vsftpd服務器檢查
/etc/hosts.allow和/etc/hosts.deny中的設置來決定請求連接的主機,是否
允許訪問該ftp服務器

6.修改/var/ftp/pub目錄權限

​ 因默認vsftpd匿名用戶有兩種:anonymous、ftp,所以匿名用戶如果需要上傳文件、刪除及修改等權限,需要vsftpd用戶對/var/ftp/pub目錄有寫入權限,使用chown和chmod任意一種設置權限,如下:

chown -R ftp pub/chmod o+w pub

7.添加文件

​ linux中的目錄可以在/var/ftp/pub中添加。

​ 重啓服務器之後,即可在windows系統中添加文件

注:要完成這些,需要關閉linux和windows的防火牆和修改相關配置文件

關閉linux防火牆:service iptables stop
修改配置文件:setenforce 0
關閉windows防火牆

三、vsftpd系統用戶配置

​ vsftpd匿名用戶設置完畢,任何人都可以查看ftp服務器端的文件、目錄,設置可以修改、刪除文件和目錄,如何存放私密文件在ftp端,並保證文件或目錄專屬於擁有者?vsftpd系統用戶可以實現該需求。
​ 實現vsftpd系統用戶方式驗證,只需在linux系統中創建多個用戶即可。

1.建立用戶jxx001和jxx002

useradd -s /sbin/nologin jxx001
useradd -s /sbin/nologin jxx002

passwd 用戶名

2.修改配置文件

命令:vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

3.重啓服務器

命令:service vsftpd restart

4.測試登錄

​ 打開我的電腦,此時輸入用戶名和密碼即可

四、vsftpd虛擬用戶配置

​ vsftpd基於系統用戶訪問ftp服務器,系統用戶越多越不利於管理,而且不利於安全,爲了更加安全使用vsftpd,可以使用vsftpd虛擬用戶方式。
​ vsftpd虛擬用戶原理爲虛擬用戶沒有實際的真實系統用戶,而是通過映射到其中一個真實用戶以及設置相應的權限來實現訪問驗證,虛擬用戶不能登錄linux系統,從而讓系統更加安全可靠。

​ 如果ftp並不對互聯網上的所有用戶開發,則可以關閉匿名訪問,開啓實體賬戶或者虛擬賬戶的驗證機制。
在實際操作中,如果使用實體賬戶訪問,ftp用戶在擁有服務器真實用戶名和密碼的情況下,會對服務器產生潛在的危害,ftp服務器如果設置不當,則用戶有可能使用實體賬號進行非法操作。
​ 爲了ftp服務器的安全,可以使用虛擬用戶驗證方式,即將虛擬的賬號映射爲服務器的實體賬號,客戶端使用虛擬賬號訪問ftp服務器。

1.安裝軟件

掛在盤符:mount /dev/cdrom /mnt/Packge

進入安裝包,進行下載:cd /mnt/Packge/Packges

下載:rpm -ivh db4-4.7.25-17.el6.x86_64.rpm

rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm

或者使用yum安裝:yum install db4

2.創建相應的ftp數據目錄

mkdir -p /home/ftp/jxx001

mkdir -p /home/ftp/jxx002

3.創建一個用戶提供給虛擬用戶使用

useradd -s /sbin/nologin vftp

驗證:cat /etc/passwd |grep vftp

4.將ftp數據目錄設置成vftp用戶

chown vftp. /home/ftp/ -R

5.創建虛擬賬號與密碼的文本文件(一行賬號,一行密碼, 注意不要有多餘的空格)

vim /etc/vsftpd/logins.txt

6.將創建好的密碼文件txt格式轉換db格式

db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/login.db

查看命令:ls /etc/vsftpd

7.定義文件權限

chmod 600 /etc/vsftpd/login.db

8.定義pam認證文件(注意:db=/etc/vsftpd/login 文件就是上面生成的login.db文件;省略後綴.db)

vim /etc/pam.d/ftp

auth  required  /lib64/security/pam_userdb.so  db=/etc/vsftpd/login
account  required  /lib64/security/pam_userdb.so  db=/etc/vsftpd/login

9.配置vsftp主配置文件(guest_username=vftp 對應上面創建的用戶)

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
#allow_writeable_chroot=YES
guest_enable=YES
guest_username=vftp
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10088
anon_world_readable_only=NO
user_config_dir=/etc/vsftpd/user_conf

10.創建上面配置文件中指定的子配置文件目錄 user_conf

mkdir /etc/vsftpd/user_conf

11.定義 jxx001 用戶的配置文件(注意:這裏創建配置用戶配置文件的文件名必須與上面創建的用戶名一致)

vim /etc/vsftpd/user_conf/jxx001

write_enable=YES
anon_world_readable_only=no
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/home/ftp/jxx001

12.定義 jxx002 用戶的配置文件

vim /etc/vsftpd/user_conf/sgd002

write_enable=YES
anon_world_readable_only=no
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/home/ftp/jxx002

13.啓動vsftpd

service vsftpd restart

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