FTP服务搭建 配置实验之前关闭防火墙
iptables -F
iptables -X
iptables -Z
systemctl stop firewalld
setenforce 0
1.ftp简介 功能 端口 工作模式 协议tcp
功能:
FTP是File Transfer Protocol(文件传输协议)的缩写
在Unix/Linux系统中常用的免费FTP服务器软件主要是VSFTP。
端口:
主动模式:TCP 21(连接) 20(数据) tcp三次握手协议
被动模式:TCP 21(连接) 动态端口(数据)
21端口是命令连接 是用来 接传输控制命令
20端口是 传输数据,下载文件
FTP两种工作模式
主动 和被动是对vsftp服务端而言的 vsftpd是进程 vsftp是服务
主动是服务端主动去连接, 主动使用端口是21端口 是命令连接 是用来传输控制命令
20端口是 传输数据,下载文件
协议是tcp
被动是服务端被动被连接 ,在传输之前, 控制命令传输也是21端口 但是数据传输不是20端口了 是动态端口(不确定的端口 ,但是有规定的范围)
防火墙导致主动模式不成功??
主动模式(Active FTP):
端随机开启一个大于1024的端口 N 向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出 PORT N+1 命令。
服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
被动模式(Passive FTP):
FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器使用被动模式。
服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,数据端口是P。
客户端收到命令后,会通过N+1号端后连接服务器的端口P,然后在两个端口之间进行数据传输。
2.VSFTP三种用户类别 匿名 本地 虚拟账号
1.)匿名账号:
使用FTP客户端访问服务器的时候,通常会遇到一类特殊帐号,用户名为(ftp)(anonymous),提供任意密码(包括空密码),可以通过服务器的验证此类用户被成为匿名用户,根路径在/var/ftp ,一般提供公共文件的下载,如免费软件,学习资料下载的站点
2.)本地帐号:
通用的系统帐号,根路径在本地账号家目录
3.)虚拟帐号:
有些FTP服务器软件还可以维护一份独立的用户数据库文件,而不是系统用户帐号。独立于数据库文件中的FTP用户帐号,被称为“虚拟帐号”,使用虚拟帐号,可以降低关联性,安全性提高
4.解读配置文件 vim /etc/vsftpd/vsftpd.conf
1.用户跳出默认路径
vi /etc/vsftpd/vsftpd.conf
打开这三个,最后一个得加进去 配置user1 user2
chroot_local_user= YES --把用户锁在默认路径下,把家目录当做根目录 / 处理,不允许跳出
chroot_list_enable= YES ---开启一个用户列表文件,该文件中的所有用户允许跳出默认路径,其他用户锁在默认路径下 用户可以跳出家目录
chroot_list_file=/mnt/vsftpuserlist ---能跳出家目录的文件,在里面写入用户
allow_writeable_chroot= YES ---允许用户访问其家目录,即转换后的 /根目录
vi /mnt/vsftpuserlist ---新建该用户列表文件,之前不存在,把跳出用户写到这里面 user1 和user2
2.用户匿名上传
vi /etc/vsftpd/vsftpd.conf --写入配置文件
upload上传
anon_upload_enable=YES --允许匿名上传文件,但不能上传文件夹,不能改名、删除
anon_mkdir_write_enable= YES --允许匿名上传文件夹建立目录, 上传文件夹
anon_other_write_enable= YES --允许匿名给文件改名、删除
3.其他配置
max_clients=100 --限定最大连接数为100 (并发连接数,同时可连接的数量)
max_per_ip=10 --限定每一个个客户端最多同时发起10个连接
anon_max_rate=81920 --匿名用户下载最快80KB每秒(80K=80x1024=81920)
local_max_rate=102400--/本地用户下载最快100KB每秒
ascii_upload_enable=YES --指定数据传输方式以ASC编码格式传输
ascii_download_enable= YES --下载支持ASC编码格式传输
注:某些软件包上传下载必须用ASC码式 ,一般为二进制下载传输性能最优
保存修改后
3.FTP服务
1.服务器安装FTP软件包 启动服务 查看端口
配置yum环境,yum安装vsftpd FTP软件包 或者去rpm包 查找安装
yum -y install vsftpd
或者第二种方法rpm包方式
rpm -ivh vsfptd.xxx.rpm ---去rpm包查看 (比较麻烦)
cd /meida/cdiso --挂载的光驱sr0 里面有Packages所有的安装包,查看
然后复制这个安装包到目录下`,然后安装即可
cp vsftpd-3.0.2-22.el7.x86_64.rpm /root/
cd ls
rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm ---安装即可
systemctl start vsftpd --启动服务
netstat -antulp | grep :21 ----查看21端口,
netstat -antulp | grep :20 ----查看20端口,因为没有开始传输,所以显示没有
2.VSFTP服务器 主配置文件控制权限vi /etc/vsftpd/vsftpd.conf
vi /etc/vsftpd/vsftpd.conf ---编辑配置文件,其中
anonymous_enable=YES ---是否允许匿名用户登录
local_enable=YES ---是否允许系统用户登录
write_enable= YES ---系统用户开启写权限 ,能上传
local_umask=022 ---系统用户上传文件的umask权限参数
说明: 系统用户登录ftp后,默认访问点是其个人家目录 (本地账户)
匿名用户登录ftp后,默认访问点/var/ftp/中,且该目录权限必须755
dirmessage_enable=yes ---显示消息文件,登录后,或切换目录后,目标目录下若有.message,则自动显示文档内容
pam_service_name=vsftpd --开启ftp的PAM验证功能,指定验证配置文件名(用户和密码验证
userlist_enable= YES ---启用vsftpd指定的用户列表文件,
该文件中列举的用户,拒绝登录ftp,/etc/vsftpd/user_list文件
cd /etc/vsftpd/ vim vsftpd.conf ---查看编辑
3服务端默认访问点/var/ftp/文件权限为755 不能修改 r=4 w=2 x=1
匿名用户登录ftp后,默认访问点/var/ftp/中,且该目录权限必须755
4.测试匿名windows用户登录 访问linux服务端的FTP
put上传 get下载
quit 或 bye 命令退出ftp
系统账号登录后默认允许切换入linux服务器其他路径中
匿名账号登录后默认被锁定在登录路径下,不可跳出
Windows访问
ftp://192.168.10.1 验证ftp启用
在ftp服务器创建一个文件 kkk, 用浏览器查看
5.服务端上传文件视频 windows客户端匿名查看
dd if=/dev/zero of=movie.blue bs=1M count=10
路径 文件 速度 个数
dd if=/dev/zero of=movie.yellow bs=1M count=20
6在Linux客户端测试访问 网络要同一网段 关闭防火墙
首先能保证linux FTP服务器和客户端能够ping通,客户机服务器都关闭防火墙, (网络要通,在一个网段)
客户机安装软件 ftp lftp
在 linux客户端 登录
ftp 192.168.10.2 然后输入ftp这个用户名 在输入密码 查看下载
或者用 lftp 不需要输入账号和密码 ,直接登录
4. 服务器建立本地VSFTP登录账号 测试权限 切换目录 有风险
vsftp默认使用系统账号作为FTP帐号
新建两个系统账号:
建立账号
useradd user1
passwd 123456
useradd user2
passwd 123456
systemctl vsftpd restart ----启动服务
1.在linux客户端本地账户就行验证 登录查看 切换路径查看 本地账号有风险
因为已经创建了本地用户,所以登录时候时写本地用户名
登录查看
登录 ls user家目录现在本身看不到内容 ls -a可查看user1用户的隐藏文件
切换路径
本地家目录和切换到linux其他目录 / 根目录 /home/user1 用户1的目录
本地账号的风险
本地账户 登录时可以随意切换目录,在系统乱跑, 所以要去限制他,锁定账号
5.VSFTP文件配置 用户控制权限(跳出根目录)
1.)主配置文件 锁用户在根目录下 和可跳出控制的用户列表
vi /etc/vsftpd/vsftpd.conf
chroot_local_user= YES 把用户锁在默认路径下,把家目录当做根目录 / 处理,不允许跳出
chroot_list_enable= YES 开启一个用户列表文件,该文件中的所有用户允许跳出默认路径,其他用户锁在默认路径下 用户可以跳出家目录
chroot_list_file=/mnt/vsftpuserlist ---指定用户列表文件,手动新建,跳出家目录的文件
allow_writeable_chroot= YES ---允许用户访问其家目录,即转换后的 /根目录
vi /mnt/vsftpuserlist ---新建该用户列表文件,之前不存在
user1
保存退出
2.)案例 修改用户权限 锁定根目录下
vim /etc/vsftpd/vsftpd.conf 文件位置
解开这三个文件
chroot_local_user=YES --把用户锁在默认路径下,并当成根目录处理/ ,不允许跳出
chroot_list_enable=YES ---是否开启可以这个默认路径的文件列表,即开启后,在那个文件中 有这个用户 可以随意切换路径.
chroot_list_file=/etc/vsftpd/chroot_list ----那个可以随意切换路径的用户名单文件
文件位置可指定,
vi /etc/vsftpd/vsftpd.conf --修改文件
打开另一个终端窗口查看可切换路径用户列表名单 vim /etc/vsftpd/chroot_list
3.)测试 用户user1 是否成功跳出控制
systemctl restart vsftpd重启服务
4.)在客户端 登录user2 查看是否跳出
登录user2 会显示500 421 错误 原因是配置少了可写的权限
chmod a-w /home/user2在服务端修改用户写的权限
或者去改服务端的配置文件 增加这一行
allow_writeable_chroot= YES ---允许user2用户访问其家目录,即转换后的 /
在去配置服务器的文件 vi /etc/vsftpd/vsftpd.conf 配置文件注意不要有空格
或者在服务器 去修改 可写-w的权限 chmod a-w /home/user3
然后在服务器在重启服务 systemctl restart vsftpd
6.匿名用户 上传功能
chmod 777 /var/ftp/pub ---开放安全权限
匿名用户可以上传资料
输出资料时需要给 pub或者 在/var/ftp下建个目录给他上传的权限
1.)修改 可上传 文件的配置 (服务器端)
vi /etc/vsftpd/vsftpd.conf ---写入配置文件
anon_upload_enable=YES --允许匿名上传文件,但不能上传文件夹,不能改名、删除
upload上传
anon_mkdir_write_enable=YES ---允许匿名上传文件夹mkdir建立目录, 上传文件夹
anon_other_write_enable=YES ---允许匿名给文件改名、删除
把这二个文件解开在下面复制一行 改为other yy p 修改为other 即可
2.)修改 目录权限 (匿名用户允许上传文件)
记得修改服务器和客户端的防火墙
文件位置为 vi /etc/vsftpd/vsftpd.conf
chmod a+w pub/ 给pub目录增加可写的权限
或者使用这个命令,
chmod 777 /var/ftp/pub 给ftp用户的pub/ 目录可读可写可执行的权限
setfacl -m u:ftp:rwx pub/
给ftp用户的pub/ 目录 设置 rwx 可读可写可执行的权限
3.)检测匿名用户是否可上传文件 或目录
cd /var/ftp/pub/目录位置客户端
在客户机登录 上传下载 创建目录 只能在 /pub/目录下 上传下载
在服务器端查看
4.)644权限(工程师检测完之后的)
r=4 w=2 x=1 r可读,w可写,x可执行
rw- --- --- -----使用者可读可写 同组和其他人没有权限
要是能下载权限应该就是 644
改为644的过程是, 系统工程师检测完之后的
这个文件不能下载是因为其文件读写权限为修改
把权限改为644之后就可以下载了
7.其他配置最大连接数 下载方式速度
vi /etc/vsftpd/vsftpd.conf
max_clients=100 --限定最大连接数为100 (并发连接数,同时可连接的数量)
max_per_ip=10 ---限定每个客户端最多同时发起10个连接 (一台电脑最多打开10个连接)
anon_max_rate=81920 匿名用户下载最快80KB每秒(80K=80x1024=81920)
local_max_rate=102400本地用户下载最快100KB每秒
ascii_upload_enable=YES 指定数据传输方式以ASC编码格式传输
ascii_download_enable= YES 下载支持ASC编码格式传输
注:某些软件包上传下载必须用ASC码式 ,一般为二进制下载传输性能最优
保存修改后
重启服务:service vsftpd restart
8.服务端系统保护 (用户的shell)
系统用户只允许登录ftp,不允许登录系统或ssh
修改之后的user1 将不能登录系统 ----安全性增强
vi /etc/passwd ---编辑用户配置文件
把用户的第七列,即shell部分,改为:/sbin/nologin
保存退出
或者用户修改 usermod –s /sbin/nolgoin user1
或者在增加用户时通过-s指定: useradd user3 –s /sbin/nologin
注意:centos7.4版本可以,7.6版本那个第二个用户修改则不成功
修改 和创建用户登录 指定 bash shell
vi /etc/passwd ---编辑用户配置文件 /bin/bash 改为/sbin/nologin
或者这样修改
usermod -s /bin/nolgoin user3
cat /etc/passwd |grep user3
或者新建用户时直接指定
useradd user4 -s /sbin/nologin
cat /etc/passwd |grep user4
useradd -r ----创建应该系统账号
9.VSFTP 虚拟用户认证方式 (进阶)
VSFTP一个安全的保证是可采用虚拟用户的认证方式,它靠对/etc/pam.d/目录下指定的一个认证文件(vsftpd)对用户进行认证,认证成功后再把虚拟用户映射为本地用户,该本地用户由服务器配置文件里的语句ftp_username的值指定。
使用虚拟用户认证,则原有系统账户将不再可用,可以把原系统账户加入到虚拟用户列表中
1.建立 虚拟数据库 目录以及文件 ---库文件名可以自定义
mkdir /mnt/virftp 之后文件统一位置,便于后期管理
vi /mnt/virftp/viruser 新建虚拟用户列表文件
写入:添加可用虚拟账号,及密码,奇数行为用户名,偶数行为密码,如图
注意:用户rest1 密码更改为123456
文本文件的用户名密码已设置 ---虚拟的账号
在linux没有test1用户.下一步把这个生成数据库文件
2.生成口令 数据库文件 以供PAM认证使用 服务端安装db
db_load命令需要安装compat-db47.x86_64 安装包
db_load –T -t hash –f /mnt/virftp/viruser /mnt/virftp/viruser.db
-f 指定我们建立的数据文本 生成的数据库文件
-T 将原有文本转变成库文件 -t 指定转变的算法是hash 转译算法:hash算法
注意:生成的库文件一定是.db结尾的
yum -y install compat-db47.x86_64
3.生成虚拟账号的虚拟库文件
db_load -T -t hash -f viruser viruser.db viruser可查看 viruser.db不可查看
-T 将原有文本转变成库文件 -t 指定转变的算法是hash 转译算法:hash算法
-f 指定我们建立的数据文本 生成的数据库源文件 数据库文件后面加 .db
4.创建 虚拟用户映射的 系统用户xuni (用户配置) 修改其权限755
创建虚拟用户映射的系统用户(如:xuni),并指定其家目录,及家目录权限为755
useradd -d /mnt/virftp/virdir xuni ----创建虚拟用户 创建目录
这个家目录不存在需要指定
注意:-d 指定新用户家目录,且家目录之前必须不存在,否则新用户无法获取其所有者
ls -ld /mnt/virftp/virdir/ ---查看权限是不是755
chmod 755 /mnt//virftp/virdir/ ---给这个目录设置权限755
这个权限是xuni 其他用户可以去和列表
Xuni 其他用户可以去和列表
10. 查看虚拟用户pam认证目录文件权限 etc/pam.d/vsftpd 写入db文件
虚拟用户的认证的配置文件 --查看有没有授权
文件位置: cd /etc/pam.d
vi /etc/pam.d/vsftpd
注释原有内容在配置文件中写这两段, 把其余的内容注释掉 ----防止出错
格式例如:
auth required /lib64/security/pam_userdb.so db =/mnt/virftp/viruser
认证 选项 调用的函数库 db代表刚才生成的数据库 绝对路径 db不写
写入这两行
auth required /lib64/security/pam_userdb.so db=/mnt/virftp/viruser
account required /lib64/security/pam_userdb.so db=/mnt/virftp/viruser
账户 选项 调用的数据库 db代表刚才生成的数据库 绝对路径 db不写
注:后面指定的是虚拟用户库文件:viruser.db,只是不写后缀.db
11.服务端主配置文件开启虚拟映射功能, 关联虚拟用户和系统 用户 映射虚拟用户为xuni
vi /etc/vsftpd/vsftpd.conf --编辑配置vsftbd文件
删除原有的匿名上传功能,若不删,则所有匿名用户可上传,包括虚拟账号
先关闭这三个 注释掉
关闭
anon_upload_enable=YES ---匿名上传关闭
anon_mkdir_write_enable=YES ---允许匿名上传文件夹mkdir建立目录
anon_other_write_enable=YES ---允许匿名给文件改名、删除
在最后插入两行
guest_enable=YES ---开启虚拟用户的映射功能
guest_username=xuni ---虚拟用户映射为本地用户xuNi
映射账号 ,把虚拟账号通通映射为xuni 用户的配置
保存配置
重启服务 systemctl restart vsftpd
12客户端测试登录, 映射为本地用户
不能切换目录 说明映射成功了
13为虚拟用户设定访问权限 给不同用户设置不同权限 服务端更改主配置文件 测试
vi /etc/vsftpd/vsftpd.conf
写入:
user_config_dir=/mnt/virftp/ 指定虚拟用户权限配置文件所在位置
systemctl restart vsftpd重启服务看有没有错误
2.)给用户test1设置权限 只读
vi /mnt/virftp/test1 给虚拟用户test1设定权限
anon_world_readable_only=YES 设定test1只读
3.)给用户test2设置权限 允许上传
vi /mnt/virftp/test2 ---给虚拟用户test2设定权限,
write_enable= YES ---开启写权限(在test2中不需要)
写入
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
systemctl restart vsftpd重启服务看有没有错误
4.)测试
在客户机登录 ftp 192.168.10.2 服务器ip
然后输入账号 test2 和密码
pwd查看路径
Ls查看 端口
Get 下载
Put上传
查看服务器的目录文件
创建一个test文件
配置实验之前关闭防火墙
iptables -F
iptables -X
iptables -Z
systemctl stop firewalld
setenforce 0
1.ftp简介 功能 端口 工作模式 协议tcp
功能:
FTP是File Transfer Protocol(文件传输协议)的缩写
在Unix/Linux系统中常用的免费FTP服务器软件主要是VSFTP。
端口:
主动模式:TCP 21(连接) 20(数据) tcp三次握手协议
被动模式:TCP 21(连接) 动态端口(数据)
21端口是命令连接 是用来 接传输控制命令
20端口是 传输数据,下载文件
FTP两种工作模式
主动 和被动是对vsftp服务端而言的 vsftpd是进程 vsftp是服务
主动是服务端主动去连接, 主动使用端口是21端口 是命令连接 是用来传输控制命令
20端口是 传输数据,下载文件
协议是tcp
被动是服务端被动被连接 ,在传输之前, 控制命令传输也是21端口 但是数据传输不是20端口了 是动态端口(不确定的端口 ,但是有规定的范围)
防火墙导致主动模式不成功??
主动模式(Active FTP):
端随机开启一个大于1024的端口 N 向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出 PORT N+1 命令。
服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
被动模式(Passive FTP):
FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器使用被动模式。
服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,数据端口是P。
客户端收到命令后,会通过N+1号端后连接服务器的端口P,然后在两个端口之间进行数据传输。
2.VSFTP三种用户类别 匿名 本地 虚拟账号
1.)匿名账号:
使用FTP客户端访问服务器的时候,通常会遇到一类特殊帐号,用户名为(ftp)(anonymous),提供任意密码(包括空密码),可以通过服务器的验证此类用户被成为匿名用户,根路径在/var/ftp ,一般提供公共文件的下载,如免费软件,学习资料下载的站点
2.)本地帐号:
通用的系统帐号,根路径在本地账号家目录
3.)虚拟帐号:
有些FTP服务器软件还可以维护一份独立的用户数据库文件,而不是系统用户帐号。独立于数据库文件中的FTP用户帐号,被称为“虚拟帐号”,使用虚拟帐号,可以降低关联性,安全性提高
4.解读配置文件 vim /etc/vsftpd/vsftpd.conf
1.用户跳出默认路径
vi /etc/vsftpd/vsftpd.conf
打开这三个,最后一个得加进去 配置user1 user2
chroot_local_user= YES --把用户锁在默认路径下,把家目录当做根目录 / 处理,不允许跳出
chroot_list_enable= YES ---开启一个用户列表文件,该文件中的所有用户允许跳出默认路径,其他用户锁在默认路径下 用户可以跳出家目录
chroot_list_file=/mnt/vsftpuserlist ---能跳出家目录的文件,在里面写入用户
allow_writeable_chroot= YES ---允许用户访问其家目录,即转换后的 /根目录
vi /mnt/vsftpuserlist ---新建该用户列表文件,之前不存在,把跳出用户写到这里面 user1 和user2
2.用户匿名上传
vi /etc/vsftpd/vsftpd.conf --写入配置文件
upload上传
anon_upload_enable=YES --允许匿名上传文件,但不能上传文件夹,不能改名、删除
anon_mkdir_write_enable= YES --允许匿名上传文件夹建立目录, 上传文件夹
anon_other_write_enable= YES --允许匿名给文件改名、删除
3.其他配置
max_clients=100 --限定最大连接数为100 (并发连接数,同时可连接的数量)
max_per_ip=10 --限定每一个个客户端最多同时发起10个连接
anon_max_rate=81920 --匿名用户下载最快80KB每秒(80K=80x1024=81920)
local_max_rate=102400--/本地用户下载最快100KB每秒
ascii_upload_enable=YES --指定数据传输方式以ASC编码格式传输
ascii_download_enable= YES --下载支持ASC编码格式传输
注:某些软件包上传下载必须用ASC码式 ,一般为二进制下载传输性能最优
保存修改后
3.FTP服务
1.服务器安装FTP软件包 启动服务 查看端口
配置yum环境,yum安装vsftpd FTP软件包 或者去rpm包 查找安装
yum -y install vsftpd
或者第二种方法rpm包方式
rpm -ivh vsfptd.xxx.rpm ---去rpm包查看 (比较麻烦)
cd /meida/cdiso --挂载的光驱sr0 里面有Packages所有的安装包,查看
然后复制这个安装包到目录下`,然后安装即可
cp vsftpd-3.0.2-22.el7.x86_64.rpm /root/
cd ls
rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm ---安装即可
systemctl start vsftpd --启动服务
netstat -antulp | grep :21 ----查看21端口,
netstat -antulp | grep :20 ----查看20端口,因为没有开始传输,所以显示没有
2.VSFTP服务器 主配置文件控制权限vi /etc/vsftpd/vsftpd.conf
vi /etc/vsftpd/vsftpd.conf ---编辑配置文件,其中
anonymous_enable=YES ---是否允许匿名用户登录
local_enable=YES ---是否允许系统用户登录
write_enable= YES ---系统用户开启写权限 ,能上传
local_umask=022 ---系统用户上传文件的umask权限参数
说明: 系统用户登录ftp后,默认访问点是其个人家目录 (本地账户)
匿名用户登录ftp后,默认访问点/var/ftp/中,且该目录权限必须755
dirmessage_enable=yes ---显示消息文件,登录后,或切换目录后,目标目录下若有.message,则自动显示文档内容
pam_service_name=vsftpd --开启ftp的PAM验证功能,指定验证配置文件名(用户和密码验证
userlist_enable= YES ---启用vsftpd指定的用户列表文件,
该文件中列举的用户,拒绝登录ftp,/etc/vsftpd/user_list文件
cd /etc/vsftpd/ vim vsftpd.conf ---查看编辑
3服务端默认访问点/var/ftp/文件权限为755 不能修改 r=4 w=2 x=1
匿名用户登录ftp后,默认访问点/var/ftp/中,且该目录权限必须755
4.测试匿名windows用户登录 访问linux服务端的FTP
put上传 get下载
quit 或 bye 命令退出ftp
系统账号登录后默认允许切换入linux服务器其他路径中
匿名账号登录后默认被锁定在登录路径下,不可跳出
Windows访问
ftp://192.168.10.1 验证ftp启用
在ftp服务器创建一个文件 kkk, 用浏览器查看
5.服务端上传文件视频 windows客户端匿名查看
dd if=/dev/zero of=movie.blue bs=1M count=10
路径 文件 速度 个数
dd if=/dev/zero of=movie.yellow bs=1M count=20
6在Linux客户端测试访问 网络要同一网段 关闭防火墙
首先能保证linux FTP服务器和客户端能够ping通,客户机服务器都关闭防火墙, (网络要通,在一个网段)
客户机安装软件 ftp lftp
在 linux客户端 登录
ftp 192.168.10.2 然后输入ftp这个用户名 在输入密码 查看下载
或者用 lftp 不需要输入账号和密码 ,直接登录
4. 服务器建立本地VSFTP登录账号 测试权限 切换目录 有风险
vsftp默认使用系统账号作为FTP帐号
新建两个系统账号:
建立账号
useradd user1
passwd 123456
useradd user2
passwd 123456
systemctl vsftpd restart ----启动服务
1.在linux客户端本地账户就行验证 登录查看 切换路径查看 本地账号有风险
因为已经创建了本地用户,所以登录时候时写本地用户名
登录查看
登录 ls user家目录现在本身看不到内容 ls -a可查看user1用户的隐藏文件
切换路径
本地家目录和切换到linux其他目录 / 根目录 /home/user1 用户1的目录
本地账号的风险
本地账户 登录时可以随意切换目录,在系统乱跑, 所以要去限制他,锁定账号
5.VSFTP文件配置 用户控制权限(跳出根目录)
1.)主配置文件 锁用户在根目录下 和可跳出控制的用户列表
vi /etc/vsftpd/vsftpd.conf
chroot_local_user= YES 把用户锁在默认路径下,把家目录当做根目录 / 处理,不允许跳出
chroot_list_enable= YES 开启一个用户列表文件,该文件中的所有用户允许跳出默认路径,其他用户锁在默认路径下 用户可以跳出家目录
chroot_list_file=/mnt/vsftpuserlist ---指定用户列表文件,手动新建,跳出家目录的文件
allow_writeable_chroot= YES ---允许用户访问其家目录,即转换后的 /根目录
vi /mnt/vsftpuserlist ---新建该用户列表文件,之前不存在
user1
保存退出
2.)案例 修改用户权限 锁定根目录下
vim /etc/vsftpd/vsftpd.conf 文件位置
解开这三个文件
chroot_local_user=YES --把用户锁在默认路径下,并当成根目录处理/ ,不允许跳出
chroot_list_enable=YES ---是否开启可以这个默认路径的文件列表,即开启后,在那个文件中 有这个用户 可以随意切换路径.
chroot_list_file=/etc/vsftpd/chroot_list ----那个可以随意切换路径的用户名单文件
文件位置可指定,
vi /etc/vsftpd/vsftpd.conf --修改文件
打开另一个终端窗口查看可切换路径用户列表名单 vim /etc/vsftpd/chroot_list
3.)测试 用户user1 是否成功跳出控制
systemctl restart vsftpd重启服务
4.)在客户端 登录user2 查看是否跳出
登录user2 会显示500 421 错误 原因是配置少了可写的权限
chmod a-w /home/user2在服务端修改用户写的权限
或者去改服务端的配置文件 增加这一行
allow_writeable_chroot= YES ---允许user2用户访问其家目录,即转换后的 /
在去配置服务器的文件 vi /etc/vsftpd/vsftpd.conf 配置文件注意不要有空格
或者在服务器 去修改 可写-w的权限 chmod a-w /home/user3
然后在服务器在重启服务 systemctl restart vsftpd
6.匿名用户 上传功能
chmod 777 /var/ftp/pub ---开放安全权限
匿名用户可以上传资料
输出资料时需要给 pub或者 在/var/ftp下建个目录给他上传的权限
1.)修改 可上传 文件的配置 (服务器端)
vi /etc/vsftpd/vsftpd.conf ---写入配置文件
anon_upload_enable=YES --允许匿名上传文件,但不能上传文件夹,不能改名、删除
upload上传
anon_mkdir_write_enable=YES ---允许匿名上传文件夹mkdir建立目录, 上传文件夹
anon_other_write_enable=YES ---允许匿名给文件改名、删除
把这二个文件解开在下面复制一行 改为other yy p 修改为other 即可
2.)修改 目录权限 (匿名用户允许上传文件)
记得修改服务器和客户端的防火墙
文件位置为 vi /etc/vsftpd/vsftpd.conf
chmod a+w pub/ 给pub目录增加可写的权限
或者使用这个命令,
chmod 777 /var/ftp/pub 给ftp用户的pub/ 目录可读可写可执行的权限
setfacl -m u:ftp:rwx pub/
给ftp用户的pub/ 目录 设置 rwx 可读可写可执行的权限
3.)检测匿名用户是否可上传文件 或目录
cd /var/ftp/pub/目录位置客户端
在客户机登录 上传下载 创建目录 只能在 /pub/目录下 上传下载
在服务器端查看
4.)644权限(工程师检测完之后的)
r=4 w=2 x=1 r可读,w可写,x可执行
rw- --- --- -----使用者可读可写 同组和其他人没有权限
要是能下载权限应该就是 644
改为644的过程是, 系统工程师检测完之后的
这个文件不能下载是因为其文件读写权限为修改
把权限改为644之后就可以下载了
7.其他配置最大连接数 下载方式速度
vi /etc/vsftpd/vsftpd.conf
max_clients=100 --限定最大连接数为100 (并发连接数,同时可连接的数量)
max_per_ip=10 ---限定每个客户端最多同时发起10个连接 (一台电脑最多打开10个连接)
anon_max_rate=81920 匿名用户下载最快80KB每秒(80K=80x1024=81920)
local_max_rate=102400本地用户下载最快100KB每秒
ascii_upload_enable=YES 指定数据传输方式以ASC编码格式传输
ascii_download_enable= YES 下载支持ASC编码格式传输
注:某些软件包上传下载必须用ASC码式 ,一般为二进制下载传输性能最优
保存修改后
重启服务:service vsftpd restart
8.服务端系统保护 (用户的shell)
系统用户只允许登录ftp,不允许登录系统或ssh
修改之后的user1 将不能登录系统 ----安全性增强
vi /etc/passwd ---编辑用户配置文件
把用户的第七列,即shell部分,改为:/sbin/nologin
保存退出
或者用户修改 usermod –s /sbin/nolgoin user1
或者在增加用户时通过-s指定: useradd user3 –s /sbin/nologin
注意:centos7.4版本可以,7.6版本那个第二个用户修改则不成功
修改 和创建用户登录 指定 bash shell
vi /etc/passwd ---编辑用户配置文件 /bin/bash 改为/sbin/nologin
或者这样修改
usermod -s /bin/nolgoin user3
cat /etc/passwd |grep user3
或者新建用户时直接指定
useradd user4 -s /sbin/nologin
cat /etc/passwd |grep user4
useradd -r ----创建应该系统账号
9.VSFTP 虚拟用户认证方式 (进阶)
VSFTP一个安全的保证是可采用虚拟用户的认证方式,它靠对/etc/pam.d/目录下指定的一个认证文件(vsftpd)对用户进行认证,认证成功后再把虚拟用户映射为本地用户,该本地用户由服务器配置文件里的语句ftp_username的值指定。
使用虚拟用户认证,则原有系统账户将不再可用,可以把原系统账户加入到虚拟用户列表中
1.建立 虚拟数据库 目录以及文件 ---库文件名可以自定义
mkdir /mnt/virftp 之后文件统一位置,便于后期管理
vi /mnt/virftp/viruser 新建虚拟用户列表文件
写入:添加可用虚拟账号,及密码,奇数行为用户名,偶数行为密码,如图
注意:用户rest1 密码更改为123456
文本文件的用户名密码已设置 ---虚拟的账号
在linux没有test1用户.下一步把这个生成数据库文件
2.生成口令 数据库文件 以供PAM认证使用 服务端安装db
db_load命令需要安装compat-db47.x86_64 安装包
db_load –T -t hash –f /mnt/virftp/viruser /mnt/virftp/viruser.db
-f 指定我们建立的数据文本 生成的数据库文件
-T 将原有文本转变成库文件 -t 指定转变的算法是hash 转译算法:hash算法
注意:生成的库文件一定是.db结尾的
yum -y install compat-db47.x86_64
3.生成虚拟账号的虚拟库文件
db_load -T -t hash -f viruser viruser.db viruser可查看 viruser.db不可查看
-T 将原有文本转变成库文件 -t 指定转变的算法是hash 转译算法:hash算法
-f 指定我们建立的数据文本 生成的数据库源文件 数据库文件后面加 .db
4.创建 虚拟用户映射的 系统用户xuni (用户配置) 修改其权限755
创建虚拟用户映射的系统用户(如:xuni),并指定其家目录,及家目录权限为755
useradd -d /mnt/virftp/virdir xuni ----创建虚拟用户 创建目录
这个家目录不存在需要指定
注意:-d 指定新用户家目录,且家目录之前必须不存在,否则新用户无法获取其所有者
ls -ld /mnt/virftp/virdir/ ---查看权限是不是755
chmod 755 /mnt//virftp/virdir/ ---给这个目录设置权限755
这个权限是xuni 其他用户可以去和列表
Xuni 其他用户可以去和列表
10. 查看虚拟用户pam认证目录文件权限 etc/pam.d/vsftpd 写入db文件
虚拟用户的认证的配置文件 --查看有没有授权
文件位置: cd /etc/pam.d
vi /etc/pam.d/vsftpd
注释原有内容在配置文件中写这两段, 把其余的内容注释掉 ----防止出错
格式例如:
auth required /lib64/security/pam_userdb.so db =/mnt/virftp/viruser
认证 选项 调用的函数库 db代表刚才生成的数据库 绝对路径 db不写
写入这两行
auth required /lib64/security/pam_userdb.so db=/mnt/virftp/viruser
account required /lib64/security/pam_userdb.so db=/mnt/virftp/viruser
账户 选项 调用的数据库 db代表刚才生成的数据库 绝对路径 db不写
注:后面指定的是虚拟用户库文件:viruser.db,只是不写后缀.db
11.服务端主配置文件开启虚拟映射功能, 关联虚拟用户和系统 用户 映射虚拟用户为xuni
vi /etc/vsftpd/vsftpd.conf --编辑配置vsftbd文件
删除原有的匿名上传功能,若不删,则所有匿名用户可上传,包括虚拟账号
先关闭这三个 注释掉
关闭
anon_upload_enable=YES ---匿名上传关闭
anon_mkdir_write_enable=YES ---允许匿名上传文件夹mkdir建立目录
anon_other_write_enable=YES ---允许匿名给文件改名、删除
在最后插入两行
guest_enable=YES ---开启虚拟用户的映射功能
guest_username=xuni ---虚拟用户映射为本地用户xuNi
映射账号 ,把虚拟账号通通映射为xuni 用户的配置
保存配置
重启服务 systemctl restart vsftpd
12客户端测试登录, 映射为本地用户
不能切换目录 说明映射成功了
13为虚拟用户设定访问权限 给不同用户设置不同权限 服务端更改主配置文件 测试
vi /etc/vsftpd/vsftpd.conf
写入:
user_config_dir=/mnt/virftp/ 指定虚拟用户权限配置文件所在位置
systemctl restart vsftpd重启服务看有没有错误
2.)给用户test1设置权限 只读
vi /mnt/virftp/test1 给虚拟用户test1设定权限
anon_world_readable_only=YES 设定test1只读
3.)给用户test2设置权限 允许上传
vi /mnt/virftp/test2 ---给虚拟用户test2设定权限,
write_enable= YES ---开启写权限(在test2中不需要)
写入
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
systemctl restart vsftpd重启服务看有没有错误
4.)测试
在客户机登录 ftp 192.168.10.2 服务器ip
然后输入账号 test2 和密码
pwd查看路径
Ls查看 端口
Get 下载
Put上传
查看服务器的目录文件
创建一个test文件