实验环境
实验环境 一台虚拟机,改ip、名字、无图形、
改 /etc/sysconfig/selinux文件, 改disabled
dnf install vsftpd.x86_64(服务器) lftp.x86_64(客户端便于自机测试)(实机测试也要下载)-y
rpm -ql vsftpd #查询vsftpd的相关文件
systemctl enable --now vsftpd #开启ftp服务
netstat -antlupe | grep vsftpd #查看他的端口
tcp6 0 0 :::21 # port :::* LISTEN 0 84899 28229/vsftpd
lftp 172.25.254.101 -u westos #指定用户使用ftp访问 默认目录为ftp://westos@172.25.254.101/%2Fhome/westos
vim .vimrc 写入set nu并wq退出保存 ##结果: 用vim 查看显示行号
简单测试实验
ftp服务默认匿名用户是被拒绝访问的 若想访问进行配置文件的修改
vim /etc/vsftpd/vsftpd.conf #配置文件位置
anonymous_enable=YES #修改参数anonymous_enable=NO|YES YES,允许匿名访问
systemctl restart vsftpd #重启访问
lftp 172.25.254.101
#当前目录/var/ftp/
测试 touch /var/ftp/westos1
lftp 172.25.254.101 再ls 看有无westos1文件
以上是本机自测,先用实机的浏览器访问
进不去,原因 服务器的火墙关掉或者火墙允许ftp与外界交互
虚拟机:firewall-cmd --permanent --add-service=ftp #允许ftp
firewall-cmd --reload #重启firewall
firewall-cmd --list-all #查看firewall允许的列表
实机用浏览器测试
[root@westos_westosftp ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: cockpit dhcpv6-client ftp ssh ##有ftp
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
1、配置文件参数 全针对匿名用户
vim /etc/vsftpd/vsftpd.conf 配置文件参数 全针对匿名用户
anonymous_enable=YES #对匿名用户的登陆控制 YES允许
anon_root=/westosdir #家目录控制 进ftp默认目录
anon_upload_enable=YES #匿名用户上传控制 YES允许 no报错 550
报错553 权力过小 解决办法
注释掉anon_root=/westosdir
重新开启一个shell进行修改,不要再ftp上改
chmod 775 /var/ftp/pub #改权限 !775
chgrp ftp /var/ftp/pub #改/var/ftp/pub的拥有组
cd pub
put /etc/pass #put 上传
anon_world_readable_only=YES #下载控制 get 下载 !!!no 是能下载 yes=拒绝下载
anon_umask=022 #umask值,目录权限755文件权限644 !chown_username之后上传权限将不是用此参数
anon_other_write_enable=YES #YES 可以删除
匿名用户上传文件的用户设定
chown_uploads=YES #打开 !
chown_username=westos #指定用户 !和上个参数一起用才生效
chown_upload_mode=0644 #指定权限 !anon_umask参数失效
max_clients=2 #登陆数量控制
anon_max_rate=102400 #上传速率控制 单位字节 102400相当于100多k
测试 控制变量法,有的有顺序 记得重新开启服务
此处本该有截图!!!
懒了!
控制变量法,一个一个参数来!
测试心得
1、ftp是系统用户 是真实存在但使用不了,还有普通用户,超级用户 他们的权力从此测试可以深深感受到
2、上传文件测试,下载测试,如果不可以 就要考虑。/var/ftp/pub的权限和拥有组是否有问题。
3、上传文件 用的那台机器连接虚拟机就在那台机子上找文件上传,不要无中生有,暗渡陈仓!
ftp介绍
ftp:file transfer proto
互联中最老牌的文件传输协议
vsftpd基本信息
服务名称:vsftpd.service
配置目录:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp
报错信息:
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败
本地用户的访问
登陆控制
useradd westos
useradd lee
echo lee | passwd --stdin westos
echo lee | passwd --stdin lee
lftp 172.25.254.101 -u westos
local_enable=NO|YES #YES 允许
家目录控制
local_root=/westosdir #登陆目录改变
写权限控制
write_enable=NO|YES #YES 可以上传文件 NO 不可以
#这样做提升安全系数
上传文件权限控制local_umask=077 #上传文件权限为600
用户登陆控制 这个是系统级的黑白名单立即生效,不是改/etc/vsftpd/vsftpd.conf配置文件
/etc/vsftpd/ftpusers ##永久黑 不需要重启服务 权力巨大
/etc/vsftpd/user_list ##默认黑也可能是白名单 不需要重启服务
用户登陆白名单
userlist_deny=NO #设定/etc/vsftpd/user_list位白名单
#不在名单中的用户不能登陆ftp
#白名单对/etc/vsftpd/ftpusers里的用户不生效
锁定用户到自己的家目录中
chmod u-w /home/* #shell中
chroot_local_user=YES #配置文件中
锁定用户到自己的家目录中的黑名单
chroot_local_user=YES ##锁定用户到自己的家目录中
chroot_list_enable=YES ##名单生效
chroot_list_file=/etc/vsftpd/chroot_list ##名单中的用户可以 在本机随意浏览
锁定用户到自己的家目录中的白名单
chroot_local_user=NO ##不锁定用户到自己的家目录中
chroot_list_enable=YES ##名单生效
chroot_list_file=/etc/vsftpd/chroot_list ##名单中的用户不可以 在本机随意浏览
虚拟用户登陆 游客登陆 虚拟用户家目录的独立设定
[root@westos_westosftp vsftpd]# cat westos_pam #建立认证文件
user1 #用户
lee #密码
user2
lee
user3
123
[root@westos_westosftp vsftpd]# db_load -T -t hash -f westos_pam westos_pam.db #加密认证文件 -T 转换 -t type -f 指定
[root@westos_westosftp vsftpd]# cat /etc/pam.d/westos #写认证文档
account required pam_userdb.so( pam_userdb.so函数) db=/etc/vsftpd/westos_pam
auth required pam_userdb.so(pam_userdb.so函数 ) db=/etc/vsftpd/westos_pam
[root@westos_westosftp vsftpd]# tail vsftpd.conf #改写配置文件
listen_ipv6=YES
pam_service_name=westos #指定认证文档
userlist_enable=YES #开启认证文档
guest_enable=YES #游客开启
guest_username=ftp #借用ftp用户
[root@westos_westosftp vsftpd]# systemctl restart vsftpd #重启服务
虚拟用户家目录的独立设定
建立相关的文件 证明这是他的默认家目录
1 mkdir -p /ftphome/user{1..3}
2 ls /ftphome/
3 touch /ftphome/user1/file1
4 touch /ftphome/user2/file2
5 touch /ftphome/user3/file3
6 mkdir /ftphome/user{1..3}/pub
改配置文件
local_root=/ftphome/$USER #把之前的local_root注释掉 $函数让USER自动识别相对应的数字
user_sub_token=$USER #以上$USER是shell用法 得告诉程序我们用的是什么!
用户配置独立
man 5 vsftpd.conf ##user_config_dir 目录指定与用户名称相同的文件为用户配置文件
user_config_dir=/etc/vsftpd/lee #在配置文件中修改
mkdir /etc/vsftpd/lee #建立lee用户配置文件 里面文件名为指定用户
vim /etc/vsftpd/lee/user3 #添加 anon_upload_enable=YES 针对user3
在配置文件中记得注释掉 anon的相关参数