1. 程式人生 > >FTP 服務搭建

FTP 服務搭建

redhat mkdir 一個 chmod mis account 執行 指定 chown

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 服務搭建