最近一直偷懶,沒有上傳博客,最近工做中正好要搭建FTP,來寫個博客吧。
同志還需努力啊,每天犯懶之後只能去吃土了。linux
[root@CentOS-6 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@CentOS-6 ~]# uname -a Linux CentOS-6 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@CentOS-6 ~]# getenforce Disabled [root@CentOS-6 ~]# chkconfig --list iptables iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
安裝是很簡單的,直接執行 yum 命令,輕鬆又愉快。
養成好習慣,安裝完成後檢查一下,是否安裝成功。shell
yum -y install vsftpd rpm -qa | grep vsftpd vsftpd-2.2.2-24.el6.x86_64
用戶在登陸 ftp 服務器時用戶名和密碼都是使用明文傳送,尤其的不安全,因此下面實驗的要求是vim
1.禁止匿名用戶登陸(anonymous)
2.禁止系統用戶登陸
3.啓用虛擬用戶登陸,並指定虛擬用戶登陸後的家目錄(管理員指定的家目錄)安全
/etc/vsftpd/vsftpd.conf 是 ftp 的主配置文件bash
上面已經安裝了 ftp 服務,啓動 ftp 並查看其 21 端口是否正常工做服務器
[root@CentOS-6 ~]# /etc/init.d/vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] [root@CentOS-6 ~]# netstat -tlunp | grep vsf tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1890/vsftpd
修改主配置文件,禁止匿名用戶登陸tcp
vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO
建立虛擬用戶口令文件
能夠隨便本身起個名字,我這裏就叫 vuser.txt
這個文件中就是須要登陸的虛擬用戶名和密碼
格式:
用戶1
密碼
用戶2
密碼
後面會對這個文件進行加密處理,因此不用擔憂安全問題ide
cat /etc/vsftpd/vuser.txt test1 1234 test2 1234
安裝口令認證測試
yum -y install db4-utils
生成登陸驗證的二進制文件ui
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
開始囉嗦:咳咳
下面要實現的是不容許系統用戶登陸 ftp 服務,爲何禁止上面已經說了,由於 ftp 的用戶名密碼都是明文傳送,很容易就被截獲,非常不安全。
要禁止系統用戶登陸須要將 /etc/pam.d/vsftpd 文件中的內容所有註釋,爲啥?
其實具體我說不明白,只是系統用戶登陸 ftp 服務器都要通過這個文件,如今內容都被註釋了,天然沒法登錄了
注意:在主配置文件中(/etc/vsftpd/vsftpd.conf)文件中有一條選項,local_enable=YES(默認就是YES),大不可將其改成NO,由於即便是經過虛擬用戶登陸,咱們下面的操做也是要建立一個 nologin 的系統用戶,在將寫入 vuser.txt 文件中的用戶映射到這個系統用戶上,從而實現虛擬用戶登陸
囉嗦完畢
編輯 /etc/pam.d/vsftpd 文件,註釋全部內容,可使用末行模式,開心還簡單
末行模式的命令哈
:2,8s/^/#/g
光是註釋還不夠,還須要在 /etc/pam.d/vsftpd 文件中追加兩行內容
auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
創建本地映射用戶並設置宿主目錄權限(全部虛擬用戶映射成爲 vuser 用戶)
要指定用戶的bash shell爲 /sbin/nologin
宿主目錄的權限定義爲 755
useradd -d /home/vftproot -s /sbin/nologin vuser chmod 755 /home/vftproot/
在 /etc/vsftpd/vsftpd.conf 文件中添加內容
# 開啓虛擬用戶 guest_enable=YES # FTP虛擬用戶對應的系統用戶 guest_username=vuser # PAM認證文件(默認存在) pam_service_name=vsftpd
到此爲止 ftp 服務器就算是搭建完成了,在宿主上測試一下
介紹一下個人宿主機:win10
ftp 服務器地址:10.1.41.168
cmd 下 ftp 10.1.41.168
test1,test2用戶能夠登陸,下載文件和目錄(目錄的下載在cmd命令行中沒法實現,可使用filezilla軟件)
可是隻能下載不能上傳
ftp> put ftp.txt
200 PORT command successful. Consider using PASV.
550 Permission denied.
ftp> get zhao.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for zhao.txt (0 bytes).
226 Transfer complete.
能夠經過修改主配置文件 /etc/vsftpd/vsftpd.conf 文件,容許虛擬用戶進行上傳下載
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
上面在命令是在宿主機上操做,若是執行命令時 cmd 的路徑在 C:\Users\Administrator> 那麼默認就下載到了這個目錄
當要增長虛擬用戶時,須要從新修改 /etc/vsftpd/vuser.txt 文件,並從新生成登陸的二進制文件。
編輯 /etc/vsftpd/vsftpd.conf 文件,配置和上面同樣,可是須要多加一條
user_config_dir=/etc/vsftpd/vusers_dir
建立上面的 vusers_dir 目錄,這個目錄存放的就是每一個虛擬用戶的登陸文件了
mkdir /etc/vsftpd/vusers_dir
爲虛擬用戶創建配置文件
vim /etc/vsftpd/vusers_dir/test2 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/tmp/vtest2
建立用戶登陸後的上傳下載文件的路徑
mkdir /tmp/vtest2
更改 vcanglaoshi 這個目錄的屬主,vtest2 這個目錄要知足 ftp 的上傳權限和目錄自己的讀寫執行權限
系統中全部虛擬用戶都是 vuser,並非 test2
chown vuser /tmp/vtest2/
最後一個小總:
上面環境中有兩個用戶,分別是 test1 和 test2 用戶,
test1 登陸後的目錄是默認的 /home/vftproot/ 目錄
test2 登陸後是分割線下面咱們配置的 /tmp/vtest2 目錄
環境完成,OK。