news 2026/6/25 18:12:51

Fail2ban 部署 + 阿里云服务器 SSH 登录 完整实战复盘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Fail2ban 部署 + 阿里云服务器 SSH 登录 完整实战复盘

一、 整体目标

  1. 实现Kali Linux 与阿里云服务器 SSH 密码登录(突破阿里云默认公钥认证限制)
  2. Kali Linux 部署 Fail2ban,实现 SSH 22 端口 3 次失败登录自动封禁 IP(防护暴力破解)

二、 第一部分:阿里云服务器 SSH 密码登录配置(核心前提)

核心问题

阿里云新实例默认禁用密码登录、仅开启公钥认证,普通用户无权限修改系统配置,导致 Kali 直接 SSH 密码登录失败。

操作步骤(按顺序执行,缺一不可)

  1. 通过阿里云 Workbench 获取 root 权限

    • 登录阿里云 ECS 控制台 → 找到目标服务器 → 点击远程连接→ 选择Workbench 远程连接
    • 选择密钥对登录(控制台自动匹配服务器绑定密钥)→ 点击登录,进入普通用户终端[admin@xxx ~]$
    • 切换到 root 超级权限:

      bash

      运行

      sudo -i
    • 输入adminroot密码,终端提示符变为[root@xxx ~]#即权限切换成功
  2. 修改 SSH 配置,开启密码登录和 root 远程登录在 root 权限终端执行以下 3 条命令(必须 root 权限,否则报Permission denied):

    bash

    运行

    # 1. 开启密码认证功能 sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config # 2. 允许 root 用户远程登录 sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # 3. 重启 SSH 服务,让配置生效(关键步骤!不重启配置无效) systemctl restart sshd
  3. Kali 终端清理旧密钥 + SSH 密码登录

    • 回到 Kali 终端,清理本地旧的服务器主机密钥(避免密钥不匹配警告):

      bash

      运行

      ssh-keygen -f '/root/.ssh/known_hosts' -R '你的阿里云服务器公网IP'
    • 执行 SSH 密码登录命令,强制使用密码认证:

      bash

      运行

      ssh root@你的阿里云服务器公网IP -o PreferredAuthentications=password
    • 首次连接输入yes验证主机密钥,再输入阿里云控制台重置的 root 密码
    • 终端显示Welcome to Alibaba Cloud Elastic Compute Service !且提示符变为[root@xxx ~]#登录成功

避坑指南

  • 执行sed命令报错Permission denied→ 未切换到 root 权限,先执行sudo -i
  • 登录提示Permission denied (publickey)→ SSH 服务未重启,重新执行systemctl restart sshd

三、 第二部分:Kali Linux 部署 Fail2ban(自动防 SSH 暴力破解)

核心需求

实现:10 分钟内 SSH 登录失败 3 次 → 自动封禁对方 IP 1 小时

操作步骤(分 4 阶段,从安装到验证)

阶段 1:安装 Fail2ban + 依赖防火墙 ufw

bash

运行

# 1. 更新软件源 apt update # 2. 安装 Fail2ban apt install -y fail2ban # 3. 安装 ufw 防火墙(Fail2ban 依赖防火墙实现 IP 封禁) apt install -y ufw # 4. 启用 ufw 防火墙 + 放行 SSH 22端口(避免自己被封禁后无法连接 Kali) ufw enable && ufw allow 22/tcp # 5. 验证 ufw 状态(显示 active 且 22/tcp ALLOW Anywhere 即正常) ufw status
阶段 2:核心配置 Fail2ban(关键!解决默认配置冗余报错)

核心思路:全局禁用所有默认无效 jail,仅启用 SSH 22 端口监控,避免 SELinux 等冗余配置干扰。

  1. 创建并编辑自定义配置文件jail.local(优先级高于默认配置,更新不覆盖):

    bash

    运行

    nano /etc/fail2ban/jail.local
  2. 粘贴以下完整配置(覆盖编辑器空白内容,参数已标注):

    ini

    # 全局默认配置(所有监控规则继承此配置) [DEFAULT] bantime = 3600 # 封禁 IP 时长:3600秒=1小时(-1 代表永久封禁) findtime = 600 # 检测时间窗口:600秒=10分钟(10分钟内达到阈值才封禁) maxretry = 3 # 失败登录阈值:3次 banaction = ufw # 封禁方式:使用 ufw 防火墙 ignoreip = 127.0.0.1/8 192.168.0.0/16 # 忽略本地/内网 IP,避免误封自己 backend = systemd # 日志后端:适配 Kali 的 systemd 系统 enabled = false # 全局禁用所有默认 jail(关键!杜绝冗余配置报错) # 核心:仅启用 SSH 22端口监控(覆盖全局 enabled=false) [sshd] enabled = true # 单独启用 SSH 监控 maxretry = 3 # 单独设置阈值(可与全局不同) logpath = /var/log/auth.log # Kali SSH 日志固定路径 filter = sshd # 使用 Fail2ban 自带的 sshd 过滤规则 backend = systemd # 单独指定日志后端,确保监控有效
  3. 保存并退出 nano 编辑器:
    • Ctrl+O→ 回车确认文件名 → 按Ctrl+X退出
阶段 3:启动 Fail2ban + 设置开机自启(解决启动报错)
  1. 清理残留进程(避免端口被占用导致启动失败):

    bash

    运行

    pkill -9 fail2ban-server pkill -9 fail2ban
  2. 重新加载系统服务配置(确保新配置生效):

    bash

    运行

    systemctl daemon-reload
  3. 启动 Fail2ban 服务(后台运行,不占用终端):

    bash

    运行

    systemctl start fail2ban
  4. 验证服务状态(显示绿色active (running)即成功):

    bash

    运行

    systemctl status fail2ban
  5. 设置开机自启(Kali 重启后自动启动 Fail2ban,防护不中断):

    bash

    运行

    systemctl enable fail2ban
  6. 验证开机自启状态(输出enabled即设置成功):

    bash

    运行

    systemctl is-enabled fail2ban
阶段 4:验证 Fail2ban 核心功能(确保监控生效)
  1. 查看加载的监控规则(仅显示sshd即配置纯净):

    bash

    运行

    fail2ban-client status

    预期输出:Jail list: sshd

  2. 查看 SSH 监控详细状态(确认日志和阈值配置生效):

    bash

    运行

    fail2ban-client status sshd

    预期输出:

    plaintext

    Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- Journal matches: _SYSTEMD_UNIT=ssh.service + _COMM=sshd `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
  3. 模拟测试封禁功能(关键!验证实战效果)

    • 用另一台设备 / 另一 IP 执行 SSH 登录 Kali:

      bash

      运行

      ssh root@你的 Kali IP
    • 故意输错密码3 次,第 3 次后会直接断开连接,无法再发起 SSH 请求
    • 回到 Kali 终端,再次执行fail2ban-client status sshd→ 会显示被封禁的 IP 及封禁次数

阶段 5:Fail2ban 常用管理命令(必记!日常维护)

功能命令
手动解封误封 IPfail2ban-client set sshd unbanip 被封禁的IP地址
停止 Fail2ban 服务systemctl stop fail2ban
重启 Fail2ban 服务systemctl restart fail2ban(修改配置后需执行)
查看 Fail2ban 日志tail -20 /var/log/fail2ban/fail2ban.log(排查问题用)
永久封禁 IP(修改配置)编辑jail.local,将bantime = 3600改为bantime = -1→ 重启服务

避坑指南

  1. 启动 Fail2ban 报错Have not found any log file for selinux-ssh jail→ 配置文件中[DEFAULT]enabled = false,全局禁用默认冗余 jail
  2. 封禁后无法解封 → 确认命令中 IP 地址正确,且 jail 名称为sshd
  3. ufw 防火墙未启用 → 先执行ufw enable,否则 Fail2ban 无法封禁 IP

四、 整体总结

  1. 阿里云 SSH 登录核心:Workbench 提权 → 修改 SSH 配置 → 重启服务 → Kali 清理旧密钥登录
  2. Fail2ban 部署核心:纯净配置(禁用冗余 jail)→ 依赖 ufw 防火墙 → 后台启动 + 开机自启 → 验证封禁效果
  3. 关键经验:Linux 权限是基础,配置文件要精简,服务启动后必验证功能
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 18:33:19

用EASYTIER和AI快速构建分层存储系统

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个基于EASYTIER的智能分层存储系统演示项目。要求:1) 使用Python实现核心逻辑 2) 集成机器学习模型分析数据访问频率 3) 自动将热数据迁移到高速存储&#xff0c…

作者头像 李华
网站建设 2026/6/24 10:27:22

Ubuntu+Docker实战:从零搭建微服务架构

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商微服务系统演示项目,包含:1) 前端(Vue.js)服务容器;2) 后端(Spring Boot)API服务容器;3) MySQL数据库容器;…

作者头像 李华
网站建设 2026/6/15 20:47:14

VibeVoice-WEB-UI是否支持动态加载?内存优化策略

VibeVoice-WEB-UI 的动态加载能力与内存优化策略解析 在当前 AI 内容生成技术飞速发展的背景下,文本转语音(TTS)系统早已不再局限于“读一句话”这种基础功能。越来越多的应用场景——如播客制作、有声书朗读、虚拟角色对话等——要求语音合成…

作者头像 李华
网站建设 2026/6/25 5:41:53

VibeVoice能否生成带有背景音效的语音?沉浸式内容构想

VibeVoice能否生成带有背景音效的语音?沉浸式内容构想 在播客、有声书和虚拟访谈日益普及的今天,用户对音频内容的真实感与沉浸感提出了更高要求。人们不再满足于“机器朗读”式的单人叙述,而是期待听到像真实对话一样自然流畅、角色分明、情…

作者头像 李华
网站建设 2026/6/21 19:54:24

AI一键搞定JAVA11环境配置,告别繁琐安装步骤

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成一个完整的JAVA11安装自动化脚本,要求:1. 自动检测操作系统类型(Windows/macOS/Linux)2. 包含Oracle JDK和OpenJDK两种选项 3…

作者头像 李华
网站建设 2026/6/23 5:34:16

NETRON入门指南:零基础学会查看AI模型结构

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个交互式学习应用,引导用户逐步学习使用NETRON。从最简单的模型文件加载开始,逐步介绍界面元素、基本操作(如缩放、平移、展开层级&#…

作者头像 李华