Centos 7使用vsftpd搭建FTP服務器

FTP,即:文件傳輸協議(File Transfer Protocol),基於客戶端/服務器模式,默認使用20、21端口號,其中端口20(數據端口)用於進行數據傳輸,端口21(命令端口)用於接受客戶端發出的相關FTP命令與參數。FTP服務器廣泛部署於局域網中,具備容易搭建、方便管理的特色。並且有些FTP客戶端工具還能夠支持文件的多點下載以及斷點續傳技術,所以FTP服務獲得了廣大用戶的青睞。
FTP協議有如下兩種工做模式:python

  • 主動模式(PORT):FTP服務器主動向客戶端發起鏈接請求。
  • 被動模式(PASV):FTP服務器等待客戶端發起鏈接請求(FTP的默認工做模式)。

vsftpd是一款運行在Linux操做系統上的FTP服務程序,具備很高的安全性和傳輸速度。
vsftpd有如下三種認證模式:linux

  • 匿名開放模式:是一種最不安全的認證模式,任何人均可以無需密碼驗證而直接登錄。
  • 本地用戶模式:是經過Linux系統本地的帳戶密碼信息進行認證的模式,相較於匿名開放模式更安全,並且配置起來簡單。
  • 虛擬用戶模式:是這三種模式中最安全的一種認證模式,它須要爲FTP服務單獨創建用戶數據庫文件,虛擬出用來進行口令驗證的帳戶信息,而這些帳戶信息在服務器系統中其實是不存在的,僅供FTP服務程序進行認證使用。

表1:vsftpd服務經常使用的參數以及做用
Centos 7使用vsftpd搭建FTP服務器算法

1、全局操做

一、安裝vsftpd服務
yum -y install vsftpd
二、去掉配置文件裏的註釋行數據庫

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf

Centos 7使用vsftpd搭建FTP服務器
三、配置firewalld防火牆開放2231和45000-49000端口vim

firewall-cmd --permanent --add-port=2231/tcp
firewall-cmd --permanent --add-port=45000-49000/tcp
firewall-cmd --reload

四、配置selinux容許FTP服務
注:沒有selinux相關命令的話,須要安裝policycoreutils-python包安全

yum -y install policycoreutils-python.x86_64
setsebool -P ftpd_full_access=on

2、匿名開放模式

一、修改配置文件,帶註釋的是須要修改和新增的配置
vim /etc/vsftpd/vsftpd.conf服務器

anonymous_enable=YES   #啓用匿名訪問模式
anon_umask=022   #匿名用戶上傳文件的umask值
anon_upload_enable=YES   #容許匿名用戶上傳文件
anon_mkdir_write_enable=YES   #容許匿名用戶建立目錄
anon_other_write_enable=YES   #容許匿名用戶重命名、刪除等操做
anon_root=/data/anon   #匿名用戶的FTP根目錄
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_port=2231   #vsftpd服務監聽的端口號
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_min_port=45000   #PASV模式最小端口號
pasv_max_port=49000   #PASV模式最大端口號

二、建立並受權匿名用戶FTP根目錄app

mkdir -p /data/anon/pub
chown -R ftp /data/anon/pub/

三、啓動vsftpd服務,並加入開機啓動tcp

systemctl start vsftpd
systemctl enable vsftpd

四、測試
Centos 7使用vsftpd搭建FTP服務器ide

3、本地用戶模式

一、修改配置文件,刪除以前的匿名模式配置內容,帶註釋的是須要修改和新增的配置
vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO   #關閉匿名訪問模式
local_enable=YES
write_enable=YES
local_umask=022
local_root=/data/user   #指定本地用戶的FTP根目錄
chroot_local_user=YES   #將用戶權限禁錮在FTP目錄
allow_writeable_chroot=YES   #容許對FTP根目錄執行寫入操做
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen_port=2231
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_min_port=45000
pasv_max_port=49000

二、建立本地用戶,並指定家目錄

useradd -d /data/user -s /sbin/nologin user
echo "123456" | passwd --stdin user

三、重啓vsftpd服務
systemctl restart vsftpd
四、測試
Centos 7使用vsftpd搭建FTP服務器

4、虛擬用戶模式

一、建立用於FTP認證的用戶數據庫文件
vim /etc/vsftpd/vuser.txt
注:第一行用戶名,第二行密碼,依此類推

xuad
123456
limin
123456

明文信息不安全,須要使用db_load命令用哈希(hash)算法將明文信息轉換成數據文件,而後將明文信息文件刪除。

db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db
rm -f /etc/vsftpd/vuser.txt

Centos 7使用vsftpd搭建FTP服務器
二、建立虛擬用戶映射的系統本地用戶和FTP根目錄

useradd -d /data/ftproot -s /sbin/nologin virtual
chmod -Rf 755 /data/ftproot/

Centos 7使用vsftpd搭建FTP服務器
三、創建用於支持虛擬用戶的PAM文件
PAM(可插拔認證模塊)是一種認證機制,經過一些動態連接庫和統一的API把系統提供的服務與認證方式分開,使得系統管理員能夠根據需求靈活調整服務程序的不一樣認證方式。PAM採用了分層設計(應用程序層、應用接口層、鑑別模塊層)的思想,其結構以下圖所示。
Centos 7使用vsftpd搭建FTP服務器
新建一個用於虛擬用戶認證的PAM文件vsftpd.vu,其中PAM文件內的「db=」參數爲使用db_load命令生成的帳戶密碼數據文件的路徑,但不用寫數據文件的後綴。
vim /etc/pam.d/vsftpd.vu

auth     required     pam_userdb.so  db=/etc/vsftpd/vuser
account  required     pam_userdb.so  db=/etc/vsftpd/vuser

四、爲兩個虛擬用戶設置不一樣的權限,xuad擁有全部權限,而limin只有讀取權限。

mkdir /etc/vsftpd/vusers_dir
touch /etc/vsftpd/vusers_dir/limin
vim /etc/vsftpd/vusers_dir/xuad
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

五、修改配置文件,刪除以前的匿名模式配置內容,帶註釋的是須要修改和新增的配置
vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
anon_umask=022
local_enable=YES
guest_enable=YES   #開啓虛擬用戶模式
guest_username=virtual   #指定虛擬用戶對應的系統用戶
allow_writeable_chroot=YES   #容許對FTP根目錄執行寫入操做
write_enable=YES
local_umask=022
local_root=/data/ftproot
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen_port=2231
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu   #指定PAM文件
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir   #指定虛擬用戶配置文件目錄
pasv_min_port=45000
pasv_max_port=49000

六、重啓vsftpd服務
systemctl restart vsftpd
七、測試
Centos 7使用vsftpd搭建FTP服務器
Centos 7使用vsftpd搭建FTP服務器

相關文章
相關標籤/搜索