VSFTP服务器的登录控制

任务情景

兴汉科技有限公司利用虚拟机搭建的VSFTP服务器,在使用过程中,由于安全的考虑等特殊原因,有些主机或用户风险较大,对VSFTP服务器的运行产生影响,决定禁止这些用户登录,以提升FTP服务器的安全性,达到管理好VSFTP服务器的目的。

任务分析

为了保证VSFTP服务器运行的可靠与安全稳定,需要设置主机的访问控制,使得真正需要VSFTP资源的用户才能访问,其它的主机或用户拒绝登录。

知识链接

1、设置允许或不允许访问的主机

Centos 8系统不再支持使用tcp_wrappers方法来禁止IP访问。tcp_wrappers方法能通过编辑/etc/hosts.allow和/etc/hosts.deny配置文件对IP禁止访问。此时,需要使用firewall-cmd命令来设置对IP的禁止访问。

添加或删除rules,增加或解除对IP的禁止访问。

firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" reject' --permanent

firewall-cmd --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" reject' --permanent

firewall-cmd --reload

2、ftpusers文件的用途

ftpusers不受任何配置项的影响,它总是有效,就是一个黑名单!该文件存放的是一个禁止访问FTP的用户列表,通常为了安全考虑,管理员不希望一些拥有过大权限的帐号(比如root)登入FTP,以免通过该帐号从FTP上传或下载一些危险位置上的文件从而对系统造成损坏。

ftpusers和user_list没有任何关系,ftpusers文件总是生效。

3、user_list文件的用途

user_list文件是和userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单,具体设置请往下看。

4、设置允许或不允许访问的用户

对用户的访问控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件来实现。相关配置命令如下表7-3-1:

表7-3-1 登录和用户访问控制语句

语句

功能

userlist_enable=YES

是否使用控制用户登录的用户列表

userlist_file=/etc/vsftpd/user_list

设置控制用户登录的用户列表文件

userlist_deny=YES

禁止或允许user_list中的用户登录FTP服务器。只在userlist_enable设置为YES才生效

userlist_enable和userlist_deny两个选项联合起来针对的用户是:本地全体用户(除去ftpusers中的用户)、出现在user_list文件中的用户、不在user_list文件中的用户,这三类用户集合进行的设置。有三种方式的配置如下表7-3-2:

表7-3-2 白名单和黑名单的具体设置

方式

功能

userlist_enable=NO

无论userlist_deny为何值都是无效的,本地全体用户(ftpusers中用户除外)都可以登入FTP

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd/user_list

user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd/user_list

user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);此时,匿名用户将无法登入!除非在user_list中加入一行:anonymous

任务实施

前期的安装步骤与任务7.1的步骤1-3相同,此处从略,我们从配置文件的修改开始。

步骤1:测试VSFTP服务器配置主目录/etc/vsftpd/中ftpusers文件的作用。新建用户:xhadmin和test,并设置密码。再将test用户加入到文件ftpusers中。

[root@localhost ~]# useradd xhadmin

[root@localhost ~]# passwd xhadmin

[root@localhost ~]# useradd test

[root@localhost ~]# passwd test

[root@localhost ~]# vi /etc/vsftpd/ftpusers

# Users that are not allowed to login via ftp

root

test

bin                           //保存退出           

步骤2:Linux客户端测试,用test、root和xhadmin登录VSFTP服务器。

[root@localhost ~]# ftp 192.168.1.10

Connected to 192.168.1.10 (192.168.1.10).

220 (vsFTPd 3.0.3)

Name (192.168.1.10:root): test

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.                             //test用户登录失败

ftp> exit

221 Goodbye.

[root@localhost ~]# ftp 192.168.1.10

Connected to 192.168.1.10 (192.168.1.10).

220 (vsFTPd 3.0.3)

Name (192.168.1.10:root): root

530 Permission denied.

Login failed.                              //root用户被拒绝登录

ftp> exit

221 Goodbye.

[root@localhost ~]# ftp 192.168.1.10

Connected to 192.168.1.10 (192.168.1.10).

220 (vsFTPd 3.0.3)

Name (192.168.1.10:root): xhadmin

331 Please specify the password.

Password:

230 Login successful.                      //用户xhadmin成功登录

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

步骤3:控制主机的访问,因为Centos8系统不再支持使用tcp_wrappers方法来禁止IP访问。tcp_wrappers方法能通过编辑/etc/hosts.allow和/etc/hosts.deny配置文件对IP禁止访问。此时,需要使用firewall-cmd命令来设置对IP的禁止访问。

[root@localhost vsftpd]# systemctl start firewalld      //启用防火墙

[root@localhost vsftpd]# firewall-cmd --zone=public --add-service=ftp --permanent 

success                                      //防火墙允许ftp服务

[root@localhost vsftpd]# firewall-cmd --permanent --add-port=20-21/tcp

success                                      //防火墙开放20-21端口

[root@localhost vsftpd]# firewall-cmd --add-rich-rule="rule family='ipv4' source address='192.168.1.20' reject" --permanent

success                                    //防火墙拒绝192.168.1.20访问

[root@localhost vsftpd]# firewall-cmd –reload        //重新加载防火墙规则

success

[root@localhost vsftpd]# firewall-cmd --remove-rich-rule="rule family='ipv4' source address='192.168.1.20' drop" --permanent

success                             //防火墙删除拒绝192.168.1.20访问

[root@localhost vsftpd]# firewall-cmd --reload 

success

步骤4:在IP地址为192.168.1.20的Linux客户端测试:

[root@localhost ~]# ftp 192.168.1.10         //没有启用防火墙时能正常访问

Connected to 192.168.1.10 (192.168.1.10).

220 (vsFTPd 3.0.3)

Name (192.168.1.10:root): xhadmin

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (192,168,1,10,91,215).

150 Here comes the directory listing.

-rw-r--r--    1 1003     1003         2735 May 23 02:40 abc.txt

226 Directory send OK.

ftp> exit

221 Goodbye.

[root@localhost ~]# ftp 192.168.1.10            //启用防火墙后访问被拒绝

ftp: connect: Connection refused

ftp> exit

[root@localhost ~]# ftp 192.168.1.10           //删除拒绝规则后,能正常访问

Connected to 192.168.1.10 (192.168.1.10).

220 (vsFTPd 3.0.3)

Name (192.168.1.10:root): xhadmin

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

步骤5:vsftp服务器对用户的拒绝,除了一个永远的黑名单ftpusers文件外,还有一个可能的黑名单user_list文件,这取决于userlist_enable=YES和userlist_deny=YES,当这两项都是YES时, user_list文件就是一个黑名单:

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

local_enable=YES

local_root=/ftpdir

userlist_enable=yes

userlist_deny=yes

[root@localhost ~]# vi /etc/vsftpd/user_list   //此时,user_list文件就是一个黑名单

root

xhadmin

[root@localhost ~]# systemctl restart vsftpd

步骤6:客户端测试

[root@localhost ~]# ftp 192.168.1.10

Connected to 192.168.1.10 (192.168.1.10).

220 (vsFTPd 3.0.3)

Name (192.168.1.10:root): xhadmin       //xhadmin在黑名单中,被拒绝登录

530 Permission denied.

Login failed.

ftp>

步骤7:再修改vsftp服务器的主配置文件,对用户的拒绝,将userlist_enable=YES,而userlist_deny=NO,此时,user_list文件就是一个白名单。这时只有出现在白名单中的用户才会被准许登录 ,user_list之外的用户都被拒绝登入;此时,匿名用户也无法登入!除非在user_list中加入一行:anonymous。

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

local_enable=YES

local_root=/ftpdir

userlist_enable=yes

userlist_deny=no

[root@localhost ~]# vi /etc/vsftpd/user_list   //此时,user_list文件就是一个白名单

root

xhadmin

[root@localhost ~]# systemctl restart vsftpd

步骤8:客户端测试

[root@localhost ~]# ftp 192.168.1.10

Connected to 192.168.1.10 (192.168.1.10).

220 (vsFTPd 3.0.3)

Name (192.168.1.10:root): xhadmin             //在白名单中,能登录

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (192,168,1,10,40,163).

150 Here comes the directory listing.

-rw-r--r--    1 1003     1003         2735 May 23 02:40 abc.txt

-rw-r--r--    1 1003     1003         2735 May 23 02:44 xy.txt

226 Directory send OK.

ftp> exit

221 Goodbye.

[root@localhost ~]# ftp 192.168.1.10

Connected to 192.168.1.10 (192.168.1.10).

220 (vsFTPd 3.0.3)

Name (192.168.1.10:root): test             //不在白名单中,登录失败

530 Permission denied.

Login failed.

ftp>

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值