上文:Linux服務器配置-VSFTP服務配置(四)
使用虛拟用戶認證登錄FTP服務器是最安全的一種認證模式,因為用于登錄FTP服務器的用戶名在Linux系統中不是真實存在的(非本地用戶),即使通過抓包工具得到了用戶名及密碼,也不能用于登錄Linux系統。
一、配置前的準備工作
1、安裝db4-utils軟件包
由于在配置時,需要使用db_load命令,用哈希(hash)算法将明文的虛拟用戶密鑰文件轉換成數據庫文件,所以需要安裝db4-utils這個軟件包。
yum install -y db4-utils
2、db_load命令說明
語法:db_load [-nTV] [-c name=value] [-f file] [-h home] [-P password] [-t btree | hash | recno | queue] db_file
選項:
-T 允許應用程序能夠将文本文件轉譯載入進數據庫。如果指定了選項-T,那麼一定要追跟子選項-t
-t 子選項-t追加在-T選項後,用來指定轉譯載入的數據庫類型,-t可以指定的數據類型有Btree、Hash、Queue和Recon數據庫。
-f 參數後面接包含用戶名和密碼的文本文件,文件的内容是:奇數行為用戶名、偶數行為密碼。
3、配置文件相關配置項重點說明
a、因為虛拟用戶是通過映射本地用戶來登錄FTP的,所以配置文件中local_enable配置項必須設為YES(local_enable=YES)。
b、虛拟用戶的權限控制是使用匿名用戶的配置項來實現的,要想虛拟用戶具有寫操作的權限,可以通過以下配置項來實現,另外将配置項anonymous_enable設為NO,并不影響虛拟用戶登錄FTP服務器。
anon_upload_enable=YES|NO
anon_other_write_enable=YES|NO
anon_mkdir_write_enable=YES|NO
配置項具體解釋請參見—Linux服務器配置-VSFTP服務配置(二)。
c、用戶訪問控制配置項,也适用于虛拟用戶配置,可根據具體配置情況,将不允許訪問FTP的虛拟用戶添加到訪問控制列表中。
userlist_enable=YES|NO
userlist_deny=YES|NO
userlist_file=/etc/vsftpd/user_list
配置項具體解釋請參見—Linux服務器配置-VSFTP服務配置(四)。
d、通過user_config_dir設置項,可以為每個虛拟用戶設置不同的配置文件,但配置文件名需與虛拟用戶名相同。沒有單獨配置文件的虛拟用戶,适用于主配置文件。
二、實例說明使用數據庫文件方式配置虛拟用戶認證登錄FTP服務器
1、配置軟件環境說明。
CentOS6系統:
CentOS release 6.10 (Final)
vsftpd-2.2.2-24.el6.x86_64
RHEL7系統
Red Hat Enterprise Linux Server release 7.6 (Maipo)
vsftpd-3.0.2-25.el7.x86_64
服務器配置要求:
2、防火牆配置。
vsftpd服務的防火牆配置已在—Linux服務器配置-VSFTP服務配置(三)中加以說明,這裡不再重複。
3、創建虛拟用戶明文密鑰文件。
文件的内容是:奇數行為虛拟用戶名、偶數行為用戶密碼。當FTP虛拟用戶與本地用戶重名時,為了系統安全訪問FTP服務器的密碼一定不要與登錄Linux系統的密碼相同。
vim /etc/vsftpd/virusers.txt
4、生成虛拟用戶密鑰認證數據庫文件。
将明文密鑰文件,使用db_load命令轉化成數據庫文件。為了安全起見,再轉化為數據庫文件後,可删除前面創建的虛拟用戶明文密鑰文件。
db_load -T -t hash -f /etc/vsftpd/virusers.txt /etc/vsftpd/virusers.db
5、編輯 vsftpd 服務的PAM認證文件(/etc/pam.d/vsftpd)。
vim /etc/pam.d/vsftpd
在PAM認證文件中,加入以下兩行,并注釋掉其他行。其他行為本地用戶登陸時的驗證項。另外,PAM認證文件中“db=”的參數為使用db_load命令生成的數據庫文件的路徑,但不寫數據庫文件的後綴名。
auth required pam_userdb.so db=/etc/vsftpd/virusers
account required pam_userdb.so db=/etc/vsftpd/virusers
另外,可單獨在/etc/pam.d/目錄中創建用于虛拟用戶的PAM認證文件,但需要在 vsftpd 服務配置文件中,修改pam_service_name配置項來加以明确。
6、創建本地映射用戶,并設置FTP目錄的權限。
在Linux系統中文件都有所有者、所屬組的屬性,當使用虛拟用戶創建文件時,就會導緻文件權限出現錯誤(因為虛拟用戶不是系統本地用戶)。為此,需要創建一個本地映射用戶,也就是說,讓虛拟用戶默認登錄到與之有映射關系的這個本地用戶的目錄中,虛拟用戶創建的文件的屬性都歸屬于這個本地用戶。為了安全起見,可将這個本地用戶設置為不允許登錄Linux服務器。
adduser -d /var/vftproot -s /sbin/nologin virftp
chmod -R 755 /var/vftproot
7、備份配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
8、修改配置文件
vim /etc/vsftpd/vsftpd.conf
listen_port=21
connect_from_port_20=NO
pasv_enable=YES
pasv_min_port=59800
pasv_max_port=59900
listen=YES
listen_ipv6=NO
max_clients=0
max_per_ip=0
one_process_model=NO
accept_timeout=60
data_connection_timeout=300
idle_session_timeout=300
dirmessage_enable=YES
message_file=.message
write_enable=YES
download_enable=YES
chroot_local_user=YES
tcp_wrappers=YES
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
use_localtime=YES
anonymous_enable=NO
anon_umask=022
local_enable=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=NO
user_config_dir=/etc/vsftpd/vuser_config
pam_service_name=vsftpd
在RHEL7系統中,配置文件還需要加入以下配置項。
allow_writeable_chroot=YES
新版(2.3.5以上)的 vsftpd 程序為了安全,FTP目錄沒有寫權限,才允許用戶登錄,也可将此項設置為YES。
9、重啟vsftpd服務
service vsftpd restart
systemctl restart vsftpd
10、為虛拟用戶單獨創建配置文件及相應目錄,已調整各個虛拟用戶的不同訪問權限。
同過上述配置及主配置文件可以看出,現在所有虛拟用戶的訪問權限為:所有虛拟用戶都可以登錄FTP服務器,FTP的家目錄為/var/vftproot,并具有浏覽和下載文件的權限。
創建自定義虛拟用戶配置文件所在的目錄
mkdir -p /etc/vsftpd/vuser_config
為虛拟用戶單獨創建配置文件及相應目錄
vim /etc/vsftpd/vuser_config/snowfox #創建snowfox虛拟用戶的配置文件
加入以下配置項:
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
mkdir /var/vftproot/wendy #創建wendy虛拟用戶家目錄
chown virftp:virftp /var/vftproot/wendy/ #更改目錄的所有者及所屬組為本地映射用戶virftp
chmod 755 /var/vftproot/wendy/ #更改目錄權限
vim /etc/vsftpd/vuser_config/wendy #創建wendy虛拟用戶的配置文件
加入以下配置項:
local_root=/var/vftproot/wendy
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
由于vsftpd的主配置文件,已經滿足了itcat虛拟用戶的要求,顧不需為其建立單獨的配置文件。
11、SELinux設置
更改vsftp的SELinux布爾變量
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
setsebool -P ftpd_full_access on
12、驗證配置結果
以上是我在學習Linux系統中整理的一些學習要點,肯定會有不對的地方,希望各位大俠給與指正,我們共同學習!謝謝!
下篇:Linux服務器配置-VSFTP服務配置(六)
通過實例說明數據庫 虛拟用戶配置登錄FTP服務器。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!