以下是配置主机暴力破解拦截的一般步骤:
使用Fail2Ban工具
安装Fail2Ban:通过命令行安装,如在CentOS系统中使用“yum install fail2ban”(可能需要先配置好yum源)。
配置文件修改:编辑Fail2Ban的主配置文件(通常为/etc/fail2ban/jail.conf或jail.local)。可以设置针对不同服务(如SSH)的拦截规则。例如,对于SSH服务,可以设置findtime(在多长时间内检测)、maxretry(最大重试次数)等参数。如设置findtime = 600(表示10分钟内),maxretry = 5(表示5次失败尝试后触发拦截)。
启动与启用服务:使用命令“systemctl start fail2ban”启动服务,并使用“systemctl enable fail2ban”设置为开机自启。
系统自带防火墙规则(iptables或firewalld)
如果使用iptables,可以编写规则来限制来自特定IP的频繁连接尝试。例如,通过“iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set”(针对SSH端口22,记录新的连接请求)和“iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 5 -j DROP”(如果在600秒内来自同一IP有5次新的SSH连接尝试,则丢弃该IP的后续请求)这样的规则组合来实现基本的暴力破解拦截。
对于firewalld,可以通过命令行或图形界面进行类似规则设置。例如,在命令行中使用“firewall -cmd --direct --add -rule ipv4 filter INPUT 0 -p tcp --dport 22 -m state --state NEW -m recent --set”等类似命令构建规则。
账户锁定策略
打开本地安全策略编辑器(可以通过运行“secpol.msc”打开)。
在“账户策略” - “账户锁定策略”中,设置账户锁定阈值(如5次错误登录尝试后锁定账户)、账户锁定时间(如锁定30分钟)和复位账户锁定计数器(如30分钟)等参数。这样当有暴力破解者试图多次错误登录账户时,账户将被锁定,阻止进一步的暴力破解尝试。
登录防火墙管理界面(不同品牌有不同界面,如Cisco ASA防火墙通过Web界面或命令行界面)。
创建访问控制策略(ACLs - 访问控制列表):针对主机的特定服务端口(如HTTP的80端口、SSH的22端口等),设置规则来限制来自同一源IP地址的连接频率。例如,可以设置规则为如果同一IP在1分钟内对主机80端口的连接请求超过10次,则拒绝该IP后续的连接请求。
启用入侵防御功能(如果防火墙支持):一些高级防火墙具有入侵防御系统(IPS),可以配置IPS规则来检测和阻止暴力破解行为。这些规则通常基于特征识别,如识别常见的暴力破解工具的特征签名或者异常的登录行为模式。
登录路由器管理界面(通常通过浏览器输入路由器的IP地址,如192.168.1.1)。
对于支持访问控制功能的路由器,可以设置端口转发规则中的访问限制。例如,在将外部端口转发到内部主机端口时,可以设置连接限制,如每个IP每天最多允许10次连接尝试到转发的端口。同时,一些高端路由器也具备基本的入侵检测功能,可以启用并配置针对暴力破解的检测和拦截规则。
在MySQL中,可以通过修改配置文件(my.cnf或my.ini)来设置安全相关的参数。例如,设置max_connect_errors参数,限制来自同一主机的最大连接错误次数。如果设置max_connect_errors = 100,当来自同一IP的连接错误达到100次时,MySQL将阻止该IP进一步的连接尝试,这在一定程度上防止针对数据库的暴力破解攻击。
Apache
对于Apache服务器,可以通过编辑httpd.conf或相关的虚拟主机配置文件来设置访问限制。例如,使用“Limit”指令来限制特定IP对特定目录或页面的访问频率。如“<Location /admin>Limit GET POST 10 60”表示在60秒内对/admin目录的GET和POST请求最多允许10次,超过则限制访问,这有助于防止针对Web管理界面(可能存在暴力破解风险)的攻击。
Nginx
在Nginx的配置文件(nginx.conf或站点配置文件)中,可以使用“limit_req_zone”和“limit_req”指令来限制请求频率。例如,“limit_req_zone $binary_remote_addr zone = one:10m rate = 10r/s;”定义了一个名为one的共享内存区域用于存储IP地址相关的请求限制信息,限制每个IP每秒最多10个请求。然后在需要保护的server或location块中使用“limit_req zone = one burst = 5;”来应用这个限制,其中burst表示允许的突发请求数量。这可以防止恶意攻击者通过快速频繁请求来进行暴力破解或DDoS攻击。