限制登录Linux服务器的几种方式

在日常运维中,我们通常使用防火墙iptables跟firewalld的方式来实现访问控制,但在实际环境中,开启防火墙可能会对业务造成影响,所以以下整理了三种限制登录Linux服务器的几种方式。分别是修改TCP Wrappers服务访问控制、修改sshd_config配置文件、防火墙策略iptables跟firewalld。以上三种方式可以针对安全厂商做的漏洞白盒扫描,使用这三种方式,限制IP访问,就没办法扫描了,实现某种程度的漏洞规避。

一、通过修改TCP Wrappers服务访问控制来实现限制登录Linux

TCP Wrappers说明:

TCP_Wrappers工作在第四层(传输层)的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,对包含有libwrap.so库文件的程序就可以受TCP_Wrappers的安全控制。可以控制谁可以访问,常见的程序有rpcbind、mountd、vsftpd、sshd、telnet

Tcp_wrappers是红帽RHEL7系统中默认已经启用的一款流量监控程序、它能够根据来访主机地址与本机目标服务程序做允许或拒绝操作。换句话说,Linux系统中其实有两个层面的防火墙,第一种是基于TCP/IP协议的流量过滤防护工具,而Tcp_wrappers服务则是能够对系统服务进行允许和禁止的防火墙,从而在更高层面保护了Linux系统的安全运行。

1.这里以sshd服务为例,配置完成后,只允许配置允许的IP才能ssh连接本机服务器,其他IP拒绝

vi /etc/hosts.allow    #先编辑hosts.allow配置文件sshd:192.168.2.128     #添加允许的IP远程登录本机服务器,如果有多个不同网段的IP,可以以逗号隔开连续写或sshd:192.168.2.        #添加允许的2.0网段的IP远程登录本机服务器
限制登录Linux服务器的几种方式
vi /etc/hosts.deny     #编辑hosts.deny配置文件sshd:ALL               #拒绝所有所有IP远程登录本机服务器
限制登录Linux服务器的几种方式

不用重启,以上配置,配置完成后立即生效

测试:

限制登录Linux服务器的几种方式

以下这张是没配置TCP Wrappers服务访问控制前的ssh登录是可以登录的

限制登录Linux服务器的几种方式

配置了TCP Wrappers服务访问控制之后就无法登录了

限制登录Linux服务器的几种方式

注意!!!

TCP Wrappers服务访问控制策略的配置只限openssh6.7以前的版本,openssh 6.7以后版本不再支持TCP Wrappers。openssh6.7以后的版本配置TCP Wrappers服务访问控制策略是不生效的。

判断服务是否支持tcp_wrapper

判断某一个基于tcp协议的服务是否支持tcp_wrapper,要先判断它是否支持libwrap库

一般支持tcp_wrapper的服务有ssh、ftp、nfs、telnet等服务。也不一定全部都支持。只有查询到服务支持libwrap库,才可以被tcp_wrapper控制,才可以配置tcp_wrapper,否则配置了也不会生效。

ldd查询服务是否支持libwrap,什么都没显示的话就是不支持

ldd `which sshd` |grep libwrapldd `which vsftpd` |grep libwrap

支持的libwrap的截图

限制登录Linux服务器的几种方式

strings命令查看服务是否支持libwrap,什么都没显示的话就是不支持

strings `which sshd` |grep libwrapstrings `which vsftpd` |grep libwrap

支持libwrap的截图

限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式

二、修改sshd_config配置文件来实现限制登录Linux

vi   /etc/ssh/sshd_configALLowUsers         *@192.168.2.128       #添加允许登录的IP,*代表任意用户#DenyUsers         *@192.168.2.1         #拒绝登录的IP,与ALLowUsers二选一进行配置就可以了,*代表任意用户
限制登录Linux服务器的几种方式
systemctl restart sshd         #重启sshd服务
限制登录Linux服务器的几种方式

测试结果:

限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式

三、防火墙规则限制

firewalld

#firewalld防火墙默认是关闭的,需要设置开启自启,否则关闭服务器后,firewalld也会关闭systemctl enable firewalld     #开启防火墙systemctl restart firewalld    #重启防火墙systemctl status firewalld     #查看防火墙状态
限制登录Linux服务器的几种方式
#添加允许规则,放行指定IP访问服务器22端口firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.2.128/32" port protocol="tcp" port="22"  accept"#重载防火墙规则使其生效firewall-cmd --reload#查看防火墙规则firewall-cmd --list-all
限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式
#添加拒绝规则,拒绝指定IP访问服务器22端口firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.2.1/32" port protocol="tcp" port="22" drop"#重载防火墙规则使其生效firewall-cmd --reload#查看防火墙规则firewall-cmd --list-all
限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式

测试结果:

限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式
#删除防火墙规则firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.2.128/32" port protocol="tcp" port="22"  accept"firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.2.1/32" port protocol="tcp" port="22" drop"firewall-cmd --reloadfirewall-cmd --list-all
限制登录Linux服务器的几种方式

iptables

CentOS7默认的防火墙不是iptables,而是firewall

#先停止firewalld服务systemctl stop firewalld#禁用firewalld服务systemctl mask firewalld#如果没有安装iptables服务,需要先安装iptables-servicesyum install -y iptables-services#开启iptables,设置开机自启systemctl enable iptables #启动iptablessystemctl restart iptables #查看iptables的状态systemctl status iptables
限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式
#添加允许规则,放行指定的IP访问本机22端口iptables -A INPUT  -s 192.168.2.128 -p tcp --dport 22 -j ACCEPT#添加允许规则,允许本机访问22端口iptables -A INPUT -s 127.0.0.1 -p tcp --dport 22 -j ACCEPT#添加拒绝规则,拒绝其他所有IP访问本机22端口iptables -A INPUT -p tcp --dport 22 -j REJECT
限制登录Linux服务器的几种方式
#保存iptables规则service iptables save#查看iptables规则iptables -L -n
限制登录Linux服务器的几种方式

在iptables的INPUT链中默认有两条规则

  1. 允许所有IP访问服务器22端口(下图中的第四条规则)
  2. 拒绝其他所有访问(下图中的第五条规则)

以上配置完Iptables后会发现不生效,那是因为,iptables的防火墙规则默认是从上到下开始匹配生效的,因为写入的那3条规则是在,允许所有IP访问服务器22端口(第4条防火墙规则)和拒绝其他所有访问(第5条防火墙规则)的后面,先匹配的这两条,所以就不生效。

解决的办法有两个,1是将这第4、5条防火墙规则删掉,2是将写入的3条防火墙规则插入到4、5条防火墙规则的前面就可以生效了。

iptables -L -nvx --line-numbers    #查看iptables规则,并显示规则编号
限制登录Linux服务器的几种方式
  1. 删除4、5条防火墙规则
iptables -D INPUT 4     #删除INPUT中的第4条防火墙规则iptables -L -nvx --line-numbers  #查看iptables规则iptables -D INPUT 4     #再次删除INPUT中的第4条防火墙规则(原来的第5条防火墙规则)iptables -L -nvx --line-numbers   #再次查看iptables规则,这时候原来的第4、5条防火墙规则已经删除了
限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式

测试结果:

限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式

恢复iptables防火墙规则

#如果想把删除的Iptables规则恢复,如上面删除的4、5条防火墙规则,先停用iptables然后再重启防火墙规则,就可以恢复了systemctl  stop iptablessystemctl  status iptablessystemctl  restart iptablessystemctl status iptablesiptables -L -nvx --line-number  
限制登录Linux服务器的几种方式

这个时候,配置的规则就又失效了。

限制登录Linux服务器的几种方式

删除iptables规则

iptables -D INPUT 6iptables -D INPUT 7iptables -D INPUT 6iptables -L -nvx --line-numbers 
限制登录Linux服务器的几种方式
限制登录Linux服务器的几种方式

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/7412

(0)
郭靖的头像郭靖
上一篇 2023年2月27日 下午5:31
下一篇 2023年2月28日 下午5:16

相关推荐

  • Centos在dracut模式下如何修改系统配置文件

    1、进入dracut原因 Centos系统进入dracut的原因有很多比如:系统重要文件丢失系统配置文件配置错误等 2、恢复系统文件 2.1、dracut环境 在dracut上下文中是无法看到Centos系统文件的dracut# 2.2、找到系统盘 Centos默认安装时,系统盘是一个lv设备 如果安装时,手动修改了分区,那么可以根据实际情况找到系统设备比如…

    2023年6月12日
    34600
  • Centos7忘记root密码怎么办

    重启linux,进入系统的GRUB菜单界面,选择最下方的,按下小写字母e进入编辑界面 按下方向键,找到以字符串Linux16开头的行,光标移动到结尾,然后输入init=/bin/bash enforcing=0 代表登录系统后,加载bash解释器,然后关闭selinux 按下ctrl+x组合键以单用户模式启动Linux 输入如下命令,重新挂载根目录,进入可写…

    2022年6月11日
    56100
  • Linux 时间同步 Chrony

    Chrony是NTP(Network Time Protocol,网络时间协议,服务器时间同步的一种协议)的另一种实现,与ntpd不同,它可以更快且更准确地同步系统时钟,最大程度的减少时间和频率误差。 在CentOS6中,默认是使用ntpd来同步时间的,但ntpd同步时间并不理想,有可能需要数小时来同步时间。而且ntp也已经很老了。所以在Centos7中换成…

    2023年1月6日
    67900
  • 在 Linux 上保护 SSH 服务器连接的 8 种方法!

    SSH 是一种广泛使用的协议,用于安全地访问 Linux 服务器。大多数用户使用默认设置的 SSH 连接来连接到远程服务器。但是,不安全的默认配置也会带来各种安全风险。 具有开放 SSH 访问权限的服务器的 root 帐户可能存在风险。尤其是如果你使用的是公共 IP 地址,则破解 root 密码要容易得多。因此,有必要了解 SSH 安全性。 这是在 Linu…

    2023年4月24日
    27900
  • 解决Ubuntu DNS覆盖写入127.0.0.53

    问题: ubuntu22.04解析网址时报错如图所示: 因为/etc/resolve.conf中存在 nameserver 127.0.0.53回环地址造成循环引用 原因: ubuntu17.0之后特有,systemd-resolvd服务会一直覆盖 解决方法: 1、修改resolv.config文件中的nameserver(选做),修改完后DNS解析就能恢复…

    2022年12月1日
    1.7K00

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信