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、速率高等。
在開源操作系統中常用的FTPD套件主要還有ProFTPD、PureFTPd和wuftpd等。
特點
1、vsftpd 是以一般身份啟動服務,所以對於 Linux 系統的使用權限較低,對於Linux 系統的危害就相對的減低了。此外, vsftpd 亦利用 chroot() 這個函式進行改換根目錄的動作,使得系統工具不會被vsftpd 這支服務所誤用;
2、任何需要具有較高執行權限的 vsftpd 指令均以一支特殊的上層程序( parent process ) 所控制 ,該上層程序享有的較高執行權限功能已經被限制的相當的低,並以不影響Linux 本身的系統為準;
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 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虛擬用戶