Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux FTP 與 TFTP 服務配置實戰教學:從安裝到安全加固

編輯:Linux 教學

前言:為何仍需 FTP/TFTP?

雖然 SFTP/SCP 已成主流,但在嵌入式開發、網路設備升級、無盤啟動、舊系統相容等場景,FTP(File Transfer Protocol)與 TFTP(Trivial FTP)仍不可或缺。本文以 CentOS/RHEL 7 為例,示範 vsftpd 與 tftp-server 的完整部署流程。

環境確認

# 核心版本
uname -r
# 運行等級
grep initdefault /etc/inittab
# 檢查已安裝套件
rpm -qa | grep -E 'ftp|tftp'

預設僅安裝 tftp-server、ftp(客戶端)、lftp;vsftpd 需手動安裝。

一、TFTP 服務部署(基於 xinetd)

1.1 啟用服務

編輯 /etc/xinetd.d/tftp,關鍵修改:

service tftp
{
    socket_type     = dgram
    protocol        = udp
    wait            = yes
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /var/lib/tftpboot -c   # -c 允許建立新檔
    disable         = no                        # yes → no
    per_source      = 11
    cps             = 100 2
    flags           = IPv4
}

重點: server_args 指定根目錄 /var/lib/tftpboot,-c 允許上傳新檔。

1.2 準備目錄與權限

mkdir -p /var/lib/tftpboot
chmod -R 777 /var/lib/tftpboot   # 實驗環境開放;生產建議 755 + 專用用戶

1.3 啟動 xinetd

systemctl enable --now xinetd
systemctl status xinetd
# 驗證監聽埠 69/udp
ss -ulnp | grep :69

1.4 客戶端測試

# Client 端
tftp 192.168.1.100
tftp> put localfile.txt
tftp> get remotefile.txt
tftp> quit

二、FTP 服務部署

2.1 安裝 vsftpd

yum install -y vsftpd
systemctl enable --now vsftpd

2.2 核心配置 /etc/vsftpd/vsftpd.conf

# 基礎安全
anonymous_enable=NO          # 禁止匿名
local_enable=YES             # 允許本地用戶
write_enable=YES             # 允許寫入
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES

# 限制用戶在家目錄(防止目錄遍歷)
chroot_local_user=YES
allow_writeable_chroot=YES   # 允許家目錄可寫(需配合下方)

# 被動模式埠範圍(防火牆需開放)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100

# 日誌
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

2.3 建立 FTP 專用用戶(不允許 Shell 登入)

useradd -M -s /sbin/nologin -d /home/ftpuser ftpuser
passwd ftpuser
# 設定家目錄權限
chown ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser

2.4 防火牆與 SELinux

# firewalld
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=40000-40100/tcp
firewall-cmd --reload

# SELinux(若啟用)
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

2.5 重啟驗證

systemctl restart vsftpd
# 本機測試
ftp localhost
# 或使用 FileZilla 等圖形客戶端

三、安全加固清單

項目建議
加密傳輸FTP 預設明文;生產環境**強制啟用 FTPS (vsftpd 支援 SSL/TLS)** 或改用 SFTP
匿名存取嚴禁 anonymous_enable=YES
用戶隔離啟用 chroot_local_user=YES,配合虛擬用戶映射
暴力破解防護部署 fail2ban 監控 vsftpd 日誌
TFTP 寫入權限僅在必要時開啟 -c,生產建議唯讀
目錄權限最小權限原則,避免 777

四、常見故障快速定位

  • 500 OOPS: vsftpd: refusing to run with writable root inside chroot → 設定 allow_writeable_chroot=YES 或移除家目錄寫權限。
  • 425 Failed to establish connection → 被動模式埠未開放防火牆,或 pasv_address 未設定公網 IP。
  • TFTP "Access violation" → 目錄權限、SELinux 標籤、server_args 路徑不符。

結語

FTP/TFTP 雖屬經典協議,但在特定場景仍具不可替代性。掌握 vsftpd 與 tftp-server 的標準化部署與安全配置,能讓你在嵌入式開發、網管維護、舊系統遷移等工作中遊刃有餘。

Copyright © Windows教程網 All Rights Reserved