2020年3月11日 星期三

Unix Linux FTP Server 安裝設定 (vsftpd)

FTP 服務傳輸簡介
FTP 為 File Transfer Protocol(文件傳輸協議) 的英文簡稱, 可為最早上的網路傳輸檔案的一種網路模式, 至今還是不可少的網路服務項目之一, 但整個服務是有這許多安全上的詬病, 所以如果在可能的狀況下, 其實許多非分享型的主機管理者也慢慢少使用這樣的服務, 可能會改為使用 SFTP, 不過因為還是許多對外服務因素考量, 還是會需要這樣的服務對外提供下, 少有提供 SFTP ,只能應用 FTP 提供服務.

不論是在 Unix Linux Server 或 Microsoft Windows Server 上, 即有相關元件可以提供 FTP 服務, 不過在安全上的考量上, 建議在架設時建可能的提高安全設定, 必竟該服務運行網路時, 採用的非加密行為, 如果被惡意擷取下, 確實是容易取得完整資訊, 此次將針對在 Unix Linux 底下的 vsftpd 套件做為 FTP 服務項目進行安裝及架設服務.

安裝 YUM 擴充套件源
過去中因對 Unix Linux 不是很認識下, 原想說任何一個網路 ISO 檔下來後, 才可以進行 Unix Linux 服務安裝及設定, 可是非然, 只是當時所安裝來源還是不清楚, 不過因為安裝的來源沒有 vsftpd 套件的狀況下, 那想透過 YUM 進行安裝, 在初始的 YUM 如 Red Head 必然也是無法取的 vsftpd 套件.所以建議在進行任何安裝前可以先行安裝 EPEL 擴充套件源, 即可如下後行的安裝程序方便.

● EPEL 安裝 YUM 設定檔

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
安裝 vsftpd 套件
● 請依以下指令模組執行安裝程序
yum install vsftpd
vsftpd 相關檔案
/etc/vsftpd/vsftpd.confvsftpd 的主要設定檔案
/usr/sbin/vsftpd提供 FTP 服務的程式, 亦即監聽 TCP 21 port 的 Daemon.
/etc/vsftpd/ftpusers列於此檔中的使用者將無法存取 FTP
/etc/logrotate.d/vsftpd設定 ftp 紀緣檔輪替的檔案
/etc/pam.d/vsftpdvsftd 的 PAM 認證模組設定檔
vsftpd 服務控管
● 管理目前 vsftpd 服務
systemctl start | stop | restart | status vsftpd

● 設定服務自動啟動管理

systemctl enable | disable vsftpd

PS. 指令中的 | 符號為或的意思, 即是可以為其一.

vsftpd 服務設定
雖然為 FTP 服務, 不過透過 vsftpd 的定義下, 其實概略可以分為以下幾個類型, 後續也將針對這此類型一一設定在設定檔中如何定義.請依據以下指令進行修改設定檔模式後, 依據需選擇需求的類型.

vi /etc/vsftpd/vsftpd.conf
## 是否允許匿名使用者登入, 預設為 NO
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 , 即可.

vsftpd QA
● 本機帳號無法為 /sbin/nologin 模式的帳號登入 FTP
諸多管理者為保護 Shell 安全, 如果非管理者級的成員, 所建立的帳號在常態下只為提供網路服務功能為主, 所以會設定本機帳號操作非 Shell 為主, 因此定義為 /sbin/nologin, 可是在 vsftpd-3.0.2-25.el7.x86_64 後無法應用這樣的原理, 其實這和 vsfetpd 所定的 pam 有關, 所以必須針對 pma.d 目錄中的 vsftpd 進行調整, 如下操作:
vi /etc/pam.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
     

● 設定服務自動啟動管理

systemctl enable | disable vsftpd

PS. 指令中的 | 符號為或的意思, 即是可以為其一.

測試文章

1 of 2 2 of 2 1 of 3 2 of 3 3 of 3