Linux通过ssh限制IP登录-指定或禁止用户登录,加黑名单,白名单

教学4周前更新 站长
14 0 0

方法一:只允许或限制指定用户登录(黑白名单)

1. 只允许指定用户进行登录(白名单)

如果希望仅允许特定用户或IP地址登录系统,可以通过设置白名单来实现。例如,我们可以允许IP地址为 192.168.1.1 的用户通过SSH登录 root 帐户。

步骤:

  1. 打开 /etc/ssh/sshd_config 配置文件:
    vi /etc/ssh/sshd_config
    
  2. 在配置文件中添加 AllowUsers 选项,指定允许登录的用户和IP地址:
    AllowUsers root@192.168.1.1
    
  3. 保存文件并退出编辑器后,重启SSH服务以应用配置:
    systemctl restart sshd
    

这样,只有 IP 地址为 192.168.1.1 的用户能够登录系统的 root 账户,其他 IP 将无法登录。

2. 只拒绝指定用户进行登录(黑名单)

通过设置黑名单,可以拒绝某些用户或IP地址登录系统。例如,假设要禁止 IP 地址为 192.168.1.10 的用户登录 root 帐户。

步骤:

  1. 打开 /etc/ssh/sshd_config 配置文件:
    vi /etc/ssh/sshd_config
    
  2. 在配置文件中添加 DenyUsers 选项,指定需要拒绝登录的用户和IP地址:
    DenyUsers root@192.168.1.10
    
  3. 保存文件并退出编辑器后,重启SSH服务:
    systemctl restart sshd
    

此设置会拒绝来自 IP 地址 192.168.1.10 的用户登录 root 账户,但其他用户依然可以正常登录。


方法二:允许指定IP段登录或禁止指定IP段登录

1. 允许特定IP段登录(白名单)

如果需要允许某一特定IP段(如 192.168.200.0/24)的所有IP进行SSH登录,可以通过修改 hosts.allow 文件实现。

步骤:

  1. 将允许的IP段写入 /etc/hosts.allow 文件:
    echo "sshd:192.168.200.0/24:allow" >> /etc/hosts.allow
    
  2. 此操作将允许 192.168.200.0/24 网络段的所有IP地址通过SSH连接到系统。

2. 禁止所有其他IP段登录(黑名单)

为了增强安全性,可以设置拒绝所有其他IP段登录SSH。

步骤:

  1. 将所有IP段的拒绝规则写入 /etc/hosts.deny 文件:
    echo "sshd:all:deny" >> /etc/hosts.deny
    
  2. 这样设置后,只有在 hosts.allow 中明确允许的IP段才能登录,其他所有IP地址将被拒绝。

3. 只允许特定IP段登录,禁止所有其他IP段登录

通过 hosts.allowhosts.deny 两个文件的组合,可以实现更精确的控制。例如,我们只允许 192.168.200.0/24 网络段的IP登录,其他所有IP都会被拒绝。

步骤:

  1. /etc/hosts.allow 文件中允许指定IP段登录:
    echo "sshd:192.168.200.0/24:allow" >> /etc/hosts.allow
    
  2. /etc/hosts.deny 文件中拒绝所有其他IP段登录:
    echo "sshd:all:deny" >> /etc/hosts.deny
    
  3. 保存并退出文件后,服务器将仅允许 192.168.200.0/24 网络段的IP通过SSH登录,其他IP将被拒绝。

方法三:通过防火墙限制或允许某个IP或IP段登录

使用防火墙(如 firewalld)来限制或允许特定IP或IP段进行SSH登录,是另一种有效的方式。可以通过设置防火墙规则,控制哪些IP可以访问服务器。

1. 限制或允许单个IP登录

步骤:

  1. 允许 192.168.100.10 这个IP通过SSH登录:
    firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.100.10 service name=ssh accept'
    
  2. 拒绝 192.168.100.10 这个IP通过SSH登录:
    firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.100.10 service name=ssh reject'
    
  3. 重载防火墙以应用规则:
    firewall-cmd --reload
    

2. 限制或允许IP段登录

步骤:

  1. 允许 192.168.200.0/24 这个IP段通过SSH登录:
    firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.200.0/24 service name=ssh accept'
    
  2. 拒绝 192.168.200.0/24 这个IP段通过SSH登录:
    firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.200.0/24 service name=ssh reject'
    
  3. 重载防火墙配置:
    firewall-cmd --reload
    

通过上述步骤,您可以灵活地使用防火墙来限制或允许特定IP地址或IP段进行SSH连接。


总结

通过上述三种方法,您可以有效地控制哪些用户或IP地址可以访问您的系统。这些方法包括通过SSH配置文件设置白名单或黑名单、通过 hosts.allowhosts.deny 文件管理IP段、以及通过防火墙规则进一步限制访问。根据您的需求,选择适合的方案以提高服务器的安全性。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...