文件傳輸協議(FTP):爲了可以在如此複雜多樣的設備之間解決問題解決文件傳輸問題。linux
FTP是一種在互聯網中進行文件傳輸的協議,基於客戶端/服務器模式,默認使用20、21號端口數據庫
20端口用於數據傳輸vim
21端口用於接受客戶端發出的ftp命令和參數安全
FTP協議主要用兩種工做模式服務器
主動模式:FTP服務器主動向客戶端發起鏈接請求app
被動模式:FTP服務器等待客戶端發起的鏈接請求(默認工做模式)tcp
vsftpd是一種很是安全的FTP守護進程,徹底開源,免費,具備高安全性、傳輸速度快以及支持虛擬客戶驗證等其餘ftp程序服務不具有的特色工具
使用yum安裝vsftpd服務ui
iptables防火牆管理工具默認禁止了FTP傳輸協議的端口號,所以在正式配置vsftpd服務程序以前,爲了不這些默認的防火牆策略「搗亂」,還須要清空iptables防火牆的默認策略,並把當前已經被清理的防火牆策略狀態保存下來:加密
[root@zhang ~]# iptables -F [root@zhang ~]# service iptables save
因爲vsftpd服務配置文件條目不少 可是大多數都是註釋
因此經過grep -v 進行反選,結果發現只有十幾條
[root@zhang vsftpd]# mv vsftpd.conf vsftpd.bak
[root@zhang vsftpd]# grep -v "#" vsftpd.bak > vsftpd.conf
vsftpd服務程序
vsftpd做爲更加安全的文件傳輸服務程序,容許用戶以三種認證模式登錄到FTP服務器上
匿名開放模式:這是一種最不安全的認證模式,任何人均可以訪問且不須要密碼
本地用戶模式:經過Linux的本地帳號密碼信息進行認證模式,相對第一種比較安全
虛擬用戶模式:最安全的認證模式,他須要爲FTP服務器創建用戶數據庫文件,虛擬出用來進行口令認證的帳戶信息,這些帳號信息在服務器中是不存在的,僅供FTP服務程序進行認證。
匿名訪問模式
編輯配置文件
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=YES 2 anon_umask=022 3 anon_upload_enable=YES 4 anon_mkdir_write_enable=YES 5 anon_other_write_enable=YES 6 local_enable=YES 7 write_enable=YES 8 local_umask=022 9 dirmessage_enable=YES 10 xferlog_enable=YES 11 connect_from_port_20=YES 12 xferlog_std_format=YES 13 listen=NO 14 listen_ipv6=YES 15 pam_service_name=vsftpd 16 userlist_enable=YES 17 tcp_wrappers=YES
關閉防火牆
[root@zhang ~]# iptables -F [root@zhang ~]# service iptables save
在vsftpd服務程序的匿名開放認證模式下,其帳戶統一爲anonymous,密碼爲空。並且在鏈接到FTP服務器後,默認訪問的是/var/ftp目錄,可是該目錄權限爲root,因此須要更新權限到ftp用戶
chown -Rf ftp /var/ftp/pub
修改selinux策略
[root@linuxprobe ~]# getsebool -a | grep ftp [root@linuxprobe ~]# setsebool -P ftpd_full_access=on
客戶端鏈接服務器
ftp 192.168.10.10
本地用戶模式
編輯配置文件
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=NO 2 local_enable=YES 3 write_enable=YES 4 local_umask=022 5 dirmessage_enable=YES 6 xferlog_enable=YES 7 connect_from_port_20=YES 8 xferlog_std_format=YES 9 listen=NO 10 listen_ipv6=YES 11 pam_service_name=vsftpd 12 userlist_enable=YES 13 tcp_wrappers=YES
關閉防火牆
[root@zhang ~]# iptables -F [root@zhang ~]# service iptables save
vsftpd服務程序所在的目錄中默認存放着兩個名爲「用戶名單」的文件(ftpusers和user_list)
若是在這兩個文件中的用戶皆爲「黑名單」沒法使用ftp登錄,因此須要將其去掉
在採用本地用戶模式登陸FTP服務器後,默認訪問的是該用戶的家目錄,也就是說,若是用root,那麼訪問的是/root目錄。
虛擬用戶模式
第1步:建立用於進行FTP認證的用戶數據庫文件,其中奇數行爲帳戶名,偶數行爲密碼。例如,咱們分別建立出zhang和quan兩個用戶,密碼均爲redhat:
[root@linuxprobe ~]# cd /etc/vsftpd/ [root@linuxprobe vsftpd]# vim vuser.list zhangsan redhat lisi redhat
可是明文不夠安全 因此須要進行加密,並受權
[root@zhang vsftpd]# db_load -T -t hash -f vuser.list vuser.db [root@zhang vsftpd]# chmod 600 vuser.db
第2步:建立vsftpd服務程序用於存儲文件的根目錄以及虛擬用戶映射的系統本地用戶。FTP服務用於存儲文件的根目錄指的是,當虛擬用戶登陸後所訪問的默認位置。 建立並受權
[root@zhang ~]# useradd -d /var/ftproot -s /sbin/nologin ftpuser [root@zhang ~]# chmod -Rf 755 /var/ftproot/
第3步:創建用於支持虛擬用戶的PAM文件。PAM是一組安全機制的模塊,系統管理員能夠用來輕易地調整服務程序的認證方式,而沒必要對應用程序進行任何修改。
[root@zhang ~]# vim /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
第4步:在vsftpd服務程序的主配置文件中經過pam_service_name參數將PAM認證文件的名稱修改成vsftpd.vu,PAM做爲應用程序層與鑑別模塊層的鏈接紐帶,可讓應用程序根據需求靈活地在自身插入所需的鑑別功能模塊。當應用程序須要PAM認證時,則須要在應用程序中定義負責認證的PAM配置文件,實現所需的認證功能。
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=NO 2 local_enable=YES 3 guest_enable=YES 4 guest_username=virtual 5 allow_writeable_chroot=YES 6 write_enable=YES 7 local_umask=022 8 dirmessage_enable=YES 9 xferlog_enable=YES 10 connect_from_port_20=YES 11 xferlog_std_format=YES 12 listen=NO 13 listen_ipv6=YES 14 pam_service_name=vsftpd.vu 15 userlist_enable=YES 16 tcp_wrappers=YES
第5步:爲虛擬用戶設置不一樣的權限,即zhang能夠建立 quan不能夠
[root@zhang ~]# mkdir /etc/vsftpd/vusers_dir/ [root@zhang ~]# cd /etc/vsftpd/vusers_dir/ [root@zhang vusers_dir]# touch quan [root@zhang vusers_dir]# vim zhangsan anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
再次編輯配置文件
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf 最後面加上 user_config_dir=/etc/vsftpd/vusers_dir
修改selinux,並重啓vsftpd服務
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
註釋:ftp> lcd /root 肯定文件下載位置 get 文件名稱 即下載文件
TFTP簡單文件傳輸協議
簡單文件傳輸協議(Trivial File Transfer Protocol,TFTP)是一種基於UDP協議在客戶端和服務器之間進行簡單文件傳輸的協議。顧名思義,它提供不復雜、開銷不大的文件傳輸服務(可將其看成FTP協議的簡化版本)。
不須要認證 效率高 。可是因爲TFTP在傳輸文件時採用的是UDP協議,佔用的端口號爲69,所以文件的傳輸過程也不像FTP協議那樣可靠
安裝
[root@zhang ~]# yum install tftp-server tftp
配置文件
[root@zhang ~]# vim /etc/xinetd.d/tftp
yes修改成no
重啓xinetd服務並將它添加到系統的開機啓動項中,以確保TFTP服務在系統重啓後依然處於運行狀態。考慮到有些系統的防火牆默認沒有容許UDP協議的69端口,所以須要手動將該端口號加入到防火牆的容許策略中:
[root@zhang ~]# systemctl restart xinetd [root@zhang ~]# systemctl enable xinetd [root@zhang ~]# firewall-cmd --permanent --add-port=69/udp success [root@zhang ~]# firewall-cmd --reload success
TFTP的根目錄爲/var/lib/tftpboot
[root@linuxprobe ~]# tftp 192.168.10.10 tftp> get readme.txt tftp> quit