linux-ftp服務部署(詳解)

介紹:

           FTP:是文件傳輸協議的縮寫。

           功能:用來實現文件的上傳(upload)和下載(download)

           ftp的工作端口: 21 : 控制端口,用於在客戶機和服務器之間建立連接

                                    20 : 數據端口,用於服務器給客戶機主動進行數據連接

vsftpd:非常安全文件傳輸協議守護進程(very secure ftp daemon)


vsftpd部署思路:

1.關閉安全功能,並查狀態:

    systemctl  stop  firewalld    ;  setenforce  0                  #關閉防火牆及selinux安全設置

    systemctl  status  firewalld  ;  getenforce                    #查看防火牆狀態,檢查是否關閉

2.查軟件是否已安裝,如果未安裝就安裝軟件。

    rpm  -q  vsftp  ftp  lftp                                                  #vsftpd是服務器端程序, ftp lftp爲客戶端程序 

3.啓動服務,並允許開機自動啓動

   systemctl  restart  vsftpd                                               #重啓vsftpd服務

   systemctl  enable  vsftpd                                               #設置vsftpd開機自啓動

4.設置共享目錄,重新加載設置。

5.做本地(內測)訪問測試,做異地(公測)訪問測試。


實驗環境:

  centos7.6 (以本機IP爲例 192.168.11.11)


安裝步驟:

  yum  install  -y  vsftpd  ftp  lftp                                       #使用yum安裝vsftpd  ftp  lftp 軟件

  systemctl  restart  vsftpd                                                 #啓動服務

  systemctl  enable  vsftpd                                                 #設置開機自啓動

  systemctl  status  vsftpd                                                  #查看服務狀態,爲running 時則服務啓動成功


共享需要的文件:

vsftpd的默認共享目錄:

1.匿名用戶(ftp或anonymous)共享:/var/ftp目錄

2.普通用戶:訪問的是普通用戶自己的家目錄,通常是"/home/用戶名"文件夾

注意:root用戶默認不能登錄vsftpd服務器來訪問共享,因爲root賬號在黑名單裏。


服務測試:

 方式一: ftp 192.168.11.11  回車 再按照提示輸入用戶密碼即可登陸

              image.png

 方式二: lftp  192.168.11.11  -u  用戶名,密碼  即可登陸成功 (例: 用戶名爲tom  密碼爲0 登陸)

              image.png

 在window下可以用資源管理器進行登陸: ftp://192.168.11.11

              image.png


vsftpd配置文件:  rpm  -qc  vsftpd  (查看vsftpd的配置文件)

image.png

圖片上除/etc/logrotate.d/vsftpd 都爲重點


配置文件詳解:


黑名單功能:


/etc/vsftpd/ftpusers  和  /etc/vsftpd/user_list  爲黑名單文件

功能:可以把用戶設置爲黑白名單,限制用戶訪問


例:root用戶默認在黑名單中,把兩個上述文件中的root用#號註釋即可用root用戶訪問

image.png

也可以把其他用戶加入黑名單中

(注: user_list 可以設置爲白名單,在/etc/vsftpd/vsftpd.conf 配置文件中最後一行添加 userlist_deny=NO )

 添加後重啓服務,白名單的用戶可以訪問,而非白名單用戶不能訪問,當黑白名單同時存在時,黑名單優先級大於白名單,也就是隻要出現在  黑名單就不能正常登陸服務

 建議:修改配置文件時最好先備份文件


chroot牢籠功能:

 因登陸的用戶訪問的是自身的家目錄,但可以通過命令查看其他文件,比如根目錄或其他配置文件,所以可以使用chroot牢籠功能限制,只  允許登陸的用戶訪問自己的家目錄

chroot牢籠分爲四種情況:

 1.全部用戶不加鎖(默認,但不安全)

 2.全部加鎖

 3.少數用戶不加鎖

 4.少數用戶加鎖


情況一:使用vim 編輯 配置文件/etc/vsftpd/vsftpd.conf ,並用set nu顯示行號,可以看到以下行數的配置文件,默認不加鎖,不用修改

image.png


情況二:啓動所有普通用戶的牢籠功能(即對所有人加鎖)

按照上述步驟編輯配置文件/etc/vsftpd/vsftpd.conf ,set nu顯示行號,去除101行#號,並添加allow_writeable_chroot=YES,如下圖所示:

image.png


情況三:給指定少數用戶不啓用牢籠功能(即少數人不加鎖)

同理編輯配置文件,並指定白名單路徑,如下圖所示:

image.png

vim編輯/etc/vsftpd/chroot_list,添加不需要啓用牢籠功能的用戶,再重啓服務即可


情況四:給指定的少數普通用戶啓用牢籠功能(即少數人加鎖)

編輯配置文件如下圖所示:

image.png

用#號註釋掉101行 chroot_local_user=YES,此時只有文件/etc/vsftpd/chroot_list 中的用戶啓用了牢籠功能

最後重啓服務(注:每次修改完配置文件都得重啓服務  systemctl  restart  vsftpd)


anonymous匿名用戶功能

實際作用:實現允許anonymous匿名用戶對共享文件具有可讀可寫的權限

分析:想實現上述功能必須滿足以下條件

1.文件共享軟件必須允許這個用戶有可讀可寫的權限。

2.用戶對共享目錄自身要有可讀可寫的權限。

3.匿名用戶僅允許上傳文件到/var/ftp中的子目錄中。如/var/ftp/upload,且ftp匿名用戶對upload目錄要有可讀可寫權限。

(警告:/var/ftp目錄的屬主、屬組不允許修改,且other權限不允許有w可寫權限,否則用ftp匿名用戶訪問共享時會提示下面這個500錯誤:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

           Login failed.

           421 Service not available, remote server has closed connection)


實際操作步驟:

                   

1.編輯配置文件/etc/vsftpd/vsftpd.conf ,去除29 , 30行的#號,再添加兩行代碼,如圖所示:

        image.png

       

代碼解釋:29 #anon_upload_enable=YES      允許匿名用戶上傳

               33 #anon_mkdir_write_enable=YES   允許匿名用戶用mkdir創建目錄

               anon_other_write_enable=YES     允許匿名用戶執行rm刪除等操作(添加此行)

               anon_world_readable_only=NO     關閉匿名用戶只讀的限制(爲YES時會無法下載)


2.用root用戶創建/var/ftp/upload目錄,權限爲777或屬主和屬組均爲ftp,重啓vsftpd服務,使用ftp登陸,即可實現匿名共享

        image.png



ftp服務限速功能:  

即對不同用戶限制不同的文件傳輸速度


1.在配置文件/etc/vsftpd/vsftpd.conf 中添加如下內容:

   user_config_dir=/etc/vsftpd/userconf                        #指定個性化配置文件的主目錄

  image.png


2.創建指定個性化配置文件的主目錄: mkdir -pv /etc/vsftpd/userconf

   使用vim 創建編輯 /etc/vsftpd/userconf/gg

   添加內容: local_max_rate=2000000          #即對名爲gg的用戶上傳和下載速度限制爲2MB/s


vsftpd的tcp_wrapers防火牆設置:

tcp_wrapers功能:一個迷你的防火牆,可以用來做基於tcp協議的應用程序的ip安全訪問控制

配置文件: /etc/hosts.allow (白名單)  ;  /etc/hosts.deny (黑名單)

!技巧:讓少數人爲白戶,那麼先在hosts.deny中做拒絕所有(all)黑名單,然後在hosts.allow中做少數IP的放行白名單。

設置舉例:

格式說明: 守護進程名稱 : 主機名或IP地址

vim  /etc/hosts.deny           #黑名單

vsftpd:192.168.11.1              #拒絕192.168.11.1這臺主機訪問vsftpd共享

sshd:192.168.11.1                 #拒絕192.168.11.1這臺主機訪問sshd共享


vsftpd虛擬用戶功能:

虛擬用戶:即非useradd創建的用戶賬號(非/etc/passwd中的賬號),而是用vim創建的屬於vsftpd的獨立用戶賬號。

虛擬用戶的優勢:可以避免系統中的用戶賬號過多,讓vsftpd文件共享軟件獨立管理自己的用戶賬號。


虛擬用戶賬號文件格式:

文件中的奇數行是用戶賬號,偶數行是用戶的密碼。

例:

1.創建虛擬用戶賬號文件:vim /etc/vsftpd/vuser.txt,輸入圖中內容,即創建虛擬用戶f1,f2,f3,密碼爲123456

image.png


2.將虛擬用戶賬號轉換成加密的數據庫格式文件。

yum  install  -y  libdb-utils                                 #安裝libdb-utils

cd  /etc/vsftpd                                                     #cd到/etc/vsftpd目錄下

db_load  -T  -t  hash  -f  /etc/vsftpd/vuser.txt  /etc/vsftpd/vuserdb.db         #用hash算法對vuser.txt轉化格式爲.db

chmod  -v  600  /etc/vsftpd/vuserdb.db              #給予文件/etc/vsftpd/vuserdb.db 權限


3.在vsftpd的pam認證文件中添加虛擬用戶賬號文件的認證關係。

vim  /etc/pam.d/vsftpd , 在文件開頭插入以下兩行,並如圖:

     auth  sufficient  pam_userdb.so     db=/etc/vsftpd/vuserdb

      account  sufficient  pam_userdb.so  db=/etc/vsftpd/vuserdb (代碼作用:既能讓虛擬用戶訪問共享,也能讓普通用戶訪問共享。)

image.png


4.用useradd創建一個普通用戶賬號qq

 useradd  qq  -s  /sbin/nologin                #創建一個名爲qq的用戶,指定登錄shell爲.sbin/nologin


5.在vsftpd.conf配置文件中設置一個真實用戶賬號,並將真實用戶賬號vftper和虛擬用戶賬號文件關聯起來。

 vim  vsftpd.conf 在文件最後添加如下內容:

 guest_enable=YES                                        #允許來賓用戶訪問共享,即虛擬用戶

 guest_username=vftper                               # 指定來賓用戶名爲vftper用戶(即第4步新建的用戶)

 user_config_dir=/etc/vsftpd/vuser_conf     #指定用戶配置文件目錄

 allow_writeable_chroot=YES                       #允許chroot功能下執行寫操作(必須加此行,否則會登錄失敗)


6.給每個虛擬用戶賬號設置獨立的共享訪問速度和訪問目錄。

cd  /etc/vsftpd

mkdir  -v  vuser_conf

cd  vuser_conf                                             #在/etc/vsftpd目錄下,創建vuser_conf目錄

#創建f1、f2虛擬用戶的會員個性化設置文件,允許f1這個虛擬用戶在自己的家目錄中可讀可寫。

touch  f1  f2

mkdir  -v  /home/vftper/{f1,f2}

chmod  -v  777  /home/vftper/{f1,f2}

vim  f1 輸入內容:

                    write_enable=YES

                    anon_world_readable_only=NO

                    anon_upload_enable=YES

                    anon_mkdir_write_enable=YES

                    anon_other_write_enable=YES

                    local_root=/home/vftper/f1

#允許f2這個用戶在自己的家目錄中可讀,但不可寫。

vim  f2 輸入內容:

                    local_root=/home/vftper/f2        #只寫這行,其餘行可以不寫

                    write_enable=NO

                    anon_world_readable_only=NO

                    anon_upload_enable=NO

                    anon_mkdir_write_enable=NO

                    anon_other_write_enable=NO

7.重啓vsftpd服務,並分別用虛擬用戶賬號訪問共享。

    systemctl  restart  vsftpd

    ftp  192.168.11.11 -->用f1、f2虛擬用戶分別訪問共享,測試文件的上傳。


    到此,vsftpd的虛擬用戶項目試驗完畢。



ftp和lftp客戶端程序的操作功能:

兩者都是客戶端應用程序

ftp命令格式: ftp   192.168.11.11 

lftp命令格式:lftp  192.168.11.11  -u  qq,0    #使用密碼爲0,用戶名爲qq的賬號登陸

ftp 和 lftp 的區別: ftp模式下傳輸文件需指定文件的根目錄,lftp則不需指定文件的根目錄



ftp的工作模式:主動port、被動passive模式

客戶端與服務端傳輸數據時,服務端傳輸端口爲20時爲主動模式,傳輸端口爲>1024的隨機端口時爲被動模式


ftp主動(port)模式工作過程

1.客戶機和服務器建立連接關係(登錄): 客戶機(>1024的隨機端口號)  <---->   服務器 21號port

2.雙方建立數據連接關係,傳輸數據:客戶機(>1024的隨機port) <---->   服務器 20號port


ftp被動(pasv)模式工作過程

1.客戶機和服務器建立連接關係(登錄): 客戶機(>1024的隨機端口號)  <---->   服務器 21號port

2.雙方建立數據連接關係,傳輸數據:客戶機(>1024的隨機port) <---->   服務器(>1024的隨機port)

說明:當ftp服務器上有防火牆時,通常客戶機是以被動模式去訪問ftp服務器的。在ftp服務器的vsftpd.conf和防火牆上要指定放行的被動模式端口範圍的最小值和最大值。

vsftpd.conf 的被動模式端口範圍:

pasv_min_port=5000

pasv_max_port=6000


關於ftp的服務部署即配置文件的設置就介紹到這裏!





                  



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