不論是在 Unix Linux Server 或 Microsoft Windows Server 上, 即有相關元件可以提供 FTP 服務, 不過在安全上的考量上, 建議在架設時建可能的提高安全設定, 必竟該服務運行網路時, 採用的非加密行為, 如果被惡意擷取下, 確實是容易取得完整資訊, 此次將針對在 Unix Linux 底下的 vsftpd 套件做為 FTP 服務項目進行安裝及架設服務.
● EPEL 安裝 YUM 設定檔
/etc/vsftpd/vsftpd.conf | vsftpd 的主要設定檔案 |
/usr/sbin/vsftpd | 提供 FTP 服務的程式, 亦即監聽 TCP 21 port 的 Daemon. |
/etc/vsftpd/ftpusers | 列於此檔中的使用者將無法存取 FTP |
/etc/logrotate.d/vsftpd | 設定 ftp 紀緣檔輪替的檔案 |
/etc/pam.d/vsftpd | vsftd 的 PAM 認證模組設定檔 |
● 設定服務自動啟動管理
PS. 指令中的 | 符號為或的意思, 即是可以為其一.
anonymous_enable=NO
## 是否允許在本機擁有真實帳號的使用者登入, 預設為 YES
local_enable=YES
## 是否使用本地端時間來取代 GMT 時間, 預設為 NO
use_localtime=YES
## 是否讓使用者擁有寫入的權限, 預設為 NO
write_enable=NO
## 設定本機上傳檔案目錄時的預設權限遮罩, 預設為 022
## 所以上傳後真實的權限為 755
local_umask=022
## 是否允許匿名使用者上傳檔案, 預設為註解及YES
#anon_upload_enable=YES
## 是否允許匿名使用者上傳目錄或建立目錄, 預設為註解及YES
#anon_mkdir_write_enable=YES
## 是否要記錄上傳/下載資訊, 預設記錄在 /var/log/vsftpd.log 中, 預設為 YES
xferlog_enable=YES
## 是否以 wu-ftpd 標準的 xferlog 格式來作為記錄的記錄格式.
## 當設定為 YES 是, 預設記錄檔將改為 /var/log/xferlog.
xferlog_std_format=YES
## 在主動模式下建立資料通道時(ftp-data), 是否啟用 20 port, 預設為 YES
connect_from_port_20=YES
## 是否限制本機帳號登入後,以本機帳號家目為預設的根目錄為主, 預設為 YES
chroot_local_user=YES
## 當 chroot_local_user=NO、chroot_list_enable=YES 時, 可搭配
## 參數 chroot_list_file 來把一些使用者帳號寫入預設的 /etc/vsftpd/chroot_list
## 檔案中, 如此即會將在被寫入的使用者, 登入時即會被限制在該帳號目錄為主
## 預設為註解及YES
#chroot_list_enable=NO
# 設定本機登入帳號, 只能在該帳號本機目錄空間為主的名單檔案所以位子定義.
#chroot_list_file=/etc/vsftpd/chroot_list
# 是否要讓 vsftpd 載入 userlist_file 參數所指定的檔案, 預設 YES
userlist_enable=YES
# 當 userlist_enable=YES、Userlist_deny=YES 時, 則被設定在
# userlist_file 參數所指定檔案的使用, 將會被拒絕登入 ftp, 預設為不存在的定義
# 需自已加入該設定值和定義
#userlist_deny=YES
● 本機實體帳號登入模式
此模式即為本機中有建立登入帳號為主的帳號為主, 在正常狀況下為管理者建立時, 所建立的帳號是無法透過該帳號進入到到 Shell 管理介面型.此模式也為 CentOS 7 以後版本預設值.
● 匿名分享模式
此模式下所有行為是不經過任何身份驗證, 即可在 vsftpd 設定進行檔案傳輸行為, 這樣的狀況如非必須要的狀況下, 建議只是唯讀最好, 不然當被惡意者確認到有此 FTP 空間而進行惡意行為就很麻煩了.如依據以上的設定檔為主, 只需要將 anonymous_enable 項目設定為 YES , 即可.
諸多管理者為保護 Shell 安全, 如果非管理者級的成員, 所建立的帳號在常態下只為提供網路服務功能為主, 所以會設定本機帳號操作非 Shell 為主, 因此定義為 /sbin/nologin, 可是在 vsftpd-3.0.2-25.el7.x86_64 後無法應用這樣的原理, 其實這和 vsfetpd 所定的 pam 有關, 所以必須針對 pma.d 目錄中的 vsftpd 進行調整, 如下操作:
請將 auth required pam_shells.so 項目註解, 即可排除此問題, 如下樣式存檔離開即可.
#%PAM-1.0 session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth
● 設定服務自動啟動管理
PS. 指令中的 | 符號為或的意思, 即是可以為其一.