vsftp
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vsftp相关的知识,希望对你有一定的参考价值。
网络服务——VSFTP
VSFTP概述
FTP是FILE Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文件传输协议。”用于internet 上的控制文件的双向传输,使用FTP来传输时,其实是具有一定程度的【危险性】,因为数据在因特网上面是完全没有受到保护的【明文】传输方式!
VSFTP是一个基于GPL发布的类UNIX系统上使用的FTP服务软件,它的全称
是Very Secure FTP 从名称定义上基本可以看出,这是为解决FTP传输安全问题。
特点:
1,vsftp 程序的运行者一般是普通用户,降低了相对应进程的权限,提高了安全性。
2,任何需要执行较高权限的指令都需要上层程序即可
3.ftp所需要使用的绝大数命令都被整合到VSFTP中,基本不需要系统额外提供命令。
4,拥有chroot功能,可以改变用户的根目录,限制用户只能在自己的家目录
VSFTP连接类型
控制连接(持续连接) —— TCP21 (命令信道) —— 用户收发FTP命令
数据连接(按需连接)—— TCP20 (数据信道) —— 用于上传和下载数据。
VSFTP工作模式(工作时默认被动模式)
主动模式 被动模式
Port模式
FTP客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接受数据的时候在这个通道上发送PORT命令。PORT包含客户端用什么端口接收数据。在传送数据的时候,服务器通过自己的TCP 20 端口连接至客户端的指定端口发送数据,FTP server必须和客户端建立一个新的连接用来传输数据。
Passive模式
建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传输数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传输数据。
注意:很多防火墙在设置时候都是不允许接受外部发起的连接的,所以许多位于防护墙后或内网通的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能使用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
防火墙规则 (匹配即停止)
白名单: 逐个允许,拒绝所有,默认防火墙策略。
ip 源地址和目标地址
防火墙 判断机制:
协议
端口 源端口 目标端口
网卡名成 源端口
MAC地址 源端口 目标端口
必须所有条件都符合才匹配成功。
黑名单: 逐个拒绝,默认防火墙策略。允许所有
iptables -A INPUT -s 192.168.100.10 -p tcp -dport 80 -j DROP
VSFTP传输模式
ASCLL传输方式
假定用户正在拷贝的文件包含的简单ASCLL码文本,如果再远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,他们可能是程序,数据库,字处理文件或者压缩文件 。再拷贝任何非文本文件之前 ,用binary命令告诉tfp逐字拷贝。
二进制传输模式(Binary模式)
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的机器上包含为序列的文件是没意义的,例如,QQ.exe以二进制方式传送可执行文件到Linux系统,在对方系统上,此文件不能执行。
VSFTP安装配置(搭建环境中一定要关闭SELINUX vsftp 要求特别严格)
ftp软件:
服务端:
proftpd 支持更多的外部模块,配置灵活
pureftpd 配置简单相对安全
vsftpd 高性能,高安全性
客户端:
ftp,lftp
服务名:
vsftp
端口号:
20 21 随机端口
配置文件:
/etc/vsftpd/vsftpd.conf
实验搭建vsftp
1.把两台机器设置成NAT模式也可以桥接模式,网段自定义然后配置网卡 (在实验中第一台机器为 a机器 第二台b机器)
2.搭建yum源挂载光盘 a安装 vsftpd b安装ftp
3.cd /etc/vsftpd (修改主文件之前养成习惯记得备份 cp -a vsftpd.conf
vsftpd.conf.bak) 然后打开源文件
匿名账户验证:
a. 用户账号名称:ftp或annymous
b. 用户账号密码:空或任意字符
c. 服务器目录:/var/ftp
d. 权限:可下载不可上传,上环权限由两部分组成(住配置文件和文件9
匿名用户的FTP根目录
anon_upload_enable=YES 允许上传文件
anon_mkdir_write_enable=YES 允许创建目录
anon_other_write_enable=YES 开放其他写入权
4.先重启服务a一下看看能不能上传和下载然后拿b机登陆
注意打名字时候不能空格直接回车
默认登陆 /var/ftp下pub
#不能上传,没有w权限,只能下载 在a主机打开上传然后重启服务。
#如果不知道可以?和help
put get 是上传下载
mkdir 在 /var/ftp创建一个lingyu的目录
然后给凌宇设置权限 chown ftp lingyu
只能上传当前,目录下的,下载也一样。
允许匿名用户上传的文件被匿名下载
允许匿名 anon_mkdir_write_enable=YES 允许创建目录
可以覆盖然后重启ftp man5 查看配置文件信息
本地用户验证:
a.用户账号名称: 本地用户(etc/shaow)
b.用户账号密码: 用户密码(/etc/shadow)
c.权限:最大权限(drwx------)
e.本地用户权限控制:
local_enable=YES 是否启用本地系统用户
local_umask=022 本地用户所上传文件的权限掩码
local_root=/var/ftp 设置本地用户的FTP根目录
chroot_local_user=YES 是否将用户禁锢在主目录
local_max_rate=0 限制最大传输速度
ftpd_banner=Welcome to blah FTP service 用户登陆时显示的欢迎信息
banner_file=/目录 弹出一个说明,可以做哪些操作
userlist_enable=YES && userlist deny=YES
禁止/etc/vsftpd/usr_list 文件中出现的用户名登陆FTP。
userlist_enable=YES && userlist deny=NO
仅允许/etc/vsftpd/user_list 文件中出现的用户名登陆FTP
ftpusers 所有写入到ftpusers都不能登陆 这个权限的优先级更高
禁止/etc/vsftpd/ftpusers文件中出现的用户名登陆FTP权限比user_list更高,即便生效
f.特点:配置相对复杂,可以设置严格的权限,有安全隐患
本地用户:
1.先切换到/etc/目录下 然后修改vsftpd.conf文件
2.重启 service vsftpd restart 先测试下 windows默认就匿名登陆不会有提示。
先创建一个名字叫lingyu的用户 useradd lingyu
给 lingyu 用户设置密码 passwd lingyu
把用户限制在自己的家里。
保存退出重启一下服务再来验证一下
把放行的用户写在配置文件里。
那个名单目录没有所以在/etc/下手动创建一个。
vim chroot_list 里面写允许的用户:anguo 然后创建anguo这个用户 然后重启服务
然后再登陆lingyu
chroot_local_user=YES 所有用户都禁锢在家目录里面
chroot_local_enable=YES 如果三句话同时开启并且指定的列表里面有一个用这时候列表里面的用户可以随意切换除此之外都不能。
chroot_list_file=/etc/vsftpd/chroot_list 列表是白名单
本地用户默认登陆的位置 先创建一个目录
然后修改配置文件。
然后重启一下
限速 local_max_rate=512000 先给上传权限 chmod 777 /local
打开欢迎信息
提示登陆信息
然后再/下创下目录 vim /ftpbanner.txt 然后重启服务
禁止用户登录和允许用户登录的
在vsftpd 下有这些文件。
这些允许的用户 如果deny不开启允许,如果开启在这文件里不允许登陆。
需要设置的权限足够严格才行。
匿名用户验证: (不是原来的匿名而是虚拟用户。是认为手动的创建虚拟虚假的用户,从数据库对应)
1.能够设置严格的权限(为每一个用户生成单独的配置文件)
2.减少了系统中本地用户的数量,提高安全性
匿名用户实验:
注:关闭服务器和客户机上的防火墙和SELINUX。
1.在客户端登陆后,默认情况下是可以下载的,但不能上传。
虚拟用户的搭建流程:
1.建立虚拟FTP用户的账号数据库文件(/etc/vsftpd)
在vsftpd目录下 创建一个vim vsftp
然后拿db load 命令进行数据库转换。
改成只有管理员才能读写
chmod 600 vsftp chmod 600 vsftp.db
然后做一个映射才会验证登陆 指定虚拟用户登陆的目录 并且不能登陆操作系统 需要把权限改成755 默认就是755
允许其他用户进入
3.建立支持虚拟用户的PAM 认证文件,添加虚拟用户支持。
然后查看文件数据库文件的指定位置
4.在vsftpd.conf文件中添加支持配置 重启服务
那个目录还没有创建 ,你指什么创建什么
a1
b1
C1
然后重启一下 service vsftpd restart
5.为个别虚拟机用户建立独立的配置文件,启动服务并测试
在指定目录下创建每个用户的配置文件重启登陆测试
规则:
一个用户可以上传
一个用户可以创建目录或文件
一个用户可以修改文件名
openssl+vsftpd 加密验证方式
由于使用ftp登陆时,能够通过抓包工具,得到一些信息,所以不安全
虚拟用户总结:
1.先生成用户密码的数据库文件
2.创建虚拟用户映射(虚拟用户的家目录)
3.创建认证文件/etc/pam.d/vsftpd.pam
指定虚拟用户数据库文件的位置。
4.配置文件中添加pam认证&虚拟用户的配置文件所在目录
5.为每个虚拟用户创建配置文件(配置文件要创建指定位置,配置文件名和用户名相同
ssl+vsftpd
1.ssl证书的生成
2.配置文件添加ssl认证支持
匿名,本地用户是否启用ssl
pem认证证书的位置
3.登录时用相对应的登陆认证方式(公开式)
openssl+vsftpd 加密验证方式
由于使用FTP登录时,能够通过抓包工具,得到一些信息,所以不安全
tcpdump port 21 -nA
1.查看是否安装 openssl
rpm -a openssl
2.查看vsftpd是否支持openssl
3.生成加密信息
注:req标注格式
-new 创建一个新的认证证书
x509 证书内容格式
-nodes 不使用密码
-out 输出的文件名
-keyout 生成的密钥文件
4.把证书放在指定位置
给他权限chmod 500 certs
5.修改ftp的配置文件 /etc/vsftpd/vsftpd.conf
6.重启服务 service vsftpd restart
7.测试
本文出自 “凌宇的技术博客” 博客,谢绝转载!
以上是关于vsftp的主要内容,如果未能解决你的问题,请参考以下文章