Centos7-Vsftpd虛擬用戶

Centos7-Vsftpd虛擬用戶

vsftpd定義

vsftpd 是一個 UNIX 類操作系統上運行的服務器的名字,它可以運行在諸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服務器不支持的特徵。此外,本文還介紹了FTP基本原理,以及FTP用戶管理方面的基礎知識。

簡介

vsftpd 是"very secure FTP daemon"的縮寫,安全性是它的一個最大的特點。vsftpd 是一個 UNIX 類操作系統上運行的服務器的名字,它可以運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開放源代碼的ftp服務器軟件,支持很多其他的 FTP 服務器所不支持的特徵。比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創建虛擬用戶、支持IPv6、速率高等。
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。
在開源操作系統中常用的FTPD套件主要還有ProFTPD、PureFTPd和wuftpd等。

特點

1、vsftpd 是以一般身份啓動服務,所以對於 Linux 系統的使用權限較低,對於Linux 系統的危害就相對的減低了。此外, vsftpd 亦利用 chroot() 這個函式進行改換根目錄的動作,使得系統工具不會被vsftpd 這支服務所誤用;
2、任何需要具有較高執行權限的 vsftpd 指令均以一支特殊的上層程序( parent process ) 所控制 ,該上層程序享有的較高執行權限功能已經被限制的相當的低,並以不影響Linux 本身的系統爲準;
3、所有來自 clients 端,想要使用這支上層程序所提供的較高執行權限之vsftpd 指令的需求,均被視爲『不可信任的要求』來處理,必需要經過相當程度的身份確認後,方可利用該上層程序的功能。例如chown(), Login 的要求等等動作;
4、此外,上面提到的上層程序中,依然使用 chroot() 的功能來限制使用者的執行權限。

實驗環境:

系統:Centos7-3.10.0-514.el7.x86_64
系統IP:192.168.152.164
Vsftpd服務器端:vsftpd-3.0.2-22.el7.x86_64
Vsftpd客戶端:ftp-0.17-67.el7.x86_64
注:客戶端不重要,這裏安裝是爲了本地做測試,如果不安裝,用telnet做測試也行,根據自己喜歡方式即可
關閉防火牆 systemctl stop firewalld.service
禁止防火牆開機自啓 systemctl disable firewalld.service
關閉selinux sed -i 's/SELINUX=enforcing /SELINUX=disabled/g'
/etc/sysconfig/selinux

一、安裝ftp服務

1、 查看是否安裝vsftpd rpm -qa | grep vsftpd

2、安裝vsftpd和ftp yum -y install vsftpd ftp

3、設置服務開機自啓 systemctl enable vsftpd

二、建立虛擬FTP用戶的帳號數據庫文件

1、編輯虛擬數據庫文件 vi /etc/vsftpd/ftp.list
Centos7-Vsftpd虛擬用戶
注:該虛擬用戶數據庫文件的奇數行爲用戶名,偶數行爲密碼。

2、將虛擬用戶數據庫文件轉換爲認證模塊識別的數據文件
db_load -T -t hash -f /etc/vsftpd/ftp.list /etc/vsftpd/ftp.db
Centos7-Vsftpd虛擬用戶
注:如果上邊轉換數據文件命令報錯,有可能是系統沒有安裝db_load這個命令,原因是沒有安裝db4這個包,根據不同系統包名不同,所以需要自行百度。

3、給虛擬用戶數據庫文件和認證模塊識別的數據文件指定權限
chmod 600 /etc/vsftpd/ftp.*
Centos7-Vsftpd虛擬用戶

三、創建一個虛擬用戶映射的真實系統用戶

1、創建一個目錄作爲上傳數據目錄 mkdir /data/
注:我們也用這個目錄來作爲系統用戶的家目錄,這樣更安全。

2、創建用戶並指定家目錄 useradd -d /data/ -s /sbin/nologin ftpuser
Centos7-Vsftpd虛擬用戶

3、查看是否創建系統用戶並指定家目錄爲/data/ cat /etc/passwd
Centos7-Vsftpd虛擬用戶

4、給這個用戶家目錄設置權限 chmod 755 /data/

5、創建每個虛擬用戶的家目錄 mkdir /data/file_1
Centos7-Vsftpd虛擬用戶
注:這裏創建的三個目錄爲三個虛擬用戶的家目錄,user1虛擬用戶家目錄爲file_1,
user2虛擬用戶家目錄爲file_2,user3虛擬用戶家目錄爲file_3。

6、遞歸更改用戶家目錄屬性 chown -R ftpuser:ftpuser /data/
Centos7-Vsftpd虛擬用戶
注:創建一個虛擬用戶映射的真實系統用戶,指定它的家目錄爲其他目錄,默認爲/home目錄,虛擬用戶可能沒有權限訪問,指定讓這個用戶不能登錄系統,並賦予指定家目錄權限爲755即可。

四、配置pam認證模塊

1、備份pam認證模塊配置文件 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam

2、配置pam認證模塊文件 vi /etc/pam.d/vsftpd
Centos7-Vsftpd虛擬用戶
注:清除這裏所有文件,只需要編輯這兩行文件即可。切記這裏的db=/etc/vsftpd/ftp是指定的數據庫轉換文件路徑,也就是我們前邊創建的ftp.db這個文件的路徑,可能有些童鞋會問,不對啊,你這裏怎麼沒有後綴.db呢?問的好!這就是pam認證的方式,只需要路徑而不需要後綴名,如果說你偏加後綴也沒關係,那就只有報錯嘍!

3、認證方式(以下只需要看看即可,跟實驗操作沒關係)
通過修改vsftpd的PAM配置文件 /etc/pam.d/vsftpd來決定vsftpd使用何種認證方式,可以是本地系統的真實用戶認證(模塊pam_unix),也可以是獨立的用戶認證數據庫(模塊pam_userdb),也可以是網絡上的LDAP數據庫(模塊pam_ldap)等。所有這些模塊都存放在/lib/security/目錄(對AMD64則是/lib64/security/)

五、配置vsftpd配置文件

1、備份vsftpd配置文件 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
Centos7-Vsftpd虛擬用戶

2、編輯vsftpd配置文件 vi /etc/vsftpd/vsftpd.conf
Centos7-Vsftpd虛擬用戶
注:以上截圖的文件路徑沒有的別急,我們在下邊創建了,只不過是先在這配置文件寫上而已,列如:user_config_dir=/etc/vsftpd/dir和chroot_list_file=/etc/vsftpd/chroot_list
這倆個文件在下邊會創建,所以不用擔心,或者搞不懂。其餘別的自行百度查詢意思即可。

六、創建幾個不同權限的虛擬用戶

1、創建根本目錄列表文件 vi /etc/vsftpd/chroot_list
Centos7-Vsftpd虛擬用戶
注:有多少個虛擬用戶,分別按照以上格式寫在根本目錄列表文件裏。這個文件對應的是
/etc/vsftpd/vsftpd.conf文件的這行chroot_list_file=/etc/vsftpd/chroot_list

2、創建虛擬用戶配置文件目錄 mkdir /etc/vsftpd/dir

3、創建虛擬用戶配置文件(多少用戶創建多少個)

1)創建user1虛擬用戶配置文件 vi /etc/vsftpd/dir/user1
Centos7-Vsftpd虛擬用戶
注:每個虛擬用戶都從這裏指定訪問權限,當前user1虛擬用戶擁有完全權限。

2)創建user2虛擬用戶配置文件 vi /etc/vsftpd/dir/user2
Centos7-Vsftpd虛擬用戶
注:當前user2用戶只用上傳下載的權限。

3)創建user3虛擬用戶配置文件 vi /etc/vsftpd/dir/user3
Centos7-Vsftpd虛擬用戶
注:當前user3用戶只有上傳和下載和創建目錄的權限,無其他權限。

4、重啓vsftpd服務 systemctl restart vsftpd

5、查看監聽端口 netstat -antupl | grep vsftpd
Centos7-Vsftpd虛擬用戶

七、測試虛擬用戶是否生效

1、虛擬用戶測試方式:
方式一:本地服務器使用ftp命令測試 ftp 127.0.0.1
Centos7-Vsftpd虛擬用戶

方式二:使用真機機器訪問服務器 ftp://192.168.152.164
Centos7-Vsftpd虛擬用戶

2、虛擬用戶權限測試方式

方式一:使用user1,完全權限登陸,實現所有操作。
注:此操作無法演示,但實驗已經成功。

方式二:使用user2,只有上傳下載功能,無其他任何權限。
Centos7-Vsftpd虛擬用戶
Centos7-Vsftpd虛擬用戶

方式三:使用user3,只有上傳下載和新建目錄的權限,無其他權限。
注:此操作無法演示,但實驗已經成功。

八、被動模式開啓方式:

1、首先需要在vsftpd配置文件添加如下數據
pasv_enable=YES
pasv_min_port=10030
pasv_max_port=10035

2、設置防火牆iptables
1)然後開啓對應的端口即可,如下
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 10030:10035 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 21 -j ACCEPT

2)在然後對於防火牆需要按順序開啓如下模塊
/usr/sbin/modprobe ip_conntrack_ftp
/usr/sbin/modprobe ip_nat_ftp
Centos7-Vsftpd虛擬用戶
總結:以上完全實現了vsftpd的虛擬用戶搭建,但是切記儘量使用,vsftpd的被動模式,因爲主動模式會被防火牆自動攔截。除非完全在內網使用並且每臺機器都關閉了防火牆。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章