現在位置: 首頁 > CentOS > 正文

[CentOS] vsFTPd Server 安裝 及 使用設定

vsFTPd 在 Linux 標榜著安全性指標的 FTP,也是簡單又好用的 FTP 軟體,但在安裝 FTP Server的時候,請先了解何謂「主動式、被動式 FTP」及 SSL的「外顯式、隱含式TLS」

##安裝vsFTPd
shell> yum install vsftpd

##找到設定檔,vsftpd只有一隻設定檔,vsftpd.conf
shell> vim /etc/vsftpd/vsftpd.conf

我的需求是以下
1. 匿名使用者無法登入
2. 使用者登入後只能在自己的 /home 上傳下載
3. 使用 隱含式SSL加密
4. 上傳後的 umask=077

並可以完全權限的控管,基於安全考量,不希望檔案大家都可以使用。

底下寫上我有使用到的config

##匿名使用者都拒絕登入
anonymous_enable=NO

##開放本機使用者登入,chroot在自己的家目錄,並給予上傳下載的權限
local_enable=YES
write_enable=YES
local_umask=077
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list            // 不chroot的使用者清單





##Log記錄檔,另外加開debug_ssl 以方便辨識問題所在
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=NO


##系統安全性設定
connect_from_port_20=YES
idle_session_timeout=600
nopriv_user=nobody
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
one_process_model=NO
use_localtime=YES

##Login歡迎頁面
banner_file=/etc/vsftpd/welcome

##SSL憑證設定
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES                                              // 用的是TLS1.2協定
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem             // 憑證檔案,下面介紹建立方法
debug_ssl=YES
ssl_ciphers=HIGH                                        // 憑證的加密模式,默認DES
implicit_ssl=YES                                          // 是否啟用隱含式SSL功能,即FTPS,如果沒有設定預設會使用外顯式SSL(FTPES) 
listen_port=990                                          // 隱含式FTP port的設定Defaul=21,但當user以隱含式SSL連接時,默認將使用990port,就會導致連接失敗。

 

SSL憑證建立

 

 

憑證這樣已經建立完成。把憑證放到vsftpd的目錄下

 

要注意一下權限有沒有正確唷

 

##啟動 vsFTPd service

 

##Client connect Test
這裡使用者採用 FileZilla 進行測試,加密模式請使用隱含式 TLS

要出現上面的憑證訊息才是正確的唷!



##FTP 加密模式
1. FTP:即一般FTP未加密的模式
2. FTPS:隱含式加密(implicit),預設Port: 990
3. FTPES:外顯式加密(Explicit),預設Port: 21


debug:
在安裝vsftpd的過程中,架設FTP其實不需要特別的設置就可以啟動,如果需要使用額外的設定,還是遇到了一些問題分享。
因為使用了SSL,所以務必把debug_ssl=YES

1. 設定了SSL憑證,但是卻出現以下error訊息,而且明明使用SSL憑證,用FTPS無法登入,卻可以用SFTP登入
vsftpd.log
Wed Feb 12 00:21:27 2014 [pid 11738] DEBUG: Client “1.34.114.1″, “SSL_accept failed: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher"
Q: 原因是憑證無法正確的生效,但我們有把SSL開啟,所以vsftpd預設以SSH的方式做加密。

至於為何無法生效,這是因為在vsftpd預設的SSL加密格式為DES-CBC3-SHA
但FileZilla2以後的版本已經不支援DES的格式了,所以我們必須在vsftpd.conf裡面將加密模式改為High
#ssl_ciphers=HIGH

2. 如果FileZilla顯示以下錯誤時
指令: PASV
回應: 227 Entering Passiv Mode (192,168,0,101,8,4)
狀態: 伺服器以無法路由的 IP Address 送出了被動式回應. 改為使用伺服器 IP Address.
指令: LIST回應: 150 Data connection created for directory listing
錯誤: 連線逾時
錯誤: 無法取得目錄列表
是FileZilla設定上出了問題,請按照以下步驟修正
選擇「設定」→「連線」→「FTP」→「被動模式」→勾選「回覆主動模式」
即可取得目錄列表

 

延伸閱讀

vsFTPd 於多人開發環境的虛擬使用者設定

 

 

參考資料:
https://security.appspot.com/vsftpd.html
http://wiki.ipfire.org/en/addons/vsftpd/start
http://trac.filezilla-project.org/ticket/7873
http://rritw.com/a/bianchengyuyan/C__/20120927/231305.html
http://esupport.thecus.com/support/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=193

文章連結: https://shazi.info/centos-vsftpd-server-%e5%ae%89%e8%a3%9d-%e5%8f%8a-%e4%bd%bf%e7%94%a8%e8%a8%ad%e5%ae%9a/ | Mr. 沙先生

該文章由 shazi7804 於2014年02月12日發表在 CentOS 分類下, 你可以發表回文,並在保留原文地址及作者的情况下引用到你的網站或部落格。
原文轉載請註明: [CentOS] vsFTPd Server 安裝 及 使用設定 | Mr. 沙先生
標籤: ,

[CentOS] vsFTPd Server 安裝 及 使用設定:給Mr.沙先生一點建議

發表回文