Linux_vsftpd服務安裝及配置(三種登陸方式)


FTP服務部署

 

ftp傳輸的機制:

FTP通過21端口與Client端進行指令傳輸,通過20端口進行數據傳輸,根據工作模式的不同VSFTP分為主動模式和被動模式2種,大多是情況VSFTP是工作在被動模式下

 

主動模式:

1.Client端以一個大於1024的隨機端口向FTP服務器的21號端口發出建立連接請求

2.Server端收到請求后,會以20端口主動去鏈接Client端的隨機端口+1號端口,如果該端口被占用,則回去找隨機端口+2號端口以此類推,直到找Client端空閑的端口

3.Client端與Server端通過20端口進行數據傳輸

 ftp主動模式

被動模式:

1.Client端以一個大於1024的隨機端口向FTP服務器的21號端口發出建立連接請求

2.Server端會通過21號端口給Client端發送一個類似(xyz,ab)的數值來告訴Client端打開的隨機端口,同時打開xyz*256+ab端口

3.Client端再通過一個隨機端口連接Server端的xyz*256+ab端口進行數據傳輸

 ftp被動模式

而現實環境中無論是Client端還是Server端都是在防火牆后面,在主動模式下VSFTP會鏈接Client端的隨機+1號端口,Client端顯然不會將防火牆上所有隨機端口開放;而在被動下問題同樣的問題仍然會擺在Server端的防火牆面前,這就需要Server端的防火牆開啟連接追蹤功能,即放行與21號端口有關聯的端口訪問請求,這也就是為什么大部分情況下VSFTP是以被動模式工作。

 

vsftp部署:

環境描述:

服務端系統:CentOS7.5;內存2G;硬盤30G

客戶端系統:Windows10 ; 軟件:xftp客戶端

 

注意:1)每一步的操作路徑,不要混亂

2)  配置的詳細介紹在本文章的最后部分展示

3)本次安裝vsftpd以yum的形式進行部署

 

Vsftp的登陸類型:

VSFTP提供了系統用戶、匿名用戶、和虛擬用戶三種不同的登陸方式。所有的虛擬用戶會映射成一個系統用戶,訪問時的文件目錄是為此系統用戶的家目錄;匿名用戶也是虛擬用戶,映射的系統用戶為ftp,詳細信息可以通過man vsftpd.conf查看

 

1.安裝vsftp

[root@linuxMA ~]# yum -y install vsftpd*

 

2.使用rpm –qc 查看vsftpd的配置文件

[root@linuxMA ~]# rpm -qc vsftpd

/etc/logrotate.d/vsftpd

/etc/pam.d/vsftpd

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

/etc/vsftpd/vsftpd.conf

 

#配置文件詳解

/etc/logrotate.d/vsftpd            滾動日志配置文件

/etc/pam.d/vsftpd                   認證文件,pam全稱為Plugable Authentication

/etc/vsftpd/ftpusers                控制登陸系統用戶的機制,出現在該文件中的用戶不允許使用ftp服務器,這是在/etc/pam.d/vsftpd中定義的

/etc/vsftpd/user_list               配合/etc/vsftpd/vsftpd.conf中的userlist_enable=YES和userlist_deny=YES|NO實現黑白名單此處需要注意的是:黑白名單的前提是/etc/vsftpd/vsftpd.conf配置文件中userlist_enable=YES,userlist_deny選項默認為YES(黑名單),即該文件中出現的用戶不允許登陸VSFTP,就算手動添加userlist_deny=NO(白名單)即只允許該文件中出現的用戶允許登陸VSFTP,在VSFTP啟動時依然會去檢查/etc/vsftpd/ftpusers文件並且禁止該文件中的用戶登錄

/etc/vsftpd/vsftpd.conf             VSFTP主配置文件,所有的配置選項必須頂格寫,配置文件中#后帶空格的是說明,不帶空格的是注釋掉的配置選項

 

3.將cp命令將配置文件備份

[root@linuxMA ~]# cd /etc/vsftpd/

[root@linuxMA vsftpd]# ls

ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

[root@linuxMA vsftpd]# cp vsftpd.conf vsftpd.conf.bak

[root@linuxMA vsftpd]# ls

ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

 

1)配置匿名用戶

[root@linuxMA vsftpd]# vim vsftpd.conf

write_enable=YES

anon_umask=022

anonymous_enable=YES

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

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

 #開啟vsftp服務,並查看是否啟動成功

[root@linuxMA vsftpd]# systemctl start vsftpd

[root@linuxMA vsftpd]# netstat -lnpt |grep vsftpd

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      34531/vsftpd

 

#登陸驗證:

#測試登陸成功:

 

 

 

 

#修改權限:

[root@linuxMA ~]# cd /var/ftp/

[root@linuxMA ftp]# ll

總用量 0

drwxr-xr-x 2 root root 6 8月   3 2017 pub

[root@linuxMA ftp]# chown ftp:ftp pub/

[root@linuxMA ftp]# ll

總用量 0

drwxr-xr-x 2 ftp ftp 21 9月  16 10:16 pub

 

重點:改變根目錄的屬主,如果不改變的話,只能訪問,其他權限不能生效。因為我們是以ftp用戶的身份訪問的,而pub默認的屬主屬組是root

 

注意:(1)修改完配置之后需要重啟完服務才能生效

           (2)還需要從新從客戶端登陸,否則修改后的配置看不到效果。

2)配置系統用戶

1.創建測試用戶zhangsan、lisi 密碼都為“123456”

[root@linuxMA ~]# useradd zhangsan

[root@linuxMA ~]# useradd lisi

[root@linuxMA ~]# echo "123456" |passwd --stdin zhangsan

更改用戶 zhangsan 的密碼 。

passwd:所有的身份驗證令牌已經成功更新。

[root@linuxMA ~]# echo "123456" |passwd --stdin lisi

更改用戶 lisi 的密碼 。

passwd:所有的身份驗證令牌已經成功更新。

 

2.修改配置文件

[root@linuxMA ~]# vim /etc/vsftpd/vsftpd.conf

local_enable=YES

local_umask=077

chroot_local_user=YES

allow_writeable_chroot=YES

write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

userlist_deny=NO

tcp_wrappers=YES

 

[root@linuxMA ~]# vim /etc/vsftpd/user_list             //添加用戶到白名單

zhangsan

lisi

[root@linuxMA ~]# systemctl restart vsftpd              //重啟服務

 

#登陸測試:

#登陸成功:

 

 #添加並進行測試

[root@linuxMA ~]# cd /home/zhangsan/

[root@linuxMA zhangsan]# touch zhangsan.txt

 

 

3)配置虛擬用戶

1.建立虛擬FTP用戶的帳號

[root@linuxMA ~]# useradd -s /sbin/nologin vu

 

2.創建虛擬用戶文件

[root@linuxMA ~]# cd /etc/vsftpd/

[root@linuxMA vsftpd]# vim user

wangwu

12345

maliu

12345

基數行代表用戶名,偶數行代表密碼

 

3. 通過db_load工具創建出Berkeley DB格式的數據庫文件

[root@linuxMA vsftpd]# db_load -T -t hash -f user user.db

[root@linuxMA vsftpd]# ls

ftpusers  user  user.db  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

 

db_load -T -t hash -f user user.db

 

-f 指定數據原文件

-T 允許非Berkeley DB的應用程序使用文本格式轉換的DB數據文件

-t hash   讀取文件的基本方法

 

4. 建立支持虛擬用戶的PAM認證文件

[root@linuxMA vsftpd]# vim /etc/pam.d/vsftpd.vu

加入以下兩行

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

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

對應剛才生成user.db的文件

 

5.修改配置文件

[root@linuxMA vsftpd]# vim vsftpd.conf

write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

userlist_enable=YES

tcp_wrappers=YES

allow_writeable_chroot=YES

guest_enable=YES

guest_username=vu

pam_service_name=vsftpd.vu

local_enable=YES

local_umask=077

chroot_local_user=YES

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/user_dir

 

6. 為用戶建立獨立的配置目錄及文件

[root@linuxMA vsftpd]# mkdir /etc/vsftpd/user_dir

[root@linuxMA vsftpd]# ls

ftpusers  user  user.db  user_dir  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

[root@linuxMA vsftpd]# cd /etc/vsftpd/user_dir

[root@linuxMA user_dir]# vim wangwu

local_root=/etc/vsftpd/data                       //虛擬用戶數據的存放路徑

 #創建虛擬用戶數據存放目錄

[root@linuxMA user_dir]# cd ..

[root@linuxMA vsftpd]# mkdir data

[root@linuxMA vsftpd]# chmod 777 data/

 #重啟服務

[root@linuxMA ]# systemctl restart vsftpd

 

登陸測試:

 

#登陸成功。添加文件進行測試

[root@linuxMA vsftpd]# cd data/

[root@linuxMA data]# touch wangwu.txt

 

 

 

重點:本地用戶和虛擬用戶不能同時登錄、因為認證方式只有一種

本地是pam_service_name =vsftpd

虛擬是pam_service_name =vsftpd.vu

 

 

配置文件詳解

 

#常用的匿名FTP配置項

anonymous_enable=YES                         是否允許匿名用戶訪問

anon_umask=022                                     匿名用戶所上傳文件的權限掩碼

anon_root=/var/ftp                                    設置匿名用戶的FTP根目錄

anon_upload_enable=YES                      是否允許匿名用戶上傳文件

anon_mkdir_write_enable=YES               是否允許匿名用戶允許創建目錄

anon_other_write_enable=YES               是否允許匿名用戶有其他寫入權(改名,刪除,覆蓋)

anon_max_rate=0                                     限制最大傳輸速率(字節/秒)0為無限制

 

#常用的本地用戶FTP配置項

local_enable=YES                                      是否允許本地系統用戶訪問

local_umask=022                                       本地用戶所上傳文件的權限掩碼

local_root=/var/ftp                                      設置本地用戶的FTP根目錄

chroot_list_enable=YES                            表示是否開啟chroot的環境,默認沒有開啟

chroot_list_file=/etc/vsftpd/chroot_list        表示寫在/etc/vsftpd/chroot_list文件里面的用戶是不可以出chroot環境的。默認是可以的。

Chroot_local_user=YES                             表示所有寫在/etc/vsftpd/chroot_list文件里面的用戶是可以出chroot環境的,和上面的相反。

local_max_rate=0                                       限制最大傳輸速率(字節/秒)0為無限制

 

#常用的全局配置項

listen=YES                                                  是否以獨立運行的方式監聽服務

listen_address=192.168.4.1                       設置監聽FTP服務的IP地址

listen_port=21                                             設置監聽FTP服務的端口號

write_enable=YES                                      是否啟用寫入權限(上傳,刪除文件)

download_enable=YES                             是否允許下載文件

dirmessage_enable=YES                           用戶切換進入目錄時顯示.message文件

xferlog_enable=YES                                   啟用日志文件,記錄到/var/log/xferlog

xferlog_std_format=YES                             啟用標准的xferlog日志格式,禁用此項將使用vsftpd自己的格式

connect_from_port_20=YES                       允許服務器主動模式(從20端口建立數據連接)

pasv_enable=YES                                       允許服務器被動模式

pasv_max_port=24600                                設置被動模式服務器的最大端口號

pasv_min_port=24500                                 設置被動模式服務器的最小端口號

pam_service_name=vsftpd                          用戶認證的PAM文件位置

(/etc/pam.d/vsftpd.vu)

userlist_enable=YES                                     是否啟用user_list列表文件

userlist_deny=YES                                        是否禁用user_list中的用戶

max_clients=0                                                限制並發客戶端連接數

max_per_ip=0                                                 限制同一IP地址的並發連接數

tcp_wrappers=YES                                         是否啟用tcp_wrappers主機訪問控制

chown_username=root                                   表示匿名用戶上傳的文件的擁有人是root,默認關閉

ascii_upload_enable=YES                              表示是否允許用戶可以上傳一個二進制文件,默認是不允許的

ascii_download_enable=YES                         這個是代表是否允許用戶可以下載一個二進制文件,默認是不允許的

nopriv_user=vsftpd                                          設置支撐Vsftpd服務的宿主用戶為手動建立的Vsftpd用戶

async_abor_enable=YES                                設定支持異步傳輸功能

ftpd_banner=Welcome to Awei FTP servers   設定Vsftpd的登陸標語

guest_enable=YES             設置啟用虛擬用戶功能

guest_username=ftpuser         指定虛擬用戶的宿主用戶

virtual_use_local_privs=YES        設定虛擬用戶的權限符合他們的宿主用戶

user_config_dir=/etc/vsftpd/vconf      設定虛擬用戶個人Vsftp的配置文件存放路徑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM