天翼云云主機上搭建FTP服務最佳實踐

天翼雲開發者社群發表於2022-03-30

天翼雲使用者在雲主機上架設FTP伺服器後,在VPC 安全組裡配置開放了21埠卻發現仍然從外網連線不上FTP服務。

        這是由於FTP協議有它的特殊之處,本文將介紹在天翼云云主機上配置FTP伺服器的難點。

        FTP協議的資料連線分為主動模式和被動模式兩種方式,FTP預設使用主動模式。

        在主動模式下客戶端隨機開啟一個大於1024的埠N,這裡我們假定是12345埠吧,向伺服器的21埠發起連線,然後客戶端將開放N+1號埠進行監聽,在我們這個例子裡則是12346埠了。伺服器將使用資料埠20來主動連線客戶端的12346埠進行資料傳輸。

        如果客戶端處在一個區域網內通過防火牆或路由器連線到公網,那伺服器很可能將連線不上客戶端的12346埠,除非客戶的網管給客戶端做了1對1的公網地址對映。因此主動模式有很大的侷限性,大部分場景下都不適用。

        既然主動模式連線不上,那就改為使用被動模式吧。被動模式下,FTP客戶端隨機開啟一個大於1024的埠N,我們仍然假定是12345埠吧,向伺服器的21埠發起連線,然後客戶端會開啟N+1號埠,在我們這個例子裡則是12346埠,並且告訴伺服器我倆使用被動模式來進行通訊。伺服器收到命令後,會開放一個大於1024的隨機埠進行監聽,我們假定也是12345吧,然後伺服器再告訴客戶端,你來連線我的12345埠吧,我是雲主機我有公網IP,你可以連得上。這樣客戶端的12346埠去連線伺服器的12345埠進行資料通訊,就這樣愉快地開始進行資料傳輸。

        可是請注意,天翼雲上有安全組在保護著我們的雲主機,哪能隨便讓客戶端去連12345埠。好吧,那就去配置安全組,允許訪問12345埠吧。可是請注意,預設情況下伺服器端開放的資料連線埠是個隨機埠,每一次FTP連線都是一個隨機埠。這次是12345埠,下一次可能就是54321埠了。

        那怎麼辦呢?

        這時候你可能想到,在安全組上配置把1024-65535這段埠全部放開嘛。很好,我很佩服你的思路。

        這種方案並不是不可以,而是太不安全了,相當於雲主機完全暴露在公網上。這好像在向告訴黑客,來呀來呀,來攻擊我呀。

        其實隨機埠的問題最佳的解決方法是把被動模式的隨機埠改為使用一個固定的埠範圍,再把這個固定埠範圍配置到安全組的允許埠列表裡就行了。

        至於埠範圍使用哪個埠範圍,就取於使用者自己的業務需求了。大於1024的埠都可以使用,前提是不與其它業務衝突。埠的範圍大於取決於FTP的併發數,如果有100個併發使用者,那埠的範圍大小至少要100個埠了。

    本文就以被動模式埠範圍設為30010-30020為例介紹Windows和Linux作業系統下FTP伺服器的設定。

    以Windows IIS FTP伺服器中,找到【FTP防火牆支援】,配置資料通道埠範圍為30010-30020。

    Linux下常用的VSFTPD則是配置vsftpd.conf,加入以下配置,並且重啟VSFTPD使配置生效。

    pasv_enable=yes

    pasv_min_port=30010

    pasv_max_port=30020

        當然雲平臺安全組的配置中,還需要開放TCP 21及TCP 30010-30020的訪問。

 

        最後,如果Windows雲主機上配置了Windows防火牆或者Linux上配置了iptables防火牆,還需要在雲主機防火牆上開放TCP 21埠及TCP 30010-30020埠。

        終於FTP客戶端又能從服務端愉快地上傳下載資料了。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2884991/,如需轉載,請註明出處,否則將追究法律責任。

相關文章