二:開始搭建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