網絡服務——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工作模式(工作時默認被動模式)
主動模式 被動模式
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機登陸
注意打名字時候不能空格直接回車
默認登陸 /var/ftp下pub
#不能上傳,沒有w權限,只能下載 在a主機打開上傳然後重啓服務。
#如果不知道可以?和help
put get 是上傳下載
mkdir 在 /var/ftp創建一個lingyu的目錄
然後給凌宇設置權限 chown ftp lingyu
只能上傳當前,目錄下的,下載也一樣。
允許匿名用戶上傳的文件被匿名下載
允許匿名 anon_mkdir_write_enable=YES 允許創建目錄
可以覆蓋然後重啓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文件
2.重啓 service vsftpd restart 先測試下 windows默認就匿名登陸不會有提示。
先創建一個名字叫lingyu的用戶 useradd lingyu
給 lingyu 用戶設置密碼 passwd lingyu
把用戶限制在自己的家裏。
保存退出重啓一下服務再來驗證一下
把放行的用戶寫在配置文件裏。
那個名單目錄沒有所以在/etc/下手動創建一個。
vim chroot_list 裏面寫允許的用戶:anguo 然後創建anguo這個用戶 然後重啓服務
然後再登陸lingyu
chroot_local_user=YES 所有用戶都禁錮在家目錄裏面
chroot_local_enable=YES 如果三句話同時開啓並且指定的列表裏面有一個用這時候列表裏面的用戶可以隨意切換除此之外都不能。
chroot_list_file=/etc/vsftpd/chroot_list 列表是白名單
本地用戶默認登陸的位置 先創建一個目錄
然後修改配置文件。
然後重啓一下
限速 local_max_rate=512000 先給上傳權限 chmod 777 /local
打開歡迎信息
提示登陸信息
然後再/下創下目錄 vim /ftpbanner.txt 然後重啓服務
禁止用戶登錄和允許用戶登錄的
在vsftpd 下有這些文件。
這些允許的用戶 如果deny不開啓允許,如果開啓在這文件裏不允許登陸。
需要設置的權限足夠嚴格才行。
匿名用戶驗證: (不是原來的匿名而是虛擬用戶。是認爲手動的創建虛擬虛假的用戶,從數據庫對應)
1.能夠設置嚴格的權限(爲每一個用戶生成單獨的配置文件)
2.減少了系統中本地用戶的數量,提高安全性
匿名用戶實驗:
注:關閉服務器和客戶機上的防火牆和SELINUX。
1.在客戶端登陸後,默認情況下是可以下載的,但不能上傳。
虛擬用戶的搭建流程:
1.建立虛擬FTP用戶的賬號數據庫文件(/etc/vsftpd)
在vsftpd目錄下 創建一個vim vsftp
然後拿db load 命令進行數據庫轉換。
改成只有管理員才能讀寫
chmod 600 vsftp chmod 600 vsftp.db
然後做一個映射纔會驗證登陸 指定虛擬用戶登陸的目錄 並且不能登陸操作系統 需要把權限改成755 默認就是755
允許其他用戶進入
3.建立支持虛擬用戶的PAM 認證文件,添加虛擬用戶支持。
然後查看文件數據庫文件的指定位置
4.在vsftpd.conf文件中添加支持配置 重啓服務
那個目錄還沒有創建 ,你指什麼創建什麼
a1
b1
C1
然後重啓一下 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
3.生成加密信息
注:req標註格式
-new 創建一個新的認證證書
x509 證書內容格式
-nodes 不使用密碼
-out 輸出的文件名
-keyout 生成的密鑰文件
4.把證書放在指定位置
給他權限chmod 500 certs
5.修改ftp的配置文件 /etc/vsftpd/vsftpd.conf
6.重啓服務 service vsftpd restart
7.測試