背景

我们一般会使用 fail2ban 来保护暴露到公网的提供密码登录的 ssh 连接等。

但使用 frp 穿透后所有的从外网访问都会变成 127.0.0.1 进入的,原本能用 fail2ban 保护的如 ssh 服务将无法使用。

因此 fail2ban 应该放到 frps 服务器上。但 frps 的日志并不会对失败进行辨别,无论你访问哪个服务,frp 日志只会有连接和断开两种日志。

不完美的解决途径

正常情况下,我们不会频繁地连接和断开,只有被扫描时才容易出现。

因此添加自定义 filter,并设置一段时间内连接超过阈值后进入监狱。

编写文件 /etc/fail2ban/filter.d/frps.conf

[Definition]

failregex = ^.*get a user connection \[<HOST>:[0-9]*\]
^.*get a new work connection: \[<HOST>:[0-9]*\]
ignoreregex =

编写文件 /etc/fail2ban/jail.local 添加

[frp]
enabled = true
findtime = 10m
maxretry = 100
bantime = 1d
filter = frps
logpath = /data/frp/log/frps.log
protocol = all
chain = all
port = all
action = iptables-allports[name=frp,protocol=tcp]

记得 fail2ban-client reload 重载服务和 fail2ban-client status frp 确认服务状态。

如果你要添加自己的过滤规则可以使用 fail2ban-regex <LOG> <REGEX> [IGNOREREGEX] 进行验证,比如 fail2ban-regex /data/frp/log/frps.log /etc/fail2ban/filter.d/frps.conf (记得要用绝对路径)

然后你可以把阈值改小一点,用多次 telnet 来验证是否能过成功封锁。 然后用 fail2ban-client set frp unbanip 12.36.14.241 来解除封锁。

Outlook

不是很完美的方案,比如如果是 http 连接,很可能超过限制,实际使用需要做一些排除的匹配。

也许能通过 tcpdump 抓包日志来进行过滤,或编写程序输出一个更清晰的日志。

使用 fail2ban 保护 frp 服务的更多相关文章

  1. FRP服务

    FRP服务 - Web服务 本服务提供Web内网穿透服务,并且开放端口 443和 80端口. 写在前面:提供公益FRP服务器:frp.dev.boselor.com,服务器在洛杉矶但是请勿用于违法用途 ...

  2. linux之frp服务部署(内网穿透)

    frp服务部署(内网穿透) 目的 更快的进行内网穿透调试以及云端开发测试 服务器为CentOS 7,客户端为win11 frp介绍 frp 是一个开源项目, 采用 C/S 模式,将服务端部署在具有公网 ...

  3. frp服务利用云主机实现Windows远程连接

    frp服务利用云主机实现Windows远程连接 1.下载所需要的安装包 https://github.com/fatedier/frp/releases 下载 frp_0.44.0_linux_amd ...

  4. fail2ban 保护

    Fail2ban是一款非常使用的软件,它能够监控系统日志,能够有效的防止ssh被暴力破解,下面小编将针对Fail2ban在Linux下的安装和使用给大家做个介绍,一起来了解下吧. https://gi ...

  5. SpringCloud(10)使用Spring Cloud OAuth2和JWT保护微服务

    采用Spring Security AOuth2 和 JWT 的方式,避免每次请求都需要远程调度 Uaa 服务.采用Spring Security OAuth2 和 JWT 的方式,Uaa 服务只验证 ...

  6. SpringCloud(9)使用Spring Cloud OAuth2保护微服务系统

    一.简介 OAth2是一个标准的授权协议. 在认证与授权的过程中,主要包含以下3种角色. 服务提供方 Authorization Server. 资源持有者 Resource Server. 客户端 ...

  7. Spring Cloud (7) 服务容错保护-Hystrix服务降级

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以互相调用,在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务通常会集群 ...

  8. 使用Spring Cloud OAuth2和JWT保护微服务

    采用Spring Security AOuth2 和 JWT 的方式,避免每次请求都需要远程调度 Uaa 服务.采用Spring Security OAuth2 和 JWT 的方式,Uaa 服务只验证 ...

  9. frp服务搭建

    安装命令 C wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/ma ...

随机推荐

  1. 【LeetCode】281. Zigzag Iterator 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 deque 日期 题目地址:https://leetc ...

  2. 【LeetCode】243. Shortest Word Distance 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...

  3. 【LeetCode】365. Water and Jug Problem 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 数学题 相似题目 参考资料 日期 题目地址:http ...

  4. 【LeetCode】201. Bitwise AND of Numbers Range 解题报告(Python)

    [LeetCode]201. Bitwise AND of Numbers Range 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/prob ...

  5. Android物联网应用程序开发(智慧城市)—— 查询购物信息界面开发

    效果: 布局代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  6. 编写Java程序,随机给定一个数字猜大小

    返回本章节 返回作业目录 需求说明: 由系统随机生成一个1~100之间的整数. 通过控制台一直输入一个整数,比较该数与系统随机生成的那个数,如果大就输出"猜大了.",继续输入:如果 ...

  7. 制造运营管理 (MOM) 的工作流驱动方法

    介绍 "在企业中使用的任何技术的第一条规则是,应用于高效运营的自动化将放大效率.第二个是自动化应用于低效率的操作会放大低效率." - 比尔盖茨 . 工作流是结构化的活动,主要涉及人 ...

  8. 浅议像素化与体素化Part.1——平面图形像素化

    什么是像素化 学计算机的人往往都比较清楚图形和图像的区别,而且往往能够从数据结构的角度理解这两者的区别,一般来说,图形是由几何空间中的基本图元所组成,表现为用外部轮廓线条勾勒成的矢量图.例如由计算机绘 ...

  9. Identity Server 4到今年年底就停止支持了,试一下使用Orchard Core 作为认证服务

    Identity Server 4到今年年底就停止支持了,新的版本需要收费(好像目前是按企业规模,不过将来说不准).我们需要为这种情况做一些技术准备,至少需要为用户多准备一些可选方案.从目前成熟的开源 ...

  10. SpringBoot集成jasperreport实现打印功能

    1.jaspersoft studio工具下载地址 下载直通车 2.工具使用方法查看以下链接 工具使用 3.将工具编译后的.jasper文件放到SpringBoot项目的resources/templ ...