压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

如何借助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主機使用下列設置。

  如何借助vsftpd在Linux上構建安全的FTP服務?

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

  如何借助vsftpd在Linux上構建安全的FTP服務?

  為sftpd排查故障

  1. 如果你在連接到FTP服務器的過程中遇到了下面這個錯誤,這可能是由于你的防火墻阻止FTP流量。為此,確保你在防火墻上打開了必要的FTP端口,如上所述。

  ftp: connect: No route to host2. 如果你連接到在CentOS/RHEL上運行的使用chroot改變根目錄的FTP服務器時遇到了下面這個錯誤,禁用SELinux是一個辦法。

  500 OOPS: cannot change directory:/home/devLogin failed.雖然關閉SELinux是一個快速的解決辦法,但在生產環境下這么做可能不安全。所以,改而打開SELinux中的下列布爾表達式可以解決這個問題。

  $ sudo setsebool -P ftp_home_dir on3. 如果你通過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),讓它顯得用途廣泛。

  但愿本文有所幫助。

上一篇:智能無懼挑戰 山石網科轟動RSA2015

下一篇:比特兒(Bter.com) 比特幣交易平臺被盜事件全解析