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

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

图片

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

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

cat /etc/hosts.allow
sshd:IP1
sshd:IP2

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

cat /etc/hosts.deny
sshd: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 libwrap
libwrap.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就会报如下错误

图片

己经提示拒绝。

也欢迎关注我的公众号【徐sir的IT之路】,一起学习!

————————————————————————————
公众号:徐sir的IT之路
CSDN :徐sir(徐慧阳)_数据库记录,系统集成-CSDN博客
墨天轮:徐sir的个人主页 - 墨天轮
PGFANS:PGFans问答社区:全球唯一的PostgreSQL中文技术交流社区

————————————————————————————

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Linux主机之间实现SSH免密登录的过程如下: 1. 在本地主机上生成SSH密钥对(公钥和私钥),如果已经存在密钥对,请跳过此步骤。使用以下命令生成密钥对: ```shell ssh-keygen -t rsa ``` 按照提示,选择密钥存储位置和设置密码(可选)。默认情况下,公钥和私钥将存储在`~/.ssh`目录中。 2. 将本地主机的公钥复制到远程主机上。使用以下命令将公钥复制到远程主机: ```shell ssh-copy-id user@remote_host ``` 将`user`替换为远程主机上的用户名,`remote_host`替换为远程主机IP地址或域名。执行此命令后,您需要输入远程主机的密码。 如果`ssh-copy-id`命令不可用,您可以手动将公钥内容复制到远程主机的`~/.ssh/authorized_keys`文件中。使用以下命令将公钥内容复制到远程主机: ```shell cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" ``` 同样,将`user`替换为远程主机上的用户名,`remote_host`替换为远程主机IP地址或域名。 3. 验证免密登录是否成功。使用以下命令连接到远程主机: ```shell ssh user@remote_host ``` 这次连接不应再要求输入密码,而是直接登录到远程主机。 完成上述步骤后,您应该能够在本地主机上无需密码连接到远程主机。请注意,这需要在本地和远程主机之间具有网络连通性,并且远程主机必须允许使用SSH密钥进行身份验证。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徐sir(徐慧阳)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值