Linux學習第十一章使用vsftpd服務傳輸文件

文件傳輸協議(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
相關文章
相關標籤/搜索