一、 防火牆設置(CentOS 7.0默認使用的是firewall作爲防火牆,這裏改爲iptables防火牆)
1. 安裝iptables防火牆
# 先檢查是否安裝了iptables(如果提示iptables:unrecognized service 則表示系統尚未安裝)
service iptables status
# 安裝iptables
yum install iptables
# 升級iptables
yum update iptables
# 安裝iptables-services
yum install iptables-services
2. 關閉Firewall
# 停止firewall 服務
systemctl stop firewalld.service
# 禁用firewall 服務
systemctl mask firewalld.service
# 禁止firewall服務開機啓動
systemctl disable firewalld.service
# 查看firewall服務狀態
firewall-cmd --state
3. 查看Iptables所在目錄與配置文件
#安裝完成後,配置文件默認位置
/etc/sysconfig/iptables
4. 設置現有規則
# 查看iptables現有規則
iptables -L -n
# 先允許所有,不然有可能會杯具
iptables -P INPUT ACCEPT
# 清空所有默認規則
iptables -F
# 清空所有自定義規則
iptables -X
# 所有計數器歸0
iptables -Z
4.1 iptables 規則設置
# 允許來自於lo接口的數據包(本地訪問)
iptables -A INPUT -i lo -j ACCEPT
# 允許本機對外訪問
iptables -A OUTPUT -j ACCEPT
# 允許接受本機請求之後的返回數據 RELATED,是爲FTP設置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 開放22端口(SSH)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 開放21、20端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
# 開放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 開放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允許ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
# 10060到10090是Vsftpd被動模式需要的端口,可自定義一段大於1024的tcp端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT
# 這兩條的意思是在INPUT表和FORWARD表中拒絕所有其他不符合上述任何一條規則的數據包。
並且發送一條host prohibited的消息給被拒絕的主機。
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
注:防火牆的規則是從上到下解析的
4.2 保存規則設定
# 保存上述規則
service iptables save
# 查看iptables現有規則
iptables -L -n
4.3 開啓iptables服務
# 最後重啓防火牆使配置生效
systemctl restart iptables.service
# 設置防火牆開機啓動
systemctl enable iptables.service
# 查看狀態
systemctl status iptables.service
# 確定是否enabled
systemctl list-unit-files | grep iptables
二、 關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing # 註釋掉
#SELINUXTYPE=targeted # 註釋掉
SELINUX=disabled # 增加
:wq! # 保存退出
setenforce 0
# 使配置立即生效
三、 安裝vsftpd
# 安裝vsftpd
yum install -y vsftpd
yum -y install ftp vsftpd
# 安裝vsftpd虛擬用戶配置依賴包
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI
# 啓動
systemctl start vsftpd.service
# 查看vsftpd服務的狀態
systemctl status vsftpd.service
systemctl list-unit-files | grep vsftpd.service
# 設置vsftpd開機啓動
systemctl enable vsftpd.service
四、 配置
# 備份默認配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak
# 執行以下命令進行設置
sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'
echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300 \
ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd \
nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES \
npasv_min_port=10060\npasv_max_port=10090 \
naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf
五、 建立虛擬用戶名單文件
touch /etc/vsftpd/virtusers
# 編輯虛擬用戶名單文件:(第一行賬號,第二行密碼,注意:不能使用root做用戶名,系統保留)
vi /etc/vsftpd/virtusers
web1
123456
web2
123456
web3
123456
六、 生成虛擬用戶數據文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
#設定PAM驗證文件,並指定對虛擬用戶數據庫文件進行讀取
chmod 600 /etc/vsftpd/virtusers.db
七、 在/etc/pam.d/vsftpd文件添加以下信息
# 修改前先備份
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
# 將auth及account的所有配置行均註釋掉
vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
注:如果系統爲32位,上面改爲lib,否則配置失敗
八、 新建系統用戶vsftpd,用戶目錄爲/home/vsftpd, 用戶登錄終端設爲/bin/false(即:使之不能登錄系統)
useradd vsftpd -d /home/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /home/vsftpd
九、 建立虛擬用戶個人Vsftp的配置文件
mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
touch web1 web2 web3 # 這裏創建三個虛擬用戶配置文件
mkdir -p /home/vsftpd/web1/
vi web1 # 編輯用戶web1配置文件,其他的跟這個配置文件類似
local_root=/home/vsftpd/web1/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
十、 重啓vsftpd服務器
systemctl restart vsftpd.service
# 查看vsftpd服務的狀態
systemctl status vsftpd.service
systemctl list-unit-files | grep vsftpd