图文解说VSFTP服务部署实验+常用命令
匿名用户验证实验
1、服务端vsftp-server安装vsftpd,客户端web02安装ftp
启动服务并开机自启(客户端不用)
vsftp-server服务端/var/ftp/内容
web02登录查看
注:客户端登录后默认可以下载文件,但是不可以上传文件
2、下载文件
上传文件,权限否认
3、实现匿名用户可以上传文件,删除文件,创建文件,下载文件…
1)修改主配置文件/etc/vsftpd/vsftpd.conf,添加如下内容:
anonymous_enable=YES----------------------启用匿名用户模式
anon_umask=022--------------------------------匿名用户所上传文件的权限掩码
anon_root=/var/ftp-------------------------------匿名用户的ftp根目录
anon_upload_enable---------------------------允许上传文件
anon_mkdir_write_enable=YES-------------允许创建目录
anon_other_write_enable=YES--------------开放其他写入权限(删除,覆盖,重命名)
anon_max_rate=0--------------------------------限制最大传输速率(0不限速,单位:bytes/秒)
2)在根目录/var/ftp/下先创建一个目录upload并赋予权限777
3)测试:
上传文件:
把客户端web02的两个文件上传到/upload
服务端查看:
创建目录及删除目录
用户进入某个目录时,弹出相应的说明
a. 在对应目录下创建 .message文件,并写入相应内容
b. 确认dirmessage_enable=YES启用
c. 切换目录查看效果(同一次登录仅提示一次)
3、实现上传的文件可下载
默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其它人没有r权限,设置anon_umask=022,可以让上传的文件其它人位置有r权限,然后才能被其他人下载
本地用户验证实验
本地用户权限控制:修改主配置文件
local_enable=YES----------------------------------------------------启用本地系统用户登录模式
local_root=/var/ftp----------------------------------------------------设置本地用户的ftp根目录
local_max_rate=0-----------------------------------------------------限制最大传输速率
local_umask=022-----------------------------------------------------本地用户上传文件的权限掩码
ftpd_banner=Welcome to blah FTP service.-------------------用户登录时显示的欢迎信息
chroot_local_user=YES----------------------------------------------将用户禁锢在家目录
userlist_enable=YES&&userlist_deny=YES----------------------禁止/etc/vsftpd/user_list文件中出现的用户登录FTP
userlist_enable=YES&&userlist_deny=NO----------------------仅允许/etc/vsftpd/user_list文件中出现的用户登录FTP
配置文件:ftpusers
禁止/etc/vsftpd/ftpusers文件中出现的用户登录FTP,权限比user_list文件更高,即时生效
实验需求与流程:
1、服务端创建虚拟用户并设置密码(配置文件/etc/vsftpd/vsftpd.conf中把local_root的值该为/home)
2、客户端登录测试
上传下载文件
注:
#将部分用户禁锢在自己的家目录中
chroot_list_enable=YES----------允许文件中的用户随意切换用户
chroot_list_file=/tmp/chroot_list(文件自己创建)
#改为被动模式传输数据:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=50000
#改为主动模式传输:
port_enable=YES
listen_port=21
connect_from_port_20=YES
ftp_data_port=20
虚拟用户验证实验
1、 在/etc/vsftpd/下建立账号密码文件vsftpd.user(奇数行用户名,偶数行密码)
#用户不用在系统中创建
2、建立账号密码文件sftpd.user对应的数据库文件vsftpd.db并修改该文件的权限
#将用户密码的存放文本转化为数据库类型,并使用hash加密
#修改文件权限为600,保证其安全性
chmod 600 vsftpd.db
3、创建虚拟用户映射的本地用户
4、建立支持虚拟用户的PAM认证文件,添加虚拟用户支持
#使用模板文件生成自己的认证配置文件,方便调用
cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam
#清除/etc/pam.d/vsftpd.pam中的内容,添加如下内容
5、实现不同的虚拟用户拥有独立的家目录
#在主配置文件vsftpd.conf中添加如下内容
pam_service_name=vsftpd.pam--------------加载认证配置文件
guest_enable=YES--------------------------------启用虚拟用户
guest_username=virtual-user-----------------将虚拟用户映射为本地用户
user_config_dir=/etc/vsftpd/dir--------------用户配置文件目录
local_root=/home/virtual-user----------------指定本地用户的根目录
6、在主配置文件中指定的/etc/vsftpd/dir/下创建两个和用户名相同的文件,并添加相应的权限
7、创建上述两个配置文件中指定的目录。然后再在其中创建一个目录用来上传下载文件,然后修改该目录权限777
#主配置文件中自定义的匿名用户相关设置注释掉
#指定根目录不能有w权限,不安全
8、测试
用户zhangsan测试
上传文件
下载文件
创建文件及删除文件
wangwu用户测试
登录:
除了可以创建文件和下载文件,没有其他权限
OpenSSL+vsftpd加密认证方式
vsftpd传输过程明文,不安全,可获取账号密码
抓包验证不安全:
服务端:
客户端:
服务端:
实现加密:
1、 查看是否安装软件openssl
2、 查看vsftpd是否支持openssl
3、 生成加密信息的**和证书文件
#进入/etc/ssl/certs/目录下
a. 建立服务器私钥,生成RSA**
b. 需要依次输入国家,地区,城市,组织,组织单位,Email 等信息。最重要的是有一个 common name,可以写你的名字或者域名。如果为了 https申请,这个必须和域名吻合,否则会引发浏览器警报。
c. 使用CA服务器签发证书,设置证书的有效期等信息
注意 1:生成完秘钥和证书文件后,将本目录{/etc/ssl/certs/}的权限修改为 500.
注意 2:在实验环境中可以用命令生成测试,在生产环境中必须要在 https 证书厂商注册(否则浏览器不识别)
d. 修改权限
4、修改主配置文件,重启服务
ssl_enable=YES
#启用 ssl认证
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
#开启 tlsv1、sslv2、sslv3 都支持
allow_anon_ssl=YES
#允许匿名用户{虚拟用户}
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
#匿名登录和传输时强制使用 ssl
force_local_logins_ssl=YES
force_local_data_ssl=YES
#本地登录和传输时强制使用 ssl
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
#rsa格式的证书
rsa_private_key_file=/etc/ssl/certs/vsftpd.key
#rsa格式的**
注:**文件要在配置文件中单独声明(写入配置文件时,注释要单独一行,否则会报错)
5、测试
可以自己安装FileZilla-FTP
FTP常用命令
FTP> ! 从 ftp 子系统退出到外壳。
FTP> ? 显示 ftp 命令说明。
格式:? [command]
FTP> ascii 将文档传送类型配置为默认的 ASCII。
FTP> binary(或bi) 将文档传送类型配置为二进制。
FTP> bye(或by) 退出
FTP> cd 更改远程电脑上的工作目录。
FTP> delete 删除远程电脑上的文档。
FTP> get 使用当前文档转换类型将远程文档复制到本地电脑。
格式:get remote-file [local-file]
FTP>lcd 更改本地电脑上的工作目录。
格式:lcd [directory]
FTP>ls 显示远程目录列表。
FTP>mkdir 创建远程目录。
FTP>put 使用当前文档传送类型将本地文档复制到远程电脑上。
格式:put local-file [remote-file]
FTP>pwd 显示远程电脑上的当前目录。
FTP>quit 结束和远程电脑的linux ftp命令参数会话并退出linux ftp命令参数。
FTP>rename 重命名远程文档。
格式:rename filename newfilename
说明:filename 指定要重命名的文档。 newfilename 指定新的文档名。
FTP>rmdir 删除远程目录。