AWS CentOS7 下配置FTP(vsftpd)及防火牆

趁着AWS雲服務有1年免費期的福利,申請了一個EC2(可以看作是AWS的VPC),預裝Centos7系統。

整個網頁後臺學習學習, 作爲後臺維護自然免不了要裝一個FTP,選用最經典的vsftpd,立馬安裝。

yum install vsftpd

開啓FTP前,習慣性關閉防火牆 systemctl stop firewalld, 居然提示找不到firewalld.service。一臉問號,順便查看了一下iptables,也沒有。難道這個版本的Centos連防火牆都沒有。

怒裝firewall

yum install firewalld

到此,軟件的安裝順利完成

在做軟件配置前,爲排除干擾,先把防火牆都關閉,包括AWS的安全組。

  • 配置FTP

FTP通過改寫配置文件來實現配置,每次配置修改後要應用則需要重新啓動FTP服務。

vim /etc/vsftpd/vsftpd.conf

systemctl restart vsftpd

配置FTP模式

熟悉FTP的同學一定了解FTP根據連接端口的使用可以分兩種模式(被動Passive模式 與 主動Active模式)

若FTP未做任何配置,則默認使用的是PASV被動模式。通過瀏覽器做連接(ftp://192.168.1.2)也是默認使用PASV的方式連接服務器。

被動模式

FTP模式服務端監聽端口
連接建立後服務端用來傳輸的端口
配置內容
Active21/TCP20(由服務器發起連接請求)   connect_from_port_20=YES
   pasv_enable=NO
PASV21/TCP

在自定義的端口範圍中隨機選擇一

(由客戶端發起連接請求)

   connect_from_port_20=NO(默認爲YES)
   pasv_enable=YES
   pasv_min_port=10000(端口範圍可任意設置)
   pasv_max_port=10001
權衡之後自然選擇對服務器負擔比較小的PASV模式。

接下來配置FTP的訪問用戶與權限(匿名方式)

暫時爲圖方便,採用匿名用戶的訪問方式。

在配置文件 vsftpd.conf 中確認以下幾行內容,沒有的加上,搞定。

anonymous_enable=YES         
anon_upload_enable=YES          
anon_mkdir_write_enable=YES   
anon_other_write_enable=YES    


最後配置FTP的訪問目錄(匿名用戶使用)

同樣在配置文件中爲匿名用戶設定訪問目錄

anon_root=/root/ftpfolder

同時還需要通過以下Linux命令設置目錄權限 
chmod 755  /root/ftpfolder  

指定用戶訪問(規定用戶名密碼,匿名用戶拒絕登錄)

匿名的方式多少感覺在安全性在有風險,又花時間調查了一把用戶登錄的方式

既然拒絕匿名用戶,首先就是關閉匿名用戶的權限

anonymous_enable=NO

接着是創建用於登錄FTP的用戶, 這是linux的一種用戶類型, 使用linux命令創建並設置初始訪問目錄

useradd ftpuser -s /sbin/nologin –d /usr/share/nginx/html

最後爲該用戶設置好密碼後重啓vsftpd

passwd ftpuser

systemctl restart vsftpd


成功連接,本以爲大功告成,卻發現完全看不到 ftpfolder 下的子目錄,
又是一陣搜索,原來是selinux搞的鬼。
vi  /etc/sysconfig/selinux   

把SELINUX配置改爲disable   
SELINUX=disable  
保存退出重啓

終於能正常訪問,文件夾的創建刪除,文件上傳下載也都OK。

  • 配置防火牆
在AWS雲平臺上使用,共需要配置2個防火牆(Centos的防火牆 與 AWS提供的安全組)

    Centos firewall 配置

     先插一段防火牆使用的常用命令列表

作用命令
開啓防火牆systemctl  start  firewalld
停止防火牆systemctl  stop firewalld
查看防火牆運行狀態

systemctl  status  firewalld

或者 firewall-cmd  --state

開放單個端口

firewall-cmd   --permanent   --zone=public   --add-port=8081/tcp

永久開放8081的TCP端口

開放批量端口

firewall-cmd   --permanent   --zone=public   --add-port=100-500/tcp

批量永久開放100到500的TCP端口

移除/關閉已開放的端口firewall-cmd   --permanent   --zone=public   --remove-port=100-500/tcp
添加對應的服務

firewall-cmd  --add-service=ftp   --permanent

服務開啓後就不需要另行開啓該服務的端口。

比如添加FTP服務後,不需要再開放21或其他ftp關聯端口

移除已開放的服務firewall-cmd  --remove-service=ftp   --permanent
應用之前所做的所有修改

firewall-cmd --complete-reload

防火牆的修改配置立即生效,不用通過systemctl重新啓動防火牆。

修改只有通過該命令應用後才能在 --list-all 參數查看到

查看當前防火牆的所有配置

firewall-cmd   --list-all

顯示當前防火牆的所有配置

    綜上,對於Centos的防火牆,放行FTP服務的流量只需要加上FTP service就可以了。

    firewall-cmd  --add-service=ftp   --permanent

     firewall-cmd --complete-reload

    AWS 安全組配置
AWS的安全組對出站是全放開,只需要配置入站(也就是向服務器發送的請求開放)。

我這裏配置的FTP是PASV,從10000到10001之間選擇一個端口

因此這裏我只爲FTP開放了21與10000-10001這種類型的TCP端口。

    




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