FTP(File Transfer Protocol)
讓我們透過 Network 在 Server 和 Client 之間傳遞檔案
以下是基本設置。有錯誤可留言謝謝。
- Installing FTP Server
安裝 vsftpd Server
# yum install vsftpd -y
啟動 vsftp 預設是 disable
# systemctl start vsftpd
# systemctl enable vsftpd
# systemctl status vsftpd
設置 firewall
# firewall-cmd --zone=public --permanent --add-port=21/tcp
# firewall-cmd --zone=public --permanent --add-service=ftp
# firewall-cmd --reload
- 配置 FTP Server
配置檔預設路徑
# ll /etc/vsftpd/ 下有個 vsftpd.conf
備份 vsftpd.conf 以防萬一
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.original
用 vim 或 vi 開啟 vsftp.conf
# /etc/vsftpd/vsftpd.conf
預設內容及介紹
anonymous_enable=YES enable anonymous login
local_enable=YES permit local login
write_enable=YES enable FTP commands
local_umask=022 local users 建立檔案umask的值
dirmessage_enable=YES 當 users 進入目錄時顯示消息
xferlog_enable=YES 保存 log file 詳細紀錄 uploads and downloads
connect_from_port_20=YES 在 Server 上使用Port 20(ftp-data)進行連接
xferlog_std_format=YES 保持標準的log file 格式
listen=NO 防止vsftpd在獨立模式下運行
listen_ipv6=YES vsftpd偵聽IPv6,而不是IPv4
pam_service_name=vsftpd vsftpd使用PAM服務的名稱
userlist_enable=YES vsftpd 啟用用戶名列表
tcp_wrappers=YES 支援 TCP Wrappers
根據用戶列表文件 /etc/vsftpd/user_list,配置 FTP 允許/拒絕用戶對 FTP 訪問(以下沒有的可自行新增)
userlist_file=/etc/vsftpd/user_list
userlist_enable = YES #來處理一些不受歡迎的帳號
userlist_deny=YES #選項設置為YES,若為 YES,則當使用者帳號被列入到某個檔案(user_list)時,在檔案內的使用者無法登入 vsftpd Server
userlist_deny=NO #會改變設置,這表示只有 user_list 中明確列出的用戶才能被登錄
以下三個選項將FTP用戶限制到其主目錄
#註解拿掉
chroot_local_user=YES #限制使用者在自己的home目錄
chroot_list_enable=YES #寫入列表功能
FTP 線上連線相關設定idle_session_timeout=300 #如果使用者在 300 秒內都沒有啥動作,送他強制離線
data_connection_timeout=300 #資料連線已建立,但 300 秒內無法順利傳送,送他離線
被動連線設定
主動:主要以 Port 20 對外連線,防火牆的處理比較簡單。
被動:會隨機取幾個沒有在使用中的 Port 建立被動式連線,相對的防火牆的處理就麻煩。
自行加上。pasv_min_port=65400
pasv_max_port=65420
以上儲存後離開,並 restart 服務
# systemctl restart vsftpd
- 使用 SELinux 保護FTP Server
將SELinux boolean 設置為允許 FTP 讀取用戶主要目錄中的文件
跟 FTP 服務有關的規則#getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
# setsebool -P tftp_home_dir 1
- Testing FTP Server
建立 FTP 使用者,以下是創建 2 個測試
# adduser itachi
# passwd itachi
# echo "itachi" >> /etc/vsftpd/chroot_list #記得每個用戶要加入至 chroot_list
把 itachi 新增至 user_list
# echo "itachi" >> /etc/vsftpd/user_list
# cat /etc/vsftpd/user_list
匿名登入測試
發現是不允許的...
# ftp 192.168.64.180
Connected to 192.168.64.180 (192.168.64.180).
220 (vsFTPd 3.0.2)
Name (192.168.64.180:root): anonymous
530 Permission denied.
Login failed.
ftp>
測試一下 user_list 文件中未列出的用戶是否被授予登錄權限
真的不行...
# ftp 192.168.64.180
Connected to 192.168.64.180 (192.168.64.180).
220 (vsFTPd 3.0.2)
Name (192.168.64.180:root): naruto
530 Permission denied.
Login failed.
ftp>
最後檢查文件 user_list 中列出的用戶 (itachi) 是否在登錄後實際放置在他的目錄中: # ftp 192.168.64.180
Connected to 192.168.64.180 (192.168.64.180).
220 (vsFTPd 3.0.2)
Name (192.168.64.180:root): itachi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
參考資料:
https://yukifans.com/ie/2014/11/400
http://linux.vbird.org/linux_server/0410vsftpd.php
留言
張貼留言