CentOS7配置FTP服務器增強版~(零基礎學會FTP配置)


ps:原文不知出處,但是原文也不能正常啟動,這里做了一些修改!如果能正常配置請在下方留言讓更多的人看到,因為之前我本人照着網上的教程安裝卸載了十多次也無法正常使用,不希望后面的兄弟繼續浪費時間,如果不能使用,也請勞煩貼出相應的錯誤!
參考:
一、 防火牆設置( 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 # 使配置立即生效
如果出現:setenforce: SELinux is disabled解決辦法(很多是沒有注意到這個細節導致最后ftp無法訪問!)

如果在使用setenforce命令設置selinux狀態的時候出現這個提示:setenforce: SELinux is disabled

那么說明selinux已經被徹底的關閉了

如果需要重新開啟selinux,請按下面步驟:

vi /etc/selinux/config

更改為:SELINUX=1

必須重啟linux,不重啟是沒辦法立刻開啟selinux的

重啟完以后,使用getenforce,setenforce等命令就不會報“setenforce: SELinux is disabled”了
 
然后再重復:
 
SELINUX=disabled # 增加
 
保存退出
 
setenforce 0 # 使配置立即生效
 
如果沒有出現setenforce: SELinux is disabled就繼續下一步,否則請先將此問題解決!

 

三、 安裝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'
 

#之后添加下列內容到vsftpd.conf末尾

vim /etc/vsftpd/vsftpd.conf

 

use_localtime=YES

listen_port=21

chroot_local_user=YES

idle_session_timeout=300

guest_enable=YES

guest_username=vsftpd

user_config_dir=/etc/vsftpd/vconf

data_connection_timeout=1

virtual_use_local_privs=YES

pasv_min_port=10060

pasv_max_port=10090

accept_timeout=5

connect_timeout=1

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

 
最后在瀏覽器或者我的電腦里輸入 ftp://192.168.163.126(局域網)測試!
可以登錄但是無法上傳下載,接下來:
 mkdir /home/vsftpd/web1/m/
web1目錄的所有者為root,所以ftp帳號web1不能進行下載

 

chown -R vsftpd:vsftpd /home/vsftpd/web1/m/
這樣 /home/vsftpd/web1/m/  m這個目錄的所有者為vdftpd即ftp帳號自己,web1帳號就能在m文件夾下進行上傳下載刪除!

 

  /*******************************************************************************************/
一般情況下,為了網站更安全,我們需要給文件或文件夾設置權限,在采用FTP登錄的方式下,經常會用到755,766,777,644等設置。
具體這些數字都代表什么意思呢?
這三個數字分別表示:不同用戶或用戶組的權限。
    第一個數字 表示文件所有者的權限
    第二個數字 表示與文件所有者同屬一個用戶組的其他用戶的權限
    第三個數字 表示其它用戶組的權限。
權限分為三種: 讀(r=4),寫(w=2),執行(x=1)。
綜合起來還有可讀可執行5(rx=5=4+1)、可讀可寫6(rw=6=4+2)、可讀可寫可執行7(rwx=7=4+2+1)。
所以,755 設置用戶的權限為:
1.文件所有者可讀可寫可執行 2.與文件所有者同屬一個用戶組的其他用戶可讀可執行 3.其它用戶組可讀可執行
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM