Linux系统的FTP的安全优化

实验环境

连接真机yum源

FTP部署

ftp知识点
ftp(文件传输协议)是internet上常用的最老的网络协议之一,ftp(file transfer protocol)是TCP/IP协议组中的协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法,在red hat entreprise liunx 中,ftp服务器包在vsftpd,它在very secure file transferprotocol damon服务器名称也叫做vsftpd。默认配置文件让匿名用户只能下载位于chroot目录下的内容。/var/ftp/。这意味着远程ftp客户端能以匿名用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)。
ftp协议组成:
ftp服务器、ftp客户端。
ftp服务器用来存储文件,用户使用ftp客户端通过ftp协议访问位于ftp服务器上的资源,在开发网站时,通常利用ftp协议把网页或程序传到web服务器上。ftp传输效率非常高,在网络传输大的文件时,一般也采用该协议。
默认情况下。ftp协议使用tcp端口中的20或21端口,20端口传输数据,21端口传输控制信息。
ftp工作方式
standard(PORT)主动方式,客户端需要接收数据时在这个通道上发送port命令,发送到ftp服务器上。访问端口为21端口,数据传输端口为20端口。
passive(PASV)被动方式,此方式发送的是pasv命令。访问端口为21端口,随即开启大于1024的端口。
安装ftp包
vsftpd:ftp服务的软件
lftp:测试ftp,相当于浏览ftp

yum istall vsftpd.x86_64 lftp.x86_64  -y

启动ftp服务

systemctl start vsftpd
systemctl enable vsftpd

火墙开启ftp服务

firewall-config	##开启火墙图形界面

runtime:当前
permanent:永久

Linux系统的FTP的安全优化_第1张图片
设置完成后:Options—>reload firewalld

firewall-cmd --list-all

Linux系统的FTP的安全优化_第2张图片
在另外一台主机上测试结果:
在这里插入图片描述
ftp默认发布目录:/var/ftp,在访问时会访问到这个目录下。
ftp默认配置文件:/etc/vsftpd/vsftpd.conf(主配置文件),主配置目录:/etc/vsftpd
访问方式:被动方式
服务访问端口:21端口,数据传输时随机开启的端口(大于1024的端口),这种方式安全性高

FTP配置

ftp主配置文件

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service 
anonymous_enable=YES 匿名用户可以登陆
local_enable=YES 本地用户可以登陆
write_enable=YES 本地用户可写
anon_upload_enable=YES 允许匿名用户上传
anon_world_readable_only=YES 不允许匿名用户下载
anon_mkdir_write_enable=YES 匿名用户建立目录
anon_other_write_enable=YES 匿名用户删除目录
anon_umask=022 匿名用户上传文件默认权限修改为755
anon_root=/westos 匿名用户家目录修改
anon_max_rate=102400 限制匿名用户最大上传速率
max_clients=2 限制登陆用户为2个
local_umask=022 本地用户上传文件权限
local_root=/westos 让所有本地用户登录时都会进入/westos
chroot_local_user=YES 所有用户被锁定到自己家目录中
chroot_list_enable=YES 在列表的用户是可以锁定到自己的家目录里
chroot_list_file=/etc/vsftpd/chroot_list 相当于一个黑名单,但是默认这个目录是没有的
userlist_deny=NO 临时黑名单改为白名单
pam_service_name=westo pam文件名称
userlist_enable=YES
guest_enable=YES 启用虚拟用户
guest_username=ftp 虚拟帐号身份指定
报错id 解析
530 用户认证失败
500 文件系统权限过大
550 服务功能未开放
553 本地文件系统权限过小

匿名用户登陆
允许匿名用户登陆:
在这里插入图片描述
不允许匿名用户登陆:
在这里插入图片描述
改错:
在这里插入图片描述
本地用户登陆
在做这个实验之前更改文件,selinux关闭:

vim /etc/sysconfig/selinux 

在这里插入图片描述
每次更改这个文件时,都得重启才能生效:

reboot

在这里插入图片描述
允许本地用户登陆:
Linux系统的FTP的安全优化_第3张图片
不允许本地用户登陆:
530报错,用户认证失败,打开本地用户登陆就可以了。

在这里插入图片描述
改错:
在这里插入图片描述
本地用户可写
本地用户可写:
Linux系统的FTP的安全优化_第4张图片
本地用户不可写:
550报错,服务功能未开放,打开本地用户可写即可。
在这里插入图片描述
改错;
在这里插入图片描述
匿名用户上传
匿名用户不能上传:
550报错,服务功能未开放,开启允许匿名用户登陆即可。
Linux系统的FTP的安全优化_第5张图片
改错:
在这里插入图片描述
553报错,本地系统权限过小。
Linux系统的FTP的安全优化_第6张图片
改错:

chmod 775 /var/ftp/pub/	##修改目录权限
chgrp ftp /var/ftp/pub/	##设定上传目录对ftp用户可写

在这里插入图片描述

匿名用户可以上传:
Linux系统的FTP的安全优化_第7张图片
匿名用户下载
允许匿名用户下载:
anon_world_readable_only=NO
Linux系统的FTP的安全优化_第8张图片
不允许匿名用户下载:
anon_world_readable_only=YES
550报错,服务功能未开放。
在这里插入图片描述
匿名用户建立目录
匿名用户不能建立目录:
550报错,服务功能未开放。
Linux系统的FTP的安全优化_第9张图片
允许匿名用户建立目录:
在这里插入图片描述
Linux系统的FTP的安全优化_第10张图片
匿名用户删除目录
允许匿名用户删除目录:
在这里插入图片描述
Linux系统的FTP的安全优化_第11张图片
不允许匿名用户删除目录:
550报错,服务功能未开放。
在这里插入图片描述
修改上传文件权限
没有修改前:
权限为600
在这里插入图片描述
修改后:
在这里插入图片描述

权限为622在这里插入图片描述
匿名用户家目录修改
匿名用户默认家目录为/var/ftp/pub/,现在建立一个目录/var/ftp/westos,将默认家目录修改为/var/ftp/westos/
Linux系统的FTP的安全优化_第12张图片
在这里插入图片描述
Linux系统的FTP的安全优化_第13张图片
限制匿名上传速率
anon_max_rate=102400 ##限制匿名用户的上传速率最快为100k/s
在这里插入图片描述
在这里插入图片描述

限制登陆用户为2个
保证服务器的性能不会崩掉。
max_clients=2 ##限制匿名用户登录数量为2个,超过两个不能登录

本地用户的设定
在做实验前先建立文件,可以看到实验效果:

touch /home/student/studentfile

让所有用户登录都进入到/westos下

local_root=/westos

本地用户能浏览服务器的根目录,不安全
把用户锁到家目录里:

chmod u-w /home/*	##把/home/的所有子目录的权限写权限去掉
ls -ld /home/*	

实验结果会看到在本地用户进入/目录下看不到其它文件:

本地用户黑名单建立(本地用户是否可以浏览/目录)
创建本地用户

useradd lee
passwd lee

开启黑名单服务设置

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	##编写黑名单lee

实验结果显示:本地用户lee登录不了

chmod u-w /home/lee

实验结果显示:本地用户可以登录,但是/目录下显示不了文件

用户白名单建立(本地用户是否可以浏览/目录)

chroot_local_user=YES	##本地用户被锁定在自己的家目录下
chroot_list_enable=YES	##在列表中的用户是可以锁定在自己的家目录下
chroot_list_file=/etc/vsftpd/chroot_list

所以在/etc/vsftpd/chroot_list文件里的用户lee可以看到/目录下的文件。

限制本地用户登陆

cd /etc/vsftpd/

/etc/vsftpd/下的ftpusers为永久黑名单,无论是什么用户只要在文件里出现都不允许登录;user_list为临时黑名单。

vim /etc/vsftpd/ftpusers	##用户黑名单
vim /etc/vsftpd/user_list	##用户临时黑名单

这两文件都是即改即生效。
把临时黑名单改为白名单:参数设定,此文件变成用户白名单,只在白名单中出现的用户可以登陆ftp。

userlist_deny=NO	##临时黑名单改为白名单

实验结果显示,在/etc/vsftpd/user_list名单里的用户才可以登录。

虚拟用认证设定
虚拟用户:只有登录ftp的功能,没有其它功能。
**3A机制:**认证(authentication),验证用户的身份与可使用的网路服务;授权(authorization),依据验证结果,开放网络服务给用户;记账(accounting),记录用户对各种网络服务的用量,并提供给计费系统。
pam程序负责验证用户的名称和密码
pam认证
1.认证文件:
创建文件编写用户的账号和密码,
在这个文件中所有字符都算账号名称和密码,空格也算,所以尽量少用空格,否则很难排错。

vim /etc/vsftpd/westos	##文件名任意,此文件存放着用户及密码

2.对认证文件进行加密:
认证文件对于ftp是不能读的,所以需要进行加密。
加密工具:db_load

db_load -T -t hash -f /etc/vsdtpd/westos /etc/vsftpd/westos.db
【T】:转化 【-t】:转化的类型 【-f】:指定加密的文件【vuserlist.db】:加密过后的文件,pam访问的文件

3.生成认证策略:
客户给一个账号和密码,认证策略就是通过pam程序,访问认证文件,判断是否可以登录。

vim /etc/pam.d/ftpuser
account required	pam_userdb.so	db=/etc/vsftbd/vuserlist
auth	required 	pam-userdb.so	db=/etc/vsftbd/vuserlist

account:账号 auth:密码
required:通过认证就继续,没通过认证就直接终止;
pam_userdb.so:做验证的程序、插件;
db=/etc/vsftpd/vuserlist:访问的文件
4.开启pam认证:

pam_service_name=ftpuser	##pam文件
guest_enable=YES	##启用虚拟用户
guest_username=ftp	##虚拟账号身份指定,系统里存在的

测试:建立的虚拟用户身份均可登录。
虚拟用户的家目录设定及授权
指定所有人的家目录

mkdir /var/ftpuserdir/{haha,hehe,xixi} -p
mkdir /var/ftpuserdir/{haha,hehe,xixi}/pub -p
touch /var/ftpuserdir/haha/hahafile
touch /var/ftpuserdir/hehe/hehefile
touch /var/ftpuserdir/xixi/xixifile

固定用户家目录

local_root=/var/ftpuserdir/$USER	##本地用户家目录
user_sub_token=$USER	##告诉配置文件,$USER延用于所用的配置环境所用的$USER,$USER是shell里的变量

测试:每位用户都可以看到所建立的文件。
Linux系统的FTP的安全优化_第14张图片
虚拟用户上传文件
553报错,权限过小。

chgrp ftp /var/ftpuserdir/ -R
chmod 775 /var/ftpuserdir/{haha,hehe,xixi}/pub

测试:pub/对ftp可写、可删除
Linux系统的FTP的安全优化_第15张图片
独立用户的配置文件

user_config_dir=/etc/vsftpd/user_config	##此文件是自定义的文件名称,需要自己建立
 30 #anon_upload_enable=YES
 31 #anon_world_readable_only=NO
 32 #anon_umask=022
 33 #anon_max_rate=102400
 34 #max_clients=2
 35 #anon_root=/westos
 40 #anon_mkdir_write_enable=YES
 41 #anon_other_write_enable=YES

没有指定授权文件之前,注销以上权限,所有用户均不可上传以及删除文件.
Linux系统的FTP的安全优化_第16张图片

mkdir -p /etc/vsftpd/user_config	##建立授权文件
vim /etc/vsftpd/user_config/hehe	##只有hehe这位用户可以上传以及删除文件
anon_upload_enable=YES		##允许匿名用户上传文件
anon_other_write_enable=YES	##允许匿名用户删除文件
systemctl restart vsftpd.service

在建立授权文件之后,在hehe授权文件里编辑可上传、可删除,所以只有hehe这位用户可以删除上传文件,其他用户均不可。
Linux系统的FTP的安全优化_第17张图片

你可能感兴趣的:(rhcsa)