FTP(文件传输协议)是INTERNET上仍常用的最老的网络协议之一,他为系统提供了通过网络与远程服务器进行传输的简单方法。
ftp协议提供的软件:
在企业7里: vsftpd
服务端部署(server:172.25.254.173):
1.关闭selinux
vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 disabled
getenforce
Enforcing(仍然显示需要重启,才能生效)
reboot
注意:因为这个修改是内核级的,所以我们需要重启虚拟机
2.安装vsftpd和lftp
如果在纯净的环境下进行操作需要执行:
cd /etc/yum.repos.d/
rm -rf * (看到的都删掉)
vim westos.repo 配置yum安装
yum clean all
因为这里用到的主机之前进行过配置,所以不再重复配置,直接安装所需软件
yum install vsftpd lftp -y
systemctl start vsftpd
##开启服务
3.设置火墙服务
方法一:
firewall-config
##设置火墙服务
Configuration标签下选择Permanent----public下勾选ftp----Options下选择reload
firewall-cmd --list-all
##查看火墙状态
方法二:
firewall-cmd --permanent --add-service=ftp
##在火墙服务里添加ftp
firewall-cmd --reload
##重新加载服务
cd /var/ftp/
ls
touch westos
注意:/var/ftp/ 里面有什么,lftp访问的时候ls会发现
客户端部署172.25.254.73:
1.安装lftp
2.测试:
172.25.254.73主机里进行测试:
lftp 172.25.254.173
ls(可以列出则成功)
1.软件安装包:vsftpd
2.默认的发布目录:/var/ftp
3.协议接口:21/tcp
4.服务配置文件:/etc/vsftpd/vsftpd.conf
注意:配置文件编辑后要重启服务
5.报错id的分析:
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小
安全部署的实现,通过编辑配置文件来进行设定
anonymous_enable=YES | NO
##匿名用户是否可以登录(YES表示可登陆)
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO ##匿名用户不可以登陆
systemctl restart vsftpd
测试:
2.本地用户设定
local_enable=YES | NO
##本地用户是否可以登录
测试:
write_enable=YES | NO
##ftp是否对登录的用户可以写入
测试:
3.匿名用户上传
默认情况下,匿名用户不可以上传
匿名用户上传设置:
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anonymous_enable=YES
anon_upload_enable=YES
systemctl restart vsftpd
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
测试:
cd pub/---->put /etc/passwd
4.匿名用户家目录修改
anon_root=/directory
新建一个目录,写几个文件
测试:
5.匿名用户上传文件默认权限修改
anon_umask=022
测试:
6.匿名用户建立目录
anon_mkdir_write_enable=YES | NO
测试:
7.匿名用户下载
anon_world_readable_only=YES | NO
设定参数值为NO表示匿名用户可以下载
测试:
8.匿名用户删除
anon_other_write_enable=YES | NO
测试:
9.匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
(必须是服务端有的用户)
chown_upload_mode=0644
测试:
默认的用户是ftp(gid是14),ls查看之前上传的文件是ftp建立的
修改后,上传一个文件,ls查看是student建的1001
10.最大上传速率
anon_max_rate=102400
测试:
11.最大链接数
max_clients=1
测试:
12.本地用户家目录修改
local_root=/directory
测试:
13.本地用户上传文件权限
local_umask=xxx
测试:
14.限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
15.用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
(在里面添加的用户不能进入/目录)
测试:
16.用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
(在里面添加的用户能进入/目录)
测试:
17.限制本地用户登录
vim /etc/vsftpd/ftpusers
##用户永久黑名单
测试:
vim/etc/vsftpd/user_list
##用户临时黑名单
18.用户白名单设定
修改/etc/vsftpd/vsftpd.conf——>userlist deny=NO时
/etc/vsftpd/user_list 就变成用户白名单(只有存在这个文件里的用户才可以登录)
userlist_deny=NO
/etc/vsftpd/user_list
##双重否定表示肯定;参数设定,此文件变成用户白名单,只有在名单中的用户可以登录ftp
建立虚拟用户的原因: 因为系统用户登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp
创建步骤:
systemctl start vsftpd
systemctl status firewalld
firewall-cmd --list-all
1.创建虚拟用户帐号身份
vim /etc/vsftpd/fileauto ##文件名称任意
westos1
123
westos2
123
westos3
123
2.加密文件:因为文件是明文的,很不安全,所以我们要对其加密
db_load -T -t hash -f /etc/vsftpd/fileauto /etc/vsftpd/fileauto.db
(所创建的fileauto默认不会被读,因此需要进行hash加密)
3.编辑策略文件(验证密码与用户是否一致的文件) 文件名称任意
vim /etc/pam.d/westospam
account required pam_userdb.so db=/etc/vsftpd/fileauto
auto required pam_userdb.so db=/etc/vsftpd/fileauto
(所写内容是指,如果登录的用户required用pam_userdb.so插件对应/etc/vsftpd/fileauto这个文件里进行检测,通过让登录,不通过不让登录,此处fileauto后会自动补齐db,所以不需要手动添加)
4.编辑配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westospam ##(确定虚拟用户登录认证策略)让vsftpd与所见的pam.d下所建目录产生关联
guest_enable=YES ##开启虚拟用户可以登录
systemctl restart vsftpd
测试:
5.虚拟帐号身份指定
guest_username=ftpuser
##指定虚拟用户登录身份(指定的用户是登录的主机上应该存在的,若是不存在的,应新建,另外得去除w权限)
chmod u-w /home/ftpuser
6.虚拟帐号家目录独立设定
mkdir /var/ftpuserdir/westos{1..3} -p
vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpuserdir/$USER ##登录用户访问的家目录
user_sub_token=$USER ##让系统识别$USER($USER系统默认是不识别的)使$USER在shell里面生效,在.conf文件里面生效
mkdir /var/ftpuserdir/westos{1..3}/pub
mkdir /var/ftpuserdir/westos1/westos1file
mkdir /var/ftpuserdir/westos2/westos2file
mkdir /var/ftpuserdir/westos3/westos3file
7.虚拟帐号配置独立
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/user_config
mkdir -p /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/ftpwestos1
annoy_reload
ls -l /var/ftpuserdir/westos*