Centos8中使用VSFTPD配置FTPs

大雄45發表於2021-04-22
導讀 在本文中,將演示如何安裝vsftpd服務,配置為ftps,併為ftp使用者配置chroot,將ftp會話限制在各自的/var/www/html/[username]目錄中。
系統環境

8

建立使用者

需要建立用於訪問FTP伺服器的使用者。執行以下 來建立使用者並設定各自的密碼,建立使用者時使用 -s選項,讓這兩個使用者禁止 登入:

[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.

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs

編輯/etc/shells配置檔案

上面的使用者的shell設定為 /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

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs

建立自簽名證書

為FTP伺服器建立一個自簽名證書。使用 openssl命令,執行以下命令來生成自簽名證書和私鑰:

[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 []:

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs

配置VSFTPD服務支援chroot和SSL

將上面建立的使用者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

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs
下面編輯 /etc/vsftpd/vsftpd.conf,編輯前需要備份一下配置檔案:

[root@localhost vsftpd]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf vsftpd.conf.back

編輯vsftpd.conf檔案,配置檔案內容如下:

[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

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs

開啟服務

下面啟用服務,並啟動服務:

[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

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs

設定防火牆
[root@localhost ~]# firewall-cmd --permanent --add-service=ftp
success
[root@localhost ~]# firewall-cmd --reload
success

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs

設定SELinux

下面需要設定一下selinux的boolean值,預設情況下 /var/www/html目錄的安全上下文為 httpd_sys_content_t,使用者使用ftp上傳下載可能會出現許可權問題,所以下面設定一下和ftp相關的selinux設定:

[root@localhost ~]# setsebool -P ftpd_full_access 1
[root@localhost ~]# getsebool ftpd_full_access
ftpd_full_access --> on
建立ftp使用者的目錄

/var/www/html目錄中建立使用者的目錄,並設定許可權。

[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/

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs
在每個目錄中建立一個空檔案。你在登入後可以區分使用者家目錄:

[root@localhost ~]# touch /var/www/html/user01/user01_files
[root@localhost ~]# touch /var/www/html/user02/user02_files

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs

訪問ftp伺服器

下載 lftp命令列客戶端進行連線測試:

[root@localhost ~]# yum -y install lftp

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs
下面使用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)

上面提示錯誤,因為是自簽名證書。可以透過執行以下命令不檢查證書:

[root@localhost ~]# echo "set ssl:verify-certificate no" >> /etc/lftp.conf

下面再執行一下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

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs
再使用user02登入看一下:

[root@localhost ~]# lftp user02@localhost
Password: 
lftp user02@localhost:~> ls                   
-rw-r--r--    1 0        0               0 Apr 07 09:42 user02_files

Centos8中使用VSFTPD配置FTPsCentos8中使用VSFTPD配置FTPs

總結

本文介紹瞭如何設定更安全的ftp - “FTPs”、將ftp使用者的主目錄限制在/var/www/html目錄中、如何使用輕量化ftp命令列工具 - “lftp”。


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

相關文章