CentOS7 下的FTP配置

一、 防火牆設置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






























































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章