fbpx

Linux CentOS FTP Server 設定教學 (vsftpd)

vsftpd

Linux FTP Server

FTP 有很多詬病,像是安全性與防火牆穿越問題等等。因此一直以來我不太建議使用 FTP 進行檔案傳輸 (個人比較偏愛 sFTP),但是 FTP 算是比較平易近人的檔案上傳方式,免不了三不五時就要架設一下。由於安全性問題,因此我們介紹的設定環境相對保守,請依照以下方式進行設定即可。

安裝 vsftpd 套件

在 Linux CentOS 標準套件中,vsftpd 算是最簡易架設的 FTP Server,可以直接使用 yum 進行安裝,步驟如下:

[root@server ~]# yum install vsftpd

設定 /etc/vsftpd/vsftpd.conf 檔案(主要設定檔)

[root@server ~]# vim /etc/vsftpd/vsftpd.conf

vsftpd.conf 修改內容如下:

local_enable=YES
write_enable=YES
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES

# 關閉匿名登入
anonymous_enable=NO

# 改變 umask 讓新增的檔案屬性為 750 (umask 計算方式為:777 - 027 = 750)
local_umask=027

# 設定 idle 斷線時間(秒)
idle_session_timeout=600

# 設定 timeout 時間(秒)
data_connection_timeout=120

# 設定 chroot 避免使用者亂跑
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

# 限制最高幾個 client 連線
max_clients=20

# 限制同一個 ip 可以建立多少連線
max_per_ip=5

# 修改連線 port 為 2121 (預設21)
listen_port=2121

# 修改連線 data port 為 2020 (預設20)
ftp_data_port=2020

建立 /etc/vsftpd/chroot_list 檔案

設定不受 chroot 控制的帳號,這裡產生空檔案即可,因為想要讓所有登入的使用者都禁止逛大街,如下:

[root@server ~]# touch /etc/vsftpd/chroot_list

啟動 vsFTP Server

沒什麼特別的,就透過 service 指令直接啟動 service,如下:

[root@server ~]# service vsftpd start

iptables 防火牆設定

由於要讓 FTP 主動與被動模式都能夠順利連線,若是要設定防火牆可以載入 ip_conntrack_ftp 及 ip_nat_ftp 模組,相關 iptables 如下:

#Accept FTP Server at Port 2020,2121
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
iptables -A INPUT -i eth0 -p tcp --dport 2121 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 2121 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 2020 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 2020 -j ACCEPT

參考資料

發佈留言