1. 程式人生 > >CentOS7.4雲伺服器配置ftp伺服器

CentOS7.4雲伺服器配置ftp伺服器

一、雲伺服器先設定安全組規則

首先要了解FTP工作原理,20,21,1024-65535這些埠必須開啟

FTP工作在TCP/IP模型的第四層上,伺服器與客戶機之間利用TCP的21號埠傳送訊號指令;利用20號埠用於傳送資料;具體工作過程如下:
1.當FTP客戶端發出請求時,系統將動態分配一個埠(如1032)。
2.若FTP伺服器在埠21偵聽到該請求,則在FTP客戶端的埠1032和FTP伺服器的埠21之間建立起一個FTP會話連線。
3.當需要傳輸資料時,FTP客戶端再動態開啟一個連線到FTP伺服器的埠20的第2個埠(如1033),這樣就可在這兩個埠之間進行資料的傳輸。當資料傳輸完畢後,這兩個埠會自動關閉。
4.當FTP客戶端斷開與FTP伺服器的連線時,客戶端上動態分配的埠將自動釋放掉。

二、安裝配置vsftpd

1.下載安裝vsftpd

yum install -yq vsftpd

2.設定開機自啟動

systemctl list-dependencies         chkconfig --list|grep vsftpd 檢視開機自啟

systemctl enable vsftpd     同 chkconfig vsftpd on  設定開機自啟

systemctl enable firewalld

systemctl start firewalld  同 service firewalld  start 啟動服務

systemctl start vsftpd

systemctl在centos7中必不可缺少的管理工具,它具備service和chkconfig的所有功能;

檢查vsftpd是否開啟:ps -e|grep vsftpd 或者 檢視21埠是否被監聽,netstat -an | grep 21

可以使用netstat -ntpl | grep vsftpd命令檢視到系統現在監聽的vsftpd的埠為 21

3.防火牆設定

放開21埠:firewall-cmd --zone=public --add-port=21/tcp --permanent

永久開放 ftp 服務:firewall-cmd --add-service=ftp --permanent (關閉ftp服務:firewall-cmd --remove-service=ftp --permanent)

在不改變狀態的條件下重新載入防火牆:firewall-cmd --reload

可以使用firewall-cmd --list-all    顯示防火牆應用列表檢視是否設定成功,設定必須在重新載入防火牆:firewall-cmd --reload才會生效

可能用到的命令:

systemctl start firewalld 啟動防火牆服務

firewall-cmd --add-service=ftp 暫時開放ftp服務

firewall-cmd --add-service=ftp --permanent永久開放ftp服務

firewall-cmd --remove-service=ftp --permanent永久關閉ftp服務

systemctl restart firewalld 重啟firewalld服務

firewall-cmd --reload 過載配置檔案

firewall-cmd --query-service ftp檢視服務的啟動狀態

firewall-cmd --list-all    顯示防火牆應用列表

firewall-cmd --add-port=8001/tcp    新增自定義的開放埠

iptables -L -n | grep 21 檢視設定是否生效

firewall-cmd --state 檢測防火牆狀態

4.配置 FTP 許可權

1、瞭解 VSFTP 配置

vsftpd 的配置目錄為 /etc/vsftpd,包含下列的配置檔案:

vsftpd.conf 為主要配置檔案

ftpusers 配置禁止訪問 FTP 伺服器的使用者列表

user_list 配置使用者訪問控制------這裡的使用者預設情況(即在/etc/vsftpd/vsftpd.conf中設定了userlist_deny=YES)下也不能訪問FTP伺服器 

2、阻止匿名訪問和切換根目錄

匿名訪問和切換根目錄都會給伺服器帶來安全風險,我們把這兩個功能關閉。編輯 /etc/vsftpd/vsftpd.conf,找到下面兩處配置並修改:

# 禁用匿名使用者  YES 改為NO anonymous_enable=NO

sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" /etc/vsftpd/vsftpd.conf

# 禁止切換根目錄 刪除# chroot_local_user=YES

sed -i "s/#chroot_local_user=YES/chroot_local_user=YES/g" /etc/vsftpd/vsftpd.conf

編輯完成後儲存配置,重新啟動 FTP 服務 service vsftpd restart

其它配置項說明:

anonymous_enable=YES #允許匿名登陸 

local_enable=YES #啟動home目錄 

write_enable=YES #ftp寫的許可權 

local_umask=022 

dirmessage_enable=YES #連線列印的訊息 

connect_from_port_20=YES #20埠 

xferlog_std_format=YES 

idle_session_timeout=600 

data_connection_timeout=300 

accept_timeout=60 

connect_timeout=60 

ascii_upload_enable=YES #上傳 

ascii_download_enable=YES #下載 

chroot_local_user=NO #是否限制使用者在主目錄活動 

chroot_list_enable=YES #啟動限制使用者的列表 

chroot_list_file=/etc/vsftpd/chroot_list #每行一個使用者名稱 

allow_writeable_chroot=YES #允許寫 

listen=NO 

listen_ipv6=YES 

pasv_min_port=50000 允許ftp工具訪問的埠起止埠 

pasv_max_port=60000 

pam_service_name=vsftpd #配置虛擬使用者需要的 

userlist_enable=NO #配置yes之後,user_list的使用者不能訪問ftp 

tcp_wrappers=YES 

chroot_list 檔案需要自己建,內容一行一個使用者名稱字 

anon_root=/data/ftp/public #修改匿名使用者的訪問路徑

3 建立 FTP 使用者

新建一個不能登入系統使用者. 只用來登入ftp服務 ,這裡如果沒設定使用者目錄。預設是在home下:

useradd -g root -d /home/ftpuser -s /sbin/nologin ftpuser  #-s /sbin/nologin 禁止使用者登陸shell,只能登陸FTP伺服器

passwd ftpuser #設定密碼

chown -R ftpuser /home/ftpuser  #遞迴更改目錄和檔案的檔案主

setsebool -P ftpd_full_access on   #更改檔案中的屬性值

sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" /etc/vsftpd/vsftpd.conf #替換操作,禁止匿名登陸

禁止使用者在主目錄活動,可選項,更改以下三個屬性並去掉前面的#

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list #需要建立該檔案

另外,從2.3.5之後,vsftpd增強了安全檢查,如果使用者被限定在了其主目錄下,則該使用者的主目錄不能再具有寫許可權了!如果檢查發現還有寫許可權,就會報該錯誤。

 要修復這個錯誤,可以用命令chmod a-w /home/user去除使用者主目錄的寫許可權,注意把目錄替換成你自己的。或者你可以在vsftpd的配置檔案中增加下列項:

 allow_writeable_chroot=YES

禁止使用者在主目錄活動時可能需要使用reboot重啟伺服器

# 重啟ftp伺服器

systemctl restart vsftpd

可能用到:

設定使用者的主目錄:usermod -d /data/ftp ftpuser

徹底刪除使用者:#userdel -rf Fuser   //強制刪除使用者及相關目錄檔案 

變更使用者屬性:#usermod -s /sbin/nologinftpuser (/bin/bash:可以登入shell,/bin/false:禁止登入shell )

檢視當前服務:#netstat -lntp

三、使用root使用者登陸

在設定安全組規則後可直接使用root賬號sftp協議登陸,但不能使用ftp協議登陸,需要在ftpusers和user_list中允許root才能登陸ftp

四、連線軟體

1.xftp

2.FileZilla

文章為個人學習筆記與總結,會不斷修改,如若有不對的地方,請留言指出!