Linux如何部署Fail2ban防护SSH暴力破解_Linux安全加固指南

发布时间 - 2025-11-22 00:00:00    点击率:
Fail2ban通过监控日志自动封禁恶意IP,有效防范SSH暴力破解。在Linux系统中可通过包管理器安装,配置jail.local文件启用SSHD防护,设置maxretry=3、bantime=86400等参数后启动服务,结合firewalld/iptables实现自动封禁,显著提升服务器安全性。

Fail2ban 是一款实用的开源入侵防御软件,能有效防止 SSH 暴力破解、FTP 弱口令尝试等常见攻击。它通过监控系统日志,自动识别异常登录行为,并临时封禁恶意 IP 地址。在 Linux 服务器上部署 Fail2ban 是安全加固的重要一步,尤其适用于开放了 SSH 服务的公网主机。

安装 Fail2ban

大多数主流 Linux 发行版都支持通过包管理器直接安装 Fail2ban。

  • Debian/Ubuntu 系统:

sudo apt update
sudo apt install fail2ban

  • CentOS/RHEL/Rocky Linux(需启用 EPEL):

sudo yum install epel-release(或 dnf install epel-release
sudo yum install fail2ban(或 dnf install fail2ban

安装完成后,Fail2ban 服务会自动生成配置文件并准备运行。

配置 Fail2ban 防护 SSH

Fail2ban 的主配置文件位于 /etc/fail2ban/jail.conf,但建议创建本地覆盖文件以避免升级时被覆盖。

复制并编辑本地配置:

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

找到 [sshd] 区块并确保启用和合理设置:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
findtime = 3600

说明:

  • maxretry = 3:允许失败尝试 3 次
  • bantime = 86400:封禁持续 24 小时(单位:秒)
  • findtime = 3600:在 1 小时内超过 maxretry 触发封禁
  • logpath:根据系统日志路径调整,Ubuntu/Debian 通常为 /var/log/auth.log,CentOS/RHEL 为 /var/log/secure

启动并启用 Fail2ban 服务

配置完成后,启动服务并设置开机自启:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

检查服务状态是否正常运行:

sudo systemctl status fail2ban

查看 SSH 防护是否已激活:

sudo fail2ban-client status sshd

输出中应包含“Currently banned”信息,表示已有 IP 被封禁或规则生效。

查看日志与解除封禁

Fail2ban 日志通常位于 /var/log/fail2ban.log,可用于排查问题或确认封禁行为:

sudo tail -f /var/log/fail2ban.log

若需手动解封某个 IP(例如误封):

sudo fail2ban-client set sshd unbanip 192.168.1.100

也可查看当前被封禁的 IP 列表:

sudo fail2ban-client status sshd

如果使用 firewalld 或 iptables,Fail2ban 会自动集成对应防火墙规则,无需额外配置。

基本上就这些。部署 Fail2ban 后,可显著降低 SSH 暴力破解风险。配合修改默认 SSH 端口、禁用密码登录、使用密钥认证等措施,服务器安全性将进一步提升。


# linux  # centos  # 防火墙  # 端口  # ubuntu  # ai  # dnf  # 配置文件  # linux系统  # 解封  # Filter  # var  # ssh  # debian  # 管理器  # 已有  # 适用于  # 也可  # 自动识别  # 可通过  # 监控系统  # 开源 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么实现验证码(Captcha)功能  Laravel怎么上传文件_Laravel图片上传及存储配置  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  b2c电商网站制作流程,b2c水平综合的电商平台?  微信小程序 input输入框控件详解及实例(多种示例)  Laravel怎么在Blade中安全地输出原始HTML内容  公司网站制作价格怎么算,公司办个官网需要多少钱?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何自定义建站之星模板颜色并下载新样式?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel如何创建自定义Facades?(详细步骤)  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  详解Oracle修改字段类型方法总结  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  详解Android图表 MPAndroidChart折线图  Android中AutoCompleteTextView自动提示  Laravel如何处理表单验证?(Requests代码示例)  如何在Windows服务器上快速搭建网站?  简单实现Android验证码  如何在IIS中新建站点并解决端口绑定冲突?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  如何在VPS电脑上快速搭建网站?  android nfc常用标签读取总结  Laravel如何创建自定义中间件?(Middleware代码示例)  jQuery validate插件功能与用法详解  用yum安装MySQLdb模块的步骤方法  如何在万网ECS上快速搭建专属网站?  网站制作企业,网站的banner和导航栏是指什么?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  JavaScript数据类型有哪些_如何准确判断一个变量的类型  成都网站制作公司哪家好,四川省职工服务网是做什么用?  lovemo网页版地址 lovemo官网手机登录  Laravel如何实现模型的全局作用域?(Global Scope示例)  黑客如何利用漏洞与弱口令入侵网站服务器?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  在线制作视频网站免费,都有哪些好的动漫网站?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Swift开发中switch语句值绑定模式  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  网站页面设计需要考虑到这些问题  百度输入法ai组件怎么删除 百度输入法ai组件移除工具