Centos7 vsftpd虛擬用戶權限控制(vsftpd虛擬用戶限制IP訪問)


實驗目標:(新增限制虛擬機用戶登陸的IP)

實現在同一跟目錄下對admin,upload,download三個虛擬用戶的不同權限的控制。具體權限控制列表如下:

用戶名 權限說明
admin 管理員,可以上傳、下載、新建文件夾、刪除和更改文件和文件夾名。
upload 不可以下載,可以上傳、新建文件夾,但不能刪除文件和文件夾,不能重命名原有文件和文件夾;
download 只能下載,不能進行其他操作。

以上三個虛擬用戶均不允許登錄系統,並且使用ftp時會被鎖定在指定目錄內不可進入系統其他目錄。

 

1、安裝vsftpd,Berkeley Database(db4)

yum install vsftpd db4-utils db4 -y

2、在/etc/vsftpd/vsftpd.conf加入或者更改以下配置語句:

anonymous_enable=NO                    #(當然你也可以設成YES,同時允許匿名用戶登陸)
local_enable=YES                       #(必須置YES,因為虛擬用戶是映射到virtual這個本地用戶來訪問的) 
guest_enable=YES #啟用虛擬機用戶 guest_username
=virtual #(第6步中創建,將虛擬用戶映射為本地virtual用戶) pam_service_name=vsftpd #(第3步中創建,指定PAM配置文件,文件已經在/etc/pam.d/存在) user_config_dir=/etc/vsftpd/user_conf #(第8,9步中創建,指定不同虛擬用戶配置文件的存放路徑)

整體配置如下,備份原配置,新建vsftpd.conf,加入下面配置

[root@jws-ftp var]# cat /etc/vsftpd/vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_enable=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/user_conf
ftpd_banner=Welcome to FTP service
allow_writeable_chroot=YES
max_clients=300
max_per_ip=10
use_localtime=YES
[root@jws-ftp var]#

3、在/etc/pam.d/中修改文件vsftpd, 對比修改內容:

auth required pam_userdb.so db=/etc/vsftpd/vu_list     
account required pam_userdb.so db=/etc/vsftpd/vu_list
#(/etc/vsftpd/vu_list 在第4,5步中創建,用戶賬號密碼數據庫文件)

#把原本的內容注釋掉,用上面的兩行代替,不然本地使用xftp無法連接,修改完后,vsftpd文件內容如下

[root@jws-ftp vsftpd]# cat /etc/pam.d/vsftpd
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
session required pam_loginuid.so
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list

4、建立用戶列表/etc/vsftpd/vu_list.txt 內容如下:

upload       #(帳號)
123456       #(用戶密碼) 
download     #(帳號) 
123456       #(用戶密碼) 
admin        #(帳號) 
123456       #(用戶密碼)
#注意:不要有空行,一行賬號 一行密碼;奇數行為帳號,偶數行為密碼

實際配置如下:

[root@jws-ftp ftp]# cat /etc/vsftpd/vu_list.txt
upload
123456
download
123456
admin
123456
[root@jws-ftp ftp]#

5、建立訪問者數據文件(如果沒有可以安裝:yum install db4-utils)

[root@localhost vsftpd] db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db
#修改db文件的權限,以免被非法用戶修改 
[root@localhost vsftpd] chmod 600 /etc/vsftpd/vu_list.db

6、建立本地虛擬用戶:

useradd -d /var/ftp -s /sbin/nologin virtual

7、在/var/ftp/創建目錄並改變其屬性和它的屬主:

chown virtual /var/ftp
chmod 775 /var/ftp

8、創建ftp用戶配制文件目錄:/etc/vsftpd/user_conf:

mkdir /etc/vsftpd/user_conf

9、在/etc/vsftpd/user_conf目錄中創建以用戶名命名的配置文件upload、download、admin

“download”文件內容如下:(記得去掉斜杠內容)

local_root=/var/ftp            \\(也可以設置成其它,但要注意virtual用戶對此目錄的權限)
anon_world_readable_only=NO    \\(使download用戶的能下載,也只能下載;寫成YES,將不能列出文件和目錄)

實際配置如下:

[root@jws-ftp var]# cat /etc/vsftpd/user_conf/download
local_root=/var/ftp
anon_world_readable_only=NO

“admin”文件內容如下:(記得去掉斜杠內容)

local_root=/var/ftp
anon_world_readable_only=NO
write_enable=YES               \\(寫權限)
anon_mkdir_write_enable=YES    \\(新建目錄權限)
anon_upload_enable=YES         \\(上傳權限)
anon_other_write_enable=YES    \\(刪除/重命名的權限)

實際配置如下:

[root@jws-ftp vsftpd]# cat user_conf/admin
local_root=/var/ftp
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
allow_writeable_chroot=YES
[root@jws-ftp vsftpd]#

 “upload”文件內容如下:

local_root=/var/ftp
anon_world_readable_only=NO
anon_umask=022               \\(此配置用於web頁面,由於web頁面的特殊性,故單獨設置上傳文件權限為755,此掩碼值可根據具體情況更改)
write_enable=YES             \\(寫權限)
anon_mkdir_write_enable=YES  \\(新建目錄權限)
anon_upload_enable=YES       \\(上傳權限)
anon_other_write_enable=YES  \\(刪除/重命名的權限)

實際配置如下:

[root@jws-ftp vsftpd]# cat user_conf/upload
local_root=/var/ftp
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
download_enable=NO
[root@jws-ftp vsftpd]#

 10、最后,重新啟動VSFTPD

systemctl restart vsftpd

 

遇到的問題

1、啟動報錯

未創建chroot_list,可以創建一個空文件

2、登陸報錯

從2.3.5之后,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了!如果檢查發現還有寫權限,就會報該錯誤。

 要修復這個錯誤,可以用命令chmod a-w /home/user去除用戶主目錄的寫權限,注意把目錄替換成你自己的。或者你可以在vsftpd的配置文件中增加下列項:

allow_writeable_chroot=YES

 

 

該需求剛做沒多久,開發的小伙伴又出難題,這次需要控制某虛擬機用戶只能從固定的IP段去登錄FTP,目前查資料沒有看到這屆網友有可以直接控制虛擬用戶的登陸IP的方法,只能通過笨辦法,通過創建和虛擬用戶同名的本地賬號(禁止SSH登陸)來通過PAM模塊做到虛擬用戶的IP限制,說白了就是限制本地用戶登錄的IP從而達到限制虛擬用戶的目的

PAM詳解請參考:https://www.cnblogs.com/kevingrace/p/8671964.html

1)上面我們已經搭建好通過虛擬用戶訪問vsftpd,現在我們在/etc/pam.d/中修改文件vsftpd

[root@jws-ftp vsftpd]# cat /etc/pam.d/vsftpd
#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth
#session required        pam_loginuid.so
auth       required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
account    required     pam_access.so            #加入該行
account    required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
[root@jws-ftp vsftpd]#

 

2)修改/etc/security/access.conf配置文件,在文件底部添加下面的一行:

[root@jws-ftp vsftpd]# vim /etc/security/access.conf
- : admin : ALL EXCEPT 10.153.59.188 10.153.49.7   #用戶admin只能從10.153.59.188和10.153.49.7這兩個IP訪問FTP服務
- : download : 10.153.60.188 #download用戶不允許從10.153.60.188這個IP訪問FTP服務

3)創建admin用戶和download用戶
[root@jws-ftp vsftpd]# useradd -s /sbin/nologin admin
[root@jws-ftp vsftpd]# passwd admin
[root@jws-ftp vsftpd]# useradd -s /sbin/nologin download
[root@jws-ftp vsftpd]# passwd download

4)重啟VSFTP服務
[root@jws-ftp vsftpd]# systemctl restart vsftpd

 

搭建VSFTP請參考(本地用戶方式):https://www.cnblogs.com/yizhipanghu/p/12857964.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM