实验环境
server
主机:
主机名:westos_node3
ip地址:
172.25.254.20
selinux
关闭:(设置完成需重启)
vim /etc/sysconfig/selinux
火墙开启
dnf
安装设定完成
client主机:
主机名:westos_zxn
ip地址:
172.25.254.10
selinux
关闭
dnf
安装设定完成
安装lftp ftp
协议文本浏览器
ftp介绍
ftp
:
f
ile
t
ransfer
p
roto(文件传输通道)
互联网中最老牌的文件传输协议
vsftpd安装及启用
在
node3中:
dnf install vsftpd -y
systemctl enable --now firewalld
systemctl enable --now vsftpd
firewalld -cmd --permanent --add-service=ftp
firewalld -cmd --permanent --add-source=172.25.254.10 --zone=trusted
systemctl restart firewalld
或
firewalld-cmd --reload
vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES
启动匿名用户的访问功能
systemctl restart vsftpd
测试安装发布
:
firefox中 ftp
://172.25.254.20
lftp 172.25.254.20
此访问方式必须能列出资源才算访问成功
在使用完成后请输入
exit
退出
lftp
vsftpd基本信息
服务名称
:
vsftpd.service
配置目录
:
/etc/vsftpd
主配置文件
:
/etc/vsftpd/vsftpd.conf
默认发布目录
:
/var/ftp
报错信息:
550
程序本身拒绝(即服务本身不允许,需在配置文件中修改)
553
文件系统权限限制
500
权限过大
530
认证失败(密码错误、匿名用户登录未开启)
匿名用户访问控制
lftp 192.168.0.10
当访问ftp
服务时没有加入用户认证为匿名访问
lftp 192.168.0.10 -u westos
本地用户访问
登陆控制
/etc/vsftpd/vsftpd.conf中
12
anonymous_enable
=
YES
|
NO
systemctl restart vsftpd
家目录控制
anon_root
=/
westosdir
systemctl restart vsftpd
在主机中连接node3发现家目录已改变
上传控制
30
anon_upload_enable
=
YES
|
NO
systemctl restart vsftpd
chmod 775 /var/ftp/pub
(
此处若用777,会权限过大出现“500报错”
)
chgrp ftp /var/ftp/pub/
lftp 172.25.254.20
cd pub
put /etc/passwd
目录建立控制
34
anon_mkdir_write_enable
=
YES
|
NO
此时可建立目录
匿名用户可以下载不能读的文件删除重命令控制
anon_other_write_enable
=
YES
|
NO
下载控制
anon_world_readable_only
=
NO
匿名用户上传文件权限设定
anon_umask=022
当设定chown_username之后上传文权限将不是用此参数设定,需使用
chown_upload_mode
匿名用户上传文件的用户身份设定
默认上传身份为ftp
chown_upload=YES
chown_username=redhat
所有匿名用户在服务器生成的文件都是以redhat的身份生成
chown_upload_mode=0644
设定chown_username之后上传文权限必须用此参数设定
此时新上传的文件权限和拥有者已经更改
登陆数量控制:
max_clients
=
2
此时登陆的用户超过两个会出现如下情况:
上传速率控制
anon_max_rate
=
102400
在主机中:
dd if=/dev/zero of=file bs=1M count=100
可见此时下载文件速度已被限制
本地用户的访问
登陆控制
useradd redhat
useradd xsb
useradd daddy
echo linux | passwd --stdin redhat
echo linux | passwd --stdin daddy
echo linux | passwd --stdin xsb
su - redhat/daddy/xsb
touch xxfile
lftp 172.25.254.20 -u xxx
此时都可登录成功
local_enable=NO
在node3中修改配置文件
此时本地用户无法登陆成功!
家目录控制
local_root=/westosdir
将家目录修改为westosdir
此时家目录已经更改
写权限控制
write_enable=NO
此时尝试写文件会出现报错
上传文件权限控制
local_umask=077
将上传权限修改为077
可见此时新上传的文件权限为600(上传文件权限600=777-077(上传权限)-111)
锁定用户到自己的家目录中(不可浏览/目录)
作此操作前可以随意浏览/目录
chroot_local_user=YES
此时所有用户都被限制在自己的家目录中,为NO时所有人都可访问
chmod u-w /home/*
去掉写权限
此时无法浏览 / 目录
锁定用户到自己的家目录中的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
systemctl restart vsftpd
此时除了被白名单中的redhat都不可访问 / 目录
锁定用户到自己的家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
systemctl restart vsftpd
此时除了被锁定的redhat都可访问 / 目录
用户登陆控制
做此实验前需将以下几个配置注销掉以保持纯净实验环境
/etc/vsftpd/ftpusers
永久黑
/
etc
/
vsftpd
/
user_list
默认黑
用户登陆白名单
userlist_deny=NO
此服务开启后会
设定
/etc/vsftpd/user_list为
白名单,不在名单中的用户不能登陆ftp
虚拟用户访问
建立虚拟用户过程(
做此操作前需注释掉
userlist_deny=NO
)
vim /etc/vsftpd/westos_user
建立认证文件模板
user1
123
user2
123
db_load -T -t hash -f westos_user westos_user.db
加密认证文件
-
T
转换
-
t type
-
f
指定转换文件
vim /etc/pam.d/westos_ftp
account required pam_userdb.so db=/etc/vsftpd/westos_user
auth required pam_userdb.so db=/etc/vsftpd/westos_user
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos_ftp
指定认证策略文件
guest_enable=YES
指定虚拟用户功能开启
guest_username=ftp
指定虚拟用户在ftp
服务器上的用户身份
systemctl restart vsftpd
虚拟用户家目录的独立设定
mkdir /virtuserdir
mkdir /virtuserdir/user{1..2}
mkdir /virtuserdir/user{1..2}/pub
touch /virtuserdir/user1/user1file
touch /virtuserdir/user2/user2file
vim /etc/vsftpd/vsftpd.conf
local_root=/virtuserdir/$USER
user_sub_token=$USER
systemctl restart vsftpd
此时再次登录虚拟用户家目录已经独立
用户配置独立
做此实验前需做如下配置
实验开始
user_config_dir=/etc/vsftpd/westos_conf
在此目录中与用户名称相同的文件为用户配置文件
mkdir /etc/vsftpd/westos_conf
vim /etc/vsftpd/
westos_conf
/user2
anon_upload_enable=YES
设定完成后
user2
用户可以上传文件,user1和user3
不行