如何在 Fedora 22 上配置 Proftpd 伺服器
FTP 伺服器是這樣一個軟體,用戶可以通過 FTP 客戶端從安裝了它的遠端伺服器上傳或下載文件和目錄。下面是一些 ProFTPD 伺服器的主要功能,更詳細的資料可以訪問 http://www.proftpd.org/features.html。
- 每個目錄都可以包含 ".ftpaccess" 文件用於訪問控制,類似 Apache 的 ".htaccess"
- 支持多個虛擬 FTP 伺服器以及多用戶登錄和匿名 FTP 服務。
- 可以作為獨立進程啟動服務或者通過 inetd/xinetd 啟動
- 它的文件/目錄屬性、屬主和許可權是基於 UNIX 方式的。
- 它可以獨立運行,保護系統避免 root 訪問可能帶來的損壞。
- 模塊化的設計讓它可以輕鬆擴展其他模塊,比如 LDAP 伺服器,SSL/TLS 加密,RADIUS 支持,等等。
- ProFTPD 伺服器還支持 IPv6.
下面是如何在運行 Fedora 22 操作系統的計算機上使用 ProFTPD 架設 FTP 伺服器的一些簡單步驟。
1. 安裝 ProFTPD
首先,我們將在運行 Fedora 22 的機器上安裝 Proftpd 軟體。因為 yum 包管理器已經被拋棄了,我們將使用最新最好的包管理器 dnf。DNF 很容易使用,是 Fedora 22 上採用的非常人性化的包管理器。我們將用它來安裝 proftpd 軟體。這需要在終端或控制台里用 sudo 模式運行下面的命令。
$ sudo dnf -y install proftpd proftpd-utils
2. 配置 ProFTPD
現在,我們將修改軟體的一些配置。要配置它,我們需要用文本編輯器編輯 /etc/proftpd.conf 文件。/etc/proftpd.conf 文件是 ProFTPD 軟體的主要配置文件,所以,這個文件的任何改動都會影響到 FTP 伺服器。在這裡,是我們在初始步驟里做出的改動。
$ sudo vi /etc/proftpd.conf
之後,在用文本編輯器打開這個文件後,我們會想改下 ServerName 以及 ServerAdmin,分別填入自己的域名和 email 地址。下面是我們改的。
ServerName "ftp.linoxide.com"
ServerAdmin arun@linoxide.com
在這之後,我們將把下面的設定加到配置文件里,這樣可以讓伺服器將訪問和授權記錄到相應的日誌文件里。
ExtendedLog /var/log/proftpd/access.log WRITE,READ default
ExtendedLog /var/log/proftpd/auth.log AUTH auth
3. 添加 FTP 用戶
在設定好了基本的配置文件後,我們很自然地希望添加一個以特定目錄為根目錄的 FTP 用戶。目前登錄的用戶自動就可以使用 FTP 服務,可以用來登錄到 FTP 伺服器。但是,在這篇教程里,我們將創建一個以 ftp 伺服器上指定目錄為主目錄的新用戶。
下面,我們將建立一個名字是 ftpgroup 的新用戶組。
$ sudo groupadd ftpgroup
然後,我們將以目錄 /ftp-dir/ 作為主目錄增加一個新用戶 arunftp 並加入這個組中。
$ sudo useradd -G ftpgroup arunftp -s /sbin/nologin -d /ftp-dir/
在創建好用戶並加入用戶組後,我們將為用戶 arunftp 設置一個密碼。
$ sudo passwd arunftp
Changing password for user arunftp.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
現在,我們將通過下面命令為這個 ftp 用戶設定主目錄的讀寫許可權(LCTT 譯註:這是SELinux 相關設置,如果未啟用 SELinux,可以不用)。
$ sudo setsebool -P allow_ftpd_full_access=1
$ sudo setsebool -P ftp_home_dir=1
然後,我們會設定不允許其他用戶移動或重命名這個目錄以及裡面的內容。
$ sudo chmod -R 1777 /ftp-dir/
4. 打開 TLS 支持
目前 FTP 所用的加密手段並不安全,任何人都可以通過監聽網卡來讀取 FTP 傳輸的數據。所以,我們將為自己的伺服器打開 TLS 加密支持。這樣的話,需要編輯 /etc/proftpd.conf 配置文件。在這之前,我們先備份一下當前的配置文件,可以保證在改出問題後還可以恢復。
$ sudo cp /etc/proftpd.conf /etc/proftpd.conf.bak
然後,我們可以用自己喜歡的文本編輯器修改配置文件。
$ sudo vi /etc/proftpd.conf
然後,把下面幾行附加到我們在第 2 步中所增加內容的後面。
TLSEngine on
TLSRequired on
TLSProtocol SSLv23
TLSLog /var/log/proftpd/tls.log
TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem
TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.pem
完成上面的設定後,保存退出。
然後,我們需要生成 SSL 憑證 proftpd.pem 並放到 /etc/pki/tls/certs/ 目錄里。這樣的話,首先需要在 Fedora 22 上安裝 openssl。
$ sudo dnf install openssl
然後,可以通過執行下面的命令生成 SSL 憑證。
$ sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pem
系統會詢問一些將寫入憑證里的基本信息。在填完資料後,就會生成一個 2048 位的 RSA 私鑰。
Generating a 2048 bit RSA private key
...................+++
...................+++
writing new private key to '/etc/pki/tls/certs/proftpd.pem'
--You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
--Country Name (2 letter code) [XX]:NP
State or Province Name (full name) []:Narayani
Locality Name (eg, city) [Default City]:Bharatpur
Organization Name (eg, company) [Default Company Ltd]:Linoxide
Organizational Unit Name (eg, section) []:Linux Freedom
Common Name (eg, your name or your server's hostname) []:ftp.linoxide.com
Email Address []:arun@linoxide.com
在這之後,我們要改變所生成憑證文件的許可權以增加安全性。
$ sudo chmod 600 /etc/pki/tls/certs/proftpd.pem
5. 允許 FTP 通過 Firewall
現在,需要允許 ftp 埠,一般默認被防火牆阻止了。就是說,需要允許 ftp 埠能通過防火牆訪問。
如果 打開了 TLS/SSL 加密,執行下面的命令。
$ sudo firewall-cmd --add-port=1024-65534/tcp
$ sudo firewall-cmd --add-port=1024-65534/tcp --permanent
如果 沒有打開 TLS/SSL 加密,執行下面的命令。
$ sudo firewall-cmd --permanent --zone=public --add-service=ftp
success
然後,重新載入防火牆設定。
$ sudo firewall-cmd --reload
success
6. 啟動並激活 ProFTPD
全部設定好後,最後就是啟動 ProFTPD 並試一下。可以運行下面的命令來啟動 proftpd ftp 守護程序。
$ sudo systemctl start proftpd.service
然後,我們可以設定開機啟動。
$ sudo systemctl enable proftpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/proftpd.service to /usr/lib/systemd/system/proftpd.service.
7. 登錄到 FTP 伺服器
現在,如果都是按照本教程設置好的,我們一定可以連接到 ftp 伺服器並使用以上設置的信息登錄上去。在這裡,我們將配置一下 FTP 客戶端 filezilla,使用 伺服器的 IP 或名稱 作為主機名,協議選擇 FTP,用戶名填入 arunftp,密碼是在上面第 3 步中設定的密碼。如果你按照第 4 步中的方式打開了 TLS 支持,還需要在加密類型中選擇 要求顯式的基於 TLS 的 FTP,如果沒有打開,也不想使用 TLS 加密,那麼加密類型選擇 簡單 FTP。
要做上述設定,需要打開菜單里的文件,點擊站點管理器,然後點擊新建站點,再按上面的方式設置。
隨後系統會要求允許 SSL 憑證,點確定。之後,就可以從我們的 FTP 伺服器上傳下載文件和文件夾了。
總結
最後,我們成功地在 Fedora 22 機器上安裝並配置好了 Proftpd FTP 伺服器。Proftpd 是一個超級強大,能高度定製和擴展的 FTP 守護軟體。上面的教程展示了如何配置一個採用 TLS 加密的安全 FTP 伺服器。強烈建議設置 FTP 伺服器支持 TLS 加密,因為它允許使用 SSL 憑證加密數據傳輸和登錄。本文中,我們也沒有配置 FTP 的匿名訪問,因為一般受保護的 FTP 系統不建議這樣做。 FTP 訪問讓人們的上傳和下載變得非常簡單也更高效。我們還可以改變用戶埠增加安全性。好吧,如果你有任何疑問,建議,反饋,請在下面評論區留言,這樣我們就能夠改善並更新文章內容。謝謝!玩的開心 🙂
via: http://linoxide.com/linux-how-to/configure-ftp-proftpd-fedora-22/
作者:Arun Pyasi 譯者:zpl1025 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive