本文最后更新于 2024-05-16,

若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。

本站只有Telegram群组为唯一交流群组, 点击加入

文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请

其实限制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个服务和正常的对比,白色的为正常的。
  • 方式11715842377862.webp
  • 方式21715842399684.webp

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

最极端的方式重新安装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/

1715842472357.webp

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