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