<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CentOS 搭建 Vsftpd 服務(wù),一次性成功,收藏了!

          共 20333字,需瀏覽 41分鐘

           ·

          2021-03-06 05:02

          點(diǎn)擊上方 java項(xiàng)目開發(fā) ,選擇 星標(biāo) 公眾號

          重磅資訊,干貨,第一時(shí)間送達(dá)

          文件傳輸協(xié)議

          • FTP

          文件傳輸協(xié)議(FTP)是一種基于TCP協(xié)議在客C/S架構(gòu)的協(xié)議,占用20和21端口

          • TFTP

          簡單文件傳輸協(xié)議(TFTP)是一種基于UDP協(xié)議在客C/S架構(gòu)的協(xié)議,占用69端口 TFTP的命令功能不如FTP服務(wù)強(qiáng)大,甚至不能遍歷目錄,在安全性方面也弱于FTP服務(wù) 因?yàn)門FTP不需要客戶端的權(quán)限認(rèn)證,也就減少了無謂的系統(tǒng)和網(wǎng)絡(luò)帶寬消耗,效率更高。

          FTP 協(xié)議概述

          一般來講,人們將計(jì)算機(jī)聯(lián)網(wǎng)的首要目的就是獲取資料,而文件傳輸是一種非常重要的獲取資料的方式。今天的互聯(lián)網(wǎng)是由幾千萬臺個(gè)人計(jì)算機(jī)、工作站、服務(wù)器、小型機(jī)、大型機(jī)、巨型機(jī)等具有不同型號、不同架構(gòu)的物理設(shè)備共同組成的,而且即便是個(gè)人計(jì)算機(jī),也可能會(huì)裝有Windows、Linux、UNIX、Mac等不同的操作系統(tǒng)。為了能夠在如此復(fù)雜多樣的設(shè)備之間解決問題解決文件傳輸問題,文件傳輸協(xié)議(FTP)應(yīng)運(yùn)而生。

          FTP是一種在互聯(lián)網(wǎng)中進(jìn)行文件傳輸?shù)膮f(xié)議,基于客戶端/服務(wù)器(C/S)模式,默認(rèn)使用20、21號端口,其中端口20(數(shù)據(jù)端口)用于進(jìn)行數(shù)據(jù)傳輸,端口21(命令端口)用于接受客戶端發(fā)出的相關(guān)FTP命令與參數(shù)。FTP服務(wù)器普遍部署于內(nèi)網(wǎng)中,具有容易搭建、方便管理的特點(diǎn)。而且有些FTP客戶端工具還可以支持文件的多點(diǎn)下載以及斷點(diǎn)續(xù)傳技術(shù),因此FTP服務(wù)得到了廣大用戶的青睞。

          • 命令連接
            • 傳輸TCP的文件管理類命令給服務(wù)端
            • 直到用戶退出才關(guān)閉連接,否則一直連接
          • 數(shù)據(jù)連接
            • 數(shù)據(jù)傳輸,按需創(chuàng)建及關(guān)閉的連接
            • 數(shù)據(jù)傳輸可以為文本或二進(jìn)制格式傳輸

          FTP 工作模式

          FTP服務(wù)器是按照FTP協(xié)議在互聯(lián)網(wǎng)上提供文件存儲和訪問服務(wù)的主機(jī),F(xiàn)TP客戶端則是向服務(wù)器發(fā)送連接請求,以建立數(shù)據(jù)傳輸鏈路的主機(jī)。FTP協(xié)議有下面兩種工作模式。

          • 主動(dòng)模式:FTP服務(wù)器主動(dòng)向客戶端發(fā)起連接請求
            • 命令連接:Client:50000 --> Server:21
            • 數(shù)據(jù)連接:Server:20/tcp --> Client:50000+1
            • 模式缺點(diǎn):客戶端有防火墻,一般會(huì)禁止服務(wù)的主動(dòng)連接
          • 被動(dòng)模式:FTP服務(wù)器等待客戶端發(fā)起連接請求(FTP的默認(rèn)工作模式)
            • 命令連接:Client:50000 --> Server:21
            • 數(shù)據(jù)連接:Client:50000+1 --> Server:隨機(jī)端口 ==> 通過命令連接得知這個(gè)隨機(jī)端口
            • 模式缺點(diǎn):服務(wù)器端需要修改防火墻規(guī)則并開放21和這個(gè)隨機(jī)端口

          防火墻一般是用于過濾從外網(wǎng)進(jìn)入內(nèi)網(wǎng)的流量,因此有些時(shí)候需要將FTP的工作模式設(shè)置為主動(dòng)模式,才可以傳輸數(shù)據(jù)。但是因?yàn)榭蛻舳酥鳈C(jī)一般都設(shè)有防火墻,會(huì)禁止服務(wù)器的連接請求,所有適當(dāng)?shù)膇ptables規(guī)則變得越來越重要了。

          FTP 服務(wù)程序

          由于FTP是一種基于(C/S)客戶端/服務(wù)器模式的協(xié)議,所有有很多的程序能夠提供FTP服務(wù)的功能。

          服務(wù)端程序
          • wu-ftpd
            • 一個(gè)Internet上最流行的FTP守護(hù)程序,功能十分強(qiáng)大,可以構(gòu)建多種類型FTP服務(wù)器。
          • proftpd
            • 一個(gè)Unix平臺上或是類Unix平臺上的FTP服務(wù)器開源程序,任何人只要遵守GPL版權(quán)聲明都可以隨意修改源碼。proftpd亦開發(fā)了有圖形用戶界面的FTP服務(wù)端軟體稱為gProFTPd,可以提供圖形界面的操作。針對Wu-FTP的弱項(xiàng)而開發(fā)的,除了改進(jìn)的安全性,還具備許多Wu-FTP沒有的特點(diǎn),能以Stand-alone、xinetd模式運(yùn)行等。
          • pureftp
            • pureftp是免費(fèi)和安全的FTP服務(wù)器,它注重效率和易用性。
          • vsftpd
            • vsftpd是very secure FTP daemon的縮寫,安全性是它的一個(gè)最大的特點(diǎn),可以運(yùn)行在多種平臺之上提供安全的FTP服務(wù)。在CentOS等系統(tǒng)以及多個(gè)互聯(lián)網(wǎng)廠商都在使用的FTP服務(wù)程序,你值得擁有。
          • ServU
            • Serv-U是一種被廣泛運(yùn)用在Windows平臺的的FTP服務(wù)器軟件,可以設(shè)定多個(gè)FTP服務(wù)器、限定登錄用戶的權(quán)限、登錄主目錄及空間大小等優(yōu)點(diǎn)。
          客戶端程序
          • 命令行
            • ftp
            • lftp, lftpget
            • wget, curl
            • 因?yàn)镕TP協(xié)議是通過TCP明文傳送的,所有為了安全可以使用ftps(SSL), sftp(SSH)工具
          • 圖形化
            • _ filezilla
            • _ gftp
            • _ gProFTPd
            • _ flashfxp * cuteftp

          FTP服務(wù)的響應(yīng)碼

          1xx: 信息
          2xx: 成功類的狀態(tài)碼
          3xx: 提示需進(jìn)一步提供補(bǔ)充類信息的狀態(tài)碼
          4xx: 客戶端錯(cuò)誤
          5xx: 服務(wù)端錯(cuò)誤

          vsftpd 服務(wù)程序

          vsftpd(非常安全的FTP守護(hù)進(jìn)程)是一款運(yùn)行在Linux操作系統(tǒng)上的 FTP 服務(wù)程序,不僅完全開源而且免費(fèi),此外,還具有很高的安全性、傳輸速度,以及支持虛擬用戶驗(yàn)證等其他FTP服務(wù)程序具備的特點(diǎn)。

          安裝服務(wù)端程序
          [root@localhost ~]# yum install vsftpd
          Loaded plugins: langpacks, product-id, subscription-manager
          ………………省略部分輸出信息………………
          ================================================================================
          Installing:
          vsftpd x86_64 3.0.2-9.el7 rhel 166 k
          Transaction Summary
          ================================================================================
          Install 1 Package
          vsftpd.x86_64 0:3.0.2-9.el7
          Complete!

          [root@linuxprobe ~]# yum install ftp
          Loaded plugins: langpacks, product-id, subscription-manager
          ………………省略部分輸出信息………………
          Install 1 Package
          ftp.x86_64 0:0.17-66.el7
          Complete!

          關(guān)閉本機(jī)防火墻

          # iptables防火墻管理工具默認(rèn)禁止了FTP傳輸協(xié)議的端口號
          [root@localhost ~]# iptables -F

          配置 FTP 服務(wù)

          # 程序的主配置文件為/etc/vsftpd/vsftpd.conf
          [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf
          anonymous_enable=YES
          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=NO
          listen_ipv6=YES
          pam_service_name=vsftpd
          userlist_enable=YES
          tcp_wrappers=YES
          配置文件

          CentOS6 中的配置文件位置,在 CentOS7 中有可能不同。

          主配置文件:/etc/vsftpd/vsftpd.conf
          配置文件目錄:/etc/vsftpd/*.conf
          服務(wù)啟動(dòng)腳本:/etc/rc.d/init.d/vsftpd
          用戶認(rèn)證配置文件:/etc/pam.d/vsftpd
          共享目錄
          匿名用戶(映射為ftp用戶)共享資源位置:/var/ftp
          系統(tǒng)用戶通過ftp訪問的資源的位置:用戶自己的家目錄
          虛擬用戶通過ftp訪問的資源的位置:給虛擬用戶指定的映射成為的系統(tǒng)用戶的家目錄

          配置參數(shù)

          常用配置參數(shù)都為主配置文件,/etc/vsftpd/vsftpd.conf 的常用配置。

          通用基礎(chǔ)配置
          listen=[YES|NO]         #是否以獨(dú)立運(yùn)行的方式監(jiān)聽服務(wù)
          listen_address=IP地址   #設(shè)置要監(jiān)聽的 IP 地址
          listen_port=21        #設(shè)置 FTP 服務(wù)的監(jiān)聽端口
          download_enable=[YES|NO] #是否允許下載文件
          max_clients=0   #最大客戶端連接數(shù),0 為不限制
          max_per_ip=0   #同一 IP 地址的最大連接數(shù),0 為不限制
          chown_uploads=[YES|NO] #是否允許改變上傳文件的屬主
          chown_username=whoever #改變上傳文件的屬主為 whoever
          pam_service_name=vsftpd #讓 vsftpd 使用 pam 完成用戶認(rèn)證,使用的文件為/etc/pam.d/vsftpd

          匿名用戶的配置

          anonymous_enable=[YES|NO]      #是否允許匿名用戶訪問
          anon_upload_enable=[YES|NO]    #是否允許匿名用戶上傳文件
          anon_mkdir_write_enable=[YES|NO] #是否允許匿名用戶創(chuàng)建目錄
          anon_other_write_enable=[YES|NO] #是否開放匿名用戶的其他寫入權(quán)限(包括重命名、刪除等操作權(quán)限)
          anon_umask=022       #匿名用戶上傳文件的 umask 值
          anon_root=/var/ftp   #匿名用戶的 FTP 根目錄
          anon_max_rate=0       #匿名用戶的最大傳輸速率(字節(jié)/秒),0 為不限制

          系統(tǒng)用戶的配置

          anonymous_enable=NO    #禁止匿名訪問模式
          local_enable=[YES|NO]  #是否允許本地用戶登錄 FTP
          write_enable=[YES|NO]  #是否開放本地用戶的其他寫入權(quán)限
          local_umask=022        #本地用戶上傳文件的 umask 值
          local_root=/var/ftp    #本地用戶的 FTP 根目錄
          local_max_rate=0      #本地用戶最大傳輸速率(字節(jié)/秒),0 為不限制
          userlist_enable=[YES|NO] #開啟用戶作用名單文件功能
          userlist_deny=[YES|NO]   #啟用禁止用戶名單,名單文件為 ftpusers 和/etc/vsftpd/user_list
          chroot_local_user=[YES|NO] #是否將用戶權(quán)限禁錮在 FTP 家目錄中,以確保安全
          chroot_list_enable=[YES|NO] #禁錮文件中指定的 FTP 本地用戶于其家目錄中
          chroot_list_file=/etc/vsftpd/chroot_list #指定禁錮文件位置,需要和 chroot_list_enable 一同開啟

          日志功能

          xferlog_enable=[YES|NO]    #是否開啟 FTP 日志功能
          xferlog_std_format=[YES|NO]    #是否以標(biāo)準(zhǔn)格式保持日志
          xferlog_file=/var/log/xferlog  #指定保存日志的文件名稱,需要一同開啟

          vsftpd 認(rèn)證模式

          vsftpd 作為更加安全的文件傳輸?shù)姆?wù)程序,允許用戶以三種認(rèn)證模式登錄到 FTP 服務(wù)器上。

          • 匿名開放模式
            • 匿名開放模式是一種最不安全的認(rèn)證模式,任何人都可以無需密碼驗(yàn)證而直接登錄到FTP服務(wù)器。這種模式一般用來訪問不重要的公開文件,在生產(chǎn)環(huán)境中盡量不要存放重要文件,不建議在生產(chǎn)環(huán)境中如此行事。
          • 本地用戶模式
            • 本地用戶模式是通過Linux系統(tǒng)本地的賬戶密碼信息進(jìn)行認(rèn)證的模式,相較于匿名開放模式更安全,而且配置起來相對簡單。但是如果被黑客破解了賬戶的信息,就可以暢通無阻地登錄FTP服務(wù)器,從而完全控制整臺服務(wù)器。
          • 虛擬用戶模式
            • 虛擬用戶模式是這三種模式中最安全的一種認(rèn)證模式,它需要為FTP服務(wù)單獨(dú)建立用戶數(shù)據(jù)庫文件,虛擬出用來進(jìn)行口令驗(yàn)證的賬戶信息,而這些賬戶信息在服務(wù)器系統(tǒng)中實(shí)際上是不存在的,僅供FTP服務(wù)程序進(jìn)行認(rèn)證使用。這樣,即使黑客破解了賬戶信息也無法登錄服務(wù)器,從而有效降低了破壞范圍和影響。
          匿名訪問模式

          vsftpd 服務(wù)程序默認(rèn)開啟了匿名開放模式,我們需要做的就是開放匿名用戶的上傳、下載文件的權(quán)限,以及讓匿名用戶創(chuàng)建、刪除、更名文件的權(quán)限。

          # 匿名訪問模式主配置文件
          [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
          anonymous_enable=YES
          anon_umask=022
          anon_upload_enable=YES
          anon_mkdir_write_enable=YES
          anon_other_write_enable=YES

          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=NO
          listen_ipv6=YES
          pam_service_name=vsftpd
          userlist_enable=YES
          tcp_wrappers=YES
          # 重啟服務(wù)
          [root@localhost ~]# systemctl restart vsftpd

          # 服務(wù)程序加入到開機(jī)啟動(dòng)項(xiàng)中,以保證服務(wù)器在重啟后依然能夠正常提供傳輸服務(wù)
          [root@localhost ~]# systemctl enable vsftpd
          ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
          # 在vsftpd服務(wù)程序的匿名開放認(rèn)證模式下,其賬戶統(tǒng)一為anonymous,密碼為空
          # 連接到FTP服務(wù)器后,默認(rèn)訪問的是/var/ftp目錄,我們可以在其中進(jìn)行創(chuàng)建、刪除等操作
          [root@localhost ~]# ftp 192.168.10.10
          Connected to 192.168.10.10 (192.168.10.10).
          220 (vsFTPd 3.0.2)
          Name (192.168.10.10:root): anonymous
          331 Please specify the password.
          Password:此處敲擊回車即可
          230 Login successful.
          Remote system type is UNIX.
          Using binary mode to transfer files.
          ftp> cd pub
          250 Directory successfully changed.
          ftp> mkdir files
          550 Permission denied.
          # 系統(tǒng)顯示拒絕創(chuàng)建目錄,這是為什么呢?
          # 查看該目錄的權(quán)限得知,只有root管理員才有寫入權(quán)限,開放ftp用戶權(quán)限(該賬戶在系統(tǒng)中已經(jīng)存在)
          [root@localhost ~]# ls -ld /var/ftp/pub
          drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub

          [root@localhost ~]# chown -Rf ftp /var/ftp/pub
          [root@localhost ~]# ls -ld /var/ftp/pub
          drwxr-xr-x. 3 ftp root 16 Jul 13 14:38 /var/ftp/pub

          [root@localhost ~]# ftp 192.168.10.10
          ………………省略部分輸出信息………………
          ftp> mkdir files
          550 Create directory operation failed.
          # 我們發(fā)現(xiàn)還是無法創(chuàng)建目錄,發(fā)現(xiàn)是SELinux服務(wù)在搗亂了
          # 使用getsebool命令查看與FTP相關(guān)的SELinux域策略都有哪些
          [root@localhost ~]# getsebool -a | grep ftp
          ftp_home_dir --> off
          ftpd_anon_write --> off
          ftpd_connect_all_unreserved --> off
          ftpd_connect_db --> off
          ftpd_full_access --> off
          ftpd_use_cifs --> off
          ftpd_use_fusefs --> off
          ftpd_use_nfs --> off
          ftpd_use_passive_mode --> off
          httpd_can_connect_ftp --> off
          httpd_enable_ftp_server --> off
          sftpd_anon_write --> off
          sftpd_enable_homedirs --> off
          sftpd_full_access --> off
          sftpd_write_ssh_home --> off
          tftp_anon_write --> off
          tftp_home_dir --> off

          # 根據(jù)經(jīng)驗(yàn)和策略的名稱判斷出是ftpd_full_access--> off策略規(guī)則導(dǎo)致了操作失敗
          [root@localhost ~]# setsebool -P ftpd_full_access=on

          # 此時(shí),匿名用戶就可以正常使用FTP服務(wù)了
          [root@linuxprobe ~]# ftp 192.168.10.10
          ………………省略部分輸出信息………………
          ftp> mkdir files
          257 "/pub/files" created
          ftp> rename files database
          350 Ready for RNTO.
          250 Rename successful.
          ftp> exit
          221 Goodbye.
          本地用戶模式

          如果大家之前用的是匿名開放模式,現(xiàn)在就可以將它關(guān)了,然后開啟本地用戶模式。

          # 本地用戶模式主配置文件
          [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
          anonymous_enable=NO

          local_enable=YES
          write_enable=YES
          local_umask=022
          dirmessage_enable=YES
          connect_from_port_20=YES
          listen=NO
          listen_ipv6=YES

          pam_service_name=vsftpd
          userlist_enable=YES
          tcp_wrappers=YES
          xferlog_enable=YES
          xferlog_std_format=YES
          # 同樣需要重啟服務(wù)和開機(jī)自啟動(dòng)
          [root@localhost ~]# systemctl restart vsftpd

          # 服務(wù)程序加入到開機(jī)啟動(dòng)項(xiàng)中,以保證服務(wù)器在重啟后依然能夠正常提供傳輸服務(wù)
          [root@localhost ~]# systemctl enable vsftpd
          ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
          # 現(xiàn)在已經(jīng)完全可以本地用戶的身份登錄FTP服務(wù)器了,但是使用root無法登陸
          [root@localhost ~]# ftp 192.168.10.10
          Connected to 192.168.10.10 (192.168.10.10).
          220 (vsFTPd 3.0.2)
          Name (192.168.10.10:root): root
          530 Permission denied.
          Login failed.
          ftp>

          # 這是因?yàn)?,為了系統(tǒng)的安全,默認(rèn)禁止root等用戶登錄FTP服務(wù)被系統(tǒng)拒絕訪問
          # 因?yàn)関sftpd服務(wù)程序所在的目錄中,默認(rèn)存放著兩個(gè)名為用戶名單的文件,ftpusers和user_list
          # 在ftpusers和user_list兩個(gè)用戶文件中將root用戶刪除就可以登錄了
          [root@localhost ~]# cat /etc/vsftpd/user_list
          root
          bin
          daemon

          [root@localhost ~]# cat /etc/vsftpd/ftpusers
          root
          bin
          daemon
          # 在采用本地用戶模式登錄FTP服務(wù)器后,默認(rèn)訪問的是該用戶的家目錄,因此不存在寫入權(quán)限不足的情況
          # 如果不關(guān)閉SELinux,則需要再次開啟SELinux域中對FTP服務(wù)的允許策略
          [root@localhost ~]# setsebool -P ftpd_full_access=on

          # 即可以使用系統(tǒng)用戶進(jìn)行FTP服務(wù)的登錄了
          [root@localhost ~]# ftp 192.168.10.10
          Connected to 192.168.10.10 (192.168.10.10).
          220 (vsFTPd 3.0.2)
          Name (192.168.10.10:root): escape
          331 Please specify the password.
          Password:此處輸入該用戶的密碼
          230 Login successful.
          Remote system type is UNIX.
          虛擬用戶模式(文本文件)

          認(rèn)證模式:vsftpd + pam + file

          • 第一步:創(chuàng)建用于進(jìn)行 FTP 認(rèn)證的用戶數(shù)據(jù)庫文件
            • 這里使用文本文件進(jìn)行用戶認(rèn)證
            • 數(shù)據(jù)庫文件中奇數(shù)行為賬戶名,偶數(shù)行為密碼
          # 編輯虛擬用戶文件
          [root@localhost ~]# cd /etc/vsftpd/
          [root@localhost vsftpd]# vim vuser.list
          zhangsan
          redhat
          lisi
          redhat
          # 明文信息既不安全,也不符合讓vsftpd服務(wù)程序直接加載的格式
          # 因此需要使用db_load命令用哈希算法將原始的明文信息文件轉(zhuǎn)換成數(shù)據(jù)庫文件
          # 降低數(shù)據(jù)庫文件的權(quán)限,然后再把原始的明文信息文件刪除
          [root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db
          [root@localhost vsftpd]# file vuser.db
          vuser.db: Berkeley DB (Hash, version 9, native byte-order)

          [root@localhost vsftpd]# chmod 600 vuser.db
          [root@localhost vsftpd]# rm -f vuser.list
          • 第二步:創(chuàng)建 vsftpd 服務(wù)程序用于存儲文件的根目錄以及虛擬用戶映射的系統(tǒng)本地用戶
            • FTP服務(wù)用于存儲文件的根目錄指的是,當(dāng)虛擬用戶登錄后所訪問的默認(rèn)位置
            • 可以把這個(gè)系統(tǒng)本地用戶的家目錄設(shè)置為/var目錄并設(shè)置不允許登錄FTP服務(wù)器
          [root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin virtual

          [root@localhost ~]# ls -ld /var/ftproot/
          drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/

          [root@localhost ~]# chmod -Rf 755 /var/ftproot/
          • 第三步:建立支持虛擬用戶的 PAM 認(rèn)證文件
            • PAM是一種認(rèn)證機(jī)制,通過一些動(dòng)態(tài)鏈接庫和統(tǒng)一的API把系統(tǒng)提供的服務(wù)與認(rèn)證方式分開
            • PAM是可插拔認(rèn)證模塊,使得系統(tǒng)管理員可以根據(jù)需求靈活調(diào)整服務(wù)程序的不同認(rèn)證方式
          # 新建一個(gè)用于虛擬用戶認(rèn)證的PAM文件vsftpd.vu
          # PAM文件內(nèi)的db=參數(shù)為使用db_load命令生成的賬戶密碼數(shù)據(jù)庫文件的路徑,但不用寫數(shù)據(jù)庫文件的后綴

          [root@localhost ~]# vim /etc/pam.d/vsftpd.vu
          auth       required     pam_userdb.so    db=/etc/vsftpd/vuser
          account    required     pam_userdb.so    db=/etc/vsftpd/vuser
          • 第四步:在 vsftpd.conf 文件中添加支持配置
            • 在vsftpd服務(wù)程序的主配置文件中默認(rèn)就帶有參數(shù)pam_service_name=vsftpd
            • 表示登錄FTP服務(wù)器時(shí)是根據(jù)/etc/pam.d/vsftpd文件進(jìn)行安全認(rèn)證的
          # 我們要做的就是把vsftpd主配置文件中原有的PAM認(rèn)證文件vsftpd修改為新建的vsftpd.vu文件即可
          [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
          anonymous_enable=NO
          pam_service_name=vsftpd.vu
          user_config_dir=/etc/vsftpd/vusers_dir

          local_enable=YES
          guest_enable=YES
          guest_username=virtual
          allow_writeable_chroot=YES
          write_enable=YES
          local_umask=022
          dirmessage_enable=YES
          xferlog_enable=YES
          connect_from_port_20=YES
          xferlog_std_format=YES
          listen=NO
          listen_ipv6=YES
          userlist_enable=YES
          tcp_wrappers=YES
          • 第五步:為虛擬用戶設(shè)置不同的權(quán)限
            • 只需新建一個(gè)目錄,在里面分別創(chuàng)建兩個(gè)以zhangsan和lisi命名的文件
            • 在每個(gè)文件中,對用戶分別進(jìn)行配置,達(dá)到管理不用用戶權(quán)限的效果
          [root@localhost ~]# mkdir /etc/vsftpd/vusers_dir/
          [root@localhost ~]# cd /etc/vsftpd/vusers_dir/

          [root@localhost vusers_dir]# touch lisi

          [root@localhost vusers_dir]# vim zhangsan
          anon_upload_enable=YES
          anon_mkdir_write_enable=YES
          anon_other_write_enable=YES
          • 第六步:設(shè)置 SELinux 域允許策略
          # 先按照前面實(shí)驗(yàn)中的步驟開啟SELinux域的允許策略,以免再次出現(xiàn)操作失敗的情況
          [root@localhost ~]# setsebool -P ftpd_full_access=on

          [root@localhost ~]# getsebool -a | grep ftp
          ftp_home_dir –> off
          ftpd_anon_write –> off
          ftpd_connect_all_unreserved –> off
          ftpd_connect_db –> off
          ftpd_full_access –> off
          ftpd_use_cifs –> off
          ftpd_use_fusefs –> off
          ftpd_use_nfs –> off
          ftpd_use_passive_mode –> off
          httpd_can_connect_ftp –> off
          httpd_enable_ftp_server –> off
          sftpd_anon_write –> off
          sftpd_enable_homedirs –> off
          sftpd_full_access –> on
          sftpd_write_ssh_home –> off
          tftp_anon_write –> off
          tftp_home_dir –> off
          • 第七步:使用虛擬 FTP 用戶訪問測試
          [root@localhost ~]# ftp 192.168.10.10
          Connected to 192.168.10.10 (192.168.10.10).
          220 (vsFTPd 3.0.2)
          Name (192.168.10.10:root): lisi
          331 Please specify the password.
          Password:此處輸入虛擬用戶的密碼
          230 Login successful.
          Remote system type is UNIX.
          Using binary mode to transfer files.
          ftp> mkdir files
          550 Permission denied.
          ftp> exit
          221 Goodbye.
          [root@localhost ~]# ftp 192.168.10.10
          Connected to 192.168.10.10 (192.168.10.10).
          220 (vsFTPd 3.0.2)
          Name (192.168.10.10:root): zhangsan
          331 Please specify the password.
          Password:此處輸入虛擬用戶的密碼
          230 Login successful.
          Remote system type is UNIX.
          Using binary mode to transfer files.
          ftp> mkdir files
          257 "/files" created
          ftp> rename files database
          350 Ready for RNTO.
          250 Rename successful.
          ftp> rmdir database
          250 Remove directory operation successful.
          ftp> exit
          221 Goodbye.
          虛擬用戶模式(MySQL 數(shù)據(jù)庫)

          認(rèn)證模式:vsftpd + pam + mysql

          • 第一步:安裝所需要程序
          # 安裝mysql和pam_mysql,pam_mysql由epel源提供
          $ yum -y install vsftpd mysql-server mysql-devel pam_mysql
          • 第二步:創(chuàng)建虛擬用戶賬號
          # 1、準(zhǔn)備數(shù)據(jù)庫及相關(guān)表

          首先請確保mysql服務(wù)已經(jīng)正常啟動(dòng)。而后,按需要建立存儲虛擬用戶的數(shù)據(jù)庫即可,這里將其創(chuàng)建為vsftpd數(shù)據(jù)庫

          mysql> create database vsftpd;

          授權(quán)vsftpd用戶可以通過localhost主機(jī)操作select權(quán)限vsftpd庫的所有表,密碼為www.escapelife.com
          mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.escapelife.com';
          mysql> grant select on vsftpd.* to [email protected] identified by 'www.escapelife.com';
          mysql> flush privileges;

          (這里是本機(jī)安裝所有授權(quán)l(xiāng)ocalhost主機(jī),如果不同需要使用不同的主機(jī)地址)
          (mysql> grant select on vsftpd.* to vsftpd@'192.168.31.%' identified by 'www.escapelife.com';)
          (mysql> flush privileges;)

          創(chuàng)建相關(guān)表
          mysql> use vsftpd;
          mysql> create table users (
              -> id INT UNSIGNED AUTO_INCREMENT NOT NULL,
              -> name VARCHAR(50) BINARY NOT NULL,
              -> password char(48) BINARY NOT NULL,
              -> PRIMARY KEY(id)
              -> );
          # 2、添加測試的虛擬用戶

          根據(jù)需要添加所需要的用戶,需要說明的是,這里將其密碼為了安全起見應(yīng)該使用PASSWORD函數(shù)加密后存儲
          mysql> INSERT INTO users(name, password) VALUES('tom', password('escapelife'));
          mysql> INSERT INTO users(name, password) VALUES('bob', password('escapelife'));
          SELETC * FROM user;
          • 第三步:配置 vsftpd
          # 1.建立pam認(rèn)證所需文件

          $ vi /etc/pam.d/vsftpd.mysql
          #添加如下兩行,主要32位和64位庫文件的不同位置,模塊路徑可不寫表示pam模塊路徑
          指定用戶、密碼、主機(jī)、數(shù)據(jù)庫、表、用戶名字段、密碼字段、密碼的加密方式
          密碼的加密方式可以通過安裝的pam_mysql的文檔查看,/usr/share/doc/pam_mysql-0.7/README   rpm -ql pam_mysql
          auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.escapelife.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
          account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.escapelife.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

          (auth required /lib64/security/pam_mysql.so user=vsftp passwd=www.escapelife.com host=192.168.31.71 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2)
          (account required /lib64/security/pam_mysql.so user=vsftp passwd=www.escapelife.com host=192.168.31.71 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2)

          注意:由于mysql的安裝方式不同,pam_mysql.so基于unix sock連接mysql服務(wù)器時(shí)可能會(huì)出問題,此時(shí),建議授權(quán)一個(gè)可遠(yuǎn)程連接的mysql并訪問vsftpd數(shù)據(jù)庫的用戶。

          # 2.修改vsftpd的配置文件,使其適應(yīng)mysql認(rèn)證

          建立虛擬用戶映射的系統(tǒng)用戶及對應(yīng)的目錄
          $ useradd -s /sbin/nologin -d /var/ftproot vuser
          $ chmod go+rx /var/ftproot

          請確保/etc/vsftpd.conf中已經(jīng)啟用了以下選項(xiàng)
          anonymous_enable=YES
          local_enable=YES
          write_enable=YES
          anon_upload_enable=NO
          anon_mkdir_write_enable=NO
          chroot_local_user=YES

          而后添加以下選項(xiàng)
          guest_enable=YES
          guest_username=vuser

          并確保pam_service_name選項(xiàng)的值如下所示
          pam_service_name=vsftpd.mysql
          • 第四步:啟動(dòng) vsftpd 服務(wù)
          # 啟動(dòng)vsftpd服務(wù)
          $ service vsftpd start
          $ chkconfig vsftpd on

          # 查看端口開啟情況
          $ netstat -tnlp | grep :21
          tcp      0      0 0.0.0.0:21      0.0.0.0:*      LISTEN      23286/vsftpd

          # 使用虛擬用戶登錄,驗(yàn)正配置結(jié)果
          $ ftp localhost
          • 第五步:配置虛擬用戶具有不同的訪問權(quán)限
          # vsftpd可以在配置文件目錄中為每個(gè)用戶提供單獨(dú)的配置文件以定義其ftp服務(wù)訪問權(quán)限,每個(gè)虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。

          # 1、配置vsftpd為虛擬用戶使用配置文件目錄
          $ vim vsftpd.conf
          user_config_dir=/etc/vsftpd/vusers_config

          # 2、創(chuàng)建所需要目錄,并為虛擬用戶提供配置文件
          $ mkdir /etc/vsftpd/vusers_config/
          cd /etc/vsftpd/vusers_config/
          $ touch tom bob

          # 3、配置虛擬用戶的訪問權(quán)限
          # 虛擬用戶對vsftpd服務(wù)的訪問權(quán)限是通過匿名用戶的相關(guān)指令進(jìn)行的
          # 如果需要讓tom用戶具有上傳文件的權(quán)限,可以修改/etc/vsftpd/vusers_config/tom文件
          anon_upload_enable={YES|NO}
          anon_mkdir_write_enable={YES|NO}
          anon_other_write_enable={YES|NO}

          作者: Escape  鏈接:https://www.escapelife.site/posts/8dc56d36.html 

          版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 許可協(xié)議。

          推薦閱讀:
          怎么接私貨?這個(gè)渠道你100%有用!請收藏!

          點(diǎn)擊關(guān)注

          瀏覽 110
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜福利亚洲视频 | 亚洲中文字幕在线免费观看视频 | 国产精品肏屄视频 | 国产乱码一区二区 | 操逼视频网站大全 |