Linux-SSH被攻击-解决方案

SSH端口暴露在公网上很可能被黑客扫描,并尝试登入系统。这种攻击基本每天都在发生。

  • 首先要检查SSH端口是否被攻击,主要检查检查失败登录。

一、检查攻击来源

btmp文件会记录SSH端口登录失败的信息,包括尝试的用户名、IP地址和时间等信息。

btmp为二进制文件,文件路径为/var/log/btmp。

  1. 查看文件btmp

使用命令lastb可以查看文件btmp的信息,参数-n可以指定显示数量。

lastb -n 10 | tac
  1. 查看攻击者IP及攻击次数
lastb | awk '{ print $3}' | sort | uniq -c | sort -n
  1. 查看攻击者尝试的用户名
lastb | awk '{ print $1}' | sort | uniq -c | sort -n
  1. 分析攻击者

对攻击次数第一的IP进行分析。

# 查看攻击开始时间

lastb | grep 137.184.155.125

# 查看攻击终止时间

lastb | grep 137.184.155.125 | tac

# 查看IP地理位置

curl ipinfo.io/137.184.155.125

二、防范措施

  1. 修改SSH端口

修改SSH端口可以避免广撒网式的端口扫描及后续的攻击。

# 打开文件sshd_config

vim /etc/ssh/sshd_config

# 修改参数Port

# 修改前:

#port 22

# 修改后:

port 8500

# 重启SSH守护程序

systemctl restart sshd
  1. 设置复杂密码

设置密码为字母+数字+符号组合,提升暴力破解难度。

  1. 使用私钥登录
  2. Fail2ban+firewallcmd-ipset
    个人比较推荐第四种方式,这种方式也是成本较低的抵御服务器入侵的方式,针对大量攻击行之有效。

三、Fail2ban+firewallcmd-ipset

Fail2ban是一个用于自动封禁恶意访问者的工具,而firewallcmd-ipset则是与firewalld集成的工具,用于管理IP集合和规则。下面是将Fail2ban与firewallcmd-ipset结合使用的具体步骤:

安装Fail2ban:

首先,确保你的系统中安装了Fail2ban。如果没有安装,你可以使用包管理器进行安装。例如,在基于RPM的系统(如Fedora或CentOS)上,可以使用sudo yum install fail2ban命令进行安装。

安装firewalld:

如果你的系统还没有安装firewalld,你需要先安装它。在基于RPM的系统上,可以使用sudo yum install firewalld命令进行安装。

配置Fail2ban:

Fail2ban的配置文件位于/etc/fail2ban/目录下。你可以复制默认的jail.conf文件并命名为jail.local,以便进行自定义配置。


    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

   # 接下来,编辑jail.local文件,并添加或修改以下参数:

    [DEFAULT]  
    ignoreip = 127.0.0.1/8  
    bantime = 86400  
    findtime = 600  
    maxretry = 5  
    banaction = firewallcmd-ipset  
    action = %(action_mwl)s

其中,ignoreip参数用于指定不受Fail2ban监控的IP地址或地址段。bantime参数定义了IP被禁止的时长,单位是秒。findtime定义了查找失败登录尝试的时间范围。maxretry定义了在此时间范围内允许的失败尝试次数。banaction定义了执行封禁操作的命令,这里使用的是firewallcmd-ipset。

配置firewalld以使用fail2ban:

为了让firewalld能够与Fail2ban协同工作,你需要配置firewalld来加载Fail2ban创建的IP集合。编辑/etc/firewalld/firewalld.conf文件,并添加或修改以下行:

rich_rules_file="/etc/firewalld/rich-rules.conf"

# 这将告诉firewalld加载/etc/firewalld/rich-rules.conf文件中的规则。

# 重启服务:
# 完成上述配置后,重启Fail2ban和firewalld服务,以使更改生效。
sudo systemctl restart fail2ban  
sudo systemctl restart firewalld

测试配置:

最后,你可以尝试触发Fail2ban的封禁机制,以测试配置是否生效。例如,如果你配置Fail2ban监控SSH登录失败尝试,你可以尝试多次使用错误的凭据登录SSH。如果配置正确,你应该会在指定的bantime后被禁止登录。

如果你熟悉1Panel或者宝塔等面板,配置起来会更加快捷,这里提供的解决方案仅供参考,希望对你有用!

相关推荐

  1. Linux-SSH攻击-解决方案

    2024-02-17 18:04:02       32 阅读
  2. vscode remote ssh 连接 ubuntu/linux报错解决方法

    2024-02-17 18:04:02       21 阅读
  3. 常见网络攻击解决方案

    2024-02-17 18:04:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-17 18:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-17 18:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-17 18:04:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-17 18:04:02       20 阅读

热门阅读

  1. MySQL篇之索引创建与失效

    2024-02-17 18:04:02       30 阅读
  2. C#面:简述 CTS , CLS , CLR , IL

    2024-02-17 18:04:02       31 阅读
  3. 算法——图论——最短路径——Floyd / 传递闭包

    2024-02-17 18:04:02       31 阅读
  4. C语言——oj刷题——获取月份天数

    2024-02-17 18:04:02       31 阅读
  5. 【Linux】指令 【whereis】

    2024-02-17 18:04:02       32 阅读
  6. C++特殊类设计

    2024-02-17 18:04:02       31 阅读
  7. 257.二叉树的所有路径

    2024-02-17 18:04:02       31 阅读
  8. 在Spring中事务失效的场景

    2024-02-17 18:04:02       30 阅读
  9. ChatGPT和LLM

    2024-02-17 18:04:02       27 阅读
  10. git的常用命令有哪些?

    2024-02-17 18:04:02       33 阅读
  11. 【前端工程化面试题目】webpack 的热更新原理

    2024-02-17 18:04:02       29 阅读
  12. 力扣_字符串9—单词接龙I、II

    2024-02-17 18:04:02       27 阅读