首頁 > 軟體

ubuntu如何搭建vsftpd伺服器

2022-12-15 14:04:16

一、vsftpd是什麼?

vsftpd 是very secure FTP daemon的縮寫,安全性是它的一個最大的特點。

vsftpd 是一個 UNIX 類作業系統上執行的伺服器的名字,它可以執行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開放原始碼的ftp伺服器軟體。

二、搭建過程

1.查詢vsftpd是否存在和安裝成功

命令如下:

whereis vsftpd

vsftpd服務未安裝顯示如下:

2.安裝vsftpd

命令如下:

sudo apt-get install vsftpd

安裝過程:

再次查詢vsftpd服務,如圖所示:

3.查詢vsftpd版本號

vsftpd -version

版本號顯示如下,說明安裝成功。

4.其他命令

查詢vsftpd狀態

service vsftpd status

開啟vsftpd

sudo service vsftpd start

重啟vsftpd

sudo service vsftpd restart

關閉vsftpd

sudo service vsftpd stop

該處使用的url網路請求的資料。

5.使用匿名使用者登入

1、修改vsftpd的組態檔

sudo vi /etc/vsftpd.conf

將組態檔中:anonymous_enable=YES

2、使用ftp工具連線到自己的伺服器,輸入使用者名稱anonymous,密碼為空。

登入成功後,應該看到下面的提示資訊:

3、ubuntu20.04匿名使用者的目錄是 /srv/ftp,不同版本的目錄不一樣。在該目錄下,建立空檔案welcome。

sudo touch welcome

現在可以使用FTP使用者端看到這個檔案了。

三、使用者設定

1.匿名使用者登入

前面已經設定完成,不再贅述。

2.本地使用者登入

2.1本地使用者登入設定

在一個網點內部,FTP更多的情況下被設定為向授權使用者開放。為此,使用者應該在伺服器上擁有自己的賬號。vsftpd把這樣的使用者成為本地使用者。

修改vsftpd的組態檔,重啟FTP伺服器。

sudo vi /etc/vsftpd.conf
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES

出於安全性,有一些使用者不允許通過FTP登入,vsftpd將這些使用者整理在 /etc/ftpusers中。

這是FTP黑名單,所有被列入其中的使用者都不能通過FTP登入進來。

2.2 限制使用者在本地目錄中

vsftpd提供了chroot(change root)系統呼叫,使其它目錄對使用者不可見,也不可存取。

修改vsftpd的組態檔中以下設定。

# You may restrict local users to their home directories.  See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES

類似的,也可以知道哪些使用者受限,通過組態檔chroot_list_file。

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list

3.使用虛擬使用者

3.1 建立虛擬使用者資料庫檔案

安裝建立資料庫檔案需要使用的db工具:

sudo apt-get install db-util

db工具通過讀取一個特定格式的文字檔案來建立資料庫檔案,這個檔案為每個使用者預留2行,第一行為使用者名稱,第二行為密碼。

建立檔案login_user,包含內容:

fei
123456

執行db_load 命令,通過~/login_user(由-f選項指定)建立資料庫檔案/etc/vsftpd_login.db。

sudo db_load -T -t hash -f /home/xuzhanfei/login_user /etc/vsftpd_login.db
  • -T:通過文字檔案建立
  • -t hash:通過雜湊表的資料結構建立資料庫

最後,更改許可權,使其只對root使用者可見:

sudo chmod 600 /etc/vsftpd_login.db 

3.2 設定PAM驗證

/etc/pam.d/vsftpd 是vsftpd 預設使用的PAM驗證檔案,在該檔案中加入以下兩行,其餘內容遮蔽:

auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
account required  /lib/x86_64-linux-gnu/security/pam_userdb.so  db=/etc/vsftpd_login

同時,修改vsftpd的組態檔中以下設定。

# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd

3.3 建立本地使用者對映

下面做一些設定,將登入進來的使用者對映到一個指定的非特權使用者,這裡就使用ftp使用者。

修改vsftpd的組態檔中以下設定:

# 啟用訪客身份
guest_enable=YES
# 對映使用者
guest_username=ftp

3.4 設定使用者目錄和許可權

將 fei 使用者目錄設定為 /home/ftp/fei,賦予讀寫許可權。

首先,為使用者建立主目錄,虛擬使用者登入後自動對映為本地ftp 使用者,因此,把目錄的屬主設定為 ftp 使用者:

sudo mkdir /srv/ftp/fei
sudo chown ftp /srv/ftp/fei/ ##設定目錄的屬主

接下來,設定使用者的目錄和許可權,先建立路徑:

sudo mkdir /etc/vsftpd_user_conf

修改vsftpd的組態檔中以下設定:

# 存放使用者設定的目錄
user_config_dir=/etc/vsftpd_user_conf

新增 fei 的文字檔案,增加以下內容:

# 開啟vsftpd的全域性寫許可權
write_enable=YES
# 開啟檔案上傳許可權
anon_upload_enable=YES
# 開啟建立目錄的許可權
anon_mkdir_write_enable=YES
local_root=/srv/ftp/fei/

重啟 vsftpd 服務。

注:未解決本地使用者和虛擬使用者登入衝突的問題

四、公網vsftpd伺服器設定

1 伺服器設定成被動模式

PASV(被動)方式的連線過程是:使用者端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。當需要傳送資料時,伺服器在命令鏈路上用PASV命令告訴使用者端:“我開啟了XXX埠,你過來連線我”。於是使用者端向伺服器的XXX埠傳送連線請求,建立一條資料鏈路來傳送資料。

被動模式也會存在防火牆的問題,使用者端與伺服器端傳輸資料時,在伺服器端也會有防火牆,但在伺服器端的防火牆有連線追蹤的功能,解決了防火牆的問題。因此,一般使用被動模式比較多。

修改vsftpd的組態檔中以下設定。

pasv_enable=YES           (使能被動連線)
pasv_min_port=9981         (被動連線伺服器建立的埠XXX)
pasv_max_port=9983
pasv_address=192.194.203.142 (路由器靜態IP地址)

2 路由器埠對映

(1)外網想要連線FTP伺服器,需要知道資料傳輸的埠9981-9983。

(2)資料埠是隨機的,那麼伺服器該如何將這些亂資料埠對映到公網的路由器上呢???

(3)我們需要把命令埠21和隨機的資料埠對映到公網的埠(該埠需要開通許可權),例如:學校開放公網埠為:9981-9983。

3 Linux伺服器開放上述用到的埠

驗證埠開放成功:

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com