1. 程式人生 > 其它 >centos8系統ftp伺服器安裝及被動模式配置-新手友好

centos8系統ftp伺服器安裝及被動模式配置-新手友好

這是一篇新手向的ftp伺服器安裝。

在開始安裝ftp伺服器前,我們需要了解,我們需要做哪些事情?

  1. 瞭解安裝配置需要用到的基礎知識
  2. 確認系統環境
  3. 安裝ftp指令【非必須】
  4. 安裝vsftpd
  5. 設定本地登入使用者
  6. 配置vsftpd本身的conf檔案
  7. 配置系統相關軟體的配合

1、瞭解基礎知識

FTP:檔案傳輸協議(File Transfer Protocol,FTP)。

FTP是歷史上最悠久的檔案傳輸協議之一,在很多軟體體系中都有應用。比如說wordpress後臺更新就需要FTP服務。

FTP使用 TCP 協議傳輸而不是 UDP。

FTP使用兩類埠:控制埠21,傳輸埠。

FTP傳輸有兩類模式,被動模式(PASV)和主動模式(PORT)。

在傳輸的過程中,無論是被動模式,還是主動模式,都是【客戶端】和【伺服器端的21埠】交換使用者名稱密碼等相關資訊並確認使用什麼模式傳輸。如果是主動模式,客戶端和伺服器端在【伺服器端的20埠】交換資料。如果是被動模式,將有伺服器端確認一個或幾個自身的隨機埠,客戶端需要與伺服器端的這個埠進行資料交換。

VSFTPD是廣泛使用的FTP伺服器軟體。FTP命令是客戶端的操作命令。

還有一種SFTP。SFTP和FTP只是名字類似,不可簡單地理解問安全(safe)的FTP。他是ssh協議提供的檔案傳輸方式,很多雲伺服器自帶ssh連線便於遠端操作,所以即使你沒有成功配置FTP,可能也是可以使用SFTP傳輸的。SFTP只用22埠。

2、確認系統環境

個人配置FTP伺服器使用的是阿里雲的ECS伺服器。虛擬主機可能不支援部分配置,但是很多虛擬主機都自帶FTP服務。

系統是Alibaba Cloud Linux 3.2104 64位,相容Centos8的指令。如果讀者使用的是其他版本的系統,需要自行確認部分指令是否能用。

使用的軟體包管理器是DNF。這是YUM的替代版本,相容大多數YUM的指令。軟體包管理器可以以預設路徑讓你方便地安裝、更新系統的軟體,減少因為安裝路徑的設定帶來的問題,建議初學者使用。

在進一步操作前,我們可以通過如下指令,確認你的系統是否已經安裝了相關元件:

whereis vsftpd

如果系統沒有安裝vsftpd,將會返回

VSFTPD:

否則會返回類似如下的目錄

vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

這裡面是三個目錄,使用空格隔開。在CENTOS8的DNF預設安裝中,/etc/vsftpd是預設安裝位置。

3、安裝ftp指令【非必須】

ftp指令可以讓你在伺服器端連線自己的FTP伺服器,避免了防火牆的干擾,更利於排查問題。非必須,但建議。

dnf install ftp

安裝上就可以直接使用。

連結伺服器:

ftp XXX.XXX.XXX.XXX

XXX.XXX.XXX.XXX代表IP地址。也可以使用ftp localhost連結本地伺服器。

退出伺服器

quit

更多的內容對於新手來說並非必要,如想了解請自行搜尋。

4、安裝VSFTPD

dnf install vsftpd

5、設定本地使用者

useradd xxx
passwd xxx

XXX代表你取的使用者名稱。通過useradd新增使用者,通過passwd修改密碼

值得注意的是,通過這種方式新增的使用者為CENTOS系統的使用者,而不是vsftpd這個軟體的使用者。更改的一些設定也是針對系統使用者的。

也可以使用虛擬使用者,將虛擬使用者對映到系統使用者上,但相關設定對新手多少有點繁瑣,如需瞭解請搜尋。

6、配置vsftpd的conf檔案

之前提及了,CENTOS8下dnf安裝,預設安裝路徑為/etc/vsftpd。vsftpd的設定檔案就在這裡。

這篇文章使用被動模式連結。主要需要修改的引數如下(【】以及【】內的內容為相關設定的註解,請不要寫入設定檔案)

禁用PORT模式

connect_from_port_20=NO【禁用了PORT模式使用的傳輸埠】

開啟PASV模式

listen=YES
listen_ipv6=NO【PASV模式會向客戶端返回自己隨機分配的連線地址及埠,這個返回值是一個6位的:XXX,XXX,XXX,XXX,a,b。其中前四位為IP,後兩位按著a*256+b的計算方式為埠值如果這個開啟,該值會被識別成IPV6地址,帶來複雜的情況】
pasv_enable=YES【允許PASV模式】
pasv_min_port=xxxx
pasv_max_port=xxxx【規定伺服器端分配的最小和最大埠號。如果不規定,伺服器可能配置的埠號和其他軟體的埠重複,導致出錯。建議分配較大的埠避免衝突,但是過大的埠可能超出伺服器的範圍】
pasv_addr_resolve=YES【十分重要。允許ip地址修改。】
pasv_address=XXX.XXX.XXX.XXX【十分重要。這個地址是你伺服器的公網地址。PASV模式,伺服器會返回一個6位的地址和埠。如果不設定上述兩項,返回的是私網ip,遠端連線無法找到你的地址。】
pasv_promiscuous=YES【YES關閉安全檢查。有一定風險。正常情況下伺服器會檢查客戶端兩次連線的IP是否一致,如果不一致將會拒絕連結。】

建議修改的安全性相關設定

anonymous_enable=NO【禁止匿名使用者】
chroot_local_user=YES【禁止使用者訪問規定根目錄以外的檔案】
allow_writeable_chroot=NO

7、配置系統相關軟體的配合

設定nologin

修改passwd檔案,一般在/etc路徑下,將/bin/bash修改為/sbin/nologin,禁止你的ftp使用者名稱密碼直接登入系統

修改根目錄

修改passwd檔案,把目錄地址更換成你想讓ftp使用者訪問的地址。

修改目錄許可權

這部分建議專門找一篇介紹許可權的書籍。我設定的755許可權。

根目錄許可權根據你的設定檔案,會有不同的出錯可能。

pam檔案

修改了使用者的nologin之後,需要查詢系統pam.d資料夾(一般在etc路徑下)。有一條auth required pam_shells.so,當你修改成了nologin之後和這個對不上,會出錯,註釋掉。

如果你有其他設定,可能需要進一步修改這個檔案。

開放埠給外網

這一步包括兩個內容,一個是開放伺服器的防火牆,另一個是可能你的伺服器提供商有外部安全組。

開放伺服器的防火牆

CENTOS預設安裝firewalld,如果你的系統是iptables請自行搜尋,selunix也需要相關設定,但是因為較容易出錯很多人都預設關閉

systemctl status firewalld【檢視firewalld是否開啟】

firewall-cmd --add-port=xxx-xxx/tcp --permanent【xxx-xxx代表設定檔案裡配置的埠範圍,左小右大】
firewall-cmd --add-port=21/tcp --permanent【開放控制鏈路的21埠。如果你沒禁用PORT模式,還需要開放20埠】
firewall-cmd --reload【重新載入設定】

開放服務商的外部安全組

以阿里云為例,在控制檯-伺服器-安全組,入方向做類似配置,把設定檔案裡面的PASV埠範圍、控制鏈路的21埠(PORT模式沒關閉還需要開放20埠)

8、測試可能出現的錯誤

在伺服器及遠端客戶端,通過ftp指令及ip登入。windows可以通過資源管理器ftp://XXX,XXX,XXX,XXX(公網ip地址)登入,可以通過cmd命令測試,也可以使用ftp軟體。

1、如果伺服器可以登入遠端不可以,那麼檢查一下防火牆的設定。

2、如果出現“227 Entering Passive Mode”的錯誤,那麼就是沒有設定好pasv_addr_resolve=YES和pasv_address=XXX.XXX.XXX.XXX。伺服器返回的地址是私網地址或者錯誤的ip,客戶端無法連線上。

我暫時沒有遇到更多問題,經過如上配置使用FTP更新了自己的wordpress。如果錯漏,懇請斧正。謝謝閱讀。