主頁 > 作業系統 > linux下使用vsftp搭建FTP服務器:匿名登錄,賬號登錄,SSL加密傳輸

linux下使用vsftp搭建FTP服務器:匿名登錄,賬號登錄,SSL加密傳輸

2020-12-22 07:11:13 作業系統

目錄
  • 一.關于FTP和VSFTP
  • 二.ftp、sftp、vsftp、vsftpd的區別
  • 三.專案一:搭建一臺所有人都可以訪問的通用FTP服務器
    • 3.1 專案要求
    • 3.2 專案思路分析
    • 3.3 使用vsftp搭建可以匿名訪問的FTP服務器
  • 四.專案二:搭建一臺只有特定用戶才能訪問的專有FTP服務器
    • 4.1 專案要求
    • 4.2 專案思路分析
    • 4.3 使用vsftp搭建特定用戶登錄的專用FTP服務器

一.關于FTP和VSFTP

1.FTP(File Transfer Protocol: 檔案傳輸協議)是用來在Internet 上傳送檔案的協議,FTP服務器(File Transfer Protocol Server)是檔案傳輸協議服務器,是在互聯網上提供檔案存盤和訪問服務的計算機,它們依照FTP協議提供服務,

2.VSFTP是一個基于GPL發布的類Unix系統上使用的FTP服務器軟體,它的全稱是Very Secure FTP 從此名稱可以看出來,編制者的初衷是代碼的安全,VSFTP具有安全、高速、穩定的特點,VSFTP的軟體架構為C/S 模式(即一個客戶端一個服務器端),

3.FTP的埠有兩個:20和21,20埠用來進行資料傳輸,21埠是控制埠,用于傳輸指令,查看FTP埠的方法如下:

[root@node5 ~]# cat /etc/services | grep "^ftp"
ftp-data        20/tcp
ftp-data        20/udp
ftp             21/tcp
ftp             21/udp          fsp fspd
ftp-data        20/sctp                 # FTP
ftp             21/sctp                 # FTP
ftp-agent       574/tcp                 # FTP Software Agent System
ftp-agent       574/udp                 # FTP Software Agent System
ftps-data       989/tcp                 # ftp protocol, data, over TLS/SSL
ftps-data       989/udp                 # ftp protocol, data, over TLS/SSL
ftps            990/tcp                 # ftp protocol, control, over TLS/SSL
ftps            990/udp                 # ftp protocol, control, over TLS/SSL

4.FTP的會話包含了兩個通道,控制通道和資料傳輸通道,FTP有兩種作業模式,一種是主動模式,一種是被動模式,以FTP Server為參考點,主動模式就是服務器端主動連接客戶端傳輸,被動模式就是服務器端等待客戶端連接,

5.vsftp有服務器端和客戶端,服務器端為vsftpd,客戶端為lftp,lftp的語法如下:

#lftp安裝方法
[root@node8 ~]# yum -y install lftp

lftp的語法為:lftp ip -p port -u user,'password' -e'commands ; bye'
下載命令為get,上傳命令為put

6.vsftp組態檔介紹

#vsftpd 的核心組態檔
/etc/vsftpd/vsftpd.conf		
#用于指定哪些用戶不能訪問FTP 服務器,即黑名單
/etc/vsftpd/ftpusers		
#指定允許使用VSFTP的用戶串列檔案,即白名單
/etc/vsftpd/user_list		
#vsftpd 操作的一些變數和設定腳本
/etc/vsftpd/vsftpd_conf_migrate.sh		
#默認情況下匿名用戶的根目錄
/var/ftp/			

7./etc/vsftpd/ftpusers,/etc/vsftpd/user_list,vsftpd.conf中的userlist_enable和userlist_deny兩個配置項的解釋

問題一:ftpusers和user_list兩個檔案各自的用途是什么?有何關系?  
首先請明確一點:ftpusers不受任何配制項的影響,它總是有效,它是一個黑名單!該檔案存放的是一個禁止訪問FTP的用戶串列,通常為了安全考慮,管理員不希望一些擁有過大權限的帳號(比如root)登入FTP,以免通過該帳號從FTP上傳或下載一些危險位置上的檔案從而對系統造成損壞,而user_list則是和vsftpd.conf中的userlist_enable和userlist_deny兩個配置項緊密相關的,它可以有效,也可以無效,有效時它可以是一個黑名單,也可以是一個白名單!那么是什么的設定決定了它的作用呢?這就是問題二要解釋的,所以簡單總結就是:ftpusers和user_list沒有任何關系,ftpusers檔案總是生效,user_list則取決于userlist_enable和userlist_deny兩項配置,  

問題二:vsftpd.conf中的userlist_enable和userlist_deny兩個配置項各自起什么作用,兩者如何搭配使用?  
為了說明這個問題,我們來建立兩個測驗用戶:  
tom: 在user_list中  
jim:不在user_list中  
然后我們分別給兩個配置項取不同的值,分4種Case進行測驗:  
Case 1: userlist_enable=YES, userlist_deny=YES  
tom: 拒絕登入  
jim: 允許登錄  
Case 2: userlist_enable=YES, userlist_deny=NO  
tom: 允許登錄  
jim:拒絕登錄(如user_list檔案開頭的注釋所述,甚至不會提示輸入密碼,即無登入提示框,直接拒絕連接)  
Case 3: userlist_enable=NO,userlist_deny=NO  
tom: 允許登錄  
jim: 允許登錄  
Case 4: userlist_enable=NO,userlist_deny=YES  
tom: 允許登錄  
jim: 允許登錄  

綜上實驗得出以下結論:  
userlist_enable和userlist_deny兩個選項聯合起來針對的是:本地全體用戶(除去ftpusers中的用戶)和出現在user_list檔案中的用戶以及不在在user_list檔案中的用戶這三類用戶集合進行的設定,  
當且僅當userlist_enable=YES時:userlist_deny項的配置才有效,user_list檔案才會被使用;當其為NO時,無論userlist_deny項為何值都是無效的,本地全體用戶(除去ftpusers中的用戶)都可以登入FTP  
當userlist_enable=YES時,userlist_deny=YES時:user_list是一個黑名單,即:所有出現在名單中的用戶都會被拒絕登入;  
當userlist_enable=YES時,userlist_deny=NO時:user_list是一個白名單,即:只有出現在名單中的用戶才會被準許登入(user_list之外的用戶都被拒絕登入);另外需要特別提醒的是:使用白名單后,匿名用戶將無法登入!除非顯式在user_list中加入一行:anonymous 

二.ftp、sftp、vsftp、vsftpd的區別

簡單介紹下ftp、sftp、vsftp、vsftpd的區別

  • ? ftp 是File Transfer Protocol的縮寫,是一種用于在網路上進行檔案傳輸的協議,使用客戶/服務器模式,它屬于網路傳輸協議的應用層;
  • ? sftp 是SSH File Transfer Protocol的縮寫,sftp是基于ssh協議的加密ftp傳輸協議,SFTP 為 SSH的一部分,SFTP使用加密傳輸認證資訊來傳輸資料,所以,使用SFTP是非常安全的,sftp是sshd里的一個 subsystem,ssh默認包含sftp功能,也可以更改設定禁止它,sftp 走的是ssh協議,開啟了sshd就相當于開啟了sftp,可以使用sftp命令登錄目標目錄,比如:sftp [email protected]
  • ? vsftp 是Very Secure FTP的縮寫,vsftp是一個基于GPL發布的類Unix系統上使用的ftp服務器軟體;vsftp是一款ftp服務器,支持ftp協議,不支持sftp協議;
  • ? vsftpd 是very secure FTP daemon的縮寫,vsftpd是vsftp的守護行程,

三.專案一:搭建一臺所有人都可以訪問的通用FTP服務器

3.1 專案要求

? 搭建一臺通用FTP服務器,局域網內的所有員工都可以訪問,員工可以進行上傳/下載檔案的操作,并創建屬于自己的目錄,

3.2 專案思路分析

? 由于需要所有員工都可以訪問,所以需要設定成可以匿名用戶登錄,還要開啟上傳檔案,創建檔案的權限,

3.3 使用vsftp搭建可以匿名訪問的FTP服務器

1.部署環境

服務器 作業系統版本 CPU架構 行程 功能描述
node5/192.168.110.184 CentOS Linux release 7.9.2009 (Core) x86_64 vsftpd FTP服務器端
node8/192.168.110.186 CentOS Linux release 7.9.2009 (Core) x86_64 lftp FTP客戶端

2.vsftp分為客戶端和服務器端,如果配置好了yum源的話,直接使用yum命令安裝,如果沒有配置好yum源的話,可以參考博客“linux 配置本地yum源,配置國內yum源,配置epel源”進行配置,網址為:https://www.cnblogs.com/renshengdezheli/p/13949693.html

#安裝vsftp服務器端
[root@node5 ~]# yum -y install vsftpd

[root@node5 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.2-28.el7.x86_64

#啟動vsftp
[root@node5 ~]# systemctl start vsftpd

#查看vsftp啟動狀態
[root@node5 ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-12-19 20:57:15 CST; 5s ago
  Process: 66964 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 66965 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─66965 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Dec 19 20:57:15 node5 systemd[1]: Starting Vsftpd ftp daemon...
Dec 19 20:57:15 node5 systemd[1]: Started Vsftpd ftp daemon.

[root@node5 ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@node5 ~]# 
[root@node5 ~]# systemctl is-enabled vsftpd
enabled

#查看已安裝的vsftp命令,生成了哪些檔案
[root@node5 ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
......
/var/ftp
/var/ftp/pub

#安裝vsftp服務器端
[root@node5 ~]# yum -y install lftp

[root@node5 ~]# rpm -qa | grep lftp
lftp-4.4.8-12.el7_8.1.x86_64

#查看FTP的埠:我們只查到21號埠,但是20號埠沒有查看到?是因為沒有資料傳輸,20號埠是用于傳輸資料的,所以20號埠是尚未開啟,如有資料傳輸時,20號埠則會開啟,
[root@node5 ~]# netstat -antup | grep ftp
tcp6       0      0 :::21                   :::*                    LISTEN      66965/vsftpd        

3.修改vsftp的組態檔vsftpd.conf

[root@node5 ~]# cd /etc/vsftpd/
[root@node5 vsftpd]# pwd
/etc/vsftpd
[root@node5 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.conf.rpmsave

#備份vsftp組態檔
[root@node5 vsftpd]# cp vsftpd.conf{,.bak}
[root@node5 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh  vsftpd.conf.rpmsave

#編輯組態檔vsftpd.conf,主要添加如下三個配置
[root@node5 vsftpd]# vim vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
#控制是否允許匿名用戶創建目錄
anon_mkdir_write_enable=YES                                                                                                                                                        
#修改匿名用戶登錄的目錄的權限,如果不進行此步驟,則不能創建檔案夾
[root@node5 vsftpd]# chown ftp:ftp /var/ftp/pub/
 
#重啟vsftp
[root@node5 vsftpd]# systemctl restart vsftpd

4.使用windows的資源管理器進行訪問FTP服務器,輸入ftp://192.168.110.184/,如下圖,

image-20201220002033803

發現在pub目錄可以進行上傳下載,但是不能重命名檔案夾,只能新建叫做“新建檔案夾”的檔案夾,也不能洗掉檔案

image-20201220002503292

5.再次修改組態檔vsftpd.conf

#vsftpd.conf里添加如下一項配置
[root@node5 vsftpd]# vim vsftpd.conf
#啟用匿名帳號可以有寫的權限
anon_other_write_enable=YES  		

#重啟
[root@node5 vsftpd]# systemctl restart vsftpd

6.再次使用windows的資源管理器登錄,發現已經可以上傳,下載,新建檔案夾,重命名檔案夾,洗掉檔案夾了,值得注意的是洗掉檔案夾的權限太大了,使用這個anon_other_write_enable=YES引數需要考慮安全性,默認匿名用戶家目錄的權限是755,這個權限是不能改變的,切記!

image-20201220003854212

在瀏覽器里也可訪問FTP服務器

image-20201220004008183

使用FTP客戶端也可訪問FTP服務器,使用另一臺linux服務器node8的FTP客戶端進行訪問

#在node8上安裝FTP客戶端
[root@node8 ~]# yum -y install lftp

[root@node8 ~]# rpm -qa | grep lftp
lftp-4.4.8-8.el7_3.2.x86_64

#登錄FTP服務器
[root@node8 ~]# lftp 192.168.110.184
lftp 192.168.110.184:~> pwd
ftp://192.168.110.184
lftp 192.168.110.184:~> 
lftp 192.168.110.184:~> ls
drwxr-xr-x    4 14       50            107 Dec 19 16:29 pub
lftp 192.168.110.184:/> cd pub/
lftp 192.168.110.184:/pub> pwd
ftp://192.168.110.184/pub
lftp 192.168.110.184:/pub> ls
drwx------    2 14       50              6 Dec 19 13:31 1219
drwx------    2 14       50              6 Dec 19 13:33 1220
-rw-------    1 14       50         914424 Dec 19 16:24 a0996921f120ade16b43c340f3ed18f.png
-rw-------    1 14       50       11814302 Dec 19 16:29 mycat-definitive-guide.pdf
lftp 192.168.110.184:/pub> mkdir node8
mkdir ok, `node8' created
lftp 192.168.110.184:/pub> ls
drwx------    2 14       50              6 Dec 19 13:31 1219
drwx------    2 14       50              6 Dec 19 13:33 1220
-rw-------    1 14       50         914424 Dec 19 16:24 a0996921f120ade16b43c340f3ed18f.png
-rw-------    1 14       50       11814302 Dec 19 16:29 mycat-definitive-guide.pdf
drwx------    2 14       50              6 Dec 19 16:43 node8
lftp 192.168.110.184:/pub> exit

FileZilla是方便高效的FTP客戶端工具,現在使用FileZilla來訪問FTP服務器,FileZilla的連接配置如下圖:

image-20201221110434960

使用FileZilla連接成功之后,可以正常進行上傳/下載,新建/洗掉檔案夾

image-20201221110914167

四.專案二:搭建一臺只有特定用戶才能訪問的專有FTP服務器

4.1 專案要求

搭建一臺專用FTP服務器:禁止匿名登錄,只能有兩個用戶tom1和tom2使用密碼登錄FTP服務器,并且tom1和tom2禁止登錄本地系統,tom1和tom2用戶登錄FTP服務器之后,限定根目錄為/usr/local/apache-tomcat-8.0.51/webapps(即tomcat的發布目錄),不能進入該目錄以外的任何目錄,此FTP服務器還需設定成加密傳輸資料,不能明文傳輸資料,

4.2 專案思路分析

由于只能讓特定用戶登錄FTP,所以必須禁止匿名登錄,還需要把tom1用戶和tom2用戶的shell設定為/sbin/nologin,還需要使用chroot 功能將team1用戶和team2用戶的根目錄鎖定在/usr/local/apache-tomcat-8.0.51/webapps目錄下,使用SSL證書加密傳輸資料,如果需要洗掉檔案則還需要注意本地權限,

4.3 使用vsftp搭建特定用戶登錄的專用FTP服務器

1.部署環境

服務器 作業系統版本 CPU架構 行程 功能描述
node5/192.168.110.184 CentOS Linux release 7.9.2009 (Core) x86_64 lftp FTP客戶端
node8/192.168.110.186 CentOS Linux release 7.9.2009 (Core) x86_64 vsftpd FTP服務器端

2.先安裝vsftp的服務器端和客戶端

[root@node8 ~]# yum -y install vsftpd
 
[root@node8 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.2-22.el7.x86_64

[root@node8 ~]# yum -y install lftp

[root@node8 ~]# rpm -qa | grep lftp
lftp-4.4.8-8.el7_3.2.x86_64

3.創建用戶tom1和tom2

[root@node8 ~]# useradd -s /sbin/nologin tom1 && echo "123456" | passwd --stdin tom1
Changing password for user tom1.
passwd: all authentication tokens updated successfully.
 
[root@node8 ~]# useradd -s /sbin/nologin tom2 && echo "123456" | passwd --stdin tom2
Changing password for user tom2.
passwd: all authentication tokens updated successfully.

4.確定tomcat的發布目錄存在

[root@node8 ~]# cd /usr/local/
[root@node8 local]# ls
apache-tomcat-8.0.51  bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src
[root@node8 local]# cd apache-tomcat-8.0.51/webapps/
[root@node8 webapps]# ls
docs  examples  host-manager  index.jsp  manager  ROOT  test
[root@node8 webapps]# pwd
/usr/local/apache-tomcat-8.0.51/webapps

5.備份vsftp的組態檔,然后進行修改,并建立鎖定用戶檔案

[root@node8 ~]# cd /etc/vsftpd/
[root@node8 vsftpd]# pwd
/etc/vsftpd
[root@node8 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

[root@node8 vsftpd]# cp vsftpd.conf{,.bak}
[root@node8 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

#組態檔主要修改以下幾項
[root@node8 vsftpd]# vim vsftpd.conf
#禁止匿名用戶登錄
anonymous_enable=NO	
#允許本地用戶登錄
local_enable=YES		
#設定本地用戶登錄的根目錄為/usr/local/apache-tomcat-8.0.51/webapps
local_root=/usr/local/apache-tomcat-8.0.51/webapps	
#激活chroot功能
chroot_list_enable=YES			
#設定鎖定用戶在根目錄中的串列檔案,此檔案存放要鎖定的用戶名
chroot_list_file=/etc/vsftpd/chroot_list	
#允許鎖定的用戶有寫的權限,
allow_writeable_chroot=YES 		

#建立鎖定用戶檔案
[root@node8 vsftpd]# touch /etc/vsftpd/chroot_list
[root@node8 vsftpd]# vim /etc/vsftpd/chroot_list
#把tom1和tom2添加進鎖定檔案里
[root@node8 ~]# cat /etc/vsftpd/chroot_list
tom1
tom2

[root@node8 vsftpd]# ll -h /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 10 Dec 21 11:38 /etc/vsftpd/chroot_list

6.修改鎖定目錄的權限,使其他用戶可以進行寫操作

[root@node8 vsftpd]# ll -d /usr/local/apache-tomcat-8.0.51/webapps/
drwxr-xr-x 8 root root 110 Dec 21 11:19 /usr/local/apache-tomcat-8.0.51/webapps/
 
[root@node8 vsftpd]# chmod -R o+w /usr/local/apache-tomcat-8.0.51/webapps

[root@node8 vsftpd]# ll -d /usr/local/apache-tomcat-8.0.51/webapps/
drwxr-xrwx 8 root root 110 Dec 21 11:19 /usr/local/apache-tomcat-8.0.51/webapps/

7.重啟vsftp使組態檔生效

[root@node8 vsftpd]# systemctl restart vsftpd

[root@node8 vsftpd]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-12-21 11:42:43 CST; 13s ago
  Process: 7441 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 7442 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─7442 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Dec 21 11:42:43 node8 systemd[1]: Starting Vsftpd ftp daemon...
Dec 21 11:42:43 node8 systemd[1]: Started Vsftpd ftp daemon.

8.測驗:使用FTP客戶端和FileZilla連接FTP服務器,測驗功能是否正常

首先把node5作為FTP客戶端,使用lftp連接FTP服務器進行測驗

#首先測驗匿名登錄,發現匿名登錄無法查看相關內容
[root@node5 ~]# lftp 192.168.110.186
lftp 192.168.110.186:~>                 
lftp 192.168.110.186:~> ls
`ls' at 0 [Sending commands...]  
`ls' at 0 [Delaying before reconnect: 28]  
Interrupt                                    
lftp 192.168.110.186:~> quit

#使用tom1賬號登錄,發現功能正常
[root@node5 ~]# lftp 192.168.110.186 -u tom1,123456
lftp [email protected]:~> pwd
ftp://tom1:[email protected]
lftp [email protected]:/> ls
drwxr-xrwx    3 0        0             326 Dec 21 03:19 ROOT
drwxr-xrwx   14 0        0            4096 Dec 21 03:19 docs
drwxr-xrwx    6 0        0              83 Dec 21 03:19 examples
drwxr-xrwx    5 0        0              87 Dec 21 03:19 host-manager
-rw-r--rw-    1 0        0             624 Dec 21 03:19 index.jsp
drwxr-xrwx    5 0        0             103 Dec 21 03:19 manager
drwxr-xrwx    2 0        0               6 Dec 21 03:19 test
lftp [email protected]:/> mkdir 1221
mkdir ok, `1221' created
lftp [email protected]:/> ls
drwxr-xr-x    2 1114     1114            6 Dec 21 03:48 1221
drwxr-xrwx    3 0        0             326 Dec 21 03:19 ROOT
drwxr-xrwx   14 0        0            4096 Dec 21 03:19 docs
drwxr-xrwx    6 0        0              83 Dec 21 03:19 examples
drwxr-xrwx    5 0        0              87 Dec 21 03:19 host-manager
-rw-r--rw-    1 0        0             624 Dec 21 03:19 index.jsp
drwxr-xrwx    5 0        0             103 Dec 21 03:19 manager
drwxr-xrwx    2 0        0               6 Dec 21 03:19 test
lftp [email protected]:/> quit

#使用tom2賬號登錄,發現功能正常
[root@node5 ~]# lftp 192.168.110.186 -u tom2,123456
lftp [email protected]:~> pwd
ftp://tom2:[email protected]
lftp [email protected]:/> ls
drwxr-xr-x    2 1114     1114            6 Dec 21 03:48 1221
drwxr-xrwx    3 0        0             326 Dec 21 03:19 ROOT
drwxr-xrwx   14 0        0            4096 Dec 21 03:19 docs
drwxr-xrwx    6 0        0              83 Dec 21 03:19 examples
drwxr-xrwx    5 0        0              87 Dec 21 03:19 host-manager
-rw-r--rw-    1 0        0             624 Dec 21 03:19 index.jsp
drwxr-xrwx    5 0        0             103 Dec 21 03:19 manager
drwxr-xrwx    2 0        0               6 Dec 21 03:19 test
lftp [email protected]:/> quit

接著使用FileZilla連接FTP服務器進行測驗,連接方式如下圖:輸入賬號密碼,發現功能也正常

image-20201221115732525

image-20201221141942053

但是此時資料傳輸是明文傳輸,所以還需要配置SSL,使其支持加密傳輸,

9.配置vsftp使用SSL證書加密傳輸資料,FTP與HTTP一樣預設狀態都是基于明文傳輸,希望FTP服務器端與客戶端傳輸保證安全,可以為FTP配置SSL,在專案中,如果是內網FTP傳輸,可以不用證書加密傳輸,如果FTP服務器在公網,為了資料的安全性,就一定要配置證書加密傳輸,保證安全性,

使用OpenSSL生成自簽證書

#查看openssl有沒有安裝
[root@node8 vsftpd]# rpm -qa | grep openssl
openssl-1.0.2k-8.el7.x86_64
openssl-libs-1.0.2k-8.el7.x86_64
xmlsec1-openssl-1.2.20-5.el7.x86_64
openssl-devel-1.0.2k-8.el7.x86_64

#使用OpenSSL生成自簽證書
#OpenSSL引數注釋:
#req 			#是 X.509 Certificate Signing Request (CSR,證書簽名請求)管理的一個命令,
#x509 			#X.509 證書資料管理,
#days 			#定義證書的有效日期,
#newkey 		#指定證書密鑰處理器,
#keyout 		#設定密鑰存盤檔案,
#out 			#設定證書存盤檔案,注意證書和密鑰都保存在一個相同的檔案
[root@node8 vsftpd]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3560
Generating a 2048 bit RSA private key
.........................................+++
................................+++
writing new private key to 'vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:zg
State or Province Name (full name) []:gd
Locality Name (eg, city) [Default City]:gz
Organization Name (eg, company) [Default Company Ltd]:shxf
Organizational Unit Name (eg, section) []:fz
Common Name (eg, your name or your server's hostname) []:zheli
Email Address []:[email protected]

[root@node8 vsftpd]# ls vsftpd.pem 
vsftpd.pem

10.創建證書存放目錄,并賦權

[root@node8 vsftpd]# mkdir .sslkey

[root@node8 vsftpd]# mv vsftpd.pem .sslkey/

[root@node8 vsftpd]# chmod 400 .sslkey/vsftpd.pem

11.修改組態檔,使其支持SSL加密傳輸

#修改組態檔,主要修改內容如下,注意:這些配置項不要添加到vsftpd.conf檔案的末尾,添加在中間部位即可,否則啟動報錯
[root@node8 vsftpd]# vim vsftpd.conf
#啟用SSL
ssl_enable=YES    		
allow_anon_ssl=NO 
#強制匿名用戶和本地用戶使用加密登陸和資料傳輸
force_local_data_ssl=YES   
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
#指定vsftp支持TLS v1
ssl_tlsv1=YES   
#指定vsftpd支持SSL v2
ssl_sslv2=YES   
#指定vsftpd支持SSL v3
ssl_sslv3=YES   	
#不重用SSL會話,安全配置項 
require_ssl_reuse=NO  
#允許用于加密 SSL 連接的 SSL 演算法,這可以極大地限制那些嘗試發現使用存在缺陷的特定演算法的攻擊者
ssl_ciphers=HIGH   
#定義 SSL 證書和密鑰檔案的位置
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem 
rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem

#重啟vsftp,使組態檔生效
[root@node8 vsftpd]# systemctl restart vsftpd

[root@node8 vsftpd]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-12-21 14:33:02 CST; 7s ago
  Process: 7579 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 7580 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─7580 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Dec 21 14:33:02 node8 systemd[1]: Starting Vsftpd ftp daemon...
Dec 21 14:33:02 node8 systemd[1]: Started Vsftpd ftp daemon.

12.測驗是否支持加密傳輸

使用FileZilla連接FTP服務器,連接方法如下:

image-20201221143526306

點擊信任證書

image-20201221143712783

連接成功之后,發現已經可以加密傳輸資料了

image-20201221143819558

最后使用客戶端工具lftp連接測驗,使用另外一臺node5的lftp連接FTP服務器

#在node5上連接FTP服務器,但是提示不信任的證書
[root@node5 ~]# lftp 192.168.110.186 -u tom2,123456
lftp [email protected]:~> pwd
ftp://tom2:[email protected]
lftp [email protected]:~> ls
ls: Fatal error: Certificate verification: Not trusted
lftp [email protected]:~> quit

#修改/etc/lftp.conf組態檔,在末尾加上一行“set ssl:verify-certificate no”,或者直接在lftp命令提示符下輸入:set ssl:verify-certificate no 回車
[root@node5 ~]# vim /etc/lftp.conf 
set ssl:verify-certificate no

#此時又可以登錄FTP服務器了
[root@node5 ~]# lftp 192.168.110.186 -u tom2,123456
lftp [email protected]:~> ls
drwxr-xr-x    2 1114     1114            6 Dec 21 03:48 1221
drwxr-xrwx    3 0        0             326 Dec 21 03:19 ROOT
drwxr-xrwx   14 0        0            4096 Dec 21 03:19 docs
drwxr-xrwx    6 0        0              83 Dec 21 03:19 examples
drwxr-xrwx    5 0        0              87 Dec 21 03:19 host-manager
-rw-r--rw-    1 0        0             624 Dec 21 03:19 index.jsp
drwxr-xrwx    5 0        0             103 Dec 21 03:19 manager
drwxr-xrwx    2 0        0               6 Dec 21 03:19 test
lftp [email protected]:/> quit 

自此,專有FTP服務器搭建完畢,

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/238306.html

標籤:其他

上一篇:【分享】涓流充電?UI快充?談談手機充電程序

下一篇:容器編排系統k8s之Ingress資源

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more