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

相关推荐
头发还没掉光光1 分钟前
Linux网络初始及网络通信基本原理
linux·运维·开发语言·网络·c++
爱和冰阔落4 分钟前
【Linux工具链】从跨平台适配到一键部署:yum多架构支持+Vim远程编辑+gcc交叉编译,解决多场景开发效率瓶颈
linux·运维·vim
zzzsde17 分钟前
【Linux】权限(2):文件权限的深入理解&&粘滞位
linux·运维·服务器
序属秋秋秋39 分钟前
《Linux系统编程之开发工具》【实战:倒计时 + 进度条】
linux·运维·服务器·c语言·c++·ubuntu·系统编程
刘某的Cloud3 小时前
ceph osd down排查
linux·运维·ceph·系统·osd
安审若无8 小时前
图数据库neoj4安装部署使用
linux·运维·数据库
做运维的阿瑞9 小时前
CentOS DNS故障排查完整解决方案:从症状到根因的系统化诊断
linux·运维·centos
QT 小鲜肉9 小时前
【个人成长笔记】在 Linux 系统下撰写老化测试脚本以实现自动压测效果(亲测有效)
linux·开发语言·笔记·单片机·压力测试
itachi-uchiha10 小时前
head和tail命令使用
linux·运维·服务器
馨谙10 小时前
SELinux 故障排除完全指南:从拒绝访问到快速修复
linux