華爲ECS雲服務器 Ubuntu 安裝和配置FTP教程

折騰了一下在雲服務器上搭建FTP,可以在瀏覽器輸入公網IP查看共享的文件,也就是創建下載點。現記錄如下。
 
第一種場景:匿名訪問,通過瀏覽器輸入公網地址即可實現下載
 
 
 
 
 
第二種場景:輸入指定的用戶名和密碼,可進入到另一個目錄,可實現下載和上傳與新建。例如通過FileZilla.
 
 
0、環境
 
華爲雲ECS ubuntu18.04, vsftpd 3.0.3
 
一、FTP登陸方式
 
FTP可以有三種登入方式分別是:
 
  • *匿名登錄:不需要用戶密碼
  • *本地用戶:使用本地用戶和密碼登入
  • *虛擬用戶:也是使用用戶和密碼登入,但是該用戶不是linux中創建的用戶
二、FTP連接方式
 
  • 控制連接:標準端口爲21,用於發送FTP命令信息。
  • 數據連接:標準端口爲20,用於上傳、下載數據。
  • 主動模式:服務端從20端口主動向客戶端發起連接。
  • 被動模式:服務端在指定範圍內的某個端口被動等待客戶端發起連接。
一般都採用被動模式。主動模式存在安全隱患,客戶機很容易發起DdoS攻擊。
 
三、FTP傳輸模式
 
  • 文本模式:ASCII模式,以文本序列傳輸數據。
  • 二進制模式:Binary模式,以二進制序列(比特流)傳輸數據。
ASCII模式一般只用於純文本文件傳輸,而Binary模式更適合傳輸程序、圖片等文件。尤其是對於可執行文件,如果把可執行文件以文本模式傳輸,則下載下來的文件將無法正常使用。
 
四、FTP安裝和啓動
 
  • 安裝:apt-get install vsftpd
  • 啓動:service vsftpd restart  或者 service vsftpd start
  • 查詢:service vsftpd status
  • 停止:service vsftpd stop
  • 服務器放行規則設定:打開20-21 3000-3050(我配置的是3000-3050)
  •  
五、文件結構
 
vsftpd服務器的文件結構如下:
 
/usr/sbin/vsftpd              ##vsftpd主程序  
/etc/rc.d/init.d/vsftpd       ##用於啓動終止腳本  
/etc/vsftpd/vsftpd.conf       ##vsftpd主配置文件  
/etc/pam.d/vsftpd             ##PAM認證文件  
/etc/vsftpd.ftpusers          ##禁止使用vsftpd的用戶列表  
/etc/vsftpd.chroot_list       ##禁止或允許使用vsftpd的用戶列表  需要在/etc/ 新建該文件
/srv/ftp                      ##匿名用戶的下載目錄  
/etc/logrotate.d/vsftpd.log   ##vsftpd的日誌文件

六、配置文件說明

 
#一旦監聽,進入standalone模式,與此相對的是inetd(inetd或xinetd)模式
listen=YES
# 是否監聽ipv6,如果監聽則需要另外再配置一個文件
listen_ipv6=NO
#是否允許匿名訪問ftp
anonymous_enable=YES
#是否允許本地用戶登錄,指linux存在的用戶,cat /etc/passwd 可以查看哪些用戶,標準的七字段,默認NO
local_enable=YES
# 是否對登錄用戶開啓寫權限。屬全局性設置。默認NO
write_enable=YES
#本地登錄用戶權限,022-umask=755,即代表文檔的所有者(屬主)有讀寫執行權,所屬組有讀和執行權,其他用戶有讀和執行權
local_umask=022
#是否允許匿名用戶上傳文件。只有在write_enable設置爲YES時,該配置項纔有效。而且匿名用戶對相應的目錄必須有寫權限。默認爲NO。
#anon_upload_enable=YES
#是否允許匿名用戶創建目錄。只有在write_enable設置爲    YES時有效。且匿名用戶對上層目錄有寫入的權限。默認爲NO。
#anon_mkdir_write_enable=YES
#設置是否顯示目錄消息
dirmessage_enable=YES
#顯示時間
use_localtime=YES
#是否啓用上傳和下載日誌
xferlog_enable=YES
#默認值爲YES,指定FTP數據傳輸連接使用20端口。若設置爲NO,則進行數據連接時,所使用的端口由ftp_data_port指定。
connect_from_port_20=YES

#設置匿名上傳文檔的屬主,默認爲NO。若設置爲YES,則匿名用戶上傳的文檔的屬主將被設置爲chown_username配置項所設置的用戶名。
#chown_uploads=YES
#設置匿名用戶上傳的文檔的屬主名。只有chown_uploads=YES時纔有效。建議不要設置爲root用戶。 但系統默root
#chown_username=whoever
#默認的系統日誌,設置日誌文件名及路徑。需啓用xferlog_enable選項
xferlog_file=/var/log/vsftpd.log

#日誌文件是否使用標準的xferlog日誌文件格式(與wu-ftpd使用的格式相同) 。默認爲NO
xferlog_std_format=YES
#設置多長時間不對FTP服務器進行任何操作,則斷開該FTP連接,單位爲秒,默認爲600秒。即設置發呆的逾時時間,在這個時間內,若沒有數據傳送或指令的輸入,則會強行斷開連接。
idle_session_timeout=600
#設置建立FTP數據連接的超時時間,默認爲300秒
data_connection_timeout=120

#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES

#設置是否啓用ASCII模式上傳、下載數據。默認爲NO。
#ascii_upload_enable=YES
#ascii_download_enable=YES

#連接FTP的歡迎提示
ftpd_banner=Welcome to Jack  FTP service.
#
#指定不允許通過郵箱登錄的文件,可以抵禦DoS攻擊。
#deny_email_enable=YES
#郵箱文件
#banned_email_file=/etc/vsftpd.banned_emails

# 控制用戶是否允許切換到上級目錄
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
#1)當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd/chroot_list文件中列出的用戶,可以切換到上級目錄;未在文件中列出的用戶,不能切換到站點根目錄的上級目錄。
#2)當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd/chroot_list文件中列出的用戶,不能切換到站點根目錄的上級目錄;未在文件中列出的用戶,可以切換到上級目錄。
#3)當chroot_list_enable=NO,chroot_local_user=YES時,所有用戶均不能切換到上級目錄。
#4)當chroot_list_enable=NO,chroot_local_user=NO時,所有用戶均可以切換到上級目錄。
#5)當用戶不允許切換到上級目錄時,登錄後FTP站點的根目錄“/”是該FTP賬戶的主目錄,即文件的系統的/srv/ftp目錄。

#被動模式下的設置,設置公網IP,和接收請求IP與端口,這裏指定了服務器端口3000-3050用於發起到客戶端連接,端口設置爲0,則表示任意端口
pasv_address=XXX.XXX.XXX.XXX
pasv_min_port=3000
pasv_max_port=3050
#默認採用被動模式
#pasv_enable=NO
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#

# This option should be the name of a directory which is empty.  Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd/empty
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

# Uncomment this to indicate that vsftpd use a utf8 filesystem.
utf8_filesystem=YES

#################end#######################

其他說明:

#定義匿名用戶的賬戶名稱,默認值爲ftp。
ftp_username=ftp           
#匿名用戶是否允許下載可閱讀的文檔,默認爲YES。
anon_world_readable_only=YES
#設置本地用戶登錄後所在的目錄。默認配置文件中沒有設置該項,此時用戶登錄FTP服務器後,所在的目錄爲該用戶的主目錄,對於root用戶,則爲/root目錄。
local_root=/var/ftp             
#設置匿名用戶登錄後所在的目錄。若未指定,則默認爲/srv/ftp目錄。
anon_root=/srv/ftp            
#設置匿名用戶所能使用的最大傳輸速度,單位爲b/s。若設置爲0,則不受速度限制,此爲默認值。
anon_max_rate=0       
#設置本地用戶所能使用的最大傳輸速度。默認爲0,不受限制。
local_max_rate=0       

#對用戶的訪問控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件來控制實現。相關配置命令如下:
userlist_enable=YES   
#決定/etc/vsftpd/user_list文件是否啓用生效。YES則生效,NO不生效。
userlist_deny=YES       
#決定/etc/vsftpd/user_list文件中的用戶是允許訪問還是不允許訪問。
#若設置爲YES,則/etc/vsftpd/user_list 文件中的用戶將不允許訪問FTP服務器;若設置爲NO,則只有vsftpd.user_list文件中的用戶,才能訪問FTP服務器。

#設置vsftpd允許的最大連接數,默認爲0,表示不受限制。若設置爲150時,則同時允許有150個連接,超出的將拒絕建立連接。只有在以standalone模式運行時纔有效。
max_per_ip=0
#設置每個IP地址允許與FTP服務器同時建立連接的數目。默認爲0,不受限制。通常可對此配置進行設置,防止同一個用戶建立太多的連接。只有在以standalone模式運行時纔有效
max_clients=0
#設置在指定的IP地址上偵聽用戶的FTP請求。若不設置,則對服務器所綁定的所有IP地址進行偵聽。只有在以standalone模式運行時纔有效。 對於只綁定了一個IP地址的服務器,不需要配置該項,默認情況下,配置文件中沒有該配置項。若服務器同時綁定了多個IP地址,則應通過該配置項,指定在哪 個IP地址上提供FTP服務,即指定FTP服務器所使用的IP地址。
listen_address=IP地址        

七、遇到的問題及解決

外網服務器搭建FTP 出現的問題及解決:
(1)227 Entering Passive Mode
         解決方法第一種就是配置爲主動模式。
          vim etc/vsftpd/vsftpd.conf     ##Vsftpd主配置文件
          添加:pasv_enable=NO
          注意的是:瀏覽器訪問只支持FTP的被動模式,也就是說只有在FTP配置成被動模式時,才能在遠程瀏覽器裏通過url訪問
 
         第二種解決方法
         指定公網ip 用listen_address.
 
八、其他
 

默認情況下,匿名用戶所有上傳下載,所使用的用戶都是ftp用戶的權限,若要上傳文件,則需要ftp用戶有寫的權限,若要下載,則需要ftp用戶有讀的權限,也就是說一般情況下,ftp用戶對文件有讀權限就對文件有下載權限了。

九、創建用戶和密碼
 
(1) 創建一個名叫ftpu的用戶,並指定他的根目錄爲/home/ftpdir
 
useradd -d /home/ftpdir/ -s /bin/bash ftpu

(2)設置密碼

passwd ftpu

(3)查看

cat /etc/passwd

十、xinetd運行模式和 standalone模式

像其它守護程序一樣,vsftpd提供了standalone和inetd(inetd或xinetd)兩種運行模式。簡單解釋一下, standalone一次性啓動,運行期間一直駐留在內存中,優點是對接入信號反應快,缺點是損耗了一定的系統資源,因此經常應用於對實時反應要求較高的 專業FTP服務器。inetd恰恰相反,由於只在外部連接發送請求時才調用FTP進程,因此不適合應用在同時連接數量較多的系統。此外,inetd模式不 佔用系統資源。除了反應速度和佔用資源兩方面的影響外,vsftpd還提供了一些額外的高級功能,如inetd模式支持per_IP(單一IP)限制,而 standalone模式則更有利於PAM驗證功能的應用。

 
1.xinetd運行模式
 
大多數較新的系統採用的是xinetd超級服務守護進程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的內容,如下:
disable = no 
socket_type = stream
wait = no
# 這表示設備是激活的,它正在使用標準的TCP Sockets。
# 如果“/etc/vsftpd.conf”中的有選項爲“listen=YES”,註銷它
最後,重啓xinetd,命令如下:
$ /etc/rc.d/init.d/xinetd restart
#需要注意的是,“/etc/xinetd.d”目錄中僅能開啓一個FTP服務。

2.standalone模式

standalone模式便於實現PAM驗證功能。進入這種模式首先要關閉xinetd下的vsftpd,設置“disable = yes”,或者註銷掉“/etc/inetd.conf”中相應的行。然後修改“/etc/vsftpd.conf”中的選項爲“listen=YES”。

如果是standlone模式,那麼它是作爲單獨的一個服務啓動的,不需要系統協作,不作爲系統服務,如果要是成爲xinetd模式,那麼它的服務就要受系統服務的限制,比如創建一個新的服務進程,但是也有缺點,如果xinetd服務本身出了問題,那麼相關的服務也是會受到影響的。

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