基於SSL加密的vsftpd 服務器搭建和配置


基於SSL加密的VSFTPD 服務器搭建和配置

1、安裝

ubuntu系統:apt-get install vsftp lftp
centos系統:yum install -y vsftpd ftp

2、添加虛擬用戶

useradd -s /sbin/nologin virtual

3、編輯配置文件(注意備份)
vim /etc/vsftpd.conf

anonymous_enable=NO
guest_enable=YES
guest_username=virtual
pam_service_name=virtual
user_config_dir=/etc/vsftpd/vconf
local_enable=YES
write_enable=YES
local_umask=022
connect_from_port_20=YES
listen=YES
pam_service_name=vsftpd
#tcp_wrappers=YES
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
###vsftpd 被動模式
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000
####ssl
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/cert/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
#####log
xferlog_enable=YES
xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
debug_ssl=YES 

如果想linux下命令也能訪問,關閉debug_ssl=YES此選項,或者在lftp配置中增加一項配置

vim /etc/lftp.conf

alias dir ls
alias less more
alias zless zmore
alias bzless bzmore
alias reconnect "close; cache flush; cd ."
set ssl:verify-certificate no(添加的是該項)

4、創建配置文件目錄

mkdir /etc/vsftpd/vconf
mkdir /etc/vsftpd/cert

5、創建虛擬用戶密碼文件: 一行用戶 一行密碼

vim /etc/vsftpd/vuser.txt

admin
123456
test
123456 

6、轉換成db格式的文件(后綴.db一定不能少)

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

7、設置虛擬用戶訪問權限

cd /etc/vsftpd/vconf
vim admin

local_root=/data/vsftp/admin
anon_umask=023
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
max_clients=5
max_per_ip=5

vim test

local_root=/data/vsftp/admin
anon_umask=023
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
max_clients=5
max_per_ip=5

8、編輯/etc/pam.d/vsftpd (注意備份vsftpd)

vim /etc/pam.d/vsftpd

#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser (注意 lib64為64為系統的路徑)

備注:
此處的vuser,后面不能添加.db其實就是/etc/vsftpd/vuser.db,如果用戶不能訪問,注意vuser.db的權限問題,centos下的pam_userdb.so db可能不是這個路徑

9、創建ssl認證文件:

openssl req -x509 -days 365 -newkey rsa:2048 -nodes -keyout /etc/vsftpd/cert/vsftpd.pem -out /etc/vsftpd/cert/vsftpd.pem

10、創建虛擬用戶家目錄(屬主數組必須是guest_username的屬主屬組,我前面創建的是virtual)

mkdir /data/vsftp/admin -pv
mkdir /data/vsftp/test -pv
chown -R virtual.virtual /data/vsftp/admin
chown -R virtual.virtual /data/vsftp/test

11、服務器iptables 設置

-A INPUT -p tcp -m state --state NEW -m multiport --dport 20,21 -j ACCEPT
-A INPUT -p tcp --dport 40000:41000 -j ACCEPT

12、重啟iptables vsftpd

13、連接訪問

基於ssl的vsftpd服務的虛擬用戶只能通過filezlia類似第三方工具訪問或linux客戶端方法

客戶端訪問使用:lftp -uuser ip地址訪問

其他補充

配置參數說明:

vsftpd的配置文件

/etc/vsftpd/vsftpd.conf  #主配置文件

/usr/sbin/vsftpd           #vsftpd的主程序

/etc/rc.d/init.d/vsftpd   #啟動腳本

/etc/pam.d/vsftpd       #PAM認證文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止訪問的用戶來自/etc/vsftpd/ftpusers文件中的用戶)

/etc/vsftpd/ftpusers    #禁止使用vsftpd的用戶列表文件。記錄不允許訪問FTP服務器的用戶名單,管理員可以把一些對系統安全有威脅的用戶賬號記錄在此文件中,以免用戶從FTP登錄后獲得大於上傳下載操作的權利,而對系統造成損壞。(注意:linux-4中此文件在/etc/目錄下)

/etc/vsftpd/user_list   #禁止或允許使用vsftpd的用戶列表文件。這個文件中指定的用戶缺省情況(即在/etc/vsftpd/vsftpd.conf中設置userlist_deny=YES)下也不能訪問FTP服務器,在設置了userlist_deny=NO時,僅允許user_list中指定的用戶訪問FTP服務器。(注意:linux-4中此文件在/etc/目錄下)

/var/ftp                      #匿名用戶主目錄;本地用戶主目錄為:/home/用戶主目錄,即登錄后進入自己家目錄

/var/ftp/pub               #匿名用戶的下載目錄,此目錄需賦權根chmod 1777 pub(1為特殊權限,使上載后無法刪除)

/etc/logrotate.d/vsftpd.log   #vsftpd的日志文件

vsftpd的主配置文件/etc/vsftpd/vsftpd.conf說明
# 是否允許匿名登錄FTP服務器,默認設置為YES允許
# 用戶可使用用戶名ftp或anonymous進行ftp登錄,口令為用戶的E-mail地址。
# 如不允許匿名訪問則設置為NO
anonymous_enable=YES


# 是否允許本地用戶(即linux系統中的用戶帳號)登錄FTP服務器,默認設置為YES允許
# 本地用戶登錄后會進入用戶主目錄,而匿名用戶登錄后進入匿名用戶的下載目錄/var/ftp/pub
# 若只允許匿名用戶訪問,前面加上#注釋掉即可阻止本地用戶訪問FTP服務器
local_enable=YES


# 是否允許本地用戶對FTP服務器文件具有寫權限,默認設置為YES允許
write_enable=YES


# 掩碼,本地用戶默認掩碼為077
# 你可以設置本地用戶的文件掩碼為缺省022,也可根據個人喜好將其設置為其他值
#local_umask=022


# 是否允許匿名用戶上傳文件,須將全局的write_enable=YES。默認為YES
#anon_upload_enable=YES


# 是否允許匿名用戶創建新文件夾
#anon_mkdir_write_enable=YES


# 是否激活目錄歡迎信息功能
# 當用戶用CMD模式首次訪問服務器上某個目錄時,FTP服務器將顯示歡迎信息
# 默認情況下,歡迎信息是通過該目錄下的.message文件獲得的
# 此文件保存自定義的歡迎信息,由用戶自己建立
#dirmessage_enable=YES


# 是否讓系統自動維護上傳和下載的日志文件
# 默認情況該日志文件為/var/log/vsftpd.log,也可以通過下面的xferlog_file選項對其進行設定
# 默認值為NO
xferlog_enable=YES


# Make sure PORT transfer connections originate from port 20 (ftp-data).
# 是否設定FTP服務器將啟用FTP數據端口的連接請求
# ftp-data數據傳輸,21為連接控制端口
connect_from_port_20=YES


# 設定是否允許改變上傳文件的屬主,與下面一個設定項配合使用
# 注意,不推薦使用root用戶上傳文件
#chown_uploads=YES


# 設置想要改變的上傳文件的屬主,如果需要,則輸入一個系統用戶名
# 可以把上傳的文件都改成root屬主。whoever:任何人
#chown_username=whoever


# 設定系統維護記錄FTP服務器上傳和下載情況的日志文件
# /var/log/vsftpd.log是默認的,也可以另設其它
#xferlog_file=/var/log/vsftpd.log


# 是否以標准xferlog的格式書寫傳輸日志文件
# 默認為/var/log/xferlog,也可以通過xferlog_file選項對其進行設定
# 默認值為NO
#xferlog_std_format=YES


# 以下是附加配置,添加相應的選項將啟用相應的設置
# 是否生成兩個相似的日志文件
# 默認在/var/log/xferlog和/var/log/vsftpd.log目錄下
# 前者是wu_ftpd類型的傳輸日志,可以利用標准日志工具對其進行分析;后者是vsftpd類型的日志
#dual_log_enable


# 是否將原本輸出到/var/log/vsftpd.log中的日志,輸出到系統日志
#syslog_enable


# 設置數據傳輸中斷間隔時間,此語句表示空閑的用戶會話中斷時間為600秒
# 即當數據傳輸結束后,用戶連接FTP服務器的時間不應超過600秒。可以根據實際情況對該值進行修改
#idle_session_timeout=600


# 設置數據連接超時時間,該語句表示數據連接超時時間為120秒,可根據實際情況對其個修改
#data_connection_timeout=120


# 運行vsftpd需要的非特權系統用戶,缺省是nobody
#nopriv_user=ftpsecure


# 是否識別異步ABOR請求。
# 如果FTP client會下達“async ABOR”這個指令時,這個設定才需要啟用
# 而一般此設定並不安全,所以通常將其取消
#async_abor_enable=YES


# 是否以ASCII方式傳輸數據。默認情況下,服務器會忽略ASCII方式的請求。
# 啟用此選項將允許服務器以ASCII方式傳輸數據
# 不過,這樣可能會導致由"SIZE /big/file"方式引起的DoS攻擊
#ascii_upload_enable=YES
#ascii_download_enable=YES


# 登錄FTP服務器時顯示的歡迎信息
# 如有需要,可在更改目錄歡迎信息的目錄下創建名為.message的文件,並寫入歡迎信息保存后
#ftpd_banner=Welcome to blah FTP service.


# 黑名單設置。如果很討厭某些email address,就可以使用此設定來取消他的登錄權限
# 可以將某些特殊的email address抵擋住。
#deny_email_enable=YES


# 當上面的deny_email_enable=YES時,可以利用這個設定項來規定哪些郵件地址不可登錄vsftpd服務器
# 此文件需用戶自己創建,一行一個email address即可
#banned_email_file=/etc/vsftpd/banned_emails


# 用戶登錄FTP服務器后是否具有訪問自己目錄以外的其他文件的權限
# 設置為YES時,用戶被鎖定在自己的home目錄中,vsftpd將在下面chroot_list_file選項值的位置尋找chroot_list文件
# 必須與下面的設置項配合
#chroot_list_enable=YES


# 被列入此文件的用戶,在登錄后將不能切換到自己目錄以外的其他目錄
# 從而有利於FTP服務器的安全管理和隱私保護。此文件需自己建立
#chroot_list_file=/etc/vsftpd/chroot_list


# 是否允許遞歸查詢。默認為關閉,以防止遠程用戶造成過量的I/O
#ls_recurse_enable=YES


# 是否允許監聽。
# 如果設置為YES,則vsftpd將以獨立模式運行,由vsftpd自己監聽和處理IPv4端口的連接請求
listen=YES


# 設定是否支持IPV6。如要同時監聽IPv4和IPv6端口,
# 則必須運行兩套vsftpd,采用兩套配置文件
# 同時確保其中有一個監聽選項是被注釋掉的
#listen_ipv6=YES


# 設置PAM外掛模塊提供的認證服務所使用的配置文件名,即/etc/pam.d/vsftpd文件
# 此文件中file=/etc/vsftpd/ftpusers字段,說明了PAM模塊能抵擋的帳號內容來自文件/etc/vsftpd/ftpusers中
#pam_service_name=vsftpd


# 是否允許ftpusers文件中的用戶登錄FTP服務器,默認為NO
# 若此項設為YES,則user_list文件中的用戶允許登錄FTP服務器
# 而如果同時設置了userlist_deny=YES,則user_list文件中的用戶將不允許登錄FTP服務器,甚至連輸入密碼提示信息都沒有
#userlist_enable=YES/NO


# 設置是否阻扯user_list文件中的用戶登錄FTP服務器,默認為YES
#userlist_deny=YES/NO


# 是否使用tcp_wrappers作為主機訪問控制方式。
# tcp_wrappers可以實現linux系統中網絡服務的基於主機地址的訪問控制
# 在/etc目錄中的hosts.allow和hosts.deny兩個文件用於設置tcp_wrappers的訪問控制
# 前者設置允許訪問記錄,后者設置拒絕訪問記錄。
# 如想限制某些主機對FTP服務器192.168.57.2的匿名訪問,編緝/etc/hosts.allow文件,如在下面增加兩行命令:
# vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY
# 表明限制IP為192.168.57.1/192.168.57.9主機訪問IP為192.168.57.2的FTP服務器
# 此時FTP服務器雖可以PING通,但無法連接
tcp_wrappers=YES

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM