Linux-SSH被攻击-解决方案

文章目录

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

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

一、检查攻击来源

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

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

  1. 查看文件btmp

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

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

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

shell 复制代码
# 查看攻击开始时间

lastb | grep 137.184.155.125

# 查看攻击终止时间

lastb | grep 137.184.155.125 | tac

# 查看IP地理位置

curl ipinfo.io/137.184.155.125

二、防范措施

  1. 修改SSH端口

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

shell 复制代码
# 打开文件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,以便进行自定义配置。

powershell 复制代码
    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文件,并添加或修改以下行:

powershell 复制代码
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或者宝塔等面板,配置起来会更加快捷,这里提供的解决方案仅供参考,希望对你有用!

相关推荐
聽雨23712 分钟前
02每日简报20250704
linux·科技·金融·生活·社交电子·娱乐·媒体
Maki Winster1 小时前
Peek-Ubuntu上Gif录制工具-24.04LTS可装
linux·ubuntu·peek
Maki Winster2 小时前
在 Ubuntu 下配置 oh-my-posh —— 普通用户 + root 各自使用独立主题(共享可执行)
linux·运维·ubuntu
守望时空332 小时前
Linux下KDE桌面创建自定义右键菜单
linux
l0sgAi2 小时前
vLLM在RTX50系显卡上部署大模型-使用wsl2
linux·人工智能
Charlene Fung3 小时前
vs code远程自动登录服务器,无需手动输入密码的终极方案(windows版)
运维·服务器·vscode·ssh
麟城Lincoln3 小时前
【RHCSA-Linux考试题目笔记(自用)】servera的题目
linux·笔记·考试·rhcsa
寻月隐君4 小时前
保姆级教程:Zsh + Oh My Zsh 终极配置,让你的 Ubuntu 终端效率倍增
linux·后端·命令行
XM-54584 小时前
2025微信小程序wxapkg解包全攻略
linux·运维·小程序
朗晴4 小时前
文本编辑器VIM的使用方法!
linux·运维·服务器