阿里雲伺服器配置開發環境第六章:Centos7.3安裝vsftpd

Simon發表於2017-08-06

vsftpd是什麼?

簡介

vsftpd是“very secure FTP daemon”的縮寫,是一個完全免費的,開放原始碼的ftp伺服器軟體

特點

vsftpd是一款在Linux發行版中最受推崇的FTP伺服器程式,小巧輕快,安全易用,支援虛擬使用者,支援頻寬限制等功能

vsftpd的安裝

  1. 安裝vsftpd

    yum -y install vsftpd
    # 1. 是否使用sodu許可權執行請根據你具體環境來決定
    # 2. rpm -qa| grep vsftpd可通過這個檢查是否已經安裝vsftpd
    # 3. 預設配置檔案在/etc/vsftpd/vsftpd.conf
  2. 建立虛擬使用者

    1. 選擇在home目錄下建立ftp資料夾 (vsftpd2.5版本後就不允許在根目錄建立資料夾有寫的許可權,這個坑坑 了我好幾天)

      cd /
      md ftpfile
    2. 新增匿名使用者

      useradd ftpuser -d /ftpfile -s /sbin/nologin    
    3. 修改ftpfile許可權

      chown -R ftpuser.root /ftpfile
    4. 重設ftpuser密碼

      passwd ftpuser
  3. 配置vsftpd

    cd /etc/vsftpd 
    sudo vi chroot_list
    # 把剛剛新增的虛擬使用者新增到此配置檔案中  寫入ftpuser儲存退出
    
    sudo vi vsftpd.conf
    # 在末尾新增以下配置  注意 不可有重複配置項 否則啟動失敗
    local_root=/ftpfile # (當本地使用者登入時,將被更換到定義的目錄下,預設值為各使用者的家目錄)
    anon_root=/ftpfile # (使用匿名登入時,所登入的目錄)
    use_localtime=YES # (預設是GMT時間,改成使用本機系統時間)
    anonymous_enable=NO # (不允許匿名使用者登入)
    local_enable=YES # (允許本地使用者登入)
    write_enable=YES # (本地使用者可以在自己家目錄中進行讀寫操作)
    local_umask=022 # (本地使用者新增檔案時的umask值)
    dirmessage_enable=YES # (如果啟動這個選項,那麼使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,如果有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。預設值為開啟)
    xferlog_enable=YES # (是否啟用上傳/下載日誌記錄。如果啟用,則上傳與下載的資訊將被完整紀錄在xferlog_file 所定義的檔案中。預設為開啟。)
    connect_from_port_20=YES # (指定FTP使用20埠進行資料傳輸,預設值為YES)
    xferlog_std_format=YES # (如果啟用,則日誌檔案將會寫成xferlog的標準格式)
    ftpd_banner=Welcome to HelloWord FTP Server # (這裡用來定義歡迎話語的字串)
    chroot_local_user=NO # (用於指定使用者列表檔案中的使用者是否允許切換到上級目錄)
    chroot_list_enable=YES # (設定是否啟用chroot_list_file配置項指定的使用者列表檔案)
    chroot_list_file=/etc/vsftpd/chroot_list # (用於指定使用者列表檔案)
    listen=YES # (設定vsftpd伺服器是否以standalone模式執行,以standalone模式執行是一種較好的方式,此時listen必須設定為YES,此為預設值。建議不要更改,有很多與伺服器執行相關的配置命令,需要在此模式下才有效,若設定為NO,則vsftpd不是以獨立的服務執行,要受到xinetd服務的管控,功能上會受到限制)
    pam_service_name=vsftpd # (虛擬使用者使用PAM認證方式,這裡是設定PAM使用的名稱,預設即可,與/etc/pam.d/vsftpd對應) userlist_enable=YES(是否啟用vsftpd.user_list檔案,黑名單,白名單都可以
    allow_writeable_chroot=YES  # 如果啟用了限定使用者在其主目錄下需要新增這個配置
    pasv_min_port=61001 # (被動模式使用埠範圍最小值)
    pasv_max_port=62000 # (被動模式使用埠範圍最大值)
    pasv_enable=YES 
    # 若設定為YES,則使用PASV工作模式;若設定為NO,則使用PORT模式。預設值為YES,即使用PASV工作模式。
    # FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
    # 一、PORT(主動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。 
    # 當需要傳送資料時,客戶端在命令鏈路上用 PORT命令告訴伺服器:“我開啟了****埠,你過來連線我”。於是伺服器從20埠向客戶端的****埠傳送連線請求,建立一條資料鏈路來傳送資料。
    # 二、PASV(被動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。 
    # 當需要傳送資料時,伺服器在命令鏈路上用 PASV命令告訴客戶端:“我開啟了****埠,你過來連線我”。於是客戶端向伺服器的****埠傳送連線請求,建立一條資料鏈路來傳送資料。 
    # 從上面可以看出,兩種方式的命令鏈路連線方法是一樣的,而資料鏈路的建立方法就完全不同。而FTP的複雜性就在於此。
    # 重新啟動服務
    systemctl restart vsftpd.service
    sudo vi /etc/selinux/config # 修改為SELINUX=disabled 
    # :wq! 
    # 注: 如果驗證的時候碰到550拒絕訪問請執行: sudo setsebool -P ftp_home_dir 1  然後重啟linux伺服器,執行reboot命令
    # 本機測試
    yum install ftp -y
    ftp localhost
  4. 防火牆配置

    sudo vi /etc/sysconfig/iptables
    -A INPUT -p TCP --dport 61000:62000 -j ACCEPT
    -A OUTPUT -p TCP --sport 61000:62000 -j ACCEPT
    -A INPUT -p TCP --dport 20 -j ACCEPT
    -A OUTPUT -p TCP --sport 20 -j ACCEPT
    -A INPUT -p TCP --dport 21 -j ACCEPT
    -A OUTPUT -p TCP --sport 21 -j ACCEPT
    # 將以上配置新增到防火牆配置中
    # :wq儲存退出
    sudo service iptables restart # 執行命令重啟防火牆

相關文章