FTP (VsFTP) 設定

由 Derek 發表於 十二月 12, 2011 / 尚無評論

一、 FTPVsftp介紹

FTP 

檔案傳輸協議(英文:File Transfer Protocol,簡稱為FTP)是用於在網路上進行檔案傳輸的一套標準協議。透過FTP就可以在網路上進行文件的上傳或下載。它屬於網路傳輸協議的應用層。FTP是一個8位元的用戶端-伺服器協議,能操作任何型別的檔案而不需要進一步處理,就像MIMEUnicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求資料之間的時間,會非常長;並且不時的必須執行一些冗長的登陸行程。

 

維基百科

VsFTP

VsFTP是一款在Linux版本中,最被廣泛使用的FTP服務。優點是小巧輕快、安全易用,能讓自身特點得以發揮。目前在開源碼中常見的FTPD套件主要有,ProFTPDPureFTPdwuftpd等。

 

 

二、 VsFTP 設定說明

VsFTP的啟動方式有兩種「VsFTP」和「xinetd」。

在這邊就先來介紹用VsFTP啟動的方式。

若想了解xinetd啟動方式可參考「vsftpd架設(Super daemon)

 

1. 安裝VsFTP

1.1 先查詢是否有安裝了VsFT

[root@localhost ~]#  rpm -q vsftpd 

vsftpd-2.0.5-21.el5

 

1.2 安裝及啟用VsFTP

若沒有安裝的話請先行安裝

[root@localhost ~]#  yum install vsftpd 

[root@localhost ~]# /etc/init.d/vsftp start

[root@localhost ~]#  netstat -tulnp |grep 21

tcp    0    0 0.0.0.0:21     0.0.0.0:*       LISTEN      4804/vsftpd

#確定vsftp服務是否有起來,並且是以vsftp所啟動的

 

2. 設定vsftpd.conf

首先提供比較常用到的設定

至於其他的相關設定說明可參考「Vsftd.conf設定說明

 

以下設定大致內容為:

  不允許匿名登入且使用server上的實體用戶登入

 限制使用者不能離開家目錄

 以Vsftp方式啟用ftp

 可限制無法使用ftp的帳號

 使用被動連線,且設定被動連線的port

[root@localhost ~]#  vim /etc/vsftpd/vsftpd.conf 

# 設定為不允許anonymous (匿名) 登入的vsftpd主機

anonymous_enable=NO

 

# 設定是否讓在/etc/passwd內的帳號以實體用戶的方式登入vsftpd主機

local_enable=YES

 

# 設定是否允許使用者上傳資料

write_enable=YES

 

# 限制使用者登入的權限

local_umask=022

 

# 使用者進入某個目錄時,會顯示該目錄需要注意的內容

dirmessage_enable=YES

 

# 使用者上傳與下載檔案都會被紀錄起來,方便用於查詢資料

xferlog_enable=YES

 

# 主動連線使用的FTP伺服器的埠號(預設為20 port)

# 主動連線所使用到的實際port號為20+1=21port

connect_from_port_20=YES

 

# 是否設定為wu ftp相同的登錄檔格式,預設為NO。

xferlog_std_format=NO

 

# 將使用者限制在自己的家目錄之內(chroot)

chroot_local_user=YES

 

# 設定為YES是以VsFTP(stand alone)啟動,設為NO則是用xinetd(supe daemon)啟動

listen=YES

 

# 這個是pam模組的名稱,我們放置在/etc/pam.d/vsftpd

pam_service_name=vsftpd

 

# 是否藉助vsftpd的抵擋機制來處理某些不受歡迎的帳號

# userlist_deny設定為YES時,被寫入到vsftpd.user_list的帳號將無法使用FTP。

# 但是userlist_deny也必須要userlist_enable也設為YES才會有用。

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd.user_list

 

# 是否支源TCP Wrappers,預設為YES

tcp_wrappers=YES

 

# 是否要起動被動連線(passive mode),依現在使用者習慣最好都打開。所以設為YES

pasv_enable=YES

 

# 設定被動連線所使用到的port號。如果都設為0的話,表示隨機使用port號。

# 但在這邊會比較建議還是直接設定指定的port,會比較好一些。

pasv_min_port=65400

pasv_max_port=65410

 

[root@localhost ~]# /etc/init.d/vsftp restart

 

3. 防火牆設定

3.1 如果只有開啟主動連線的話,只需設此防火牆規則。

[root@localhost ~]#  vim /etc/sysconfig/iptables 

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -dport 21 -j ACCEPT

[root@localhost ~]# /etc/init.d/iptables restart

 

3.2 如果有開啟被動連線,請加入以下防火牆規則

[root@localhost ~]#  vim /etc/sysconfig/iptables 

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -dport 21 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -dport 65400:65410 -j ACCEPT

#在第二筆規則的65400:65410請依照在vsftpd.conf所設的port而修改。

[root@localhost ~]# /etc/init.d/iptables restart

到此VsFTP的基本設定就完成了,可登入FTP使用。

 接下來要介紹一些進階用法,有需要的可參考看看。

 

 

三、 VsFTP 進階用法

在以下的設定當中,若有修改過設定請記得要重啟vsftp

1. 建立登入歡迎訊息

當使用者用FTP軟體登入SERVER時,會看到如下圖的歡迎訊息

 

設定的方式如下,先到vsftpd.conf檔加入參數後到welcome.txt編寫內容。

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

banner_file=/etc/vsftpd/welcome.txt      #設定welcome.txt存放的路徑

[root@localhost ~]#  vim /etc/vsftpd/welcome.txt

歡迎光臨 FAQ-BOOK

這是一個TEST的訊息

[root@localhost ~]# /etc/init.d/vsftp restart

2. 限制登入帳號設定

2.1 限制使用root登入及不受歡迎的帳號

先到vsftpd.conf檔加入參數後到vsftpd.user_listr加入要限制的帳號。

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

# 使用vsftpd的抵擋機制來處理某些不受歡迎的帳號

# userlist_deny設定為YES時,被寫入到vsftpd.user_list的帳號將無法使用FTP。

# 但是userlist_deny也必須要userlist_enable也設為YES才會有用。

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd.user_list

[root@localhost ~]#  vim /etc/vsftpd.user_list

root

test

[root@localhost ~]# /etc/init.d/vsftp restart

 

2.2 只允許特定的帳號能登入,其他帳號都不能登入。

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

userlist_enable=YES

userlist_deny=NO       #主要是把原先的YES改為NO

userlist_file=/etc/vsftpd.user_list

[root@localhost ~]# vim /etc/vsftpd.user_list

#加入能登入的帳號

root

test

[root@localhost ~]# /etc/init.d/vsftp restart

 

3. chroot的使用

3.1讓所有使用者不能離開家目錄,只有特定帳號能離開

設定所有使用者不能離開家目錄。若有例外的帳號請加入到vsftpd.chroot_list

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

chroot_local_user=YES                             #將使用者限制在自己的家目錄之內(chroot)

chroot_list_enable=YES                            #是否啟用將某些實體用戶限制在他們的家目錄內

chroot_list_file=/etc/vsftpd.chroot_list     #若有例外的帳號加入到vsftpd.chroot_list

[root@localhost ~]# vim /etc/vsftpd.chroot_list

#要讓那個帳號可以離開家目錄就加入此帳號

test

root

[root@localhost ~]# /etc/init.d/vsftp restart

 

3.2 所有使用者都能離開家目錄,只有特定的帳號不能離開。

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

chroot_local_user=NO                            #將使用者限制在自己的家目錄之內(chroot)

chroot_list_enable=YES                          #是否啟用將某些實體用戶限制在他們的家目錄內

chroot_list_file=/etc/vsftpd.chroot_list   #若有例外的帳號加入到vsftpd.chroot_list

[root@localhost ~]# vim /etc/vsftpd.chroot_list

#要讓那個帳號不能離開家目錄就加入此帳號

test

root

[root@localhost ~]# /etc/init.d/vsftp restart

 

4. 限制下載的頻寬

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

#實體用戶的傳輸速度限制,單位為 bytes/second, 0 為不限制

local_max_rate=200000  

[root@localhost ~]# /etc/init.d/vsftp restart

 

5. 限制同時最大上限人數和相同IP同時連線數

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

#這個設定項目可以設定同一時間,最多有多少 client 可以同時連上 vsftpd

max_clients=10

#與max_clients 類似,這裡是同一個 IP 同一時間可允許多少連線

max_per_ip=1

[root@localhost ~]# /etc/init.d/vsftp restart

6. 主動連線和被動連線設定

基本上在一開始設定好的時後,在主動連線部份就會已經設定好。

因此只需要設定被動連線的部份就行了。

先在vsftpd.conf加入參數後,在防火牆規則添加設定。

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

# 是否要起動被動連線(passive mode),依現在使用者習慣最好都打開。所以設為YES

pasv_enable=YES

 

# 設定被動連線所使用到的port號。如果都設為0的話,表示隨機使用port號。

# 但在這邊會比較建議還是直接設定指定的port,會比較好一些。

pasv_min_port=65400

pasv_max_port=65410

[root@localhost ~]# /etc/init.d/vsftp restart

[root@localhost ~]# vim /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -dport 21 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -dport 65400:65410 -j ACCEPT

#在第二筆規則的65400:65410請依照在vsftpd.conf所設的port而修改。

[root@localhost ~]# /etc/init.d/iptables restart

 

7. 限制連線IP

限制連線IP的方式有很多種,在這邊介紹兩種。「設iptables」和「設hosts.allowhosts.deny

7.1 設定iptables

[root@localhost ~]# vim /etc/sysconfig/iptables 

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -s 192.168.10.12 -dport 21 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -s 192.168.10.12 -dport 65400:65410 -j ACCEPT

#在上面的兩筆規則中的IP請自行更換為要設定的IP,設定完成後就只有此IP能連FTP

#在第二筆規則的65400:65410請依照在vsftpd.conf所設的port而修改。

[root@localhost ~]# /etc/init.d/iptables restart

 

7.2hosts.allowhosts.deny

此設定方式有兩種請依自行須要設定

7.2.1 封鎖全部IP只允許某些IP

hosts.allow設定允許IP,然後hosts.deny設定封鎖全部IP

[root@localhost ~]# vim /etc/hosts.allow 

#把允許使用的IP加入

vsftpd : 192.168.10.12  192.168.10.13 : allow

[root@localhost ~]# vim /etc/hosts.deny

#把所有的IP都封鎖只讓hosts.allow的IP過

vsftpd : ALL : Deny

 

7.2.2 封鎖特定IP

[root@localhost ~]# vim /etc/hosts.allow 

#把允許所有IP登入使用

vsftpd : ALL : allow

[root@localhost ~]# vim /etc/hosts.deny

#把要封鎖的IP加入到hosts.allow

vsftpd : 192.168.10.12  192.168.10.13: Deny

 

8. 設定帳號只能使用FTP不能用SSH

[root@localhost ~]# vi /etc/shells 

/bin/sh

/bin/bash

/sbin/nologin    #查看是否有此行,如果沒有請自行加入

/bin/tcsh

/bin/csh

/bin/ksh

[root@localhost ~]# vipw

#如果沒錯的話新加入的帳號會在最後一行

#請把/bin/tcsh改為/sbin/nologin

faqftp:x:500:500::/home/faqftp:/bin/tcsh

faqftp:x:500:500::/home/faqftp:/sbin/nologin

 

 

相關文章:

Vsftpd架設(stand alone-實體用戶)

Vsftpd架設(Super daemon-匿名登入)

Vsftpd架設(Super daemon)

Vsftd.conf設定說明

Super daemon設定檔說明

 

 

 

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*