1. 程式人生 > >ftp伺服器搭建(離線安裝vsftpd),配置

ftp伺服器搭建(離線安裝vsftpd),配置

1.下載vsftp:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64)

2.檢查是否已經安裝了vsftp

 rpm -qa | grep vsftpd
如果沒有提示則說明沒有安裝
如果提示版本號則說明已經安裝

3.安裝vsftpd-3.0.2-22.el7.x86_64.rpm

離線安裝
rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm 
線上安裝
yum install -y vsftp
安裝過程可能會報錯:

[[email protected] vsftpd]# rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm


 warning: vsftpd-3.0.2-22.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
 error: Failed dependencies:
 libc.so.6(GLIBC_2.14)(64bit) is needed by vsftpd-3.0.2-22.el7.x86_64
 libc.so.6(GLIBC_2.15)(64bit) is needed by vsftpd-3.0.2-22.el7.x86_64

解決:安裝相關依賴
rpm -ivh libcap-2.16-5.5.el6.x86_64.rpm
rpm -ivh libcap-devel-2.16-5.5.el6.x86_64.rpm

4.檢查是否安裝成功

[[email protected] local]# rpm -qa | grep vsftpd
vsftpd-2.2.2-24.el6.x86_64                            //出現版本號,說明安裝成功

5.配置,這裡只說能讓你的ftp跑起來的配置,詳細原理可以點選檢視這裡

5.0 開啟vsftpd的兩個埠 20,21

開啟
# iptables -I INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
# iptables  -I OUTPUT -o eth0 -p tcp --sport 20 -j ACCEPT
儲存
#
/etc/rc.d/init.d/iptables save 重啟防火牆 # service iptables restart

 

5.1 建立兩個系統使用者

1.因為vsftpd預設的宿主使用者是root,不符合安全性要求,所以將新建立的vsftpd服務的宿主使用者的shell改為“ /sbin/nologin意思是禁止登入系統 ”:

useradd vsftpd -s /sbin/nologin            //系統使用者  vsftpd  主要是提供一個預設宿主

2.建立vsftpd虛擬宿主使用者:

useradd virtusers  -s /sbin/nologin        //系統使用者  virtusers  本文主要講虛擬使用者登入,這相當於我們的虛擬使用者組

此次主要介紹虛擬使用者,顧名思義虛擬使用者在系統中是不純在的,它們集體寄託於方才建立的“virtusers”使用者,那麼這個使用者就相當於一個虛擬使用者組了,因為這個使用者的許可權將影響到後續講到的虛擬使用者。

5.2 配置vsftpd的主要配置檔案vsftpd.conf

1.養成備份的好習慣

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.backup.conf

2.vim /etc/vsftpd/vsftpd.conf

#預設的根目錄為
#local_root=/var/ftp

#設定為NO代表不允許匿名 anonymous_enable
=NO #設定本地使用者可以訪問,主要是虛擬宿主使用者,如果設為NO那麼所欲虛擬使用者將無法訪問。 local_enable=YES #可以進行寫的操作 write_enable=YES #設定上傳檔案的許可權掩碼 local_umask=022 #禁止匿名使用者上傳 anon_upload_enable=NO #禁止匿名使用者建立目錄 anon_mkdir_write_enable=NO # 設定開啟目錄標語功能 dirmessage_enable=YES # 設定開啟日誌記錄功能 xferlog_enable=YES #設定埠20進行資料連線 connect_from_port_20=YES #設定禁止上傳檔案更改宿主 chown_uploads=NO #設定vsftpd服務日誌儲存路勁。注意:改檔案預設不純在,需手動touch,且由於這裡更改了vsftpd服務的宿主使用者為手動建立的vsftpd,則必 須注意給予該使用者對日誌的讀取許可權否則服務啟動失敗。 xferlog_file=/var/log/vsftpd.log //這個檔案在後面步驟中會提及 #設定日誌使用標準的記錄格式 xferlog_std_format=YES #設定空閒連結超時時間,這裡使用預設/秒。 #idle_session_timeout=600 #設定最大連線傳輸時間,這裡使用預設,將具體數值留給每個使用者具體制定,預設120/ data_connection_timeout=3600 #設定支撐vsftpd服務的宿主使用者為手動建立的vsftpd使用者。注意:一旦更改宿主使用者,需一起與該服務相關的讀寫檔案的讀寫賦權問題. nopriv_user=vsftpd #設定支援非同步傳輸的功能 #async_abor_enable=YES #設定vsftpd的登陸標語 ftpd_banner=hello 歡迎登陸 #禁止使用者登出自己的ftp主目錄 chroot_list_enable=NO #禁止使用者登陸ftp後使用ls -R 命令。該命令會對伺服器效能造成巨大開銷,如果該項運行當多個使用者使用該命令會對伺服器造成威脅。 ls_recurse_enable=NO #設定vsftpd服務工作在standalone模式下。所謂standalone模式就是該服務擁有自己的守護程序,在ps -A可以看出vsftpd的守護程序名。如果 不想工作在standalone模式下,可以選擇SuperDaemon模式,註釋掉即可,在該模式下vsftpd將沒有自己的守護程序,而是由超級守護程序Xinetd全權代理,>與此同時,vsftpd服務的許多功能,將得不到實現。 listen=YES #設定userlist_file中的使用者將不能使用ftp userlist_enable=YES #設定pam服務下的vsftpd驗證配置檔名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd檔案配置。 pam_service_name=vsftpd #設定支援TCPwrappers tcp_wrappers=YES #################################################以下是關於虛擬使用者支援的重要配置專案,預設.conf配置檔案中是不包含這些專案的,需手動新增。 #啟用虛擬使用者功能 guest_enable=YES #指定虛擬的宿主使用者 guest_username=virtusers //virtusers就是我們上面建立的系統使用者,作為我們的虛擬使用者組使用
#設定虛擬使用者的許可權符合他們的宿主使用者 
virtual_use_local_privs
=YES

#設定虛擬使用者個人vsftp的配置檔案存放路勁。這個被指定的目錄裡,將被存放每個虛擬使用者個性的配置檔案,注意的地方是:配置檔名必須 和虛擬使用者名稱相同。
user_config_dir
=/etc/vsftpd/vconf //這是個目錄,是為每一個虛擬使用者配置單獨的許可權使用,這裡我們主要配置每個使用者的單獨根目錄

#開啟每個虛擬使用者有獨立的根目錄
chroot_local_user=YES

#禁止反向域名解析,若是沒有新增這個引數可能會出現使用者登陸較慢,或則客戶連結不上ftp的現象
reverse_lookup_enable
=NO

5.3.建立vsftpd的日誌檔案,並更改屬主為vsftpd的服務宿主使用者

//上線配置檔案中配置的日誌目錄
touch /var/log/vsftpd.log chown vsftpd.vsftpd /var/log/vsftpd.log

5.4 配置虛擬使用者

1.建立虛擬使用者配置檔案的存放路徑 【這個路徑就是上面配置檔案末尾配置的路徑

mkdir /etc/vsftpd/vconf/

 

2.)建立一個虛擬使用者名稱單檔案,用來記錄虛擬使用者的賬號和密碼,格式為:一行使用者名稱,一行密碼。不要有空格

vim /opt/vsftp/passwd

test
123456
test1
654321

3.生成虛擬使用者資料檔案

db_load -T -t hash -f   /opt/vsftp/passwd  /opt/vsftp/passwd.db

需要注意的是,以後對虛擬使用者的增刪操作完之後需要再次執行上述命令,使其生成新的資料檔案。

5.5設定PAM驗證檔案,並制定虛擬使用者資料庫檔案進行讀取

1.操作前記得備份的好習慣

 

cp /etc/pam.d/vsftpd   /etc/pam.d/vsftpd.backup

 

2.檢視我已經配置的檔案:cat /etc/pam.d/vsftpd   紅色部分為新增,可以看到目錄就是我們配置的使用者名稱密碼

#%PAM-1.0
#####32位系統配置
#auth    sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/xnpasswd
#account sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/xnpasswd
#####64位系統配置
auth    sufficient      /lib64/security/pam_userdb.so     db=/opt/vsftp/passwd
account sufficient      /lib64/security/pam_userdb.so     db=/opt/vsftp/passwd

#以上兩條是手動新增的,內容是對虛擬使用者的安全和帳戶許可權進行驗證。
#這裡的auth是指對使用者的使用者名稱口令進行驗證。
#這裡的accout是指對使用者的帳戶有哪些許可權哪些限制進行驗證。
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth
session    required     pam_loginuid.so

5.6 為每一個虛擬賬戶配置專屬配置檔案

1.我是直接copy的主配置檔案然後改的,內容如下

vim /etc/vsftpd/vconf/test   //注意檔名 test與passwd中使用者名稱要保持一致

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
local_root=/opt/vsftpd/file  //這裡是我配置的test使用者的根目錄
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=NO
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=NO
#anno_other_writer_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
#dirmessage_enable=YES
#
# The target log file can be vsftpd_log_file or xferlog_file.
# This depends on setting xferlog_std_format parameter
#xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
#connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=NO
#chown_username=whoever
#
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/vsftpd.log
#
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=vsftpd
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_local_user=YES
#chroot_list_enable=NO
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
#listen=YES
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd with two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES

#pam_service_name=vsftpd
#userlist_enable=YES
#tcp_wrappers=YES


#guest_enable=YES
#guest_username=virtusers
#virtual_use_local_privs=YES
#reverse_lookup_enable=NO

2.建立虛擬使用者的倉庫目錄並更改相應屬主/組且賦予相應許可權

mkdir -p /opt/vsftpd/file    //這就是5.6中local_root=/opt/vsftpd/file 配置的根目錄
chown virtusers:virtusers /opt/vsftpd/file 

chmod
755 /opt/vsftpd/file

3.隨便建立個檔案方便後續檢測是否安裝成功:

touch  /opt/vsftpd/file/abc

5.7重啟

service vsftpd restart

其他命令

#開啟
service vsftpd start #停止 service vsftpd stop #重啟 service vsftpd restart