1. 安裝 vsftpd
yum install vsftpd
2. 配置 vsftpd
打開 /etc/vsftpd/vsftpd.conf 并修改配置信息:
vi /etc/vsftpd/vsftpd.conf
在 vsftpd.conf 文件中查找并配置:
# 禁止匿名訪問
anonymous_enable=NO
# 允許本地用戶登錄FTP
local_enable=YES
# 配置用戶攔截機制磷籍,啟用 /etc/vsftpd/user_list 文件且設(shè)置為白名單
# 具體規(guī)則見:附1
userlist_enable=YES
userlist_deny=NO
3. 創(chuàng)建用戶
創(chuàng)建用戶:
# 增加用戶 userName菩咨,設(shè)置該用戶的主目錄為 /home/ftp,禁止登錄 SSH 權(quán)限
# -d:指定主目錄
# -g:設(shè)置用戶的群組
# -s:設(shè)置 SSH 權(quán)限
# -p:設(shè)置密碼
useradd -d /home/ftp -g ftp -s /sbin/nologin userName -p password
# 修改用戶密碼:passwd userName
# 在文件后添加新增的用戶名
vi /etc/vsftpd/user_list
4. 啟動 FTP 服務(wù)
啟動服務(wù):
# service vsftpd stop:停止服務(wù)
# service vsftpd restart:重啟服務(wù)
service vsftpd start
# 設(shè)置開機啟動 FTP 服務(wù)
chkconfig vsftpd on
5. 配置防火墻
CentOS 7 默認的防火墻是 firewall,如果要替換成 iptables 可以使用下面的方法:
# 停止 firewall 服務(wù)
systemctl stop firewalld.service
# 禁止 firewall 開機啟動
systemctl disable firewalld.service
# 安裝 iptables
yum install -y iptables
# 安裝 iptables-services
yum install iptables-services
設(shè)置 iptables 的規(guī)則:
# 編輯防火墻配置文件
vi /etc/sysconfig/iptables
# 啟動 iptables 服務(wù)
systemctl start iptables.service
# 設(shè)置開機啟動
systemctl enable iptables.service
修改 /etc/sysconfig/iptables 文件中的配置痒谴,按照已有的規(guī)則添加開放21端口:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
#查看 iptables 現(xiàn)有規(guī)則
iptables -L -n
重啟 iptables 服務(wù):
# 重啟防火墻服務(wù)
systemctl restart iptables.service
6. 開啟 FTP 的被動(passive)模式
打開 /etc/vsftpd/vsftpd.conf 文件满力,指定端口范圍:
# 在 vsftpd.conf 文件后追加
# 端口范圍可隨意修改
pasv_min_port=30000
pasv_max_port=30100
在 /etc/sysconfig/iptables 文件中開放設(shè)置的端口范圍:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30100 -j ACCEPT
重啟防火墻服務(wù):
# 重啟防火墻服務(wù)
systemctl restart iptables.service
<br />
附1
vsftpd 使用 ftpusers 和 user_list 兩個文件對用戶進行限制:
- /etc/vsftpd/ftpusers:總是有效采章,是黑名單惧笛,ftpusers 文件中配置的用戶禁止登入 FTP。
- /etc/vsftpd/user_list:
- 如果在 /etc/vsftpd/vsftpd.conf 中配置 userlist_enable=NO甘磨,則 user_list 文件無效橡羞。
- 如果在 /etc/vsftpd/vsftpd.conf 中配置 userlist_enable=YES,此時 user_list 文件有效济舆,根據(jù) vsftpd.conf 中配置的 userlist_deny 的值進行校驗卿泽。
如果 userlist_deny=Y(jié)ES,user_list 是黑名單滋觉,user_list 文件中配置的用戶禁止登入 FTP签夭;
如果 userlist_deny=NO,user_list 是白名單椎侠,只有 user_list 文件中配置的用戶允許登入 FTP第租。