Linux下的FTP安全优化
1.ftp服务的部署
首先要配置好yum源,并安装ftp服务
yum install vsftpd.x86_64 lftp.x86_64 -y ##安装vsftpd和lftp
systemctl start vsftpd ##启动ftp服务
systemctl enable vsftpd ##设置ftp服务开机启动
firewall-cmd --permanent --add-service=ftp ##设置火墙(ftp服务可以使用)
firewall-cmd --reload ##刷新火墙
lftp ip ##使用匿名用户登陆ftp服务
注意:之前我在操作中都将火墙关闭,这其实是不安全的,所以需要手动设置火墙
设置火墙:
- 图形模式设定火墙:
firewall-config ##打开图形模式设定
- 命令设定火墙:
firewall-cmd --permanent --add-service=ftp ##设置火墙(ftp服务可以使用)
firewall-cmd --reload ##刷新火墙
2.ftp服务的基本信息及基本安全部署示例
- 基本信息
注意:编辑服务配置文件 /etc/vsftpd/vsftpd.conf 后一定要重启服务,设定才会生效
- 基本安全部署示例
在使用ftp服务之前,先进行以下设定:
vim /etc/sysconfig/selinux ##在其中设定SELINUX=disabled
reboot ##重启系统
- 匿名用户登陆
使用匿名用户登陆时,可以查看目录中的内容,但是不能上传文件
- 本地用户登陆
使用本地用户登陆时,可以查看目录中的内容,也可以上传文件
这些基本安全部署都是可以更改的,我们可以通过更改ftp服务的配置文件来设定匿名用户的登陆和本地用户的登陆和上传
vim /etc/vsftpd/vsftpd.conf ##进入服务的配置文件
基本参数:
进入配置文件后我们可以看到这些基本参数的设定:
更改参数设定:
例如:设定匿名用户不能登陆 anonymous_enable=NO
注意:更改服务配置文件后一定要重启服务,更改才会生效
systemctl restart vsftpd ##重启服务
3.匿名用户上传
vim /etc/vsftpd/vsftpd.conf ##在其中设定参数
systemctl restart vsftpd ##设定完成后重启服务
chgrp ftp /var/ftp/pub ##更改pub目录所有组
chmod 775 /var/ftp/pub ##更改pub目录权限
ls-ld /var/ftp/pub ##查看pub目录权限
参数设定:
write_enable=YES
anon_upload_enable=YES
4.关于匿名用户的其他设定参数
- 匿名用户建立目录
- 匿名用户下载
- 匿名用户删除
- 匿名用户家目录修改
- 最大上传速率
在设置最大上传速率之前,使用匿名用户上传一个很大的文件速度非常快,如果要限制它的上传速率,要在服务配置文件中写入anon_max_rate=102400参数
- 最大连接数
系统本身默认匿名用户可以无限制登陆ftp,但如果连接数太多会造成卡顿,如果需要限制最大连接数,需要设地参数:max_clients=2
设定之前连接ftp服务没有数量限制,设定以后只能同时连接两个,第三个就会无法连接,除非第前两个用户退出连接,第三个用户才可以连接上ftp服务
5.本地用户的设定
- 本地用户的基本设定:
- 限制本地用户浏览/目录
-
把所有的用户都锁在自己的家目录中
chroot_local_user=YES
-
黑名单建立
名单内的用户被锁定在自己的家目录中,不能访问/目录,其他用户可以访问/目录
-
白名单建立
本地用户被锁定在自己的家目录中,不能访问/目录,只有名单内的用户可以访问/目录
- 限制本地用户登陆![在这里插入图片描述](https://img-blog.csdnimg.cn/20191112110245218.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25pZ2FyXw==,size_16,color_FFFFFF,t_70)
- 黑名单设定
- 白名单设定
通过设定参数userlist_deny=NO,临时黑名单变成白名单,只有名单里的用户可以的登陆ftp服务
6.虚拟用户的认证设定
- 设定:
- 测试:
设定的虚拟用户user1 user2 user3都可以登陆
7.虚拟用户的家目录设定
step1 建立好虚拟账户独立的目录
mkdir /var/ftpuserdir/{user1,user2,user3} -p
mkdir /var/ftpuserdir/{user1,user2,user3}/pub -p
touch /var/ftpuserdir/user1/user1file
touch /var/ftpuserdir/user2/user2file
touch /var/ftpuserdir/user3/user3file
step2 设定配置文件参数
vim /etc/vsftpd/vsftpd.conf
step3 测试
完成后登陆虚拟用户,就可以看到pub和对应的userfile
7.虚拟用户独立授权
step1 设定:
vim /etc/vsftpd/vsftpd.conf ##编辑服务配置文件设定参数
参数:user_config_dir=/etc/vsftpd/user_config
注意:把前面关于匿名用户设定关掉,但不要把write_enable=YES关了
step2 修改权限:
chgrp ftp /var/ftpuserdir/ -R
chmod 775 /var/ftpuserdir/user{1..3}/pub
step3 建立虚拟帐号独立的配置文件目录:
mkdir -p /etc/vsftpd/user_config
cd /etc/vsftpd/user_config
编辑配置文件:(这里我设定允许user3上传文件,user1和user2不能上传)
vim user3 在其中写入想要设定的功能
anon_upload_enable=YES
step4 测试:
登陆user3,发现它可以上传文件;登陆user1和user2发现不能上传