1 安裝vsftpd
html
[root@qdlinux ~]# yum install vsftpd Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Resolving Dependencies --> Running transaction check ---> Package vsftpd.x86_64 0:3.0.2-22.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================= Package Arch Version Repository Size ======================================================================================================================= Installing: vsftpd x86_64 3.0.2-22.el7 dvd 169 k Transaction Summary ======================================================================================================================= Install 1 Package Total download size: 169 k Installed size: 348 k Is this ok [y/d/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : vsftpd-3.0.2-22.el7.x86_64 1/1 Verifying : vsftpd-3.0.2-22.el7.x86_64 1/1 Installed: vsftpd.x86_64 0:3.0.2-22.el7 Complete! [root@qdlinux ~]#
2 安裝ftp
lftp
客戶端軟件linux
[root@qdlinux ~]# yum install ftp lftp -y Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Resolving Dependencies --> Running transaction check ---> Package ftp.x86_64 0:0.17-67.el7 will be installed ---> Package lftp.x86_64 0:4.4.8-8.el7_3.2 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================= Package Arch Version Repository Size ======================================================================================================================= Installing: ftp x86_64 0.17-67.el7 dvd 61 k lftp x86_64 4.4.8-8.el7_3.2 dvd 752 k Transaction Summary ======================================================================================================================= Install 2 Packages Total download size: 812 k Installed size: 2.5 M Downloading packages: ----------------------------------------------------------------------------------------------------------------------- Total 8.7 MB/s | 812 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : lftp-4.4.8-8.el7_3.2.x86_64 1/2 Installing : ftp-0.17-67.el7.x86_64 2/2 Verifying : ftp-0.17-67.el7.x86_64 1/2 Verifying : lftp-4.4.8-8.el7_3.2.x86_64 2/2 Installed: ftp.x86_64 0:0.17-67.el7 lftp.x86_64 0:4.4.8-8.el7_3.2 Complete!
3 啓動服務並加入開機自啓動算法
[root@qdlinux ~]# systemctl start vsftpd [root@qdlinux ~]# systemctl enable vsftpd Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
4 查看監聽端口狀態數據庫
[root@qdlinux ~]# ss -lntup | grep vsftpd tcp LISTEN 0 32 :::21 :::* users:(("vsftpd",pid=1411,fd=3))
服務啓動後默認訪問的目錄爲/var/ftp,且匿名用戶沒有上傳、建立、重命名、刪除功能.可是具備下載功能.apache
服務開啓後直接訪問vim
建立文件夾被拒絕安全
重命名失敗服務器
咱們來修改配置文件讓匿名用戶能夠上傳文件,編輯配置文件vim /etc/vsftpd/vsftpd.conf
,修改成以下內容tcp
anon_upload_enable=YES anon_umask=022
如今依然沒法上傳文件,這是由於ftp的權限問題致使的,咱們將其修改成ftp用戶權限.測試
==注意:默認匿名用戶家目錄/var/ftp的權限是755,這個權限是不能改變的,切記!==
[root@qdlinux var]# ll -d ftp drwxr-xr-x 3 root root 30 Aug 13 21:32 ftp [root@qdlinux var]# chown -Rf ftp /var/ftp/pub [root@qdlinux var]# ll ftp total 0 -rw-r--r-- 1 root root 0 Aug 13 21:32 1.txt drwxr-xr-x 2 ftp root 19 Aug 13 21:32 pub
如今已經能夠上傳文件了,可是隻能上傳到ftp/pub目錄中,由於剛纔給的就是這個目錄的權限.如今就作到了只能上傳文件和下載的目的,可是不能建立文件夾.
上傳文件
重命名失敗
建立文件夾被拒絕
[root@qdlinux var]# ll ftp/pub total 0 -rw-r--r-- 1 ftp root 0 Aug 13 21:32 2.txt -rw-r--r-- 1 ftp ftp 0 Aug 13 21:51 new.txt [root@qdlinux var]#
若是須要開啓匿名用戶能夠建立文件夾功能,修改配置文件以下所示.
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_umask=022
如今匿名用戶能夠上傳文件和下載文件以及建立文件夾.可是不能重命名.
若是須要開啓匿名用戶上傳下載和建立文件夾以及重命名和刪除功能,修改配置文件以下所示.
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_umask=022
如今匿名用戶能夠作到上傳和下載,建立文件夾和刪除文件夾和文件以及重命名.
上傳文件
新建文件夾
這是匿名用戶的最大權限了,通常匿名訪問的話,只要作到下載功能就能夠了。網站提供什麼用戶下載什麼。
示例演示公司內部有一臺FTP和WEB服務器,FTP的功能主要用於維護網站內容,用於上傳文件、建立目錄、更新網頁等等。公司有兩個部門負責維護任務,他們分別用team1和team2帳號進行管理,要求僅容許team1和team2帳號登陸ftp服務器,單不能登陸本地系統,並將這兩個帳號的根目錄限制爲/var/www/html,不能進去該目錄之外的任何目錄。
前期準備首先安裝apache
和vsftpd
,具體安裝方法這裏就不介紹了。
建立測試帳號team1和team2
[root@qdlinux ~]# useradd -s /sbin/nologin team1 [root@qdlinux ~]# useradd -s /sbin/nologin team2 [root@qdlinux ~]# echo "123456" | passwd --stdin team1 Changing password for user team1. passwd: all authentication tokens updated successfully. [root@qdlinux ~]# echo "123456" | passwd --stdin team2 Changing password for user team2. passwd: all authentication tokens updated successfully.
接下來修改配置文件,這裏在RHEL6中和RHEL7中配置有些不一樣
anonymous_enable=NO local_enable=YES chroot_local_user=YES local_root=/var/www/html allow_writeable_chroot=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
能夠把不限制的帳戶放到這裏面,建立用戶列表文件,由於此帳戶會訪問到其餘目錄.但這樣作事很危險的.
[root@qdlinux ~]# touch /etc/vsftpd/chroot_list [root@qdlinux ~]# vim /etc/vsftpd/chroot_list teamleader
修改apache的根目錄權限/var/www/html
[root@qdlinux ~]# ll -d /var/www/html/ drwxr-xr-x 2 root root 6 May 9 2017 /var/www/html/ [root@qdlinux ~]# chmod -R o+w /var/www/html/
訪問測試
不限制用戶訪問
不限制用戶訪問,用戶能夠隨意到任何目錄
限制用戶訪問,用戶只能在此目錄中,在安全方面相對要好不少.
文件上傳後文件擁有者權限
示例演示爲了宣傳公司的產品信息,計劃搭建FTP服務器,爲客戶提供相關資料的下載,僅容許下載產品信息,禁止上傳。公司的合做單位和能夠在FTP服務器上上傳和下載,可是不能刪除數據。
建立用戶進行FTP認證的用戶數據庫文件,其中奇數行爲帳戶名,偶數行爲密碼。編輯vim /etc/vsftpd/vuser.list
ftp 123456 vip 123456
因爲明文的信息既不安全,也不符合讓vsftpd服務程序直接加在的格式,所以須要使用db_load命令用哈希算法將明文信息文件轉成數據庫文件。在RHEL6中須要安裝db4-utils
,在RHEL7中libdb-utils
[root@qdlinux ~]# rpm -qf `which db_load` libdb-utils-5.3.21-20.el7.x86_64 [root@qdlinux ~]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db [root@qdlinux ~]# file /etc/vsftpd/vuser.db /etc/vsftpd/vuser.db: Berkeley DB (Hash, version 9, native byte-order)
下降數據庫文件的權限避免其餘人看到數據庫文件的內容,而後把明文信息文件刪除。
[root@qdlinux ~]# chmod 600 /etc/vsftpd/vuser.db [root@qdlinux ~]# ll /etc/vsftpd/vuser.db -rw------- 1 root root 12288 Aug 14 01:19 /etc/vsftpd/vuser.db
創建用於支持虛擬用戶的PAM文件
vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
創建用戶存儲文件的根目錄以及虛擬用戶映射的系統本地用戶。
[root@qdlinux ~]# useradd -d /var/ftp/share -s /sbin/nologin ftpuser [root@qdlinux ~]# useradd -d /var/ftp/vip -s /sbin/nologin ftpvip [root@qdlinux ~]# chmod -R 500 /var/ftp/share/ [root@qdlinux ~]# chmod -R 700 /var/ftp/vip/
修改配置文件
anonymous_enable=NO local_enable=YES allow_writeable_chroot=YES pam_service_name=vsftpd.vu user_config_dir=/etc/vsftpd/vuserconfig max_clients=300 max_per_ip=10
創建虛擬帳號配置文件
[root@qdlinux ~]# mkdir /etc/vsftpd/vuserconfig [root@qdlinux ~]# touch /etc/vsftpd/vuserconfig/ftp [root@qdlinux ~]# touch /etc/vsftpd/vuserconfig/vip
vim編輯/etc/vsftpd/vuserconfig/ftp
中的內容
guest_enable=YES guest_username=ftpuser anon_world_readable_only=NO anon_max_rate=50000
vim編輯/etc/vsftpd/vuserconfig/vip
中的內容
guest_enable=YES guest_username=ftpvip anon_world_readable_only=NO write_enable=YES anon_mkdir_write_enable=YES anon_upload_enable=YES anon_max_rate=2000000
測試ftp帳戶
[root@qdlinux ~]# lftp 192.168.56.15 -u ftp,123456 lftp ftp@192.168.56.15:~> ls drwx------ 5 0 0 97 Aug 13 18:14 grub2 -r--r--r-- 1 0 0 11607904 Aug 13 18:13 mariadb-server.rpm
訪問限速測試
測試vip帳戶
[root@qdlinux ~]# lftp 192.168.56.15 -u vip Password: lftp vip@192.168.56.15:~> ls -rw------- 1 1004 1004 5505024 Aug 13 18:33 kali-linux-2018.2-amd64.iso -rw------- 1 1004 1004 111017984 Aug 13 18:36 kali-linux-2018.2-amd641.iso -r--r--r-- 1 0 0 11607904 Aug 13 18:30 mariadb-server.rpm
上傳和下載訪問速度測試