在 Vultr VPS 上安装 Fail2ban 防止 SSH 攻击,首先需通过包管理器(如 apt 或 yum)安装软件,然后配置 jail.local 文件启用 sshd 监狱,设置最大重试次数和封禁时间。建议同时启用 SSH 密钥认证并禁用密码登录以增强安全。安装后启动服务并监控日志,Fail2ban 会自动封禁多次尝试失败的 IP 地址,有效抵御暴力破解。
Linux 怎么防止暴力破解 SSH_Linux 下 Fail2ban 安装与安全防护【指南】
一、安装 Fail2ban 服务 Fail2ban 是一款开源入侵防御工具,通过监控系统日志识别异常登录尝试,并自动将可疑 IP 加入防火墙黑名单。它依赖 Python 运行环境,需先确认基础依赖已就绪。1、更新系统软件包索引:sudo apt update(Debian/Ubuntu) 或 sudo yum update(CentOS 7) 或 sudodnfupdate(CentOS 8/RHEL 8+)。2、安装 Fail2ban 主程序:sudo apt install fail2ban(Debian/Ubuntu) 或 sudo yum install epel-release && sudo yum install fail2ban(CentOS 7) 或 sudo dnf install fail2ban(CentOS 8/RHEL 8+)。3、启用并启动服务:sudo systemctl enable fail2ban && sudo systemctl start fail2ban。二、配置 SSH 防护规则 默认配置文件位于/etc/fail2ban/jail.conf,但直接修改该文件易在升级时被覆盖,应使用 jail.local 进行覆盖式配置。1、复制默认配置生成本地配置:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local。2、编辑本地配置文件:sudo nano /etc/fail2ban/jail.local。3、在 [sshd] 节中取消注释并设置以下参数:enabled = true、maxretry = 3、bantime = 3600、findtime = 600。4、保存退出后重启服务:sudo systemctl restart fail2ban。三、启用 SSH 密钥认证并禁用密码登录 密钥认证可彻底规避密码暴力破解风险,其安全性远高于口令验证,且无需依赖第三方工具即可生效。1、在客户端生成 RSA 密钥对:ssh-keygen -t rsa -b 4096,按提示保存至默认路径。2、将公钥上传至服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip。3、登录服务器后编辑 SSH 配置:sudo nano /etc/ssh/sshd_config。4、修改以下两行:PasswordAuthentication no、PubkeyAuthentication yes。(来自 2025 年 12 月 30 日的资料)
从爬虫到网络--- 你的第一台 vps 如何保证基本安全之 4.为什么要 Fail2Ban 和安装 Fail2Ban
fail2ban 安装及使用 Fail2Ban 是一个入侵防御系统,通过监控日志文件来检测恶意行为 (如暴力破解、扫描攻击),并自动更新防火墙规则来阻止攻击者 IP 地址。第一部分:安装 1. Ubuntu/Debian 系统 bash # 更新包列表 sudoapt update# 安装 Fail2Bansudoaptinstall fail2ban-y# 安装可选的邮件功能 (用于接收通知)sudoaptinstallsendmail-y# 或者 postfix 2. CentOS/RHEL 7/8/9 系统 bash # CentOS/RHEL 7sudo yuminstall epel-release-ysudo yuminstall fail2ban-y# CentOS/RHEL 8/9sudo dnfinstall epel-release-ysudo dnfinstall fail2ban-y# 安装邮件通知功能 (可选)sudo yuminstallsendmail-y#或 postfix 3. macOS(使用 Homebrew) bash brewinstall fail2ban 第二部分:基本配置 1. 核心配置文件结构 text /etc/fail2ban/ ├── fail2ban.conf # 主配置文件 (全局设置)├── jail.conf # 监狱规则主配置文件 (不要修改!)├── jail.d/ # 自定义监狱配置目录│ └── local.conf # 推荐的自定义配置├── filter.d/ # 过滤器规则目录│ ├── sshd.conf │├── apache-auth.conf │└── ├── action.d/ # 动作脚本目录│ ├── iptables-multiport.conf │├── sendmail.conf │└── └── paths-common.conf # 日志路径等通用配置 2. 创建自定义配置文件 (推荐) 永远不要直接修改 jail.conf,而是创建 jail.local 或使用 jail.d/目录:bash # 复制模板配置文件 sudocp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local# 或者创建一个新文件 (推荐)sudonano /etc/fail2ban/jail.local 3. 基础配置示例 ini [DEFAULT]# 禁止 IP 地址的时长 (秒)bantime=3600 # 1 小时,-1 表示永久封禁# 检测时间窗口 (秒)findtime=600 # 10 分钟内# 最大失败次数 maxretry=5 # 10 分钟内失败 5 次则封禁# 监听的 IP 地址 (留空表示所有接口)ignoreip=127.0.0.1/8 ::1 192.168.1.0/24# 使用的封禁动作 banaction=iptables-multiportbanaction_allports=iptables-allports# 邮件通知设置 mta=sendmaildestemail=admin@yourdomain.comsender=fail2ban@yourdomain.comsendername=Fail2Ban# 动作类型 action=%(action_)s # 仅封禁# action = %(action_mwl)s # 封禁并发送邮件 (包含日志)# 日志级别 loglevel=INFOlogtarget=/var/log/fail2ban.log(截至 2025 年 12 月 17 日)
从服务器被黑到主动防御:fail2ban 实战部署与高级配置指南
2. fail2ban 是什么?它能做什么?简单来说,fail2ban 是一个轻量级的入侵防御框架。它的工作原理非常直观,就像一个不知疲倦的保安,时刻盯着系统的“监控录像”(也就是各种日志文件)。核心工作流程可以概括为三步:监控日志:fail2ban 持续扫描你指定的日志文件,比如/var/log/auth.log(SSH 登录日志)、/var/log/nginx/error.log(Web 服务器错误日志) 等。匹配规则:它根据你预先定义的正则表达式 (Filter),在日志中寻找失败的认证尝试、恶意扫描等特定模式。例如,在 SSH 日志里发现"Failed password for root from 192.168.1.100"这样的记录。执行封禁:一旦某个 IP 地址在设定的时间窗口内 (比如 10 分钟) 失败次数达到阈值 (比如 5 次),fail2ban 就会触发行动 (Action)。最常见的行动就是调用系统的防火墙 (如 iptables 或 firewalld),添加一条规则,在一段时间内 (比如 1 小时) 禁止这个 IP 地址的所有连接请求。(消息于 2026 年 3 月 3 日发布)
Linux 服务器总是被暴力破解,用 fail2ban 来加强防护 (用法详解)
言归正传,如果把上云称为搬家,VPS(或其它云服务器的称呼) 就是它的家,我们手里的 ssh 密钥或登录凭证就是打开这扇门的钥匙。有家自然就有盗贼惦记,原理就是不断的猜测你服务器的密码,直到猜对为止,对此使用以下方法来加强安全。如果确实想要保护服务,请将服务配置为基于公/私钥的身份验证方式。复现 猜测密码的过程可能是你的 ssh 密码,也有可能是你的邮箱密码。我这里以常用的 ssh 演示。# 实时查看日志 [root@blog ~]# tail -f /var/log/secure 1. 2. 我在另一台电脑上,尝试用错误的密码来登录,可以看到我每输错一次,就会有一条失败日志产生。当有大量的电脑发起登录请求时,不断地猜测密码不仅会有猜出密码的风险,甚至会大量消耗 CPU 资源。处理 做为一名优秀的管理员,这种问题不应该等到机器瘫痪了再来,该出手时就出手。1. 简单处理 如果经常是同一个 IP 来爆破,可以使用防火墙加入黑名单中。永久配置:--permanent --add-source=网段地址 --add-service=协议 # 例子 # 拒绝网段或单个 IP 访问 firewall-cmd --permanent --zone=block --add-source=172.34.0.0/24 firewall-cmd --permanent --zone=block --add-source=172.34.4.207 firewall-cmd --permanent --zone=block --add-service=http firewall-cmd --permanent --zone=block --add-service=ftp # 重载生效 firewall-cmd --reload # 删除不需要的 firewall-cmd --permanent --zone=block --remove-source=172.34.4.207 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 或者把 IP 访问/etc/hosts.deny 文件中,你再用此 ip 登录就不行了。vim /etc/hosts.deny # 以如下的形式添加内容 sshd:213.136.88.159 sshd:207.154.196.169 sshd:167.172.188.48 sshd:45.133.1.78(搜索结果收录于 2022 年 1 月 15 日)
Linux 下如何安装配置 Fail2ban 防护工具
一、安装 Fail2ban 1. 安装 Fail2ban 在 Debian/Ubuntu 系统中,可以使用以下命令安装 Fail2ban: sudoapt updatesudoapt install fail2ban 在 CentOS/RHEL 系统中,可以使用以下命令安装 Fail2ban: sudoyum install epel-releasesudoyum install fail2ban 2. 启动和启用 Fail2ban 服务 安装完成后,启动 Fail2ban 服务并设置为开机自启动:sudosystemctl start fail2bansudosystemctlenablefail2ban 3. 检查 Fail2ban 服务状态 可以使用以下命令检查 Fail2ban 服务的状态:sudosystemctl status fail2ban 二、配置 Fail2ban 1. 创建本地配置文件 Fail2ban 的默认配置文件位于/etc/fail2ban/jail.conf,不建议直接修改该文件。相反,我们可以创建一个本地配置文件/etc/fail2ban/jail.local 来覆盖默认设置。sudocp/etc/fail2ban/jail.conf /etc/fail2ban/jail.local 2. 配置基本设置 打开并编辑/etc/fail2ban/jail.local 文件:sudonano /etc/fail2ban/jail.local 在 [DEFAULT] 部分,可以配置全局设置,例如:[DEFAULT] bantime = 3600# 被禁止的时间长度 (秒)findtime = 600# 在该时间段内进行检测 (秒)maxretry = 5# 失败尝试次数 3. 启用并配置具体服务 在 jail.local 文件中,配置具体服务的设置,例如 SSH 服务:[sshd]enabled=trueport=sshlogpath=%(sshd_log)sbackend=%(sshd_backend)s 确保将 enabled 设置为 true,以启用对 SSH 服务的保护。三、Fail2ban 过滤器配置 Fail2ban 通过过滤器 (filters) 来解析日志文件中的失败尝试记录,并采取相应的措施。1. 查看默认过滤器 Fail2ban 的默认过滤器文件位于/etc/fail2ban/filter.d/目录中。例如,SSH 的过滤器文件是 sshd.conf。2. 自定义过滤器 如果需要创建自定义过滤器,可以在/etc/fail2ban/filter.d/目录中创建新的过滤器文件,例如 custom.conf:sudonano /etc/fail2ban/filter.d/custom.conf 在文件中定义过滤规则,例如:(资料日期为 2025 年 2 月 5 日)
FAQ
Q: Vultr VPS 安装 Fail2ban 需要什么前提条件?
A: 需要具有 sudo 权限的 Linux 服务器,如 Ubuntu 或 CentOS,并确保系统软件包索引已更新。
Q: Fail2ban 封禁 IP 后如何解封?
A: 等待封禁时间结束自动解封,或使用 fail2ban-client set
Q: 配置 Fail2ban 会影响正常 SSH 登录吗?
A: 不会,只要将管理员 IP 加入 ignoreip 白名单,且正确配置 maxretry 阈值,就不会影响正常登录。