安全特征:
1.任何需要执行较高权限的指令都需要上层程序许可
2.ftp所需要使用的绝大部分命令都被整合到了vsftp中,基本不需要系统额外提供命令
3.拥有chroot功能,可以改变用户的根目录,限制用户只能在自己家的根目录
vsftp连接类型:
控制连接(持续连接)->TCP21(命令信道)->用户收发ftp命令 数据连接(按需连接)->TCP20(数据信道)->用于上传下载数据
匿名用户验证实验:
anonymous_enable=YES #启动匿名访问 anon_umask=022 #匿名用户所上传文件的权限掩码 anon_root=/var/ftp #匿名用户的FTP根目录 anon_upload_enable=YES #允许上传文件 anon_mkdir_write_enable=YES #允许创建目录 anon_other_write_enable=YES #开发其他写入权(删除,覆盖,重命名) anon_max_rate=0 #限制最大传输速率(0为不限速,单位:bytes/秒) 本地用户验证实验 local_enable=YES #是否启用本地系统用户 local_umask=YES #本地用户所上传文件的权限掩码 local_root/var/ftp #设置本地用户的FTP根目录 chroot_local_user=YES #是否将用户禁锢在主目录 chroot_list_file=/etc/vsftpd/chroot_list #白名单文件所在位置需要自己创建 local_max_rate=0 #限制最大传输速率 ftpd_banner=Welcome to blah FTP service#用户登录时显示的欢迎信息 userlist_enable=YES&userlist_deny=YES #禁止/ect/vsftpd/user_list文件中出现的用户名登陆FTP Userlist_enable=YES&userlist_deny=NO #仅允许访问/ect/vsftpd/user_list文件中出现的用户名登陆FTP
配置文件:ftpusers
#禁止/etc/vsftpd/ftpusers文件中出现的用户名登陆FTP,权限比user_list跟高,即时生效,所有写入本文件的用户名都不允许登陆FTP
虚拟用户:
人为创建,生成数据文件,找一个系统用户作为虚拟用户的映射用户,借助系统用户的家目录作为默认登陆点。每一个虚拟用户的权限都可以单独定制。
虚拟用户验证实验:
建立FTP的虚拟用户的用户数据库文件(在/etc/vsftpd)
vim vsftpd.user
注:该文件名可以随便定义,文件内容格式:奇数行用户,偶数行密码
db_load -T -t hash -f vsftpd.user vsftpd.db
修改权限chmod 600 vsftpd.db
#修改文件权限为600 保证其安全性
创建FTP虚拟用户的映射用户,并制定其用户的家目录
useradd -d /var/ftproot -s /sbin/nologin virtual
#创建用户virtual用户作为ftp的虚拟用户
建立支持该用户的PAM认证文件,添加虚拟用户支持
cp -a /var/pam.d/vsftpd /etc/pam.d/vsftpd.pam
#使用模板生成自己的认证配置文件,方便一会调用
编辑新生成的文件vsftpd.pam(清空原来内容,添加下列两行字)
auth required pam_userdb.so db=/etc/vsftpd/vsftpd account required pam_userdb.so db=/etc/vsftpd/vsftpd
在vsftpd.conf配置文件中添加支持配置
修改:
pam_service_name=vsftpd.pam
添加:
guest_enable=YES guest_username=virtual user_config_dir=/ect/vsftpd/dir
4.为虚拟用户建立独立的配置文件,启动服务并测试
注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉
用户可以上传:
Anon_upload_enable=YES #允许上传文件
用户可以创建目录或者文件:
Anon_mkdir_write_enable=YES #允许创建目录
用户可以修改文件名:
Anon_upload_enable=YES #允许上传文件(为了覆盖开启)
Anon_other_write_enable=YES #允许重名和删除文件,覆盖
注:给映射用户的家目录,设置o+r让虚拟用户有读权限
Openssl+vsftpd加密验证方式:
拓展:使用tcpdump工具进行指定窗口抓包,抓住ftp登录过程中的数据包
Tcpdump -i eth0 -nn -X -vv tcp port 21 and ip host 来源IP
-i #interface:指定tcpdump需要监听的接口 -n #对地址以数字方式显式,否则显式为主机名 -nn #除了-n的作用外,还把端口显示为数值,否则显示端口服务名 -X #输出包的头部数据,会以16进制和ASCII两种方式同时输出 -vv #产生更详细的输出