如何在CentOS 7上使用VSFTPD安裝FTP伺服器?
如果您正在尋找一種在網路上可靠高效地共享檔案的方法,FTP(檔案傳輸協議)是一個流行的選擇。在本文中,我們將引導您完成在 CentOS 7 上使用 VSFTPD(非常安全的 FTP 守護程式)安裝 FTP 伺服器的步驟,VSFTPD 是一款適用於類 Unix 系統的輕量級且安全的 FTP 伺服器。
步驟 1:更新系統
在安裝任何新軟體包之前,最好先更新您的系統,以確保您擁有最新的安全補丁和軟體更新。為此,請執行以下命令:
sudo yum update
步驟 2:安裝 VSFTPD
要在 CentOS 7 上安裝 VSFTPD,請執行以下命令:
sudo yum install vsftpd
安裝完成後,您可以啟動服務並使用以下命令啟用它在啟動時自動啟動:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
步驟 3:配置 VSFTPD
接下來,我們需要配置 VSFTPD 以允許 FTP 連線並指定 FTP 使用者帳戶。
使用您最喜歡的文字編輯器開啟 VSFTPD 配置檔案。在本例中,我們將使用 nano:
sudo nano /etc/vsftpd/vsftpd.conf
對配置檔案進行以下更改
取消以下行的註釋以允許本地使用者登入:
local_enable=YES
取消以下行的註釋以允許對 FTP 伺服器進行寫入訪問:
write_enable=YES
取消以下行的註釋以允許使用者上傳檔案:
anon_upload_enable=YES
將以下幾行新增到檔案的末尾以指定 FTP 使用者帳戶:
userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO
儲存並關閉檔案。
步驟 4:建立 FTP 使用者帳戶
現在,讓我們建立一些 FTP 使用者帳戶。您可以使用以下命令建立一個新的使用者帳戶:
sudo useradd -m ftpuser
此命令建立一個新的使用者帳戶,使用者名稱為“ftpuser”,併為該使用者建立一個主目錄。
使用以下命令為新使用者設定密碼:
sudo passwd ftpuser
出現提示時,為使用者輸入一個安全的密碼。
使用以下命令將新使用者新增到 VSFTPD 使用者列表:
sudo bash -c 'echo "ftpuser" >> /etc/vsftpd/user_list'
對要建立的每個其他 FTP 使用者重複這些步驟。
步驟 5:測試 FTP 伺服器
最後,讓我們測試 FTP 伺服器以確保一切正常。
開啟您的 FTP 客戶端,並使用伺服器的 IP 地址或主機名以及您之前建立的 FTP 使用者帳戶連線到您的伺服器。
如果一切正常,您應該能夠從伺服器上傳和下載檔案。
雖然 VSFTPD 的基本安裝和配置足以使您的 FTP 伺服器執行起來,但您可以採取一些額外的步驟來增強安全性並提高效能。
配置防火牆
預設情況下,CentOS 7 帶有啟用的防火牆,這可能會阻止傳入的 FTP 連線。您可以使用以下命令向防火牆新增規則以允許 FTP 通訊:
sudo firewall-cmd --add-service=ftp --permanent sudo firewall-cmd --reload
此命令永久允許 FTP 通訊透過防火牆,並重新載入防火牆規則。
啟用 SSL/TLS 加密
FTP 是一種未加密的協議,這意味著透過網路傳輸的資料可能會被攻擊者攔截和讀取。為了增強安全性,您可以為您的 FTP 伺服器啟用 SSL/TLS 加密。為此,您需要獲取 SSL/TLS 證書並配置 VSFTPD 以使用它。
要獲取證書,您可以使用 Let's Encrypt 等免費證書頒發機構。獲得證書後,您可以透過將以下幾行新增到 VSFTPD 配置檔案中來配置 VSFTPD 以使用 SSL/TLS 加密:
ssl_enable=YES rsa_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem rsa_private_key_file=/etc/letsencrypt/live/example.com/privkey.pem
請務必將“example.com”替換為您自己的域名。
配置被動模式
預設情況下,FTP 使用主動模式,如果您的伺服器位於 NAT(網路地址轉換)防火牆之後,這可能會導致問題。為避免這些問題,您可以將 VSFTPD 配置為改用被動模式。
為此,請將以下幾行新增到 VSFTPD 配置檔案中:
pasv_enable=YES pasv_min_port=40000 pasv_max_port=50000 pasv_address=<your server's public IP address>
請務必將“<您的伺服器的公共 IP 地址>”替換為您自己的公共 IP 地址。
限制使用者訪問
為了提高安全性,您可能希望限制 FTP 使用者可以訪問的目錄。您可以透過建立 chroot 監獄來實現此目的,這會將使用者限制在其自己的主目錄中,並阻止他們訪問檔案系統的其他部分。
要建立 chroot 監獄,請將以下幾行新增到 VSFTPD 配置檔案中:
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
然後,建立 chroot 列表檔案並新增您希望將其限制在其主目錄的使用者使用者名稱:
sudo nano /etc/vsftpd/chroot_list ftpuser1 ftpuser2
儲存並關閉檔案。
啟用日誌記錄
要監視 FTP 伺服器活動並解決問題,您可以啟用 VSFTPD 中的日誌記錄。預設情況下,VSFTPD 將日誌記錄到系統日誌檔案中,但您也可以將其配置為記錄到單獨的檔案中。
要啟用將日誌記錄到單獨的檔案,請將以下幾行新增到 VSFTPD 配置檔案中:
xferlog_enable=YES xferlog_file=/var/log/vsftpd.log
然後,建立日誌檔案並設定適當的許可權:
sudo touch /var/log/vsftpd.log sudo chmod 644 /var/log/vsftpd.log
重新啟動 VSFTPD 以應用更改:
sudo systemctl restart vsftpd
現在,VSFTPD 將所有 FTP 伺服器活動記錄到指定的日誌檔案中。
使用 SFTP 代替 FTP
SFTP(SSH 檔案傳輸協議)是 FTP 的更安全的替代方案,它使用加密來保護傳輸中的資料。如果您擔心 FTP 伺服器的安全性,您可能需要考慮改用 SFTP。
要在 CentOS 7 上設定 SFTP 伺服器,您可以使用 OpenSSH,它包含在作業系統中。OpenSSH 提供 SSH 訪問和 SFTP 檔案傳輸功能。
要為使用者啟用 SFTP,請將以下行新增到使用者的 SSH 配置檔案中:
sudo nano /etc/ssh/sshd_config Subsystem sftp internal-sftp Match User ftpuser ChrootDirectory /home/ftpuser ForceCommand internal-sftp
請務必將“ftpuser”替換為您要為其啟用 SFTP 的使用者名稱。
儲存並關閉檔案。
然後,重新啟動 SSH 服務以應用更改:
sudo systemctl restart sshd
現在,使用者可以使用其 SSH 憑據連線到 SFTP 伺服器並安全地傳輸檔案。
使用虛擬使用者
預設情況下,VSFTPD 使用系統使用者來驗證 FTP 連線。但是,您也可以使用虛擬使用者,它們是在單獨的使用者資料庫中定義的,不需要系統帳戶。
使用虛擬使用者可能更安全,因為您不需要為每個 FTP 使用者建立系統帳戶。它還允許您為不同的使用者指定不同的許可權。
要在 VSFTPD 中使用虛擬使用者,您需要安裝使用者資料庫並配置 VSFTPD 以使用它。一個流行的使用者資料庫是 PAM(可插入身份驗證模組)。
要安裝 PAM,請執行以下命令:
sudo yum install pam
然後,為 VSFTPD 建立一個 PAM 配置檔案:
sudo nano /etc/pam.d/vsftpd
將以下幾行新增到檔案中:
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd account required pam_permit.so
儲存並關閉檔案。
建立一個新的使用者資料庫並新增一些虛擬使用者:
sudo touch /etc/vsftpd/ftpd.passwd sudo htpasswd -c /etc/vsftpd/ftpd.passwd ftpuser1 sudo htpasswd /etc/vsftpd/ftpd.passwd ftpuser2
將“ftpuser1”和“ftpuser2”替換為您的虛擬使用者的使用者名稱。
然後,配置 VSFTPD 以使用新的使用者資料庫:
sudo nano /etc/vsftpd/vsftpd.conf
將以下幾行新增到檔案中:
guest_enable=YES guest_username=ftp user_sub_token=$USER local_root=/var/www/$USER virtual_use_local_privs=YES pam_service_name=vsftpd
儲存並關閉檔案。
重新啟動 VSFTPD 以應用更改:
sudo systemctl restart vsftpd
現在,您可以使用建立的虛擬使用者連線到 FTP 伺服器。
使用 FTPS 代替 FTP
FTPS(透過 SSL/TLS 的 FTP)是 FTP 的另一種安全替代方案,它使用加密來保護傳輸中的資料。與使用 SSH 協議的 SFTP 不同,FTPS 使用 SSL/TLS 加密來保護 FTP 連線。
要在 VSFTPD 中使用 FTPS,您需要獲取 SSL/TLS 證書並配置 VSFTPD 以使用它,正如我們在本文前面所述。
然後,將以下幾行新增到 VSFTPD 配置檔案以啟用 FTPS:
ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem rsa_private_key_file=/etc/letsencrypt/live/example.com/privkey.pem
請務必將“example.com”替換為您自己的域名。
重新啟動 VSFTPD 以應用更改:
sudo systemctl restart vsftpd
現在,您可以使用 FTPS 連線到 FTP 伺服器以安全地傳輸檔案。
結論
在本文中,我們向您展示瞭如何安裝和配置 VSFTPD,這是一種適用於類 Unix 系統的輕量級且安全的 FTP 伺服器。按照這些步驟,您可以快速在 CentOS 7 機器上設定 FTP 伺服器,並開始與網路上的其他計算機共享檔案。