前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络系统管理Linux环境——StorageSrv之VSFTPD

网络系统管理Linux环境——StorageSrv之VSFTPD

作者头像
冷影玺
修改2024-09-14 13:58:39
3440
修改2024-09-14 13:58:39
举报
文章被收录于专栏:冷影玺

题目要求

服务器StorageSrv上的工作任务

3. VSFTPD

禁止使用不安全的 FTP,请使用“CSK Global Root CA”证书颁发机构,颁发的证书,启用 FTPS 服务;

创建虚拟用户 webuser,登录 ftp 服务器,根目录为/webdata,上传的文件映射为 webadmin;

登录后限制在自己的根目录;

允许 WEB 管理员上传和下载文件,但是禁止上传后缀名为.doc .docx .xlsx 的文件;

限制用户的下载最大速度为 100kb/s;最大同一 IP 在线人数为 2 人;

通过工具或者浏览器下载的最大速度不超过 100kb/s;

一个 IP 地址同时登陆的用户进程/人数不超过 2 人;

采用随机端口用户客户端跟服务器的数据传输,并限制传输端口为 40000-41000 之间。

项目实施

安装软件包:

代码语言:javascript
复制
[root@storagesrv ~]# yum install vsftpd -y

创建虚拟用户和根目录:

代码语言:javascript
复制
[root@storagesrv ~]# mkdir /webdata

创建一个用户作为虚拟用户的宿主用户,所有的虚拟用户都要映射到一个真实的系统用户:

代码语言:javascript
复制
[root@storagesrv ~]# useradd webadmin

建立虚拟用户名单密码文件(奇数行为用户,偶数行为密码)

代码语言:javascript
复制
[root@storagesrv ~]# cat /etc/vsftpd/vsftpd
webuser
123456
[root@storagesrv ~]#

加密虚拟用户名单文件:

代码语言:javascript
复制
[root@storagesrv ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd /etc/vsftpd/vsftpd.db

申请证书(证书服务器在AppSrv上)

申请FTP站点证书及密钥文件:

代码语言:javascript
复制
[root@appsrv csk-rootca]# openssl genrsa -out ftp.key
Generating RSA private key, 2048 bit long modulus
...+++
.......+++
e is 65537 (0x10001)
[root@appsrv csk-rootca]#
代码语言:javascript
复制
[root@appsrv csk-rootca]# openssl req -new -key ftp.key -out ftp.csr
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) []:China
Locality Name (eg, city) [Default City]:BeiJing
Organization Name (eg, company) [Default Company Ltd]:skills
Organizational Unit Name (eg, section) []:Operations Departments
Common Name (eg, your name or your server's hostname) []:ftp.chinaskills.cn
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@appsrv csk-rootca]#
[root@appsrv csk-rootca]#

签发证书:

代码语言:javascript
复制
[root@appsrv csk-rootca]# openssl ca -keyfile private/cakey.pem -cert csk-ca.pem -in ftp.csr -out ftp.crt

将证书和密钥拷贝至Storagesrv上:

代码语言:javascript
复制
[root@appsrv csk-rootca]# scp ftp.crt ftp.key root@192.168.100.200:/root

备份vsftpd配置文件,过滤注释行重新导入原文件:

代码语言:javascript
复制
[root@storagesrv ~]# cp -a /etc/vsftpd/vsftpd.conf{,.bak}
[root@storagesrv ~]# grep -Ev "^$|^#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
[root@storagesrv ~]#

编辑ftp配置文件和认证文件:

主配置文件:

代码语言:javascript
复制
[root@storagesrv ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=NO		# 修改为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
tcp_wrappers=YES
# 添加内容
guest_enable=YES
guest_username=webadmin
user_config_dir=/etc/vsftpd
local_root=/webdata
allow_writeable_chroot=YES
chroot_local_user=YES
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/root/ftp.crt
rsa_private_key_file=/root/ftp.key
deny_file={*.doc,*.docx,*.xlsx}
local_max_rate=100000
max_per_ip=2
pasv_min_port=40000
pasv_max_port=41000
[root@storagesrv ~]#

配置PAM文件,设置基于虚拟账户验证(db=后面根的内容不需要添加.db结尾):

代码语言:javascript
复制
[root@storagesrv ~]# cat /etc/pam.d/vsftpd
# 注释其他撰写两条用户路径
#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth    required        pam_userdb.so db=/etc/vsftpd/vsftpd
account required        pam_userdb.so db=/etc/vsftpd/vsftpd
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth
[root@storagesrv ~]#

编辑虚拟用户配置文件(文件名必须与虚拟用户名称相同,可以单独设置权限、限速等选项设置):

代码语言:javascript
复制
[root@storagesrv ~]# cat /etc/vsftpd/webuser
local_root=/webdata
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@storagesrv ~]#

赋予权限重启服务并测试:

代码语言:javascript
复制
[root@storagesrv ~]# chmod 777 /webdata -
[root@storagesrv ~]# systemctl restart vsftpd

客户端安装lftp:

代码语言:javascript
复制
[root@insidecli ~]# yum install lftp -y

编辑lftp配置文件加入一行(关闭ssl安全证书验证,可以解决自签证书的信任)

以下内容是追加写入的:

代码语言:javascript
复制
[root@insidecli ~]# vim /etc/lftp.conf
set ssl:verify-certificate no
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目要求
    • 服务器StorageSrv上的工作任务
    • 项目实施
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档