vsftp

網絡服務——VSFTP

VSFTP概述

    FTP是FILE Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱爲“文件傳輸協議。”用於internet 上的控制文件的雙向傳輸,使用FTP來傳輸時,其實是具有一定程度的【危險性】,因爲數據在因特網上面是完全沒有受到保護的【明文】傳輸方式!

 VSFTP是一個基於GPL發佈的類UNIX系統上使用的FTP服務軟件,它的全稱

是Very Secure  FTP 從名稱定義上基本可以看出,這是爲解決FTP傳輸安全問題。

      特點:

1,vsftp 程序的運行者一般是普通用戶,降低了相對應進程的權限,提高了安全性。

2,任何需要執行較高權限的指令都需要上層程序即可

3.ftp所需要使用的絕大數命令都被整合到VSFTP中,基本不需要系統額外提供命令。

4,擁有chroot功能,可以改變用戶的根目錄,限制用戶只能在自己的家目錄

VSFTP連接類型

 

控制連接(持續連接) —— TCP21 (命令信道) —— 用戶收發FTP命令

數據連接(按需連接)——  TCP20 (數據信道) —— 用於上傳和下載數據。

VSFTP工作模式(工作時默認被動模式)

    主動模式                                被動模式

wKiom1k6OGPROjVDAAQGRHR8uyI484.png-wh_50

Port模式

FTP客戶端首先和服務器的TCP 21端口建立連接,用來發送命令,客戶端需要接受數據的時候在這個通道上發送PORT命令。PORT包含客戶端用什麼端口接收數據。在傳送數據的時候,服務器通過自己的TCP 20 端口連接至客戶端的指定端口發送數據,FTP server必須和客戶端建立一個新的連接用來傳輸數據。

Passive模式

建立控制通道和Standard模式類似,但建立連接後發送Pasv命令。服務器收到Pasv命令後,打開一個臨時端口(端口號大於1023小於65535)並且通知客戶端在這個端口上傳輸數據的請求,客戶端連接FTP服務器此端口,然後FTP服務器將通過這個端口傳輸數據。

注意:很多防火牆在設置時候都是不允許接受外部發起的連接的,所以許多位於防護牆後或內網通的FTP服務器不支持PASV模式,因爲客戶端無法穿過防火牆打開FTP服務器的高端端口;而許多內網的客戶端不能使用PORT模式登陸FTP服務器,因爲從服務器的TCP 20無法和內部網絡的客戶端建立一個新的連接,造成無法工作。

防火牆規則 (匹配即停止)

  白名單: 逐個允許,拒絕所有,默認防火牆策略。

              ip 源地址和目標地址

防火牆 判斷機制:

               協議

               端口      源端口   目標端口

               網卡名成  源端口                  

               MAC地址   源端口   目標端口

      必須所有條件都符合才匹配成功。

   黑名單: 逐個拒絕,默認防火牆策略。允許所有

iptables -A INPUT -s 192.168.100.10 -p tcp -dport 80 -j DROP

  VSFTP傳輸模式

ASCLL傳輸方式

     假定用戶正在拷貝的文件包含的簡單ASCLL碼文本,如果再遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於解釋成另外那臺計算機存儲文本文件的格式。

     但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,他們可能是程序,數據庫,字處理文件或者壓縮文件 。再拷貝任何非文本文件之前 ,用binary命令告訴tfp逐字拷貝。

二進制傳輸模式(Binary模式)

   在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的機器上包含爲序列的文件是沒意義的,例如,QQ.exe以二進制方式傳送可執行文件到Linux系統,在對方系統上,此文件不能執行。

VSFTP安裝配置(搭建環境中一定要關閉SELINUX vsftp 要求特別嚴格)

ftp軟件:

      服務端:

proftpd   支持更多的外部模塊,配置靈活

pureftpd   配置簡單相對安全

vsftpd     高性能,高安全性

客戶端:

    ftp,lftp

服務名:

   vsftp

端口號:

    20 21 隨機端口

配置文件:

 /etc/vsftpd/vsftpd.conf

實驗搭建vsftp

1.把兩臺機器設置成NAT模式也可以橋接模式,網段自定義然後配置網卡 (在實驗中第一臺機器爲 a機器 第二臺b機器)

2.搭建yum源掛載光盤 a安裝 vsftpd b安裝ftp

3.cd /etc/vsftpd (修改主文件之前養成習慣記得備份 cp -a vsftpd.conf

vsftpd.conf.bak) 然後打開源文件

匿名賬戶驗證:

 a.  用戶賬號名稱:ftp或annymous

 b.  用戶賬號密碼:空或任意字符

 c.  服務器目錄:/var/ftp

 d.  權限:可下載不可上傳,上環權限由兩部分組成(住配置文件和文件9

   匿名用戶的FTP根目錄

   anon_upload_enable=YES       允許上傳文件

   anon_mkdir_write_enable=YES  允許創建目錄

   anon_other_write_enable=YES  開放其他寫入權

4.先重啓服務a一下看看能不能上傳和下載然後拿b機登陸    

wKiom1k6OI-D-ocLAAAX-ZH_uwg365.png-wh_50

注意打名字時候不能空格直接回車

默認登陸 /var/ftp下pub

wKioL1k6OKrRGSVEAABZpC561ZM406.png-wh_50

#不能上傳,沒有w權限,只能下載 在a主機打開上傳然後重啓服務。

wKioL1k6OL-gRN4IAAAjgwY_34g745.png-wh_50

#如果不知道可以?和help

put get 是上傳下載

mkdir  在 /var/ftp創建一個lingyu的目錄

然後給凌宇設置權限  chown ftp lingyu

只能上傳當前,目錄下的,下載也一樣。

wKiom1k6ONbQxl8DAAAE5A53v5o470.png-wh_50

允許匿名用戶上傳的文件被匿名下載

允許匿名 anon_mkdir_write_enable=YES  允許創建目錄

wKioL1k6OPGTb6K8AAAbpqGOrtE490.png-wh_50

wKioL1k6OQnj0L0uAAAYr1dD5WU588.png-wh_50

可以覆蓋然後重啓ftp  man5 查看配置文件信息

本地用戶驗證:

   a.用戶賬號名稱: 本地用戶(etc/shaow)

   b.用戶賬號密碼: 用戶密碼(/etc/shadow)

   c.權限:最大權限(drwx------)

   e.本地用戶權限控制:

     local_enable=YES   是否啓用本地系統用戶

     local_umask=022    本地用戶所上傳文件的權限掩碼

     local_root=/var/ftp 設置本地用戶的FTP根目錄

     chroot_local_user=YES 是否將用戶禁錮在主目錄

     local_max_rate=0     限制最大傳輸速度

     ftpd_banner=Welcome to blah FTP service  用戶登陸時顯示的歡迎信息

     banner_file=/目錄     彈出一個說明,可以做哪些操作

     userlist_enable=YES && userlist deny=YES

     禁止/etc/vsftpd/usr_list 文件中出現的用戶名登陸FTP。

     userlist_enable=YES && userlist deny=NO

     僅允許/etc/vsftpd/user_list 文件中出現的用戶名登陸FTP

     ftpusers 所有寫入到ftpusers都不能登陸 這個權限的優先級更高

     禁止/etc/vsftpd/ftpusers文件中出現的用戶名登陸FTP權限比user_list更高,即便生效

     f.特點:配置相對複雜,可以設置嚴格的權限,有安全隱患

本地用戶:

   1.先切換到/etc/目錄下 然後修改vsftpd.conf文件

wKioL1k6OSfT-CIeAAANai9YXLc138.png-wh_50

2.重啓 service vsftpd  restart 先測試下 windows默認就匿名登陸不會有提示。

    先創建一個名字叫lingyu的用戶 useradd lingyu

           給 lingyu 用戶設置密碼 passwd lingyu

                  把用戶限制在自己的家裏。

wKioL1k6OUDxwn7vAAAgQ6fzFLk210.png-wh_50

保存退出重啓一下服務再來驗證一下

wKioL1k6OVagyYahAAAOjsJ6Ig8143.png-wh_50

wKiom1k6OXWhabYSAAAJ8vq4I2M449.png-wh_50

把放行的用戶寫在配置文件裏。

那個名單目錄沒有所以在/etc/下手動創建一個。

 vim chroot_list  裏面寫允許的用戶:anguo 然後創建anguo這個用戶 然後重啓服務

wKiom1k6OYzyy6I-AABIpC08mh4991.png-wh_50

然後再登陸lingyu

wKioL1k6OaWT7CL7AAAQhcw4rME296.png-wh_50

chroot_local_user=YES 所有用戶都禁錮在家目錄裏面

   chroot_local_enable=YES 如果三句話同時開啓並且指定的列表裏面有一個用這時候列表裏面的用戶可以隨意切換除此之外都不能。

   chroot_list_file=/etc/vsftpd/chroot_list 列表是白名單

    本地用戶默認登陸的位置 先創建一個目錄

wKioL1k6Ob-yN2oAAAAD0ZoRZTA547.png-wh_50

然後修改配置文件。

wKiom1k6Oe-CdNh_AAA2SNo6JvI960.png-wh_50

然後重啓一下

限速 local_max_rate=512000  先給上傳權限 chmod 777 /local


wKioL1k6OhD***WSAAAM-VNrBKo211.png-wh_50

wKioL1k6OiGzF7nvAAAF7Ak3bUc234.png-wh_50

打開歡迎信息

wKiom1k6Oj2hdjdxAAAp5CNQ8L4396.png-wh_50

提示登陸信息


wKioL1k6OnzC14wrAAAN_ZS2zJo926.png-wh_50

然後再/下創下目錄  vim /ftpbanner.txt 然後重啓服務


wKiom1k6OtKSLi7dAAAOdXn5ed4092.png-wh_50

禁止用戶登錄和允許用戶登錄的


wKioL1k6OvmjY6bEAAAHdyVFxaI370.png-wh_50

在vsftpd 下有這些文件。

wKioL1k6OxyhEWB8AAAZMXWUdIM244.png-wh_50

這些允許的用戶 如果deny不開啓允許,如果開啓在這文件裏不允許登陸。

      需要設置的權限足夠嚴格才行。

匿名用戶驗證: (不是原來的匿名而是虛擬用戶。是認爲手動的創建虛擬虛假的用戶,從數據庫對應)

  1.能夠設置嚴格的權限(爲每一個用戶生成單獨的配置文件)

  2.減少了系統中本地用戶的數量,提高安全性

 

匿名用戶實驗:

注:關閉服務器和客戶機上的防火牆和SELINUX。

1.在客戶端登陸後,默認情況下是可以下載的,但不能上傳。

虛擬用戶的搭建流程:

   1.建立虛擬FTP用戶的賬號數據庫文件(/etc/vsftpd)

     在vsftpd目錄下 創建一個vim vsftp                    

wKioL1k6OzSCOLLxAAAD9HzQgi4326.png-wh_50

然後拿db load 命令進行數據庫轉換。

wKioL1k6O0nAYWb4AAAG0uXj9x4764.png-wh_50

改成只有管理員才能讀寫

chmod 600 vsftp chmod 600 vsftp.db

然後做一個映射纔會驗證登陸 指定虛擬用戶登陸的目錄 並且不能登陸操作系統 需要把權限改成755 默認就是755

wKiom1k6O16i5NAMAAAICzyHzys568.png-wh_50

允許其他用戶進入

3.建立支持虛擬用戶的PAM 認證文件,添加虛擬用戶支持。

wKiom1k6O3Wx8Xy1AAAxq9qsCUY550.png-wh_50

然後查看文件數據庫文件的指定位置

wKiom1k6O4mggpxpAAAK-uL6VO4596.png-wh_50

4.在vsftpd.conf文件中添加支持配置 重啓服務

wKioL1k6O6GCwf2SAAAUMC4oOpQ061.png-wh_50

那個目錄還沒有創建 ,你指什麼創建什麼

wKiom1k6O8LSBkh1AAALRx0oB-w111.png-wh_50

a1

wKioL1k6O-SyFt7iAAADiHDLa8A611.png-wh_50

b1

wKioL1k6PC2hHHdGAAADxXqw21E971.png-wh_50


C1

wKioL1k6PEizw7soAAADNmkkH84765.png-wh_50

然後重啓一下 service vsftpd restart

5.爲個別虛擬機用戶建立獨立的配置文件,啓動服務並測試

  在指定目錄下創建每個用戶的配置文件重啓登陸測試

      規則:

               一個用戶可以上傳

               一個用戶可以創建目錄或文件

               一個用戶可以修改文件名

openssl+vsftpd 加密驗證方式

由於使用ftp登陸時,能夠通過抓包工具,得到一些信息,所以不安全

虛擬用戶總結:

         1.先生成用戶密碼的數據庫文件

         2.創建虛擬用戶映射(虛擬用戶的家目錄)

         3.創建認證文件/etc/pam.d/vsftpd.pam

            指定虛擬用戶數據庫文件的位置。

         4.配置文件中添加pam認證&虛擬用戶的配置文件所在目錄

         5.爲每個虛擬用戶創建配置文件(配置文件要創建指定位置,配置文件名和用戶名相同

ssl+vsftpd

    1.ssl證書的生成

    2.配置文件添加ssl認證支持

    匿名,本地用戶是否啓用ssl

    pem認證證書的位置

    3.登錄時用相對應的登陸認證方式(公開式)

openssl+vsftpd 加密驗證方式

 由於使用FTP登錄時,能夠通過抓包工具,得到一些信息,所以不安全

tcpdump port 21 -nA

1.查看是否安裝 openssl

   rpm -a openssl

2.查看vsftpd是否支持openssl

wKioL1k6PJWxpA1SAAALLZ6OfEw457.png-wh_50

3.生成加密信息

wKiom1k6PNqTNllAAABFTLNAOZ4517.png-wh_50

注:req標註格式

         -new 創建一個新的認證證書

         x509 證書內容格式

         -nodes 不使用密碼

         -out  輸出的文件名

         -keyout 生成的密鑰文件

4.把證書放在指定位置

wKiom1k6PVXQIuJNAAAGReLJqZ0658.png-wh_50

給他權限chmod 500 certs

5.修改ftp的配置文件 /etc/vsftpd/vsftpd.conf

wKioL1k6PXfi6UHOAAAgrZ6vDPw498.png-wh_50

6.重啓服務 service vsftpd restart

7.測試


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