1. 程式人生 > >Centos7-Vsftpd虛擬用戶

Centos7-Vsftpd虛擬用戶

配置文件 例如 關閉防火墻 實驗 偶數 用戶創建 hash F5 rac

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
技術分享圖片
註:該虛擬用戶數據庫文件的奇數行為用戶名,偶數行為密碼。

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

3、給虛擬用戶數據庫文件和認證模塊識別的數據文件指定權限
chmod 600 /etc/vsftpd/ftp.*
技術分享圖片

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

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

2、創建用戶並指定家目錄 useradd -d /data/ -s /sbin/nologin ftpuser
技術分享圖片

3、查看是否創建系統用戶並指定家目錄為/data/ cat /etc/passwd
技術分享圖片

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

5、創建每個虛擬用戶的家目錄 mkdir /data/file_1
技術分享圖片
註:這裏創建的三個目錄為三個虛擬用戶的家目錄,user1虛擬用戶家目錄為file_1,
user2虛擬用戶家目錄為file_2,user3虛擬用戶家目錄為file_3。

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

四、配置pam認證模塊

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

2、配置pam認證模塊文件 vi /etc/pam.d/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
技術分享圖片

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

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

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

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

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

1)創建user1虛擬用戶配置文件 vi /etc/vsftpd/dir/user1
技術分享圖片
註:每個虛擬用戶都從這裏指定訪問權限,當前user1虛擬用戶擁有完全權限。

2)創建user2虛擬用戶配置文件 vi /etc/vsftpd/dir/user2
技術分享圖片
註:當前user2用戶只用上傳下載的權限。

3)創建user3虛擬用戶配置文件 vi /etc/vsftpd/dir/user3
技術分享圖片
註:當前user3用戶只有上傳和下載和創建目錄的權限,無其他權限。

4、重啟vsftpd服務 systemctl restart vsftpd

5、查看監聽端口 netstat -antupl | grep vsftpd
技術分享圖片

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

1、虛擬用戶測試方式:
方式一:本地服務器使用ftp命令測試 ftp 127.0.0.1
技術分享圖片

方式二:使用真機機器訪問服務器 ftp://192.168.152.164
技術分享圖片

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

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

方式二:使用user2,只有上傳下載功能,無其他任何權限。
技術分享圖片
技術分享圖片

方式三:使用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
技術分享圖片
總結:以上完全實現了vsftpd的虛擬用戶搭建,但是切記盡量使用,vsftpd的被動模式,因為主動模式會被防火墻自動攔截。除非完全在內網使用並且每臺機器都關閉了防火墻。

Centos7-Vsftpd虛擬用戶