FTP服務(vsftpd)配置

chengxuyuanyonghu發表於2014-11-19

根據很多人對CentOS FTP服務的不解,我覺得應該對CentOS FTP服務做出一定的解釋。

1.安裝

一般在CentOS上都自動安裝了vsftd,若沒有安裝則可以使用以下步驟進行安裝


yum -y install vsftpd


touch /var/log/vsftpd.log # 建立vsftp的日誌檔案


在CentOS中,這樣就可以完成了一個簡單的匿名FTP的搭建。


你可以通過訪問ftp://yourip來進行,不過這個FTP沒有任何許可權。


2.基於匿名的FTP架設

參考其他關於Vsftpd的CentOS FTP服務配置文章。


3.建立賬戶


  useradd -g www -d /data0/htdocs/www -s /sbin/nologin -M www

選項 說明

-u UID 指定新使用者的 UID,預設為使用當前最大的 UID 加1

-g GROUP 指定新使用者的主組

-G GROUP1[,GROUP2,…[,GROUPN]]] 指定新使用者的附加組

-d HOME_DIR 指定新使用者的登入目錄

-s SHELL 指定新使用者使用的 Shell,預設為 bash

改變使用者預設值選項:

在配置檔案 /etc/login.defs 和 /etc/default/useradd 中存放了使用者預設資料。

4.基於虛擬使用者的FTP架設

所謂虛擬使用者就是沒有使用真實的帳戶,只是通過某種手段達到對映帳戶和設定許可權的目的。


1)我們在/etc/vsftpd/vsftpd.conf中做如下CentOS FTP服務配置:


anonymous_enable=NO 設定不允許匿名訪問


chroot_list_enable=YES 使使用者不能離開主目錄


xferlog_file=/var/log/vsftpd.log 設定vsftpd的服務日誌儲存路徑


注意,該檔案預設不存在。必須要手動touch出來


ascii_upload_enable=YES
ascii_download_enable=YES 設定支援ASCII模式的上傳和下載功能。


local_enable=YES 設定本地使用者可以訪問。

注:如使用虛擬宿主使用者,在該專案設定為NO的情況下所有虛擬使用者將無法訪問。


pam_service_name=vsftpd PAM認證檔名。PAM將根據/etc/pam.d/vsftpd進行認證


以下這些是關於Vsftpd虛擬使用者支援的重要CentOS FTP服務配置專案。

預設vsftpd.conf中不包含這些設定專案,需要自己手動新增CentOS FTP服務配置。


guest_enable=YES 設定啟用虛擬使用者功能。
guest_username=ftp 指定虛擬使用者的宿主使用者。-CentOS中已經有內建的ftp使用者了


user_config_dir=/etc/vsftpd/vuser_conf 設定虛擬使用者個人vsftp的CentOS FTP服務檔案存放路徑。


存放虛擬使用者個性的CentOS FTP服務檔案(配置檔名=虛擬使用者名稱)


2)建立chroot list,將使用者ftp加入其中:


touch /etc/vsftpd/chroot_list


echo ftp >> /etc/vsftpd/chroot_list


3)進行認證:
首先,安裝Berkeley DB工具,很多人找不到db_load的問題就是沒有安裝這個包。


yum install db4 db4-utils


然後,建立使用者密碼文字/etc/vsftpd/vuser_passwd.txt ,注意奇行是使用者名稱,偶行是密碼
ftpuser1
ftppass1
ftpuser2
ftppass2
接著,.生成虛擬使用者認證的db檔案


db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db


隨後,編輯認證檔案/etc/pam.d/vsftpd,全部註釋掉原來語句


再增加以下兩句


auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd


account required pam_userdb.so db=/etc/vsftpd/vuser_passwd


最後,建立虛擬使用者個性CentOS FTP服務檔案


mkdir /etc/vsftpd/vuser_conf/


vi /etc/vsftpd/vuser_conf/ftpuser1


內容如下:
local_root=/opt/var/ftp1 虛擬使用者的根目錄(根據實際修改)
write_enable=YES 可寫
anon_umask=022 掩碼
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

4.啟動vsftp伺服器
mkdir /opt/var/ftp/ftpuser1
chmod 777 /opt/var/ftp/ftpuser1
service vsftpd start


常見錯誤:

1.553 Could not create file
一般都是SELinux的問題,設定SELinux的一個值,重啟伺服器即可。


setsebool -P ftpd_disable_trans 1


service vsftpd restart


2.500 OOPS: bad bool value in config file for: write_enable
注意你的CentOS FTP服務檔案中保證每一行最後沒有任何空格,一般出錯就是在多餘的空格上

 

更改埠號:listen_port=埠號 (需要自己新增)

歡迎資訊:ftpd_banner=歡迎資訊

 

====================================================================

許可權問題:

當virtual_use_local_privs=YES時,虛擬使用者和本地使用者有相同的許可權;

當virtual_use_local_privs=NO時,虛擬使用者和匿名使用者有相同的許可權,預設是NO。

 

當virtual_use_local_privs=YES,write_enable=YES時,虛擬使用者具有寫許可權(上傳、下載、刪除、重新命名)。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,

anon_upload_enable=YES時,虛擬使用者不能瀏覽目錄,只能上傳檔案,無其他許可權。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=NO時,虛擬使用者只能下載檔案,無其他許可權。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=YES時,虛擬使用者只能上傳和下載檔案,無其他許可權。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_mkdir_write_enable=YES時,虛擬使用者只能下載檔案和建立資料夾,無其他許可權

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_other_write_enable=YES時,虛擬使用者只能下載、刪除和重新命名檔案,無其他許可權。

 

一些RadHat版本是預設開啟SeLinux的。這個東西有加強安全性的同時很討厭,比如讓配置好的vsftpd無法正常登入。

#setsebool -P ftpd_disable_trans 1

重啟FTP服務~

 

IP限制的方法

vsftpd中的配置需要 tcp_wrappers=YES

/etc/hosts.allow 中加入允許的IP

vsftpd : IP1 IP2 : allow

/etc/hosts.deny 中遮蔽所有IP

vsftpd : ALL : deny

重啟服務 service xinetd restart (此服務應該開機啟動!)



實驗一:如果我不允許FTP匿名登陸,我們可以修改vsftpd的主配置檔案來實現

  #vi /etc/vsftpd/vsftpd.conf 把anonymous_enable=YES 改為anonymous_enable=NO

  重啟vsftpd即可!

實驗二windows中FTP伺服器可以設定歡迎詞,最大連線數,那我們在Linux的FTP伺服器中設定呢?我要回答的是:同樣可以,我們同樣可以vsftpd的主配置檔案來實現

  # vi /etc/vsftpd/vsftpd.conf

  在最後新增 ftpd_banner=welcome to here! 這就是歡迎詞

  Max_clients=100 這就表示最多可以有100個使用者同時訪問

  重啟vsftpd即可!

實驗三:如果我想把借我錢不還的同事(lilei),不想讓他登陸到我們的FTP站點,那我可以


把使用者lilei新增到vi /etc/vsftpd.ftpusers 重啟vsftpd服務即可。


實驗四:上午總經理說要提拔公司的一小部分人,聽到這個訊息,趕緊行動,我只允許總經理一個人可以登陸FTP伺服器,其他人休想,拍經理馬匹,限制其他人。我可以這樣做:

  # vi /etc/vsftpd/vsftpd.conf 到最後新增2條,

  userlist_deny=NO /這個列表裡的人不拒絕,其他人拒絕(包括匿名)

  userlist_file=/etc/mp /指明列表的路徑

  然後:#vi /etc/mp 把經理的名字新增上去

  重啟vsftpd 服務即可!

  但是下午經理把提拔的人的名字給公佈了,憤怒的是既然沒有我。為了表現一下我的憤怒,我決定讓經理不能登陸FTP伺服器,其他人都可以。我可以這樣做:

  # vi /etc/vsftpd/vsftpd.conf 把上午新增的userlist_deny=NO

  改為userlist_deny=YES /這個列表中的人拒絕,其他人通過。

  重啟vsftpd 服務即可!

實驗五:註冊的使用者我們可以給他很高的下載速度(200k),匿名使用者的話,給他們20K的速度,可以這樣做:

  # vi /etc/vsftpd/vsftpd.conf 在最後新增

  Local_max_rate=200000

  Anon_max_rate=20000

  重啟vsftpd 服務即可!

實驗六:前天同事一(zhangsan)發了一根菸給我,昨天同事二(lisi)給了我一包煙,今天同事三(wangwu)給了我一條煙,我想根據他們給我的煙,來給他們設定不同的FTP下載速度,我可以這樣做:

  # vi /etc/vsftpd/vsftpd.conf 到最後新增


  User_config_dir=/etc/vsftpd /定義使用者的配置檔案


  #vi /etc/vsftpd/zhangsan 新增以下

  Local_max_rate = 3000 /與一根菸等價


  #vi /etc/vsftpd/lisi 新增以下

  Local_max_rate = 30000 /與一包煙等價


  #vi /etc/vsftpd/wangwu 新增以下

  Local_max_rate = 300000 /與一條煙等價

  重啟vsftpd 服務即可!

實驗七:如何建立簡單的虛擬使用者呢?我只想讓他們可以登陸FTP,但不能登陸我的linux系統,這樣可以保證FTP伺服器的安全。可以這樣做:

  Adduser –g ftp –s /sbin/nolgin user01 /直接新增user01使用者到ftp組,

  Passwd user01 /給user01設定密碼

實驗八:上面所說的雖然簡單,但還是不安全,那還有沒有其他的方法來建立更安全的虛擬使用者呢?有!我們可以這樣做:

  1, 建立虛擬使用者的口令庫檔案

  #vi logins.txt 新增以下

  Zhangsan /使用者名稱

  123 /密碼

  Lisi

  234

  Wangwu

  345

  2, 生產vsftpd的認證資料庫

  #db_load –T –t hash –f logins.txt    /etc/vsftpd/vsftpd_logins.db

  改資料庫許可權

  #chmod 600  /etc/vsftpd/vsftpd_logins.db


  3,建立虛擬使用者所需的PAM配置檔案

  #vi /etc/pam.d/vsftpd.vu 新增以下:

  auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_logins

  Account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_logins

  4,建立虛擬使用者及所要訪問的目錄並設定相應的許可權


  #useradd -d /home/ftpsite virtual /建立vsftpd虛擬使用者所需的系統帳號


  #chmod 700 /home/ftpsite/ 設定宿主目錄的許可權為700


  5,設定vsftpd.conf配置檔案

  #vi /etc/vsftpd/vsftpd.conf 新增如下:

  Guest_enable=YES

  Guest_username=virtual

  Pan_service_name=vsftpd.vu

  Anon_world_readable_only=NO

  重啟vsftpd服務即可!

 實驗九:管理虛擬使用者,要求如下:

  Wangwu有瀏覽目錄、上傳、改名、刪除等許可權

  Lisi 有瀏覽目錄、上傳、下載許可權

  Zhangsan 有瀏覽目錄、下載的許可權(且只能在/misc/abc目錄下,速度為20k)

  我們可以這樣做:

  首先編輯vsftpd的主配置檔案,

  #vi /etc/vsftpd/vsftpd.conf 新增如下:

  User_config_dir=/etc/vsftpd /指定虛擬使用者配置檔案的存放處

  然後滿足wangwu的需求:

  Vi /etc/vsftpd/wangwu 新增如下:

  Anon_world_readable_only=NO //開放讀的許可權(如果沒有新增此項,使用者看到的目錄是隱藏的)

  Anon_upload_enable=YES

  Anon_mkdir_write_enable=YES

  Anon_other_write_enable=YES

  滿足lisi的需求:

  Vi /etc/vsftpd/lisi 新增如下:

  Anon_world_readable_only=NO //開放讀的許可權(如果沒有新增此項,使用者看到的目錄是隱藏的)

  Anon_upload_enable=YES

  滿足zhangsan的需求:

  Vi /etc/vsftpd/zhangsan 新增如下:

  Anon_world_readable_only=NO //開放讀的許可權(如果沒有新增此項,使用者看到的目錄是隱藏的)

  Local_root=/misc/abc //設定目錄為本地

  Anon_max_rate=20000

  最後重啟vsftpd服務即可!

實驗十:如何設定匿名的使用者可以上傳以及刪除的許可權

  我們可以這樣做:

  #vi /etc/vsftpd/vsftpd.conf 新增如下:

  Anon_upload_enable=YES

  Anon_mkdir_write_enable=YES

  Anon_other_write_enable=YES

  #chmod – R 777 /var/ftp/pub /改變pub目錄的許可權

  重啟vsftpd服務即可。


相關文章