前言:我的服务器为了可以用rdp进行远程控制,但是坏人多,一直扫,导致admin账户被封,一直不能登录,一直等,原本准备采用白名单形式,但是ip经常变动。
下面就为了防御密码爆破,找到的一个win可用的。
直接上链接:fail2ban-win: Windows版本的fail2ban
iamverygood/fail2ban-win: fail2ban for windows
这是gitee和github的开源代码本站直接备份复用原文内容。
背景
Linux下面使用fail2ban防止服务器被暴力破解很方便,Windows下未找到合适的相关软件,所以决定自己做一个。
2.开发编译环境
- VS2022
- c#
- sqlite 3
- .net framework 2.0
使用VS2022打开项目,直接编译即可。
3.项目说明
3.1.ServiceManager
服务安装管理工具,用于将程序安装成Windows服务,并支持服务的启动、停止、卸载。
3.2.fail2ban-win
服务主程序
4.2.下载安装
从以下地址下载安装程序:
https://gitee.com/iamverygood/fail2ban-win/releases/tag/v0.1
我用百度备份的:fail2ban-win-20221112.zip 链接: https://pan.baidu.com/s/1KL9kd78dJXXjX4I0yqV1NQ?pwd=7w8y 提取码: 7w8y
5.安装配置
5.1.安装
鼠标双机运行ServiceManager.exe,点击安装服务按钮完成安装。

5.2.配置
主配置文件fail2ban-win.ini,如果不存在,可以手动创建,文件配置内容:
[fail2ban-win]
# 白名单
ignoreip = 127.0.0.1
# 1年:1y,30分钟:30m,10小时:10h
bantime = 24h
# 5分钟内失败5次,就被禁ip
findtime = 5m
maxretry = 5
firewallnameprefix=fail2ban-win-
日志配置文件NLog.config,如果不存在,可以手动创建,文件配置内容:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--
See http://nlog-project.org/wiki/Configuration_file
for information on customizing logging rules and outputs.
-->
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}${exception:format=ToString}"
fileName="${basedir}/logs/fail2ban-win-${level}-${shortdate}.txt"
maxArchiveFiles="1000"
archiveAboveSize="1024000"
archiveEvery="Day" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="file" />
</rules>
</nlog>
6.运行状态
6.1.运行日志
程序运行后,会在工作目录下创建日志子目录logs


默认的日志级别为Info,可自行调整NLog.config配置文件中的日志级别。
6.2.运行数据库
程序运行后,会在工作目录下生成运行数据库fail2ban-win.db,为sqlite3格式,可使用相应管理工具打开。
6.3.防火墙规则
当某个IP多次尝试登陆失败被封闭后,会自动在操作系统的防火墙中添加1条条阻止规则:

注意:防火墙需要自行开启,如果未开启,软件添加的规则也将不会生效,建议配置:
域配置文件、专用配置文件、公用配置文件均开启。
