FTP匿名訪問模式是比較不安全的服務模式,尤其在真實的工作環境中千萬不要存放敏感的數據,以免泄露。
vsftpd程序默認已經允許匿名訪問模式,我們要做的就是開啟匿名用戶的上傳和寫入權限,寫入下面的參數:
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
參數 |
作用 |
anonymous_enable=YES |
允許匿名訪問模式。 |
anon_umask=022 |
匿名用戶上傳文件的umask值。 |
anon_upload_enable=YES |
允許匿名用戶上傳文件 |
anon_mkdir_write_enable=YES |
允許匿名用戶創建目錄 |
anon_other_write_enable=YES |
允許匿名用戶修改目錄名或刪除目錄 |
確認填寫正確后保存並退出vsftpd.conf文件,然后重啟vsftpd服務程序並設置為開機自啟動。
systemctl restart vsftpd
systemctl enable vsftpd
匿名用戶沒有寫入權限,那我們將所有者修改為ftp
chown ftp /var/ftp/pub(訪問的文件)
在客戶端嘗試登入FTP服務:
首先安裝ftp客戶端:yum install ftp -y
虛擬機登陸:
ftp 192.168.10.10
物理機登陸
本地用戶模式
既然要使用本地用戶模式,而本地用戶模式確實要比匿名訪問模式更加的安全,所以本實驗中會關閉匿名訪問模式。
vsftpd服務程序默認已經允許本地用戶模式,我們要做的是添加設置本地用戶模式權限的參數:
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
參數 |
作用 |
anonymous_enable=NO |
禁止匿名訪問模式。 |
local_enable=YES |
允許本地用戶模式。 |
write_enable=YES |
設置可寫入權限。 |
local_umask=022 |
本地用戶模式創建文件的umask值。 |
userlist_deny=YES |
參數值為YES即禁止名單中的用戶,參數值為NO則代表僅允許名單中的用戶。 |
userlist_enable=YES |
允許“禁止登陸名單”,名單文件為ftpusers與user_list。 |
確認填寫正確后保存並退出vsftpd.conf文件,然后重啟vsftpd服務程序並設置為開機自啟動。
systemctl restart vsftpd
systemctl enable vsftpd
ftpusers或user_list文件中禁止登陸用戶名單:
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
vsftpd服務為了讓FTP服務更加的安全,默認禁止登入root,那么創建個普通用戶吧:
useradd hzk
為hzk用戶設置密碼:
passwd hzk
在客戶端嘗試登入FTP服務:
ftp 192.168.5.100
虛擬機登入:
虛擬用戶模式
因為虛擬用戶模式的帳號口令都不是真實系統中存在的,所以只要配置妥當虛擬用戶模式會比本地用戶模式更加安全,但是Vsftpd服務配置虛擬用戶模式的操作步驟相對復雜一些,具體流程如下:
第1步:建立虛擬FTP用戶數據庫文件。
第2步:創建FTP根目錄及虛擬用戶映射的系統用戶。
第3步:建立支持虛擬用戶的PAM認證文件。
第4步:在vsftpd.conf文件中添加支持配置。
第5步:為虛擬用戶設置不同的權限。
第6步:重啟vsftpd服務,驗證實驗效果。
第1步:建立虛擬FTP用戶數據庫文件。
切換至vsftpd程序目錄:
cd /etc/vsftpd/
創建用於生成FTP用戶數據庫的原始帳號和密碼文件:
vim vuser.list
//單數行為帳號,雙數行為密碼。
使用db_load命令用HASH算法生成FTP用戶數據庫文件vuser.db:
db_load -T -t hash -f vuser.list vuser.db
查看數據庫文件的類型:
file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
FTP用戶數據庫內容很敏感,所以權限給小一些:
[root@linuxprobe vsftpd]# chmod 600 vuser.db
刪除原始的帳號和密碼文件:
rm -f vuser.list
第2步:創建FTP根目錄及虛擬用戶映射的系統用戶。
創建用戶virtual並設置為不允許登陸系統並定義該用戶的家目錄:
useradd -d /var/ftproot -s /sbin/nologin virtual
查看該用戶的家目錄權限:
ls -ld /var/ftproot/
drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
為保證其他用戶可以訪問,給予rwxr-xr-x權限:
chmod -Rf 755 /var/ftproot/
第3步:建立支持虛擬用戶的PAM認證文件:
vim /etc/pam.d/vsftpd.vu
//參數db用於指向剛剛生成的vuser.db文件,但不要寫后綴。
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
第4步:在vsftpd.conf文件中添加支持配置。
既然要使用虛擬用戶模式,而虛擬用戶模式確實要比匿名訪問模式更加的安全,配置的同時也關閉匿名開放模式。
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
參數 |
作用 |
anonymous_enable=NO |
禁止匿名開放模式。 |
local_enable=YES |
允許本地用戶模式。 |
guest_enable=YES |
開啟虛擬用戶模式。 |
guest_username=virtual |
指定虛擬用戶帳號。 |
pam_service_name=vsftpd.vu |
指定pam文件。 |
allow_writeable_chroot=YES |
允許禁錮的FTP根目錄可寫而不拒絕用戶登入請求。 |
第5步:為虛擬用戶設置不同的權限
現在不論是linuxprobe還是blackshield帳戶,他們的權限都是相同的——默認不能上傳、創建、修改文件,如果希望用戶blackshield能夠完全的管理FTP內的資料,就需要讓FTP程序支持獨立的用戶權限配置文件了:
指定用戶獨立的權限配置文件存放的目錄:
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
創建用戶獨立的權限配置文件存放的目錄:
mkdir /etc/vsftpd/vusers_dir/
切換進入到該目錄中:
cd /etc/vsftpd/vusers_dir/
創建空白的linuxprobe1的配置文件:
touch linuxprobe1
指定linuxprobe1用戶的具體權限:
vim linuxprobe1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
第6步:重啟vsftpd服務,驗證實驗效果。
確認填寫正確后保存並退出vsftpd.conf文件,重啟vsftpd程序並設置為開機后自動啟用:
systemctl restart vsftpd
systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
虛擬機/客戶機登入:
mkdir files