如何在Fedora 22上配置Proftpd服務器
在本文中,我們將了解如何在運行 Fedora 22 的電腦或服務器上使用 Proftpd 架設 FTP 服務器。ProFTPD 是一款基于 GPL 授權的自由開源 FTP 服務器軟件,是 Linux 上的主流 FTP 服務器。它的主要設計目標是提供許多高級功能以及給用戶提供豐富的配置選項以輕松實現定制。它具備許多在其他一些 FTP 服務器軟件里仍然沒有的配置選項。最初它是被開發作為 wu-ftpd 服務器的一個更安全更容易配置的替代。
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
調整 ProFTPD 設置
#p#
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
打開 TLS 配置
完成上面的設定后,保存退出。
然后,我們需要生成 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
#p#
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。
FTP 登錄細節
要做上述設定,需要打開菜單里的文件,點擊站點管理器,然后點擊新建站點,再按上面的方式設置。
FTP SSL 憑證
隨后系統會要求允許 SSL 憑證,點確定。之后,就可以從我們的 FTP 服務器上傳下載文件和文件夾了。
總結
***,我們成功地在 Fedora 22 機器上安裝并配置好了 Proftpd FTP 服務器。Proftpd 是一個超級強大,能高度定制和擴展的 FTP 守護軟件。上面的教程展示了如何配置一個采用 TLS 加密的安全 FTP 服務器。強烈建議設置 FTP 服務器支持 TLS 加密,因為它允許使用 SSL 憑證加密數據傳輸和登錄。本文中,我們也沒有配置 FTP 的匿名訪問,因為一般受保護的 FTP 系統不建議這樣做。 FTP 訪問讓人們的上傳和下載變得非常簡單也更高效。我們還可以改變用戶端口增加安全性。好吧,如果你有任何疑問,建議,反饋,請在下面評論區留言,這樣我們就能夠改善并更新文章內容。謝謝!玩的開心 :-)