vsftp vuser虛擬使用者

mengbing1990發表於2023-01-14

虛擬使用者:為了保證系統的安全性,現對系統中vsftpd服務進行調整,主要為禁止OS本地賬戶直接登入,採用虛擬賬戶;

 

在vsftpd伺服器中支援3類使用者,分別是匿名使用者,本地使用者,和虛擬賬戶。用途及區別如下。

1)、匿名使用者:名為anonymous 或ftp 的FTP 使用者,匿名FTP 使用者登入後將FTP 伺服器中的/var/ftp 作為FTP 根目錄。匿名使用者通常用於提供公共檔案的下載,如架設公共軟體下載的FTP 伺服器,所有人都可以使用匿名使用者進行軟體下載。

2)、本地使用者:賬號是系統使用者賬號(/etc/passwd),使用FTP 本地使用者賬號登入FTP 伺服器後,登入目錄為本地使用者的宿主目錄。本地FTP使用者賬號通常和Web 伺服器一起提供虛擬主機服務,作為網頁虛擬主機更新網頁的途徑。

3)、 虛擬使用者:賬號是為了保證FTP 伺服器的安全性,由vsftpd 伺服器提供的非系統使用者賬號,相對於FTP的本地使用者來說,虛擬使用者只是FTP伺服器的專有使用者,虛擬使用者只能訪問FTP伺服器所提供的資源。虛擬使用者FTP 登入後將把指定的目錄作為FTP 根目錄。虛擬使用者與本地使用者具有類似的功能,由於虛擬使用者賬號具有較高的安全性,可以替代本地使用者賬號使用。

 

安裝使用手冊如下:

1.安裝軟體

yum  install vsftpd

2.設定開機啟動

systemctl enable vsftpd

3.vsftp 安裝完成後,預設配置檔案如下:

/etc/vsftpd/vsftpd.conf

VSFTP 主配置檔案

/etc/rc.d/init.d/vsftp

VSFTP 啟動指令碼,獨立 (S tand alone) 服務模式

/etc/pam.d/vsftpd

PAM 認證檔案(此檔案中 file=/etc/vsftpd/ftpusers   > 指的是阻止該檔案中使用者訪問

/etc/vsftp/ftpusers

禁止使用vsftp的ftp使用者列表

/etc/vsftp/user_list

禁止或者允許使用vsftp的ftp使用者列表(根據主配置檔案來定)

/var/ftp

匿名登陸使用者主目錄

/var/log/xferlog

vsftp 日誌檔案

4.建立虛擬使用者口令庫

  4.1 建立虛擬使用者的口令檔案,檔案中奇數行設定虛擬使用者的使用者名稱,偶數行設定使用者的口令

  4.2 修改主配置檔案

    mv vsftpd.conf vsftpd.conf.bak

    grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf

    vi /etc/vsftpd/vsftpd.conf 內容如下:

anonymous_enable=NO # (是否允許匿名登入FTP 伺服器,預設設定為YES 允許,即使用者可使用使用者名稱ftp 或anonymous 進行ftp 登入,口令為空。如不允許匿名訪問設定為NO)

local_enable=YES # (是否允許本地使用者登入FTP伺服器,預設設定為YES允許,本地使用者登入後會進入指定的使用者主目錄,而匿名使用者登入後進入匿名使用者的下載目錄/var/ftp/pub;設定虛擬賬戶必須設會YES)

write_enable=YES #(決定是否允許一些FTP命令去更改檔案系統。包括上傳檔案,刪除檔案,新增目錄,刪除目錄)

local_umask=022  #(設定本地使用者的檔案掩碼為預設022,得到上傳檔案的初始許可權)

file_open_mode=0775 #(對於上傳的檔案設定許可權。預設為0666,如果你想被上傳的檔案可被執行,umask要改成0777,與local_umask配合使用))

anon_umask=002

dirmessage_enable=YES

connect_from_port_20=YES

xferlog_enable=YES # (預設值為NO如果啟用此選項,系統將會維護記錄伺服器上傳和下載情況的日誌檔案,預設情況該日誌檔案                        為/var/log/vsftpd.log,也可以透過下面的xferlog_file 選項對其進行設定)

xferlog_std_format=no

log_ftp_protocol=yes

reverse_lookup_enable=NO

dual_log_enable=YES

xferlog_file=/ftplog/log/xferlog #(設定系統維護記錄FTP 伺服器上傳和下載情況的日誌檔案,/var/log/vsftpd.log是預設的,也可以另設其它)

vsftpd_log_file=/ftplog/log/vsftpd.log

#

listen=NO #(如果設定為YES,則 vsftpd 將以獨立模式執行,由vsftpd 自己監聽和處理連線請求)

listen_ipv6=YES #(設定是否支援IPV6)

#

userlist_enable=YES #(此選項預設值為NO,則不啟用user_list檔案;若此項設為YES ,則啟用user_list 檔案,而如果同時設定了 userlist_deny=YES ,則 user_list 檔案中的使用者將不允許登入FTP 伺服器,甚至連輸入密碼提示資訊都沒有,直接被FTP 伺服器拒絕,如果userlist_deny=NO,將則只允許user_list檔案中的使用者登陸FTP伺服器)

tcp_wrappers=YES #(表明伺服器使用tcp_wrappers作為主機訪問控制方式)

guest_enable=YES # (如果啟用,所有的非匿名使用者登入時將被視為遊客,其名字將被對映為guest_username裡所指定的名字。採用虛擬使用者必須設定該選項)

guest_username=ftpvuser #(設定當遊客進入後,其將會被對映的名字。這裡設定為“ftpvuser”,即虛擬使用者登陸ftp後被對映的本地使用者名稱)

pam_service_name=vsftpd.vu #( 設定PAM認證服務的配置檔名稱,該檔案存放在/etc/pam.d/目錄下 )

user_config_dir=/etc/vsftpd/vuser_dir #(使用虛擬使用者配置檔案的目錄)

allow_writeable_chroot=YES #開啟限制在使用者的家目錄中。

>

#

#ftpd_banner=Welcome to V3 CIM DFS service. ##歡迎資訊

#

#banned_email_file=/etc/vsftpd/banned_emails

max_clients=1000   #同時最多連線客戶端數

anon_max_rate=15728640  #設定匿名使用者每條連線最大上傳或下載速率單位Bytes

local_max_rate=15728640  # 設定本地使用者每條連線最大上傳或下載速率單位Bytes

max_per_ip=1000         #每個IP限制登陸的客戶端數

 

4.3 建立虛擬使用者的口令檔案,檔案中奇數行設定虛擬使用者的使用者名稱,偶數行設定使用者的口令。

vi /etc/vsftpd/ ftpvuser

4.4 生成虛擬使用者的口令庫,(db_load)

 db_load -T -t hash -f ftpvuser ftpvuser.db

其中,“ -f ” 命令選項設定的是虛擬使用者的口令檔案,即上面新建的 ftpvuser ,最終生成口令庫檔案 ftpvuser.db

  並修改其屬性,

chmod 600 ftpvuser.db

  4.5 修改認證檔案

  vi /etc/pam.d/vsftpd .vu

vi /etc/pam.d/vsftp

5. 建立本地使用者組及使用者,建立目錄及配置許可權

    groupadd -g 8000 ftpgrp

    useradd -g ftpgrp -s /sbin/nologin -u 8000 ftpvuser

    chown -R ftpvuser:ftpgrp /ftproot/

    chown root:ftpgrp /ftplog/*/

    chmod 755 /ftplog/*/

6.管控單獨使用者許可權

  

     從上面的配置中可以看到,我把“ write_enable” 和“ download_enable” 引數都設定為 NO ,那 ftp 使用者該如何進行檔案的傳輸呢?其實,這裡為了管控許可權,在主配置檔案中都設定為“ NO” ,然後再對每個 ftp 使用者進行單獨的控制,分別對應單獨的配置檔案,從而保證許可權分配的合理性及安全性。

      其中 user_config_dir 引數指定了定義使用者配置檔案的目錄,在這裡只需要在 user_config_dir 中建立以 ftp 使用者名稱命名的檔案,內容為資料傳輸和使用者許可權。裡面設定個人的合適的選項,就可以保證不同的虛擬使用者獲得不同的許可權。

  6.1 新建 user_config目錄,路徑為 /etc/vsftpd/vuser_dir

  touch qmadmin

 vi qmadmin



7. 重啟服務 , 完成。

service vsftpd restart


另外:

vsftpd透過cmds_allowed進行精確許可權控制

將允許的命令寫在cmds_allowed=後面。命令之間用,分隔,整條引數沒有空格,且全是大寫。

比如:


cmds_allowed=ABOR,CDUP,CWD,DELE,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,TYPE,USER,,ACCT*,APPE,CDUP,HELP,MODE,NOOP,REIN*,STAT,STOU,STRU,SYST


cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST


引數詳解:


ABOR – abort a file transfer

CWD – change working directory

DELE – delete a remote file

LIST – list remote files

MDTM – return the modification time of a file

MKD – make a remote directory

NLST – name list of remote directory

PASS – send password

PASV – enter passive mode

PORT – open a data port

PWD – print working directory

QUIT – terminate the connection

RETR – retrieve a remote file

RMD – remove a remote directory

RNFR – rename from

RNTO – rename to

SITE – site-specific commands

SIZE – return the size of a file

STOR – store a file on the remote host

TYPE – set transfer type

USER – send username

less common commands:

ACCT* – send account information

APPE – append to a remote file

CDUP – CWD to the parent of the current directory

HELP – return help on using the server

MODE – set transfer mode

NOOP – do nothing

REIN* – reinitialize the connection

STAT – return server status

STOU – store a file uniquely

STRU – set file transfer structure

SYST – return system type


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29551564/viewspace-2932209/,如需轉載,請註明出處,否則將追究法律責任。

相關文章