Linux-云计算机构-vsftpd服务的3种认证方式及SSL安全认证

Linux-云计算机构-vsftpd服务的3种认证方式及SSL安全认证

1. vsftpd服务的3种认证方式

  • 匿名开放模式:不安全,无需密码直接登录。
  • 本地用户模式:使用linux本地的账户密码登录。
  • 虚拟用户模式:最安全,需建立用户数据库文件,虚拟一些用于口令验证的账户信息,该账户信息实际不存在服务器系统中仅供FTP服务器程序进行认证使用。

在这里先安装vsftpd服务程序,并清空防火墙策略和保存当前防火墙策略,然后将vsftpd服务的配置文件中的注释信息筛选掉,最后重启vsftpd服务并添加到开机自启项中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置文件:/etc/vsftpd/vsftpd.conf的详细介绍如下:
在这里插入图片描述
在生产环境中需要哪些权限请根据实际情况衡量!!!
FTP服务器常用命令如下:
在这里插入图片描述

2. 匿名开放模式

一般用来访问不重要的公开文件,在生产环境中尽量不要存放重要文件。
vsftpd服务程序默认开启匿名用户模式,登录FTP服务器即进入到服务器的/var/ftp目录下

  1. 修改配置文件如下:
    在这里插入图片描述

  2. 重启服务vsftpd并添加到开机自启项中
    在这里插入图片描述

  3. 在客户端安装ftp客户端工具,并清空防火墙并保存当前防火墙策略,最后输入ftp 192.168.10.10登录ftp服务器。【账号:anonymous 密码:Enter键
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在登录到FTP服务器,进入到/var/ftp/pub目录下时,不能在里面创建文件。估计是权限或者selinux域策略的问题。

  4. 排查上述问题:
    查看下该目录的权限:
    在这里插入图片描述

试试看可以没有,还是不行,但是selinux报警了!!!!这是个提示!!!
在这里插入图片描述
查看下关于ftp服务的selinux域策略
在这里插入图片描述
再试试可以没有,搞定!!!
在这里插入图片描述

3. 本地用户模式

  1. 修改配置文件如下
    在这里插入图片描述
  2. 重启服务vsftpd并添加到开机自启项中
    在这里插入图片描述
  3. 在客户端用root和abong用户登录FTP服务器试试,发现abong用户可以登录,但是root用户不行。但是root用户不是号称超级管理员嘛??这都没有权限嘛???其实是vsftpd服务的配置文件有个参数做了限制
    在这里插入图片描述
    在这里插入图片描述
  4. 查看vsftpd服务的配置文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这两个文件去掉root用户,再试试用root用户登录。可以看到root用户也可以正常登录了。
    在这里插入图片描述
    在使用FTP服务器的过程中若遇到权限问题或者selinux域策略问题可以参考匿名用户模式的排错过程

4. 虚拟用户模式

最安全的认证模式,配置较为复杂。
在配置前,先检测vsftpd服务是否正常开启。可以看到是正常开启的。
在这里插入图片描述

  1. 创建用于FTP认证的用户数据库文件,路径为:/etc/vsftpd/vuser.list【奇数行为账户,偶数行为密码】
    在这里插入图片描述
  2. 使用db_load命令hash算法将原始的明文用户数据库文件/etc/vsftpd/vuser.list加密为密文数据库文件/etc/vsftpd/vuser.db,并降低文件的权限,仅可让所有者拥有读写权限,并删除明文用户数据库文件/etc/vsftpd/vuser.list
    在这里插入图片描述
  3. 创建一个系统本地用户virtual,家目录为/var/ftproot,shell解释器为/sbin/nologin。不允许该系统本地用户登录FTP服务器。
    该系统本地用户作为虚拟用户FTP服务器的桥梁,当使用虚拟用户登录FTP服务器时,会先映射到系统本地用户virtual,再从本地用户登录到FTP服务器。登陆到FTP服务器,即进入系统本地用户virtual的家目录。
    在这里插入图片描述
  4. 使用密文数据库文件vuser.db,生成一个用于虚拟用户认证的PAM文件vsftpd.vu。将vsftpd服务程序的配置文件中的参数pam_service_name修改为该文件名。并修改其他参数值。
    在这里插入图片描述
    在这里插入图片描述

PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务和认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。

  1. 为不同的虚拟用户配置不同的权限,默认空白权限文件的权限为仅能查看文件。并把权限目录配置到vsftpd服务的配置文件中。
    在这里插入图片描述
    在这里插入图片描述
    重启vsftpd服务,并添加到开机自启。
    在这里插入图片描述
  2. 设置关于ftpd服务selinux域策略ftpd_full_accesson
    在这里插入图片描述
  3. 清空并保存服务端和客户端的iptables策略
    在这里插入图片描述
    至今为止,FTP服务器的配置就结束了,是时候验证结果了!!!
  4. 在客户端登录FTP服务器,并验证相关虚拟用户在FTP服务器上的权限。
    先在客户端安装ftp服务程序,然后清空防火墙策略并保存当前策略。
    在这里插入图片描述
    在这里插入图片描述
    登录FTP服务器ftp 192.168.10.10,可以看到登录和使用都是没问题的。
    在这里插入图片描述

5. ftp的实用技巧

5.1 修改登录ftp的根目录【仅对本地用户模式有效】

root用户登录ftp服务器默认的根目录是/var/ftp,普通用户登录ftp服务器默认是/home/用户名,但明显这些目录都不是我们想要用来存放数据的根目录。比如我们想把数据存放在/data目录下,应该怎么设置呢?

[root@server ~]# vim /etc/vsftpd/vsftpd.conf 
101 #chroot_local_user=YES
102 #chroot_list_enable=YES
103 # (default follows)
104 #chroot_list_file=/etc/vsftpd/chroot_list

# 修改以上几行,如下:
local_root=/data    # 设定本地用户根目录
chroot_list_enable=YES   # 激活chroot功能
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list   # 存放锁定本地用户根目录的用户名
allow_writeable_chroot=YES   # 允许锁定的用户有写的权限

# 创建锁定用户文件
[root@server ~]# vim /etc/vsftpd/chroot_list
abong

# 创建/data,并授予o+w的权限
[root@server ~]# mkdir /data
[root@server ~]# chmod -R o+w /data
[root@server ~]# ll -d /data
drwxr-xrwx. 2 root root 6 8月  11 21:05 /data

[root@server ~]# systemctl restart vsftpd
# abong用户再次登录ftp服务器时,就会进入/data目录下。

5.2 vsftpd使用SSL证书加密传输

req       # 是X.509 Certificate Signing Request (CSR,证书签名请求)管理的一个命令。
-new      # 指生成证书请求
-x509     # X.509证书数据管理。
-nodes    # 表示私钥不加密
days      # 定义证书的有效日期。
newkey    #指定证书密钥处理器。
keyout    #设置密钥存储文件。
out       #设置证书存储文件,注意证书和密钥都保存在一个相同的文件

# openssl生成一个自签证书
# 填写项为一些证书信息,随意填即可。
[root@server ~]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3560
Generating a 2048 bit RSA private key
.........................................................................................................................+++
......................+++
writing new private key to 'vsftpd.pem'
-----
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]:SH
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:GZ
Organization Name (eg, company) [Default Company Ltd]:SZ
Organizational Unit Name (eg, section) []:XZ
Common Name (eg, your name or your server's hostname) []:XZ.COM
Email Address []:[email protected]
# 创建一个隐藏目录,用来存放证书文件
[root@server ~]# mkdir /etc/vsftpd/.sslkey
[root@server ~]# mv vsftpd.pem /etc/vsftpd/.sslkey/
[root@server ~]# cd /etc/vsftpd/.sslkey/
[root@server .sslkey]# ll
总用量 4
-rw-r--r--. 1 root root 3038 8月  11 21:18 vsftpd.pem
# 修改ftp配置文件,支持SSL
# 在listen后配置即可
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
ssl_enable=YES
allow_anon_ssl=NO
# 强制本地用户和匿名用户使用加密ssl登陆和数据传输
force_local_data_ssl=YES
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
ssl_tlsv1=YES    # 指定vsftpd支持TLS v1
ssl_sslv2=YES    # 指定vsftpd支持SSL v2
ssl_sslv3=YES    # 指定vsftpd支持SSL v3
require_ssl_reuse=NO   # 
ssl_ciphers=HIGH    # 允许用于加密SSL连接的SSL算法
# 指定证书存储文件
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
# 指定密码存储文件
rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem

[root@server ~]# systemctl restart vsftpd

使用客户端工具FileZilla测试登录:

①打开filezilla客户端

在这里插入图片描述

②输入主机名、用户名、密码、端口号,点击连接

在这里插入图片描述

③会弹出一个“未知证书”,信任该证书。

在这里插入图片描述

④可以看到,本地用户abong已经通过TLS认证登录FTP服务器了。由于建立起了TLS加密传输,数据的传输更加安全。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_36522099/article/details/107947451