利用centos7搭建ftp服務器詳細版(2)

二:開始搭建ftp服務器

1. 最簡單的搭建

①先在centos上安裝ftp,代碼如下

 yum install vsftpd

②安裝好軟件,你要啓動這個服務,代碼如下

systemctl enable vsftpd //允許使用ftp
systemctl start vsftpd  // 將這個服務開啓

③檢查服務器是否正常運行,代碼如下

systemctl status vsftpd //輸入後你應該會看到一個綠的單詞 active(running)這個代表正常運行
ps -ef |grep vsftpd
netstat -natpul |grep vsftpd

④然後你就可以訪問了,在瀏覽器裏面輸入url ftp://10.10.10.2 打開後就會向我下面顯示的那樣。
在這裏插入圖片描述

但這只是最簡單的搭建,很顯然這個並不安全,所以我們得從安全角度去考慮。
考慮一下幾個方面:
(1):你的rwx權限,你要考慮到底要不要讓匿名用戶上傳東西等等。
(2):你可以使用PAM這種安全模塊。
(3):你可以用防火牆來防護。
(4):使用selinux(這個主要功能是 如果你某一主體或者客體遭到入侵,不要殃及其他的。
(5):ftp自身所提供的安全策略

2.配置ftp自身服務器

ftp自身的安全機制主要通過配置文件來實現
主配置文件 /etc/vsftpd/vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

全面的信息請參考man幫助文檔

man vsftp.conf (不過裏面全是英文的)

你可以根據你自己的需求在/etc/vsftpd/vsftpd.conf 裏面加入命令

3.PAM(這裏需要介紹一下PAM,下面要用)

①進入vsftpd需要pam驗證的應用程序配置文件
vim /etc/pam.d/vsftpd
在這裏插入圖片描述
第一列代表模塊類型:

模塊類型:
auth 作用:檢查到底有沒有這個用戶賬號&密碼對不對
account作用:檢查賬號還能不能用
session作用:賬號合規後,系統初始化改賬號的環境
password作用:口令接口類型,控制用戶信息更新

第二列代表控制標記

required:表示該行以及所涉及的模塊的成功是用戶通過鑑別的必要條件。
注意:任何帶required標記的模塊出現了錯誤,PAM並不立即將錯誤消息返回給應用程序,
而是在所有模塊都調用完畢後纔將錯誤消息返回調用他的程序。

requisite:與required類似,但如果requisite模塊一旦發生錯誤,就不會再執行堆後面
的其他模塊,同時返回錯誤消息。

sufficent:只要該模塊一旦成功,PAM就會立即嚮應用程序返回成功結果。如果失敗,sufficient
會被當做optional看待。!!!!!要慎用

optional:這個模塊如果失敗了,將繼續執行下一模塊。即如果這一模塊驗證失敗,並不影響用戶享
受應用程序提供的服務。

第三列代表模塊路徑(模塊一般保存在/lib64/security)

(1)pam_unix.so
(2)pam_shells.so
(3)pam_deny.so
(4)pam_permit.so
(5)pam_security.so
(6)pam_listfile.so
(7)pam_cracklib.so
(8)pam_limits.so

第四列代表模塊參數

參數之間用空格分開
password required pam_unix.so nullok obscure min=4 max=8 md5

4.開始正式搭建ftp

(1).先安裝ftp

yum install vsftpd

(2).創建映射實體用戶和數據目錄

mkdir -p /data/ftp
useradd -s /sbin/nologin -d /data/ftp George   (其中George是名字)
chown -R George.George /data/ftp    (/data/ftp這個文件屬於用戶George)

(3).配置ftp服務

cp /etc/vsftpd/vsftpd.conf	/etc/vsftpd/vsftpd.conf.bak (弄一個備份)
vim /etc/vsftpd/vsftpd.conf
往裏面寫入的代碼如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
idle_session_timeout=300
nopriv_user=George
chroot_local_user=NO
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=George
local_root=/data/ftp/George
user_sub_token=George
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf

(4)配置vsftpd的PAM文件

cp /etc/pam.d/vsftpd	/etc/pam.d/vsftpd.bak (做一個備份)
vim /etc/pam.d/vsftpd
往裏面寫入的代碼如下
auth    required        pam_userdb.so   db=/etc/vsftpd/account-passwd
account required        pam_userdb.so   db=/etc/vsftpd/account-passwd
session required        pam_loginuid.so /etc/pam.d/vsftpd

(5)配置虛擬用戶
①創建虛擬用戶在ftp上的數據目錄
mkdir /data/ftp/user1
chown -R George.George /data/ftp (George是實體用戶,這只是我自己創建的名字)

②對虛擬用戶進行權限配置

先在/etc/vsftpd下創建一個名字叫vconf的文件夾:mkdir /etc/vsftpd/vconf

然後在裏面創建一個user1文本:
cd /etc/vsftpd/vconf
touch user1

現在到user1裏面寫入:
vim /etc/vsftpd/vconf/user1

寫入代碼如下:
dirlist_enable=YES
download_enable=YES
local_root=/data/ftp/user1
write_enable=YES


③在/etc/vsftpd下touch一個virtual-user用來存儲用戶名和密碼

mkdir /etc/vsftpd/virtual-user

進入到這裏面配置文件

vim /etc/vsftod/virtual-user
寫入內容如下:
user1   //用戶名
hiahaihia  //密碼

④load

db_load -T -t hash -f /etc/vsftpd/virtual-user /etc/vsftpd/account-passwd.db

(6)啓動服務

systemctl enable vsftpd.service
systemctl start vsftpd.service

(7)啓用selinux

vim /etc/selinux/config

在這裏插入圖片描述
如上圖將disabled改爲enforcing

好了到這裏就結束了,若發現錯誤,請大佬斧正。謝謝!

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