FTP 服務搭建
最近一直偷懶,沒有上傳博客,最近工作中正好要搭建FTP,來寫個博客吧。
同誌還需努力啊,天天犯懶以後只能去吃土了。
首先介紹一下我的實驗環境:CentOS6.7,內核2.6
[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
實驗中我是關閉了selinux和iptables
[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
如何關閉selinux,iptables
- selinux
編輯 /etc/selinux/config 文件,調整參數 SELINUX=disabled - iptables
執行 chkonfig iptables off,查看命令 chkconfig --list iptables
安裝 ftp 服務
安裝是很簡單的,直接執行 yum 命令,輕松又愉快。
養成好習慣,安裝完成後檢查一下,是否安裝成功。
yum -y install vsftpd
rpm -qa | grep vsftpd
vsftpd-2.2.2-24.el6.x86_64
用戶在登錄 ftp 服務器時用戶名和密碼都是使用明文傳送,尤為的不安全,所以下面實驗的要求是
1.禁止匿名用戶登錄(anonymous)
2.禁止系統用戶登錄
3.啟用虛擬用戶登錄,並指定虛擬用戶登錄後的家目錄(管理員指定的家目錄)
配置 ftp 服務
/etc/vsftpd/vsftpd.conf 是 ftp 的主配置文件
上面已經安裝了 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
修改主配置文件,禁止匿名用戶登錄
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
創建虛擬用戶口令文件
可以隨便自己起個名字,我這裏就叫 vuser.txt
這個文件中就是需要登錄的虛擬用戶名和密碼
格式:
用戶1
密碼
用戶2
密碼
後面會對這個文件進行加密處理,所以不用擔心安全問題
cat /etc/vsftpd/vuser.txt
test1
1234
test2
1234
安裝口令認證
yum -y install db4-utils
生成登錄驗證的二進制文件
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。
FTP 服務搭建