暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DBA实用小技巧:限制SSH登录LINUX的主机IP

原创 徐sir 2023-10-15
483

做网络等级保护的时候经常会遇到这样的场景,要求限制访问服务器的主机IP,通过问度娘,经常会给出这种解决方案

图片

可以结合使用hosts.allow和hosts.deny来进行限制。

通过编辑 /etc/hosts.allow添加允许放行SSH的IP地址

cat /etc/hosts.allowsshd:IP1sshd:IP2

编辑 /etc/hosts.deny添加禁止的SSH主机为所有

cat /etc/hosts.denysshd:ALL

这样做的好处是对业务影响最小。比如你要通过firewalld或iptables来限制SSH访问源IP的话,你需要知道业务要开放哪些端口,需要与应用的厂商进行协调,当然很多情况他们也说不清。

但是按openssh网站的说法从6.7以后开始tcpwrappers/libwrap己经移除,正常来说无法使用hosts.allow和hosts.deny来进行限制

openssh的网站说明:

图片

但是默认centos/rhel7的系统里还是能调用,因为在openssh8.0以前还可以通过编译的时候加载该功能,使该功能生效。

比如我们查看sshd文件,显示如下表示启用。

[root@CentOS7]# ldd /usr/sbin/sshd | grep libwraplibwrap.so.0 => /lib64/libwrap.so.0 (0x00007fa84e1a0000)

但是在openssh8.0以后的版本,这个功能彻底无法使用了

同时红帽官方己经表明TCP Wrappers 在 RHEL/CentOS 8 已不可使用,官方建议使用 Firewalld 作为 TCP Wrappers 的替代方案。

图片

图片

如果是新部署的系统,没有上业务也可以用下面的命令来一键修改,使用防火墙默认的zone进行配置:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.1" port protocol="tcp" port="22" accept" && firewall-cmd --permanent --remove-service=ssh &&  firewall-cmd --reload

其中source address="<你要放行的IP>"

还有一种替换方法就是使用sshd_config里添加参数的方式:

允许特定用户登录(白名单):

在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,(配置完成需要重启 SSHD 服务)格式如下:

AllowUsers    root@192.168.1.1

仅允许root从 192.168.1.1通过SSH 登录系统,如IP地址不匹配或用户名不匹配都无法登录

拒绝指定用户进行登录(黑名单):

在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下:

DenyUsers    oracle grid    #Linux系统账户

拒绝 oracle、grid帐户通过 SSH 登录系统

如果需要root用户允许多IP登录allowusers root@IP,IP,IP

示例:

echo "allowusers root@192.168.100.1" >> /etc/ssh/sshd_configsystemctl restart sshd

配置之后,我再通过192.168.100.3的主机使用root去登录这个LINUX就会报如下错误

图片

己经提示拒绝。

最后修改时间:2023-12-02 21:40:43
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论