Linux系统中的ftp服务(服务器部署、安全部署)

一、FTP概念

FTP(文件传输协议)是INTERNET上仍常用的最老的网络协议之一,他为系统提供了通过网络与远程服务器进行传输的简单方法。

ftp协议提供的软件:
在企业7里: vsftpd

二、FTP服务部署

服务端部署(server:172.25.254.173):
1.关闭selinux

vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 disabled

getenforce
Enforcing(仍然显示需要重启,才能生效)

reboot

注意:因为这个修改是内核级的,所以我们需要重启虚拟机
Linux系统中的ftp服务(服务器部署、安全部署)_第1张图片
在这里插入图片描述
在这里插入图片描述
2.安装vsftpd和lftp

如果在纯净的环境下进行操作需要执行:

cd /etc/yum.repos.d/
rm -rf *      (看到的都删掉)
vim westos.repo    配置yum安装
yum clean all

因为这里用到的主机之前进行过配置,所以不再重复配置,直接安装所需软件
Linux系统中的ftp服务(服务器部署、安全部署)_第2张图片
yum install vsftpd lftp -y
Linux系统中的ftp服务(服务器部署、安全部署)_第3张图片
Linux系统中的ftp服务(服务器部署、安全部署)_第4张图片
systemctl start vsftpd          ##开启服务
在这里插入图片描述
3.设置火墙服务
方法一:
firewall-config                      ##设置火墙服务

Configuration标签下选择Permanent----public下勾选ftp----Options下选择reload

Linux系统中的ftp服务(服务器部署、安全部署)_第5张图片
Linux系统中的ftp服务(服务器部署、安全部署)_第6张图片
firewall-cmd --list-all        ##查看火墙状态
Linux系统中的ftp服务(服务器部署、安全部署)_第7张图片
方法二:
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(可以列出则成功)

在这里插入图片描述

三、ftp服务的基本信息

1.软件安装包:vsftpd

2.默认的发布目录:/var/ftp

3.协议接口:21/tcp

4.服务配置文件:/etc/vsftpd/vsftpd.conf

注意:配置文件编辑后要重启服务

5.报错id的分析:
                         500        ##文件系统权限过大
                         530        ##用户认证失败
                         550        ##服务本身功能未开放
                         553        ##本地文件系统权限过小

四、FTP安全部署

安全部署的实现,通过编辑配置文件来进行设定

1.匿名用户设定

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是否对登录的用户可以写入
在这里插入图片描述
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第8张图片
3.匿名用户上传
默认情况下,匿名用户不可以上传
Linux系统中的ftp服务(服务器部署、安全部署)_第9张图片
匿名用户上传设置:

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

Linux系统中的ftp服务(服务器部署、安全部署)_第10张图片
在这里插入图片描述
测试:
cd pub/---->put /etc/passwd
Linux系统中的ftp服务(服务器部署、安全部署)_第11张图片
4.匿名用户家目录修改
anon_root=/directory
新建一个目录,写几个文件
在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述
5.匿名用户上传文件默认权限修改
anon_umask=022
在这里插入图片描述
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第12张图片

6.匿名用户建立目录
anon_mkdir_write_enable=YES | NO
Linux系统中的ftp服务(服务器部署、安全部署)_第13张图片
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第14张图片

7.匿名用户下载
anon_world_readable_only=YES | NO设定参数值为NO表示匿名用户可以下载
在这里插入图片描述
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第15张图片

8.匿名用户删除
anon_other_write_enable=YES | NO
在这里插入图片描述
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第16张图片

9.匿名用户使用的用户身份修改
在这里插入图片描述
chown_uploads=YES
chown_username=student(必须是服务端有的用户)
chown_upload_mode=0644
在这里插入图片描述
测试:
默认的用户是ftp(gid是14),ls查看之前上传的文件是ftp建立的
修改后,上传一个文件,ls查看是student建的1001
Linux系统中的ftp服务(服务器部署、安全部署)_第17张图片

10.最大上传速率
在这里插入图片描述
anon_max_rate=102400
在这里插入图片描述
测试:
在这里插入图片描述
11.最大链接数
max_clients=1
在这里插入图片描述
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第18张图片

12.本地用户家目录修改
local_root=/directory
在这里插入图片描述
测试:
在这里插入图片描述
13.本地用户上传文件权限
local_umask=xxx
在这里插入图片描述
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第19张图片
14.限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
在这里插入图片描述
chmod u-w /home/*

测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第20张图片

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(在里面添加的用户不能进入/目录)
在这里插入图片描述
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第21张图片
Linux系统中的ftp服务(服务器部署、安全部署)_第22张图片
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(在里面添加的用户能进入/目录)
在这里插入图片描述
测试:
Linux系统中的ftp服务(服务器部署、安全部署)_第23张图片
Linux系统中的ftp服务(服务器部署、安全部署)_第24张图片
17.限制本地用户登录
vim /etc/vsftpd/ftpusers         ##用户永久黑名单
Linux系统中的ftp服务(服务器部署、安全部署)_第25张图片
测试:
在这里插入图片描述
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虚拟用户,使这些用户只能登陆ftp

创建步骤:
systemctl start vsftpd
systemctl status firewalld
firewall-cmd --list-all
Linux系统中的ftp服务(服务器部署、安全部署)_第26张图片
Linux系统中的ftp服务(服务器部署、安全部署)_第27张图片
1.创建虚拟用户帐号身份

vim /etc/vsftpd/fileauto    ##文件名称任意
westos1
123
westos2
123
westos3
123

Linux系统中的ftp服务(服务器部署、安全部署)_第28张图片
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*

你可能感兴趣的:(Linux系统中的ftp服务(服务器部署、安全部署))