Linux系统基础

ftp虚拟账户设置以及ssl加密

2019-05-17  本文已影响4人  Daisy小朋友

一 ftp安装——虚拟账户

[root@iZshvqfkb75a89Z ~]# yum -y install vsftpd && yum  install  pam*  libdb-utils libdb*--skip-broken  –y && chkconfig vsftpd on
[root@iZshvqfkb75a89Z ~]# cd /etc/vsftpd/
[root@iZshvqfkb75a89Z vsftpd]# cat ftpusers.txt
chy
123456
#把新建的文本文件 virtualuser.txt 转换为 db 文件,安装 db4-utils 包
[root@iZshvqfkb75a89Z vsftpd]# yum install -y db4-utils
[root@iZshvqfkb75a89Z vsftpd]# db_load -T -t hash -f ftpusers.txt /etc/vsftpd/vsftpd_login.db
#这条命令生成用户数据库
[root@server vsftpd]# chmod 600 vsftpd_login.db
#设置认证文件只对用户可读可写
[root@server pam.d]# cd /etc/pam.d
# /*配置 PAM 文件
# //为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的
# PAM 模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安
# 装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。 PAM 模块
# 配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,
# 并以服务名称命名。
# //修改 vsftpd 对应的 PAM 配置文件/etc/pam.d/vsftpd,可将原配置注释,然后作如下配置
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_bak20190515
vim /etc/pam.d/vsftpd 
auth       required      /lib64/security/pam_userdb.so      db=/etc/vsftpd/vsftpd_login
account    required      /lib64/security/pam_userdb.so      db=/etc/vsftpd/vsftpd_login
# //auth 是指对用户的用户名口令进行验证。
# accout 是指对用户的帐户有哪些权限哪些限制进行验证。
# /lib/security/pam_userdb.so 表示该条审核将调用 pam_userdb.so 这个库函数进行。
# 最后的 db=/etc/vsftpd/virtualser_login 则指定了验证库函数将到这个指定的数据库中调用数据进行验证。
# 重新修改 vsftpd.conf 配置文件
[root@newsales3 vsftpd]# grep -v ^# /etc/vsftpd/chkconfig vsftpd on
anonymous_enable=NO    #禁用匿名用户登录
local_enable=NO                  #启用本地用户登录设置
write_enable=YES                    #是否可以读写
local_umask=022                    
dirmessage_enable=YES
xferlog_enable=YES                #日志是否启用
connect_from_port_20=YES           #是否允许主动模式FTP
#xferlog_std_format=YES           #日志写到/var/log/xferlog,日志不显示中文,包含的内容更多,但是都是缩写,不直观
xferlog_std_format=YES           #日志写到/var/log/vsftpd.log,且更加易读
chroot_list_enable=YES            #YES的时候,启用chroot 列表。
chroot_list_file=/etc/vsftpd/chroot_list        #在该目录中的用户禁止切换目录,锁定在家目录
listen=YES 
pam_service_name=vsftpd       #安全审计模块名对应/etc/pam.d/vsftpd
userlist_enable=YES
tcp_wrappers=YES
#set for  late  8 hour
use_localtime=yes
#pasv_enable=YES                        ##开启被动模式
pasv_min_port=30000                    ##被动模式最小端口
pasv_max_port=30010                    ##被动模式最大端口,需要在服务器端开放防火墙20/21以及30000/30010即可
############### Virtual user  ############
guest_enable=yes
guest_username=ftpuser            #虚拟用户映射的真实系统用户是
virtual_use_local_privs=YES              #虚拟用户是否有映射的系统真实用户的权限
user_config_dir=/etc/vsftpd/vsftpd_user_conf    #设置虚拟用户配置文件的目录
############### Virtual user  ############
cd /etc/vsftpd/
mkdir vsftpd_user_conf   
cat /etc/vsftpd/chroot_list 
chy
# 在没有建立虚拟账户配置文件测试默认虚拟用户的权限:
useradd -s /sbin/nologin ftpuser 
报错1:
Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: write_enable
解决2:
说明这一行有多余的空格,需要删除

注意1
打开 FTP 服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。
详细信息:
200 Switching to ASCII mode.
227 Entering Passive Mode (0,0,0,0,227,175).
解决:
在windows下操作:
打开 “网络和共享中心”,找到“Internet选项” -->【高级】这页,
取消掉“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”
注意2: 云主机防火墙设置
pasv_min_port=30000 ##被动模式最小端口
pasv_max_port=30010 ##被动模式最大端口
需要在服务器端开放防火墙20/21以及30000/30010即可

二 ftp安全 ——ssl加密传输

参考:

https://access.redhat.com/solutions/3436

mkdir /etc/vsftpd/sslkey
cd /etc/vsftpd/sslkey
openssl req -x509 -nodes -keyout /etc/vsftpd/sslkey/vsftpd.pem -out /etc/vsftpd/sslkey/vsftpd.pem -days 365 -newkey rsa:2048

    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]:CN
    State or Province Name (full name) []:shanghai
    Locality Name (eg, city) [Default City]:shanghai
    Organization Name (eg, company) [Default Company Ltd]:jinzhuanch
    Organizational Unit Name (eg, section) []:technology
    Common Name (eg, your name or your server's hostname) []:192.168.247.135
    Email Address []:

vim /etc/vsftpd/vsftpd.conf 添加

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/sslkey/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/sslkey/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
debug_ssl=YES

三 ftp存在的安全问题

参考:

https://www.cnblogs.com/Hyber/p/6362916.html

1 FTP匿名访问是FTP安全问题中最常见的问题,取消匿名访问

anonymous_enable=YES         是否允许FTP匿名访问登录
anon_upload_enable=YES       是否允许FTP匿名上传
anon_mkdir_write_enable=YES  是否允许FTP匿名用户创建目录

2 未限制登录用户访问目录权限,配置加固

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

除了chroot_list中的用户都不能访问上级根目录
3 使用虚拟账户
4 密码和文件内容都使用明文传输,可能产生不希望发生的窃听,使用ftps ftp+ssl
注意登录必须使用
5 在使用FTP时,如果客户端机器和FTP服务器双方之间的所有端口都是开放的,那连接不存在问题。如果客户端与服务器之间有防火墙,如果没配置好防火策略和采用合适的连接模式,会导致登录成功,但无法List列表的问题。要避免出现这样的问题,首先要了解FTP的工作模式。我采取的是被动模式
可参考

https://blog.51cto.com/732233048/1618624

6 tcpdump port 21 -nA 可通过此命令查看ftp如果不添加ssl就是明文传输

上一篇下一篇

猜你喜欢

热点阅读