新聞中心
vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。vsftpd 是一個 UNIX 類操作系統(tǒng)上運行的服務(wù)器的名字,它可以運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統(tǒng)上面,是一個完全免費的、開發(fā)源代碼的ftp服務(wù)器軟件,支持很多其他的 FTP 服務(wù)器所不支持的特征。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、盱眙網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、盱眙網(wǎng)絡(luò)營銷、盱眙企業(yè)策劃、盱眙品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供盱眙建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
系統(tǒng)環(huán)境
Centos8
創(chuàng)建用戶
需要創(chuàng)建用于訪問FTP服務(wù)器的用戶。執(zhí)行以下命令來創(chuàng)建用戶并設(shè)置各自的密碼,創(chuàng)建用戶時使用-s選項,讓這兩個用戶禁止shell登錄:
[root@localhost ~]# useradd -s /sbin/nologin user01
[root@localhost ~]# useradd -s /sbin/nologin user02
[root@localhost ~]# echo '123'|passwd --stdin user01
Changing password for user user01.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo '123'|passwd --stdin user02
Changing password for user user02.
passwd: all authentication tokens updated successfully.
編輯/etc/shells配置文件
上面的用戶的shell設(shè)置為/sbin/nologin之后,需要在/etc/shells文件中添加/sbin/nologin,否則后面ftp用戶登錄時提示Login failed: 530 Login incorrect.
[root@localhost ~]# echo "/sbin/nologin" >> /etc/shells
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin
安裝VSFTPD
使用下面命令安裝vsftpd:
[root@localhost ~]# yum -y install vsftpd
創(chuàng)建自簽名證書
為FTP服務(wù)器創(chuàng)建一個自簽名證書。使用openssl命令,執(zhí)行以下命令來生成自簽名證書和私鑰:
[root@localhost ~]# openssl req -x509 -nodes -keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/vsftpd.pem -days 365 -newkey rsa:2048
Generating a RSA private key
..+++++
..............................................+++++
writing new private key to '/etc/vsftpd/vsftpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shandong
Locality Name (eg, city) [Default City]:QD
Organization Name (eg, company) [Default Company Ltd]:Linuxprobe
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ftp.linuxprobe.com Email Address []:配置VSFTPD服務(wù)支持chroot和SSL
將上面創(chuàng)建的用戶user01和user02添加到/etc/vsftpd/user_list文件中,只允許該文件中的用戶ftp登錄。
[root@localhost vsftpd]# vim /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
user01
user02
下面編輯/etc/vsftpd/vsftpd.conf,編輯前需要備份一下配置文件:
[root@localhost vsftpd]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf vsftpd.conf.back
編輯vsftpd.conf文件,配置文件內(nèi)容如下:
[root@localhost vsftpd]# vim vsftpd.conf
[root@localhost vsftpd]# cat vsftpd.conf | grep -Ev '(^$|^#)'
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
ssl_enable=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1_2=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.key
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_min_port=30000
pasv_max_port=31000
debug_ssl=YES
chroot_local_user=YES
local_root=/var/www/html/$USER
allow_writeable_chroot=YES
開啟服務(wù)
下面啟用服務(wù),并啟動服務(wù):
[root@localhost ~]# systemctl enable vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service ?ú /usr/lib/systemd/system/vsftpd.service.
[root@localhost ~]# systemctl start vsftpd
設(shè)置防火墻
[root@localhost ~]# firewall-cmd --permanent --add-service=ftp
success
[root@localhost ~]# firewall-cmd --reload
success
設(shè)置SELinux
下面需要設(shè)置一下selinux的boolean值,默認情況下/var/www/html目錄的安全上下文為httpd_sys_content_t,用戶使用ftp上傳下載可能會出現(xiàn)權(quán)限問題,所以下面設(shè)置一下和ftp相關(guān)的selinux設(shè)置:
[root@localhost ~]# setsebool -P ftpd_full_access 1
[root@localhost ~]# getsebool ftpd_full_access
ftpd_full_access --> on
創(chuàng)建ftp用戶的目錄
在/var/www/html目錄中創(chuàng)建用戶的目錄,并設(shè)置權(quán)限。
[root@localhost ~]# mkdir /var/www/html/user0{1..2}
[root@localhost ~]# chown -R user01:apache /var/www/html/user01/
[root@localhost ~]# chown -R user02:apache /var/www/html/user02/
在每個目錄中創(chuàng)建一個空文件。你在登錄后可以區(qū)分用戶家目錄:
[root@localhost ~]# touch /var/www/html/user01/user01_files
[root@localhost ~]# touch /var/www/html/user02/user02_files
訪問ftp服務(wù)器
下載lftp命令行客戶端進行連接測試:
[root@localhost ~]# yum -y install lftp
下面使用user01登錄:
[root@localhost ~]# lftp user01@localhost
Password:
lftp user01@localhost:~> ls
ls: Fatal error: Certificate verification: Not trusted (01:3E:A2:1B:39:E9:BE:DB:55:1F:C3:71:34:6F:B6:8E:E2:D0:2C:8C)
上面提示錯誤,因為是自簽名證書。可以通過執(zhí)行以下命令不檢查證書:
[root@localhost ~]# echo "set ssl:verify-certificate no" >> /etc/lftp.conf
下面再執(zhí)行一下lftp命令使用user01登錄:
[root@localhost ~]# lftp user01@localhost
Password:
lftp user01@localhost:~> ls
-rw-r--r-- 1 0 0 0 Apr 07 09:42 user01_files
再使用user02登錄看一下:
[root@localhost ~]# lftp user02@localhost
Password:
lftp user02@localhost:~> ls
-rw-r--r-- 1 0 0 0 Apr 07 09:42 user02_files
總結(jié)
本文介紹了如何設(shè)置更安全的ftp – “FTPs”、將ftp用戶的主目錄限制在/var/www/html目錄中、如何使用輕量化ftp命令行工具 – “l(fā)ftp”。
新聞標題:Centos8通過VSFTPD配置FTPs
文章鏈接:http://fisionsoft.com.cn/article/dpegsos.html


咨詢
建站咨詢
