vsftpd安裝配置虛擬使用者,vsftpd安裝配置虛擬

來源:互聯網
上載者:User

vsftpd安裝配置虛擬使用者,vsftpd安裝配置虛擬

原文發表於cu:2016-03-11

參考文檔:

一.環境 OS

CentOS6.7 x86_64

網路

Sever:192.168.1.254

Client:192.168.1.100

二.安裝與配置 1. 安裝

使用yum安裝即可:yum install vsftpd -y

2. 軟體模組
/etc/vsftpd/vsftpd.confvsftpd的設定檔,相關參數設定主要在這個檔案進行。/etc/pam.d/vsftpdvsftpd使用 PAM 模組時的相關設定檔,主要用來作為身份認證之用,還有一些使用者身份的抵擋功能, 也是透過這個檔案來達成的。/etc/vsftpd/ftpusers與/etc/pam.d/vsftpd檔案有關,也就是 PAM 模組中所指定的那個無法登入的使用者設定檔。這個檔案的設定簡單,只要將“不想讓他登入 FTP 的帳號”寫入這個檔案即可。/etc/vsftpd/user_list這個檔案是否生效與vsftpd.conf內的兩個參數有關,分別是“userlist_enable”與“userlist_deny”,會根據vsftpd.conf設定檔內的userlist_deny={YES/NO}不同而不同(設定為YES時,是阻止user_list中的帳號登入;設定為NO時,是允許user_list中的帳號登入)。/etc/vsftpd/ftpusers是PAM模組的安全設定檔案,而/etc/vsftpd/user_list是vsftpd自訂的安全設定檔案。這個檔案與/etc/vsftpd/ftpusers幾乎一樣,在預設情況下,可以將不希望可登入vsftpd帳號寫入這裡。/etc/vsftpd/chroot_list此檔案預設是沒有的,需要手工建立,主要作用是將某些帳號chroot在其家目錄。檔案是否生效與vsftpd.conf的“chroot_list_enable”與“chroot_list_file”兩個參數有關。/usr/sbin/vsftpdvsftpd的執行檔案。/var/ftp/vsftpd預設匿名賬戶登入根目錄,與ftp帳號的家目錄有關。
3. 設定檔簡介

以下列出主要的一些配置項供參考。

伺服器環境較相關的設定
connect_from_port_20=YES (NO)主動式FTP伺服器port,ftp-data的連接埠。#主動式ftp指server接到client的ftp請求後,由server的20連接埠主動串連client告知的資料接收port,建立資料轉送通道;#被動式ftp指server接到client的ftp請求後,隨機選取大於1024的port告知client,由client主動發起ftp資料通道串連;#在有ftp的server與client之間有防火牆或nat時,基本只能使用被動式ftp。listen_port=21vsftpd的命令通道port,如果要使用非正規的連接埠,在此修改;修改連接埠號碼指適合以stand alone方式來啟動的vsftpd(對於super daemon 無效)。dirmessage_enable=YES (NO)當ftp使用者進入某個目錄時,會顯示該目錄需要注意的內容,顯示的檔案預設是 .message ,可以使用下面的設定項目來修改顯示內容。message_file=.message當dirmessage_enable=YES時,可以設定這個項目來讓vsftpd 尋找該檔案來顯示資訊。listen=YES (NO)如果設定為YES,表示vsftpd是以stand alone的方式來啟動;設定為NO時,vsftpd以super daemon方式啟動。pasv_enable=YES (NO)支援資料流的被動式聯機模式(passive mode),請設定為YES。use_localtime=YES (NO)是否使用本地時間?vsftpd預設使用GMT時間(格林威治),建議設定YES。write_enable=YES (NO)是否允許使用者上傳資料。connect_timeout=60單位是秒,在資料連線的主動式聯機模式下,發出的串連訊號在 60 秒內得不到client響應,則不等待並強制斷線。accept_timeout=60當client以被動式PASV進行資料轉送時,如果server端啟用passive port並等待client超過60秒而無響應,那麼就強制斷線。這個設定與connect_timeout類似,不過一個是管理主動聯機,一個管理被動聯機。data_connection_timeout=300如果server與client的資料聯機已經成功建立(不論主動還是被動聯機),但是可能由於線路問題導致300秒內沒有順利的完成資料傳送,那client的聯機就會被vsftpd 強制斷線。idle_session_timeout=300如果client在300 秒內都無命令動作,強制斷線。max_clients=0如果vsftpd 以stand alone方式啟動,那麼這個設定值可以設定在同一時間,最多有多少 client可以同時連上vsftpd。max_per_ip=0與max_clients類似,同一個IP同一時間可允許多少聯機。pasv_min_port=0, pasv_max_port=0與 passive mode 使用的port有關,如果你想要使用65400到65410這11個port來進行被動式聯機模式的串連,可以這樣設定pasv_max_port=65410以及 pasv_min_port=65400。 如果是 0 的話,表示隨機取用而不限制。ftpd_banner=一些文字說明當ftp使用者登入時,在 ftp client軟體上會顯示的解說文字。建議使用下面的banner_file設定值取代這個項目。banner_file=/path/file指定某個純文字檔案作為使用者登入vsftpd伺服器時所顯示的歡迎字眼。同時,也可以放置一些讓使用者知道本伺服器的目錄結構。
與實體使用者相關的設定
guest_enable=YES(NO)設為YES時,任何實體賬戶,都會被假設成為guest (所以預設是NO)。guest在vsftpd 當中,預設取得ftp賬戶的相關許可權,但可以通過 guest_username來修改。#使用虛擬賬戶登入FTP時需要設定為YES。guest_username=ftp在 guest_enable=YES 時生效,指定guest的身份(虛擬賬戶統一獲得此設定帳號的許可權)。local_enable=YES(NO)此設定值必須要為YES時,在/etc/passwd內的帳號才能以實體使用者的方式登入vsftpd。local_max_rate=0實體使用者的傳輸速度限制,單位為bytes/secon,0為不限制。chroot_local_user=YES(NO)預設情況下,是否要將使用者限制在自己的家目錄之內(chroot)。如果是YES代表使用者預設就會被chroot;如果是NO,則預設不chroot。實際使用需要與下面兩個參數互相參考。為了安全性,建議設定為YES。chroot_list_enable=YES(NO)是否啟用chroot寫入列表的功能。與下面的chroot_list_flie有關。此值開啟時下面的列表檔案才會生效。chroot_list_file=/etc/vsftpd.chroot_list如果chroot_list_enable=YES,那麼此設定生效。userlist_enable=YES(NO)是否藉助vsftpd的阻止機制來處理某些不受歡迎的帳號,與下面的參數設定有關。userlist_deny=YES(NO)當userlist_enable=YES時才會生效。若設定為 YES 時,則當使用者帳號被列入到user_list文檔時,在該文檔內的帳號將不能登入vsftpd 伺服器;設定為NO時,則允許user_list中的帳號登入。該檔案檔案名稱與下列設定項目有關。userlist_file=/etc/vsftpd/user_list若上面userlist_deny=YES時,則設定文檔生效,在這檔案內的帳號都無法登入vsftpd。
匿名使用者登入的相關設定
anonymous_enable=YES(NO)是否允許anonymous登入vsftpd。預設是YES,下面所有相關設定都需要設定為 anonymous_enable=YES 之後才生效。anon_world_readable_only=YES(NO)僅允許anonymous 具有下載可讀檔案的許可權,預設是YES。anon_other_write_enable=YES(NO)是否允許anonymous具有除了寫入之外的許可權,包括刪除與改寫伺服器上的檔案及檔案名稱等許可權,預設是NO。如果需要設定為YES,那麼開放給anonymous寫入的目錄需要調整許可權,讓vsftpd的PID 擁有者可以寫入才行。anon_mkdir_write_enable=YES(NO)是否讓anonymous具有建立目錄的許可權,預設是NO。如果要設定為YES,那麼anony_other_write_enable必須設定為YES。anon_upload_enable=YES(NO)是否讓anonymous具有上傳資料的功能,預設是NO。如果要設定為 YES ,則 anon_other_write_enable必須設定為YES。deny_email_enable=YES(NO)禁止某些特殊的email address的anonymous登入。如果以anonymous登入伺服器時,要求輸入的密碼是email address,如果不讓某些email address登入,可以使用此設定取消其登入許可權,需與下面的設定值配合。banned_email_file=/etc/vsftpd/banned_emails如果deny_email_enable=YES時,可以使用此設定檔案來規定哪些email address不可登入。no_anon_password=YES(NO)當設定為YES時,表示anonymous將會略過密碼檢驗步驟,而直接登入。non_max_rate=0單位為bytes/s,限制anonymous的傳輸速度,如果是0則不限制.anon_umask=077限制anonymous上傳檔案的許可權。
關於系統安全方面的一些設定
ascii_download_enable=YES(NO)如果設定為YES,那麼client優先(預設)使用ASCII 格式下載檔案。ascii_upload_enable=YES(NO)使用ASCII 格式上傳檔案,預設是NO。one_process_model=YES(NO)此設定值比較危險,當設定為YES時,表示每個建立的session都會有一個守護進程負責,可以增加vsftpd的效能。不過除非你的系統比較安全,而且硬體配備比較高,否則容易耗盡系統資源,一般建議設定為NO。tcp_wrappers=YES(NO)建議設定為YES 。xferlog_enable=YES(NO)當設定為YES時,使用者上傳與下載檔案都會被紀錄起來,記錄檔案與下面的設定值相關。xferlog_file=/var/log/xferlog如果xferlog_enable=YES,這裡的設定就有效。xferlog_std_format=YES(NO)是否設定為wu ftp相同的登入檔案格式,預設是NO,因為登入檔會比較容易讀。如果有使用wu ftp登入檔案的分析軟體,這裡需要設定為YES。dual_log_enable=YES, vsftpd_log_file=/var/log/vsftpd.log通常/var/log/xferlog只記錄上傳與下載,此設定可以開啟使用者登入日誌。nopriv_user=nobodyvsftpd預設以nobody作為此服務執行者的許可權,因為nobody的許可權很低,因此即使被入侵,入侵者也僅能取得nobody的許可權。pam_service_name=vsftpdpam模組,一般放置為/etc/pam.d/vsftpd檔案。
4. 必要的安全允許存取配置SELinux

預設情況下,vsftpd不允許賬戶登入取得家目錄資料(登入使用dir,但不能取得任何資料),主要是由SELinux引起的。如下:

[root@localhost ~]# getsebool -a | grep ftpallow_ftpd_anon_write --> offallow_ftpd_full_access --> offallow_ftpd_use_cifs --> offallow_ftpd_use_nfs --> offftp_home_dir --> off#將“allow_ftpd_full_access”與“ftp_home_dir”設定為“on”即可;#此兩項設定需要一點時間,勿著急。[root@localhost ~]# setsebool -P allow_ftpd_full_access 1[root@localhost ~]# setsebool -P ftp_home_dir 1[root@localhost ~]# getsebool -a | grep ftpallow_ftpd_anon_write --> offallow_ftpd_full_access --> onallow_ftpd_use_cifs --> offallow_ftpd_use_nfs --> offftp_home_dir --> on
iptables

FTP使用兩個連接埠,另有隨機啟用的資料流連接埠,及被動聯機的伺服器連接埠等,大概需要如下規則:

#加入iptables的“ip_nat_ftp”與“ip_conntrack_ftp”兩個模組;#大概在底6行,以下兩者順序不可調換。[root@localhost ~]# vim /etc/sysconfig/iptables-configIPTABLES_MODULES="ip_conntrack_ftp"IPTABLES_MODULES="ip_nat_ftp"#開放port 21給訪問者使用;#開放隨機啟動的資料流連接埠給訪問者串連使用;#允許client大於1024的隨機連接埠主動發起資料通道串連,server端使用連接埠65401~65410響應。[root@localhost ~]# vim /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 65401:65410 --sport 1024:65534 -j ACCEPT#重啟iptablesservice iptables restart
5. 虛擬賬戶配置添加虛擬使用者及口令檔案
#建立虛擬使用者檔案[root@localhost ~]# vim /etc/vsftpd/vftpuser.txttest1          #使用者名稱123456        #密碼test2123456
產生虛擬使用者口令認證檔案

將vftpuser.txt虛擬使用者口令檔案轉換成系統可識別的口令認證檔案。

#查看系統有沒有安裝產生口令認證檔案所需的軟體db4-utils,如果沒有安裝採用rpm或者yum方式安裝。[root@localhost ~]# rpm -qa | grep db4-utils#使用db_load命令產生虛擬使用者口令認證檔案。[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db
編輯vsftpd的PAM認證檔案
#將檔案中其他行都注釋掉,添加下面這兩行:[root@CentOS5 /]#vi /etc/pam.d/vsftpd#%PAM-1.0auth       required     pam_userdb.so db=/etc/vsftpd/vftpuseraccount    required     pam_userdb.so db=/etc/vsftpd/vftpuser#路徑為產生的db路徑,去掉尾碼#session    optional     pam_keyinit.so    force revoke#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed#auth       required    pam_shells.so#auth       include     password-auth#account    include     password-auth#session    required     pam_loginuid.so#session    include     password-auth
建立本機對應使用者並設定宿主目錄許可權
#所有的虛擬使用者需要映射一個系統使用者,此系統使用者不要求輸入密碼,不可登入系統[root@localhost ~]# useradd -d /home/vftpsite -s /sbin/nologin vftpuser#注意虛擬使用者家目錄的許可權問題,否則可能導致後面登入但無法讀寫[root@localhost ~]# chown -R vftpuser:vftpuser /home/vftpsite
配置vsftpd.conf(虛擬使用者配置項相關)
[root@localhost ~]# vim /etc/vsftpd/vsftpd.confguest_enable=YES #開啟虛擬使用者guest_username=vftpuser #FTP虛擬使用者對應的系統使用者pam_service_name=vsftpd #PAM認證檔案
重啟vsftpd服務
[root@localhost ~]# service vsftpd restart
測試虛擬使用者登入
C:\>ftp 192.168.1.254串連到 192.168.1.254。220 (vsFTPd 2.2.2)使用者(192.168.1.254:(none)): test1331 Please specify the password.密碼:230 Login successful.ftp> dir200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw-r--r--    1 0        0               0 Mar 02 21:04 test226 Directory send OK.ftp: 收到 62 位元組,用時 0.00秒 62.00KB/秒。ftp>
6. 虛擬使用者進階設定virtual_use_local_privs參數
#虛擬使用者與本機使用者有相同的許可權virtual_use_local_privs=YES#虛擬使用者與匿名使用者有相同的許可權,預設是NO。virtual_use_local_privs=NO
各虛擬使用者獨立的設定檔(未驗證)
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf#在設定檔中指定一個存放各虛擬使用者獨立設定檔的目錄路徑,添加:user_config_dir=/etc/vsftpd/vftpuser_conf#編輯test1的設定檔:[root@localhost ~]# vim /etc/vsftpd/vftpuser_conf/test1#可針對讀/寫/下載/上傳等獨立配置許可權,如:write_enable=YES #開放寫入權限anon_world_readable_only=NO #開放下載許可權anon_upload_enable=YES #開放上傳許可權anon_mkdir_write_enable=YES #開放建立目錄許可權anon_other_write_enable=YES #開放刪除與重新命名許可權

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.