一、 FTP和Vsftp介紹
FTP
檔案傳輸協議(英文:File Transfer Protocol,簡稱為FTP)是用於在網路上進行檔案傳輸的一套標準協議。透過FTP就可以在網路上進行文件的上傳或下載。它屬於網路傳輸協議的應用層。FTP是一個8位元的用戶端-伺服器協議,能操作任何型別的檔案而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求資料之間的時間,會非常長;並且不時的必須執行一些冗長的登陸行程。
VsFTP
VsFTP是一款在Linux版本中,最被廣泛使用的FTP服務。優點是小巧輕快、安全易用,能讓自身特點得以發揮。目前在開源碼中常見的FTPD套件主要有,ProFTPD、PureFTPd和wuftpd等。
二、 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.allow和hosts.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.2設hosts.allow和hosts.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 |
相關文章:
評論
此文章尚無評論。