導航:首頁 > 編程系統 > linuxftp協議

linuxftp協議

發布時間:2024-08-10 08:20:18

㈠ 如何藉助vsftpd在linux上構建安全的FTP服務

FTP(文件傳輸協議)是互聯網上廣泛使用的服務之一,主要用於將文件從一個主機傳輸到另一個主機。FTP本身當初不是作為一種安全協議而設計的;正因為如此,典型的FTP服務很容易遭受諸如中間人攻擊和蠻力攻擊之類的常見攻擊。

許多具有安全功能的應用程序可用來構建安全的FTP服務。比如說,FTPS(安全Secure)使用SSL/TLS證書,對端到端數據進行加密。基於客戶端的需求,FTPS可加以配置,以支持經過加密及/或未經過加密的連接。SFTP(SSH文件傳輸協議)是另一種為傳輸中數據確保安全的方法。SFTP是作為SSH的一種擴展技術而開發的,同樣可以結合其他安全協議使用。
教程將著重介紹藉助SSL/TLS已被啟用的vsftpd,構建和保護FTP服務。
先稍微介紹一下背景:典型的FTP伺服器偵聽TCP埠20以監視數據、偵聽TCP埠以監視命令(又叫控制埠)。連接的建立和命令參數的交互都通過埠21來完成。FTP連接支持兩種方法:主動模式和被動模式。在主動模式下的連接建立過程中,伺服器建立一條從其埠20(數據)到客戶機的連接。在被動模式下,伺服器為每一個客戶機會話專門指定了隨機性數據埠,並將該埠通知客戶機。隨後,客戶機建立一條通向伺服器隨機性埠的連接。
據RFC 1635顯示,FTP支持通過特殊用戶anonymous進行的公眾訪問,不需要任何密碼,或者通過用戶ftp、使用密碼ftp來進行訪問。除了這類公眾用戶外,vsftpd還支持本地Linux用戶進行的登錄。Linux用戶可以通過使用FTP連接到伺服器,並提供登錄信息,訪問其主目錄,即/home/user。
把vsftpd安裝到Linux上
如果想把vsftpd安裝到Ubuntu、Debian或Linux Mint上,可以使用apt-get命令。系統一啟動,vsftpd服務就會自動啟動。
$ sudo apt-get install vsftpd

如果想把vsftpd安裝到CentOS、Fedora或RHEL上,我們可以使用yum來輕松完成安裝。服務啟動後,還被添加到系統啟動項。
# yum install vsftpd
# service vsftpd start
# chkconfig vsftpd on

使用vsftpd的一種最基本的FTP服務現已准備好使用。我們只要將瀏覽器指向URL ftp://[ServerName/IP],或者使用FileZilla等FTP客戶軟體、使用用戶名anonymous,無需密碼來連接,或使用用戶名ftp、密碼ftp來連接,就可以訪問FTP服務。
vsftpd安裝完畢後,系統用戶ftp連同主目錄/var/ftp已被添加到系統中。只要建立了匿名FTP連接,會話總是默認使用/var/ftp目錄。所以,我們可以將該目錄用作FTP公眾用戶的主目錄。放在/var/ftp下面的任何文件/目錄都可以通過ftp://[ServerName/IP]加以訪問。
vsftpd配置文件的位置出現在下面兩個地方:
•Ubuntu、Debian或Linux Mint:/etc/vsftpd.conf
•CentOS、Fedora或RHEL:/etc/vsftpd/vsftpd.conf

在本教程的其餘部分,使用你Linux系統上的對應位置的vsftpd.conf文件。
調整FTP用戶
如果想禁用公眾訪問,我們就要在vsftpd.conf中明確禁止用戶anonymous。注釋掉這一行不管用,因為vsftpd使用默認值運行。你還需要重啟vsftpd。
anonymous_enable=NO
# service vsfptd restart

因而就要啟用強制性驗證;只有現有的Linux用戶才能夠使用其登錄信息來進行連接。
若想啟用/禁用本地用戶,我們可以修改vsftpd.conf文件。如果我們禁用本地用戶,就得確保用戶anonymous已被授予訪問許可權。
local_enable=YES/NO
# service vsfptd restart

如果想使用特定用戶連接到系統,我們只要將URL改成ftp://username@[ServerName/IP]。相應用戶的主目錄可使用這種方法,通過FTP來加以訪問。
將用戶限制在各自的主目錄
用戶使用FTP訪問遠程伺服器時,用戶可以瀏覽整個系統,只要文件/目錄是可讀取的。根本不建議這么做,因為任何用戶都能通過FTP會話,讀取和下載/etc、/var、/usr 及其他位置下面的系統文件。
想限制本地用戶在FTP會話期間只能訪問各自的主目錄,我們可以修改下面這個參數。
chroot_local_user=YES
# service vsftpd restart

現在,本地用戶只能夠訪問其主目錄了,無法訪問系統中的其他任何文件或目錄。
啟用SSL/TLS加密
FTP原本是一種明文協議,這意味著誰都可以輕松窺視在客戶機與遠程FTP伺服器之間所傳輸的文件。想對FTP通信內容進行加密,可以啟用vsftpd中的SSL/TLS。
第一步是創建SSL/TLS證書和私鑰,如下所示。它會將所創建的證書/私鑰存放在目標.pem文件中。
在Debian/Ubuntu上:
$ sudo openssl req -x509 -days 365 -newkey rsa:2048 –node
s -keyout /etc/vsftpd.pem -out /etc/vsftpd.pem

在CentOS/Fedora/RHEL上:
$ sudo openssl req -x509 -days 365 -newkey rsa:2048 –node
s -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

然後,將下面這些參數添加到vsftpd.conf配置文件中。
# 啟用TLS/SSL
ssl_enable=YES
# 強迫客戶機在登錄時使用TLS
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
# 指定SSL證書/私鑰(Debian/Ubuntu)
# 如果是CentOS/Fedora/RHEL,將其換成/etc/vsftpd/vsftpd.pem
rsa_cert_file=/etc/vsftpd.pem
rsa_private_key_file=/etc/vsftpd.pem
# 為被動模式下的連接定義埠范圍
pasv_max_port=65535
pasv_min_port=64000

最後重啟vsftpd。
# service vsftpd restart

控制連接和帶寬
vsftpd提供了幾種方法來控制連接和用戶帶寬。我們將使用幾種方法來調整我們的FTP伺服器。
## 為每個匿名會話分配的帶寬設置為大約30 KB/s ##
anon_max_rate=30000
## 每個本地用戶被授予大約30 KB/s的帶寬##
local_max_rate=30000
## 客戶機會話閑置300秒後被終止##
idle_session_timeout=300
## 每個源IP地址的最大連接數量,這有助於防範拒絕服務(DoS)和分布式拒絕服務攻擊(DDoS)#
max_per_ip=50

調整防火牆
最後,如果你在系統(比如CentOS)上運行iptables防火牆,就要確保調整防火牆規則,允許FTP流量通過。下面這些規則應當有助於你開始上手。
# iptables -I INPUT -p tcp --dport 20 -j ACCEPT
# iptables -I INPUT -p tcp --dport 21 -j ACCEPT
# iptables -I INPUT -p tcp --dport 64000:65535 -j ACCEPT

頭兩條規則允許流量通過FTP數據/控制埠。最後一條規則允許被動模式下的連接,其埠范圍已經在vsftpd.conf中予以定義。
啟用日誌功能
萬一你在本教程的FTP服務構建過程中遇到任何問題,可以啟用日誌功能,為此只需修改vsftpd.conf中的下面這個參數:
xferlog_enable=YES
xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
debug_ssl=YES
# service vsftpd restart

藉助FileZilla連接到FTP伺服器
現在有幾款FTP客戶軟體支持SSL/TLS,尤其是FileZilla。想通過FileZilla連接到支持SSL/TLS的網站,就要為FTP主機使用下列設置。

你頭一次連接到支持SSL/TLS的FTP伺服器後,會看到該網站的證書。只管信任證書、登錄上去。

為sftpd排查故障
1. 如果你在連接到FTP伺服器的過程中遇到了下面這個錯誤,這可能是由於你的防火牆阻止FTP流量。為此,確保你在防火牆上打開了必要的FTP埠,如上所述。
ftp: connect: No route to host

2. 如果你連接到在CentOS/RHEL上運行的使用chroot改變根目錄的FTP伺服器時遇到了下面這個錯誤,禁用SELinux是一個辦法。
500 OOPS: cannot change directory:/home/dev
Login failed.

雖然關閉SELinux是一個快速的解決辦法,但在生產環境下這么做可能不安全。所以,改而打開SELinux中的下列布爾表達式可以解決這個問題。
$ sudo setsebool -P ftp_home_dir on

3. 如果你通過FileZilla訪問支持SSL/TLS的FTP伺服器時遇到了下列錯誤,就要確保在vsftpd.conf中添加「ssl_ciphers=HIGH」。FileZilla並不支持默認密碼(DES-CBC3-SHA)。
Trace: GnuTLS alert 40: Handshake failed
Error: GnuTLS error -12: A TLS fatal alert has been received.
"SSL_accept failed: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher"

總而言之,使用vsftpd構建FTP伺服器並非難事。針對用戶anonymous的默認安裝應該能夠支持小型的常見FTP服務。Vsftpd還有許多可以調整的參數(詳見http://linux.die.net/man/5/vsftpd.conf),讓它顯得用途廣泛。

㈡ linux scp、ftp和sftp有什麼區別,傳輸文件那個速度快

傳輸文件使用ftp協議速度快。

區別如下:

一、指代不同

1、scp:是用來進行遠程文件拷貝的,是 SSH 中最方便有用的命令。

2、ftp:是 TCP/IP 協議組中的協議之一。

3、sftp:安全文件傳送協議。可以為傳輸文件提供一種安全的網路的加密方法。

二、使用方式不同

1、scp:scp 在需要進行驗證時會要求你輸入密碼或口令。

2、ftp:FTP伺服器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位於FTP伺服器上的資源。

3、sftp:為SSH的其中一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。


三、特點不同

1、scp:數據傳輸使用 ssh,並且和ssh 使用相同的認證方式,提供相同的安全保證 。

2、ftp:下FTP協議使用TCP埠中的 20和21這兩個埠,其中20用於傳輸數據,21用於傳輸控制信息。

3、sftp:SFTP本身沒有單獨的守護進程,必須使用sshd守護進程(埠號默認是22)來完成相應的連接和答復操作,所以從某種意義上來說,SFTP並不像一個伺服器程序,而更像是一個客戶端程序。

閱讀全文

與linuxftp協議相關的資料

熱點內容
word2003格式不對 瀏覽:86
百度雲怎麼編輯文件在哪裡 瀏覽:304
起名app數據哪裡來的 瀏覽:888
微信怎麼去泡妞 瀏覽:52
百度廣告html代碼 瀏覽:244
qq瀏覽器轉換完成後的文件在哪裡 瀏覽:623
jsp中的session 瀏覽:621
壓縮完了文件去哪裡找 瀏覽:380
武裝突襲3浩方聯機版本 瀏覽:674
網路機頂盒移動網路 瀏覽:391
iphone手機百度雲怎麼保存到qq 瀏覽:148
資料庫設計與實踐讀後感 瀏覽:112
js對象是什麼 瀏覽:744
網頁文件存pdf 瀏覽:567
文件夾正裝 瀏覽:279
剛復制的文件找不到怎麼辦 瀏覽:724
試運行適用於哪些體系文件 瀏覽:987
ghost文件復制很慢 瀏覽:967
傑德原車導航升級 瀏覽:240
編程dest是什麼意思 瀏覽:935

友情鏈接