centos7_vsftpd-ssl/tls搭建及ftp加固
2019-12-25-cqcet
环境
WEB-02 vsFTPd (ftp.nlsz.ru)
FTP(File Transfer Protocol)文件传输协议
登录ftp服务器上的有三类账户
Real(ftp上拥有的账户)
Guest(来宾账户)
Anonymous(匿名账户)
FTP服务器应仅接受显式SSL / TLS连接
SSL / TLS证书保护vsftpd数据通信
- vsftp的服务进程是vsftpd
- vsftpd的配置文件是/etc/vsftpd/vsftpd.conf .
- vsftpd的用户文件是/etc/vsftpd/ftpusers
- vsftpd的用户文件是/etc/vsftpd/user_list
测试vsftpd是否支持ssl
防火墙策略
firewall-cmd --zone=public --permanent --add-port=21/tcp
生成证书和密钥
openssl req -x509 -nodes -newkey rsa:2024 \-keyout /etc/vsftpd/vsftpd.pem \-out /etc/vsftpd/vsftpd.pem -days 365
- req 是x509证书签名的请求
- x509 表示使用x509证书管理数据
- newkey 指定证书密钥处理
- rsa RSA密钥加密 我这里采用的是2024位私有密钥
- keyout 指定密钥存储位置
- out 指定证书存储位置
- days 证书有效天数
配置vsftpd服务器
/etc/vsftpd/vsftpd.conf
根据需求添加以下
ssl_enable=yes/no //是否启用 SSL,默认为no
allow_anon_ssl=yes/no //是否允许匿名用户使用SSL,默认为no
rsa_cert_file=/path/to/file //rsa证书的位置
dsa_cert_file=/path/to/file //dsa证书的位置
force_local_logins_ssl=yes/no //非匿名用户登陆时是否加密,默认为yes
force_local_data_ssl=yes/no //非匿名用户传输数据时是否加密,默认为yes
force_anon_logins_ssl=yes/no //匿名用户登录时是否加密,默认为no
force_anon_data_ssl=yes/no //匿名用户数据传输时是否加密,默认为no
ssl_sslv2=yes/no //是否激活sslv2加密,默认no
ssl_sslv3=yes/no //是否激活sslv3加密,默认no
ssl_tlsv1=yes/no //是否激活tls v1加密,默认yes
ssl_ciphers=加密方法 //默认是DES-CBC3-SHA
listen_port=21 //指定端口
关于vsftpd服务器加固
require_ssl_reuse =no
ssl_ciphers = HIGH
关闭selinux
/etc/selinux/config
重启vsftpd服务器尝试登录会报一个错误
530 Non-anonymous sessions must use encryption.
命令行不提供加密服务,因此会产生错误。因此,为了安全地连接到服务器,我们需要一个支持SSL / TLS连接的FTP客户端
随便在网上下一个支持ssl传输的ftp客户端
保存证书即可
关于vsftpd加固及优化
anonymous_enable=no //关闭匿名用户登录
anon_upload_enable=no //禁用匿名上传
anon_mkdir_write_enable=no //禁用匿名新建文件夹
anon_other_write_enable=no //禁用匿名账号rwx权限
local_enable=yes //本地账户登录后无权删除修改文件
chroot_list_enable=YES //只允许本地用户在自己目录
write_enable=no //用户的写权限
idle_session_timeout=60 //以秒为单位,1分钟无操作断开
local_max_rate=50000 //以bite为单位,本地用户传输速率
max_clients=200 //FTP最大连接数
max_per_ip=1 //每个ip单线程下载
xferlog_enable=YES //开启日志文件
listen=yes //设置独立进程
cmds_allowed=HELP,DIR,QUIT,! //允许使用的ftp命令
ftp的登录会被xferlog记录
/var/ftp下创建一个.message