CentOS 7搭建基於虛擬用戶的FTP服務

一、ftp文件傳輸服務

1、FTP連接的端口號

  • 21:傳輸控制使用,進行身份驗證授權訪問

  • 20:傳輸數據使用

2、FTP連接模式

  • 主動模式:服務器端通過20號端口給客戶端傳輸數據,POST指令表示主動連接,默認工作在主動模式

  • 被動模式:服務器端開放指定範圍的端口號等待客戶端建立數據連接,pasv指令表示被動模式

3、FTP傳輸模式

  • 文本 模式:文本模式不支持傳輸流媒體數據,支持文本文件

  • 二進制模式:使用廣泛支持傳輸文本文件流媒體數據

4、FTP身份驗證的方式

  • 匿名:使用ftp用戶或者anonymous賬戶驗證不需要密碼

  • 本地身份驗證:需要使用賬戶密碼進行身份驗證後訪問數據

  • 虛擬賬戶驗證:將多個用戶映射到一個系統賬戶進行驗證

二、安裝vsftpd服務

1、安裝vsftpd服務

[root@centos01 ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm  <!--安裝ftp服務器端-->
[root@centos01 ~]# rpm -ivh /mnt/Packages/ftp-0.17-67.el7.x86_64.rpm      <!--安裝ftp客戶端-->

2、配置虛擬用戶

1) 創建虛擬賬戶數據庫文件

[root@centos01 ~]# vim /etc/vsftpd/vusers.list 
            <!--奇數行是用戶名,偶數行是密碼-->
bob
pwd@123
tom
pwd@123
alice
pwd@123

2)生成虛擬賬戶數據庫文件,數據庫文件vusers.db

[root@centos01 ~]# db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db

3)添加虛擬賬戶映射創建ftp根目錄

[root@centos01 ~]# mkdir /benet
[root@centos01 ~]# useradd -d /benet/ftproot -s /sbin/nologin virtual

4)設置ftp根目錄的權限

[root@centos01 ~]# chmod 755 /benet/ftproot/

3、配置pam身份驗證和創建虛擬賬戶權限目錄

1) 配置PAM什麼驗證

[root@centos01 ~]# vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth    required        pam_userdb.so db=/etc/vsftpd/vusers
account required        pam_userdb.so db=/etc/vsftpd/vusers

2)創建虛擬機賬戶權限目錄

[root@centos01 ~]# mkdir /etc/vsftpd/vusers_dir

4、修改vsftp主配置文件配置虛擬賬戶ftp

1)修改主配置文件

[root@centos01 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO       <!--是否允許匿名訪問-->
local_enable=YES         <!--是否允許本地系統用戶訪問-->
write_enable=YES           <!--啓用任何形式的寫入權限(如上傳、刪除文件等)-->
local_umask=022  <!--設置本地用戶所上傳文件的默認權限掩碼值-->
anon_umask=022 <!--設置匿名用戶所上傳文件的默認權限掩碼值-->
dirmessage_enable=YES<!--用戶切換進入目錄時顯示.message文件(如果存在)的內容-->
xferlog_enable=YES       <!--啓用xferlog日誌,默認記錄到/var/log/xferlog-->
connect_from_port_20=YES <!--允許服務器主動模式(從20端口建立數據連接)-->
xferlog_std_format=YES <!--啓用標準的xferlog日誌格式,
若禁用此項,將使用vsftp自己的日誌格式-->
listen=NO            <!--是否以獨立運行的方式監聽服務-->
listen_ipv6=YES 

chroot_local_user=YES<!--是否將FTP本地用戶禁錮在宿主目錄中-->
allow_writeable_chroot=YES<!--允許被限制用戶的主目錄具有寫權限-->
guest_enable=YES 
guest_username=virtual       <!--指定映射的系統用戶名稱-->
user_config_dir=/etc/vsftpd/vusers_dir/    
        <!--位不同的虛擬用戶建立獨立的配置文件-->
pam_service_name=vsftpd.vu     <!--指定新的PAM認證文件-->
userlist_enable=YES    <!--是否啓用user_list用戶列表文件-->
tcp_wrappers=YES           <!--是否啓用TCP_Wrappers主機訪問控制-->

2)主配置文件常見選項

CentOS 7搭建基於虛擬用戶的FTP服務
CentOS 7搭建基於虛擬用戶的FTP服務

3)創建虛擬賬戶權限文件

[root@centos01 ~]# touch /etc/vsftpd/vusers_dir/bob
[root@centos01 ~]# touch /etc/vsftpd/vusers_dir/tom
[root@centos01 ~]# touch /etc/vsftpd/vusers_dir/alice

4)給bob用戶設置訪問ftp完全控制權限

[root@centos01 ~]# vim /etc/vsftpd/vusers_dir/bob 
anon_upload_enable=YES           <!--允許上傳數據-->
anon_mkdir_write_enable=YES    <!--允許創建目錄或文件-->
anon_other_write_enable=YES  <!--允許刪除或覆蓋文件目錄-->

5)設置tom賬戶擁有上傳權限

[root@centos01 ~]# vim /etc/vsftpd/vusers_dir/tom
anon_upload_enable=YES       <!--允許上傳數據-->

6)修改ftp根目錄的所有者

[root@centos01 ~]# chown virtual:virtual /benet/ftproot/

7)啓動ftp服務,設置開機自動啓動

[root@centos01 ~]# systemctl start vsftpd     <!--啓動服務-->
[root@centos01 ~]# systemctl enable vsftpd   <!--設置開機自動啓動-->

8)客戶端驗證bob權限

CentOS 7搭建基於虛擬用戶的FTP服務

CentOS 7搭建基於虛擬用戶的FTP服務

9)客戶端驗證tom權限

CentOS 7搭建基於虛擬用戶的FTP服務

CentOS 7搭建基於虛擬用戶的FTP服務

10)客戶端驗證alice權限

CentOS 7搭建基於虛擬用戶的FTP服務

CentOS 7搭建基於虛擬用戶的FTP服務

三、總結

1、全局配置項字段詳解

  • listen=NO: 是否以獨立運行的方式監聽服務;

  • listen_address=IP地址:設置監聽f t p服務的ip地址,默認監聽所有IP地址;

  • listen_port=21:設置監聽ftp服務的端口號;

  • write_enable=YES:開啓寫入權限;

  • download_enable=YES:允許下載權限;

  • dirmessage_enable=YES:用戶切換進入目錄時顯示 “.message”文件(如果已存在)的內容;

  • xferlog_enable=YES:啓用xferlog日誌,默認記錄到 /var/log/xferlog;

  • xferlog_std_format=YES:ftp日誌格式;

  • connect_from_port_20=YES:數據連接端口號默認20;

  • pasv_enable=NO:禁止被動模式連接;默認允許被動模式連接;

  • pasv_max_port=21600:起始端口號;

  • pasv_min_port=21700:結束端口號;

  • pam_service_name=vsftpd:開啓PAM驗證;

  • userlist_enable=YES:允許user_list列表用戶登錄ftp;

  • userlist_deny=YES:不允許user_list列表用戶登錄ftp;

  • max_clients=0:限制多個客戶端同時連接(0爲無限制);

  • max_per_ip=0:允許相同IP地址訪問ftp連接次數(0爲無限制);

  • tcp_wrappers=YES: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:是否允許匿名用戶有其他寫入權限,如對文件改名、覆蓋及刪除文件等;

2、本地用戶配置項

  • local_enable=YES:是否允許本地用戶訪問;

  • local_umask=022:設置本地用戶所上傳文件的默認權限掩碼值(反掩碼);

  • local_root=/var/ftp:設置本地用戶的FTP根目錄(默認爲用戶的宿主目錄);

  • chroot_local_user=YES:是否將FTP本地用戶禁錮在宿主目錄中;

  • allow_writeable_chroot=YES:允許被限制用戶的主目錄具有寫權限;

  • local_max_rate=0:限制本地用戶的最大傳輸速率(0爲無限制),單位爲字節/秒(B/s);

3、虛擬用戶配置項

  • guest_username=test:指定映射的系統用戶名稱;

  • guest_enable=YES:是否啓用虛擬用戶;

  • allow_writeable_chroot=允許被限制用戶的主目錄具有寫權限(此項必須寫入,否則可能會報錯);

  • anon_world_readable_only=NO:允許用戶下載目錄內容;

  • anon_other_write_enable=YES:允許匿名用戶有其他寫入權限,如重命名、覆蓋及刪除文件等;

  • user_config_dir=/etc/vsftpd/vusers_dir:指定虛擬用戶獨立的配置文件目錄;

———————— 本文至此結束,感謝閱讀 ————————

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