Centos7下詳細搭建FTP站點

FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱爲“文傳協議”。

工作方式

主動模式:客戶端從一個任意的非特權端口N(N>1024)連接到FTP服務器的命令端口,也就是21端口。然後客戶端開始 監聽端口N+1,併發送FTP命令“port N+1”到FTP服務器。接着服務器會從它自己的數據端口(20)連接到客戶端指定的數據端口(N+1)。
被動模式:當開啓一個 FTP連接時,客戶端打開兩個任意的非特權本地端口(N > 1024和N+1)。第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許服務器來回連它的數據端口,而是提交 PASV命令。這樣做的結果是服務器會開啓一個任意的非特權端口(P > 1024),併發送PORT P命令給客戶端。然後客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。

先安裝vsftpd

[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# systemctl  start vsftpd      #啓動vsftpd
[root@localhost ~]# systemctl  status vsftpd    #查看vsftpd狀態
  vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 五 2018-02-02 08:22:39 CST; 1min 50s ago
  Process: 12558 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 12559 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─12559 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

vsftp三種認證模式

annoymous 匿名用戶 #無虛輸入密碼即可訪問
local user 真實用戶 #服務器上存在的用戶
guest user 虛擬用戶 #映射到ftp服務器的用戶

vsftpd的默認配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES  #允許匿名用戶登陸
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES  #允許本地用戶登陸
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES  #允許本地用戶讀寫
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022  #本地用戶創建文件的umask值
......
dirmessage_enable=YES    #當用戶進入某個目錄時,會顯示該目錄需要注意的內容是  message
xferlog_enable=YES #啓動維護記錄服務器上傳和下載情況的日誌文件
connect_from_port_20=YES   #FTP PORT主動模式進行數據傳輸時使用20端口
xferlog_std_format=YES #傳輸日誌文件將以標準 xferlog 的格式書寫
listen_ipv6=YES  #監聽ipv6

pam_service_name=vsftpd  #pam認證模塊的名字
userlist_enable=YES   #拒絕登陸ftp的名單
tcp_wrappers=YES   #限制IP訪問vsftpd

匿名用戶認證

我們剛纔已經開啓了vsftpd 我們已經可以登陸ftp站點 #需關閉防火牆或設置規則 並關閉selinux

Centos7下詳細搭建FTP站點我們已經登陸到ftp站點了

Centos7下詳細搭建FTP站點
試着創建一個文件夾 出現550報錯 是因爲我們是以匿名用戶登陸到FTP站點 並沒有給匿名用戶創建目錄的權限
在vsftpd配置文件中添加

anon_upload_enbale  #允許匿名用戶上傳
anon_mkdir_write_enable=yes  #允許匿名用戶創建目錄
anon_other_write_enable=yes #允許匿名用戶修改目錄名稱或刪除目錄

再賦予匿名用戶登陸的文件夾最高權限
chmod 777 /var/ftp/pub
Centos7下詳細搭建FTP站點
已經可以創建並修改文件夾
還有一種方法 是將匿名用戶登陸到的目錄系統用戶改成ftp 就不用修改目錄權限

[root@localhost ~]#chown -Rf ftp /var/ftp/pub

Centos7下詳細搭建FTP站點

本地用戶模式

修改vsftp配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

加入一行

local_root=/etc/ftp

創建 一個用戶

[root@localhost ~]#useradd 51cto
[root@localhost ~]# passwd 51cto
更改用戶 51cto 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。

創建這個目錄

[root@localhost ~]#mkdir /etc/ftp

重啓一下vsftpd
用我們剛創建的用戶登陸Centos7下詳細搭建FTP站點
Centos7下詳細搭建FTP站點
登陸成功
誒? 既然說本地用戶模式是 服務器上真是存在的用戶 那我們的管理員root 也是真實存在的 那是否可以登陸呢?
Centos7下詳細搭建FTP站點
無法登陸 這是爲什麼呢?
這是因爲vsftpd有一個禁止用戶登陸的名單
Centos7下詳細搭建FTP站點
在上面的匿名用戶說過 vsftpd默認是開啓禁止用戶名單的 我們的root用戶在名單之中 自然就無法登陸了 禁止root用戶登陸也對服務器提升了安全性 防止***通過ftp爆破root密碼

虛擬用戶

虛擬用戶是這三種認證模式中最安全的一種 也稍微複雜一些
虛擬用戶是用PAM認證模塊中配置 FTP認證的數據庫文件來進行加密

關於PAM認證可以看http://blog.51cto.com/tyjhz/1436175

首先我們在/etc/目錄下 創立一個用戶數據庫文件
Centos7下詳細搭建FTP站點
奇數行爲賬戶偶數行爲密碼
爲了安全我們用db_load命令 用哈希算法將明文信息轉換成密文數據庫文件並降低文件的權限 避免其他人看到數據庫文件

[root@localhost etc]#db_load -T -t hash -f /etc/ftp/ftp.txt ftp.db
[root@localhost etc]#rm ftp.txt
[root@localhost etc]#chmod 600 ftp.db

Centos7下詳細搭建FTP站點

我們用默認的pam文件 註釋其他行
新加兩行
db_load 後面跟的是數據庫的路徑不用寫數據庫的後綴
創建存放虛擬用戶配置文件的目錄

[root@localhost etc]#mdir -p /etc/ftp

配置虛擬用戶權限

[root@localhost ftp]#vim user1

Centos7下詳細搭建FTP站點

[root@localhost ftp]#vim user2

Centos7下詳細搭建FTP站點

創建兩個用戶登陸的目錄

[root@localhost ftp]#mkdir -p /home/user1 
[root@localhost ftp]#mkdir -p /home/user2
賦予最高權限
[root@localhost ftp]#chmod 777 /home/* 

修改vsftpd配置文件
Centos7下詳細搭建FTP站點
重啓一下vsftpd
測試一下權限

Centos7下詳細搭建FTP站點

Centos7下詳細搭建FTP站點

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