FTP 服務搭建

FTP 服務搭建

最近一直偷懶,沒有上傳博客,最近工做中正好要搭建FTP,來寫個博客吧。
同志還需努力啊,每天犯懶之後只能去吃土了。linux

首先介紹一下個人實驗環境: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 命令,輕鬆又愉快。
養成好習慣,安裝完成後檢查一下,是否安裝成功。shell

yum -y install vsftpd
rpm -qa | grep vsftpd
vsftpd-2.2.2-24.el6.x86_64

用戶在登陸 ftp 服務器時用戶名和密碼都是使用明文傳送,尤其的不安全,因此下面實驗的要求是vim

1.禁止匿名用戶登陸(anonymous)
2.禁止系統用戶登陸
3.啓用虛擬用戶登陸,並指定虛擬用戶登陸後的家目錄(管理員指定的家目錄)安全

配置 ftp 服務

/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。

相關文章
相關標籤/搜索