利用hosts.allow和hosts.deny限制IP登陆分解、iptables拒绝所有ip访问22端口,开通白名单、linux官方下载rpm包地址

本文详细介绍如何使用Linux系统下的hosts.allow和hosts.deny文件来精确控制SSH服务的访问权限,包括添加单条或多条允许和拒绝规则,以及如何处理规则不生效的问题。同时,提供了iptables的替代方案,用于拒绝所有IP访问SSH端口并开通白名单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

其实限制IP登陆用防火墙和这没有区别,只是有些没有使用防火墙的服务器,用该方法,就更方便一些。
有2个文件,一个是配置允许规则(/etc/hosts.allow),一个是配置拒绝规则(/etc/hosts.deny)。

设置/etc/hosts.allow允许规则

方法一:vim /etc/hosts.allow 在最后面添加规则即可
方法二:echo "规则" >> /etc/hosts.allow

添加单条规则

[root@compute1 ~]# echo "sshd:192.168.0.:allow" >>/etc/hosts.allow (此规则为允许192.168.0.段的IP访问SSH服务)

添加多条

多个IP用逗号隔开即可:
[root@compute1 ~]# echo "sshd:192.168.0.,10.233.0.1,10.0.1.:allow" >>/etc/hosts.allow
注:10.10..10.10.0.* :都是放开一个段的格式

这些规则设置完毕后是默认生效的,如果没有立即生效,可以重启xinetd服务:systemctl restart xinetd

设置/etc/hosts.deny拒绝规则

如果我们只是想拒绝某些ip登陆,其他都允许,则在/etc/hosts.deny中添加需要拒绝的IP或IP段即可,添加规则和/etc/hosts/allow一样。

但一般情况使用更多的是,只允许某些IP或IP段能登陆,其他都拒绝,则我们在allow中设置好允许登陆的IP,然后deny中直接all(拒绝所有)即可。 因为规则是以allow优先的,即使重复了,也是以allow为准。

拒绝所有

设置拒绝所有之前,务必先配置好allow中的规则,否则自己也登陆不了了,只能通过后台弄,稍显麻烦。
[root@compute1 ~]# echo "sshd:all:deny" >>/etc/hosts.deny

这些规则设置完毕后是默认生效的,如果没有立即生效,可以重启xinetd服务:systemctl restart xinetd

hosts.deny不生效处理方法

说明

  • hosts.allow和hosts.deny属于tcp_Wrappers防火墙的配置文件,而用tcp_Wrappers防火墙控制某一服务访问策略的前提是,该服务支持tcp_Wrappers防火墙,即该服务应用了libwrapped库文件。

  • 查看某服务(如ssh)是否应用了libwrapped库文件的方法是:
    ldd /usr/sbin/sshd |grep libwrap.so.0

  • 没有显示,表示此服务器上安装的SSH没有应用libwrapped库文件,也就不能用tcp_Wrappers防火墙控制访问策略。(一般情况下服务器默认安装的SSH都是支持libwrapped库文件,这台服务器不清楚为什么不支持)

  • 我这有台主机就不支持【BClinux8.2】,如下,2个服务和正常的对比,白色的为正常的。

    • 1、方式1
      在这里插入图片描述
    • 方式2
      在这里插入图片描述

解决方法【linux官方下载rpm包地址】

  • 下面方式来源于百度,仅供参考,下面我都试过了,不能解决。。
    而且BClinux我连tcp_Wrappers这个包都安装不了,最终无法解决。改用iptables限制。。。

  • 最极端的方式重新安装SSH。慎用

yum -y remove openssh && yum -y install openssh && yum -y install openssh-server && yum -y install openssh-client

#安装完成后再次查看是否应用了libwrapped库文件,显示支持。

# ldd /usr/sbin/sshd |grep libwrap.so.0
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3fb7f09000)
  • 你可以根据你的系统,自行百度 : 安装tcp_Wrappers方法
    提供一个官方下载rpm包的地址,官方的,很全。
    https://centos.pkgs.org/
    在这里插入图片描述

iptables拒绝所有ip访问22端口,开通白名单

临时生效

只允许1.2.3.4上使用ssh远程登录,其他IP禁止使用ssh,注意顺序,要先允许在拒绝

iptables -A INPUT -s 1.2.3.4 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j DROP

配置文件生效

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

҉人间无事人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值