vsftpd服務的部署及優化
-
- 實驗環境
- 1.ftp 介紹
- 2.vsftpd 安 裝 及 啟 用
- 3.vsftpd 基 本 信 息
- 4.匿名使用者通路控制
- 凡是涉及目錄的操作,如上傳,看上傳目錄是否有寫權限,更改目錄權限,及組身份,
- 5.本地使用者的通路
- 6.虛拟使用者通路
- 6.1虛拟使用者的建立
- 6.2虛拟使用者家目錄的獨立設定
- 6.3使用者配置獨立
實驗環境
server主機 :localhost192.168.3.15 | client主機 :foudation 66:192.168.3.14 |
---|---|
selinux 關閉 火牆開啟 dnf 安裝設定完成 ,安裝vsftpd服務,添加火牆政策firewall-cmd --permanent --add-service=ftp,firewall-cmd --reload | 火牆開啟 selinux 關閉 dnf 安裝設定完成,安裝 lftp #ftp 協定文本浏覽器 |
1.ftp 介紹
ftp:file transfer proto
互聯阿中最老牌的檔案傳輸協定
FTP(File Transfer Protocol,檔案傳輸協定) 是 TCP/IP 協定組中的協定之一。FTP協定包括兩個組成部分,其一為FTP伺服器,其二為FTP用戶端。其中FTP伺服器用來存儲檔案,使用者可以使用FTP用戶端通過FTP協定通路位于FTP伺服器上的資源。在開發網站的時候,通常利用FTP協定把網頁或程式傳到Web伺服器上。此外,由于FTP傳輸效率非常高,在網絡上傳輸大的檔案時,一般也采用該協定。
預設情況下FTP協定使用TCP端口中的 20和21這兩個端口,其中20用于傳輸資料,21用于傳輸控制資訊。但是,是否使用20作為傳輸資料的端口與FTP使用的傳輸模式有關,如果采用主動模式,那麼資料傳輸端口就是20;如果采用被動模式,則具體最終使用哪個端口要伺服器端和用戶端協商決定。
2.vsftpd 安 裝 及 啟 用
dnf install vsftpd -y ##安裝vsftpd服務:在服務端
關閉 selinux diable 狀态 ##服務端和用戶端均設定為disabled狀态
systemctl enable --now firewalld ###服務端和用戶端的火牆均打開
systemctl enable --now vsftpd ##設定vsftpd服務開機自啟動 :服務端
firewall-cmd --permanent --add-device=ftp
firewall-cmd --reload
firewalld -cmd --permanent --add-source=192.168.3.15 --zone=trusted
systemctl restart firewalld
vim /etc/vsftpd/vsftpd.conf ##服務端編輯vsftpd服務的主配置檔案,進行設定,編輯完需要重新開機服務
anonymous_enable=YES ##啟動匿名使用者的通路功能
systemctl restart vsftpd
測試安裝釋出: firefox ftp://ip
lftp ip ##此通路方式必須能列出資源才算通路成功##在使用完成後請輸入 exit 推出 lftp
3.vsftpd 基 本 信 息
服務名稱 | vsftpd.service |
---|---|
配置目錄: | /etc/vsftpd |
主配置檔案: | /etc/vsftpd/vsftpd.conf |
預設釋出目錄: | /var/ftp |
報錯資訊: | 550 ##程式本身拒絕 553##檔案系統權限限制 500##權限過大 530##認證失敗 |
[[email protected]_rh124_111 ftp]# ss -antlupe | grep vsftpd
tcp LISTEN 0 32 *:21 *:* users:(("vsftpd",pid=8688,fd=3)) ino:170973 sk:11 v6only:0 <->
[[email protected]_rh124_111 ftp]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf ##主配置檔案
4.匿名使用者通路控制
編輯主配置檔案的資訊,重新開機服務==
lftp 192.168.3.15 ##當通路 ftp 服務時沒有加入使用者認證為匿名通路
lftp 192.168.3.15 -u westos ##本地使用者通路
登陸控制
server
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES|NO
systemctl restart vdftpd
家目錄控制
anon_root=/westos
server
client
凡是涉及目錄的操作,如上傳,看上傳目錄是否有寫權限,更改目錄權限,及組身份,
上傳控制
server:
anon_upload_enable=YES|NO
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
client
目錄建立控制
server:
anon_mkdir_write_enable=YES|NO
client
下載下傳控制
anon_world_readable_only=NO ##匿名使用者可以下載下傳不能讀的檔案
删除重指令控制
anon_other_write_enable=YES|NO
匿名使用者上傳檔案權限設定
anon_umask=xxx
anon_umask=022 ##當設定 chown_username 之後上傳文權限将不是用此參數設定
匿名使用者上傳檔案的使用者身份設定
chown_upload=YES chown_username=westos chown_upload_mode=0644
登陸數量控制: max_clients=2
client
上傳速率控制
anon_max_rate=102400 ###上傳速率在100k每秒左右
server
client
5.本地使用者的通路
登陸控制
useradd westos useradd lee
echo lee | passwd --stdin westos echo lee | passwd --stdin lee
lftp 192.168.3.15 -u westos
server
vim /etc/vsftpd/vsftpd.conf
local_enable=NO|YES 本地使用者可以登入
systemctl restart vsftpd
client
家目錄控制
server
vim /etc/vsftpd/vsftpd.conf
local_root=/westos
systemctl restart vsftpd
client
寫權限控制
server
修改配置檔案
write_enable=NO|YES
client
上傳檔案權限控制
local_umask=077
使用者登陸控制
/etc/vsftpd/ftpusers ##永久黑
/etc/vsftpd/user_list ##預設黑 —>/etc/vstpd/vsftpd.conf中
userlist_deny=YES時|預設就是yes
使用者登陸白名單
server
userlist_deny=NO #設定/etc/vsftpd/user_list 位白名單
#不在名單中的使用者不能登陸 ftp
重新開機服務
鎖定使用者到自己的家目錄中
chmod u-w /home/* chroot_local_user=YES
鎖定使用者到自己的家目錄中的白名單:隻有白名單的使用者不被鎖定
server
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
重新開機服務
client
鎖定使用者到自己的家目錄中的黑名單:黑名單中的使用者被鎖定
server
chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
重新開機服務
westos使用者被設定為鎖定使用者到自己的家目錄中的黑名單,
client
6.虛拟使用者通路
6.1虛拟使用者的建立
1.vim /etc/vsftpd/ftp_auth_ftpuserlist立認證檔案模闆
westos1 ##虛拟使用者
123 ##密碼
westos2
123
westos3
123
2.db_load -T -t hash -f ftp_auth_file ftp_auth_file.db ##加密認證檔案 -T 轉換 -t type - f 指定轉換檔案
3 建立認證政策】
vim /etc/pam.d/westosftpauth
account required pam_userdb.so db=/etc/vsftpd/ftpuserlist
auth required pam_userdb.so db=/etc/vsftpd/ftpuserlist
4在ftp服務的配置檔案中使用的認證政策為上圖設定的認證政策
.vim /etc/vsftpd/vsftpd.conf
pam_service_name=westosftpauth ##指定認證政策檔案
guest_enable=YES ##指定虛拟使用者功能開啟
guest_username=westos ##指定虛拟使用者在 ftp 伺服器上的使用者身份
6.2虛拟使用者家目錄的獨立設定
mkdir -p /ftpuserdir/westos{1…3}
touch /ftpuserdir/westos1/westos1file touch /ftpuserdir/westos2/westos2file touch /ftpuserdir/westos3/westos3file
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserdir/$USER
user_sub_token=$USER
systemctl restart vsftpd
虛拟使用者預設通路目錄
6.3使用者配置獨立
user_config_dir=/etc/vsftpd/user_config #在此目錄中與使用者名稱相同的檔案為使用者配置檔案
mkdir /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/westos2 anon_upload_enable=YES
設定完成後 westos2 使用者可以上傳檔案
westos1 和 westos3 不行
server
1.修改預設目錄的權限。
[[email protected]_rh124_111 vsftpd]# chmod 775 /westosdir/westos*/pub
[[email protected]_rh124_111 vsftpd]# chgrp westos /westosdir/westos*/pub
[[email protected]_rh124_111 vsftpd]# ls -ld /westosdir/westos*/pub
drwxrwxr-x 2 root westos 6 Aug 14 04:49 /westosdir/westos1/pub
drwxrwxr-x 2 root westos 20 Aug 14 21:46 /westosdir/westos2/pub
drwxrwxr-x 2 root westos 6 Aug 14 04:49 /westosdir/westos3/pub
2.關閉主配置檔案的上傳功能
anon_upload_enable=NO
3.設定上傳使用者白名單
[[email protected]_rh124_111 vsftpd]# mkdir confdir
[[email protected]_rh124_111 vsftpd]# cd confdir/
[[email protected]_rh124_111 confdir]# vim westos2
[[email protected]_rh124_111 confdir]# cat /etc/vsftpd/confdir/westos2 ##同名檔案的使用者可以上傳
anon_upload_enable=YES
[[email protected]_rh124_111 vsftpd]# tail -n 7 /etc/vsftpd/vsftpd.conf
pam_service_name=westosftpauth
guest_enable=YES
guest_username=westos
userlist_enable=YES
local_root=/westosdir/$USER
user_sub_token=$USER
user_config_dir=/etc/vsftpd/confdir ####與檔案同名的使用者可以上傳
[[email protected]_rh124_111 vsftpd]# systemctl restart vsftpd
client
only westos2 upload
[[email protected] Desktop]# lftp 172.25.254.111 -u westos3
Password:
lftp [email protected]:~> ls
drwxr-xr-x 2 0 1000 6 Aug 14 08:49 pub
drwxr-xr-x 2 0 0 6 Aug 14 08:50 westos3file
lftp [email protected]:/> cd pub/
lftp [email protected]:/pub> ls
lftp [email protected]:/pub> put /etc/passwd ##westos3使用者不能上傳檔案
put: /etc/passwd: Access failed: 553 Could not create file.
lftp [email protected]:/pub> quit
[[email protected] Desktop]# lftp 172.25.254.111 -u westos2 ##westos2使用者可以上傳檔案
Password:
lftp [email protected]:~> ls
drwxrwxr-x 2 0 1000 6 Aug 14 08:49 pub
drwxr-xr-x 2 0 0 6 Aug 14 08:50 westos2file
lftp [email protected]:/> cd pub/
lftp [email protected]:/pub> put /etc/passwd
2576 bytes transferred