mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-06 18:10:26 +08:00
增加攻击拦截统计
This commit is contained in:
@@ -67,6 +67,7 @@ type HTTPRequest struct {
|
|||||||
cacheRef *serverconfigs.HTTPCacheRef // 缓存设置
|
cacheRef *serverconfigs.HTTPCacheRef // 缓存设置
|
||||||
cacheKey string // 缓存使用的Key
|
cacheKey string // 缓存使用的Key
|
||||||
isCached bool // 是否已经被缓存
|
isCached bool // 是否已经被缓存
|
||||||
|
isAttack bool // 是否是攻击请求
|
||||||
|
|
||||||
// WAF相关
|
// WAF相关
|
||||||
firewallPolicyId int64
|
firewallPolicyId int64
|
||||||
@@ -243,9 +244,13 @@ func (this *HTTPRequest) doEnd() {
|
|||||||
// TODO 增加是否开启开关
|
// TODO 增加是否开启开关
|
||||||
if this.Server != nil {
|
if this.Server != nil {
|
||||||
if this.isCached {
|
if this.isCached {
|
||||||
stats.SharedTrafficStatManager.Add(this.Server.Id, this.Host, this.writer.sentBodyBytes, this.writer.sentBodyBytes, 1, 1)
|
stats.SharedTrafficStatManager.Add(this.Server.Id, this.Host, this.writer.sentBodyBytes, this.writer.sentBodyBytes, 1, 1, 0, 0)
|
||||||
} else {
|
} else {
|
||||||
stats.SharedTrafficStatManager.Add(this.Server.Id, this.Host, this.writer.sentBodyBytes, 0, 1, 0)
|
if this.isAttack {
|
||||||
|
stats.SharedTrafficStatManager.Add(this.Server.Id, this.Host, this.writer.sentBodyBytes, 0, 1, 0, 1, this.writer.sentBodyBytes)
|
||||||
|
} else {
|
||||||
|
stats.SharedTrafficStatManager.Add(this.Server.Id, this.Host, this.writer.sentBodyBytes, 0, 1, 0, 0, 0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -164,6 +164,10 @@ func (this *HTTPRequest) checkWAFRequest(firewallPolicy *firewallconfigs.HTTPFir
|
|||||||
this.firewallRuleGroupId = types.Int64(ruleGroup.Id)
|
this.firewallRuleGroupId = types.Int64(ruleGroup.Id)
|
||||||
this.firewallRuleSetId = types.Int64(ruleSet.Id)
|
this.firewallRuleSetId = types.Int64(ruleSet.Id)
|
||||||
|
|
||||||
|
if ruleSet.Action == waf.ActionBlock {
|
||||||
|
this.isAttack = true
|
||||||
|
}
|
||||||
|
|
||||||
// 添加统计
|
// 添加统计
|
||||||
stats.SharedHTTPRequestStatManager.AddFirewallRuleGroupId(this.Server.Id, this.firewallRuleGroupId, ruleSet.Action)
|
stats.SharedHTTPRequestStatManager.AddFirewallRuleGroupId(this.Server.Id, this.firewallRuleGroupId, ruleSet.Action)
|
||||||
}
|
}
|
||||||
@@ -216,6 +220,10 @@ func (this *HTTPRequest) checkWAFResponse(firewallPolicy *firewallconfigs.HTTPFi
|
|||||||
this.firewallRuleGroupId = types.Int64(ruleGroup.Id)
|
this.firewallRuleGroupId = types.Int64(ruleGroup.Id)
|
||||||
this.firewallRuleSetId = types.Int64(ruleSet.Id)
|
this.firewallRuleSetId = types.Int64(ruleSet.Id)
|
||||||
|
|
||||||
|
if ruleSet.Action == waf.ActionBlock {
|
||||||
|
this.isAttack = true
|
||||||
|
}
|
||||||
|
|
||||||
// 添加统计
|
// 添加统计
|
||||||
stats.SharedHTTPRequestStatManager.AddFirewallRuleGroupId(this.Server.Id, this.firewallRuleGroupId, ruleSet.Action)
|
stats.SharedHTTPRequestStatManager.AddFirewallRuleGroupId(this.Server.Id, this.firewallRuleGroupId, ruleSet.Action)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ func (this *TCPListener) handleConn(conn net.Conn) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 记录流量
|
// 记录流量
|
||||||
stats.SharedTrafficStatManager.Add(firstServer.Id, "", int64(n), 0, 0, 0)
|
stats.SharedTrafficStatManager.Add(firstServer.Id, "", int64(n), 0, 0, 0, 0, 0)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
closer()
|
closer()
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ func NewUDPConn(serverId int64, addr net.Addr, proxyConn *net.UDPConn, serverCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 记录流量
|
// 记录流量
|
||||||
stats.SharedTrafficStatManager.Add(serverId, "", int64(n), 0, 0, 0)
|
stats.SharedTrafficStatManager.Add(serverId, "", int64(n), 0, 0, 0, 0, 0)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
conn.isOk = false
|
conn.isOk = false
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ type TrafficItem struct {
|
|||||||
CachedBytes int64
|
CachedBytes int64
|
||||||
CountRequests int64
|
CountRequests int64
|
||||||
CountCachedRequests int64
|
CountCachedRequests int64
|
||||||
|
CountAttackRequests int64
|
||||||
|
AttackBytes int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// TrafficStatManager 区域流量统计
|
// TrafficStatManager 区域流量统计
|
||||||
@@ -84,7 +86,7 @@ func (this *TrafficStatManager) Start(configFunc func() *nodeconfigs.NodeConfig)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add 添加流量
|
// Add 添加流量
|
||||||
func (this *TrafficStatManager) Add(serverId int64, domain string, bytes int64, cachedBytes int64, countRequests int64, countCachedRequests int64) {
|
func (this *TrafficStatManager) Add(serverId int64, domain string, bytes int64, cachedBytes int64, countRequests int64, countCachedRequests int64, countAttacks int64, attackBytes int64) {
|
||||||
if bytes == 0 {
|
if bytes == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -106,6 +108,8 @@ func (this *TrafficStatManager) Add(serverId int64, domain string, bytes int64,
|
|||||||
item.CachedBytes += cachedBytes
|
item.CachedBytes += cachedBytes
|
||||||
item.CountRequests += countRequests
|
item.CountRequests += countRequests
|
||||||
item.CountCachedRequests += countCachedRequests
|
item.CountCachedRequests += countCachedRequests
|
||||||
|
item.CountAttackRequests += countAttacks
|
||||||
|
item.AttackBytes += attackBytes
|
||||||
|
|
||||||
// 单个域名流量
|
// 单个域名流量
|
||||||
var domainKey = strconv.FormatInt(timestamp, 10) + "@" + strconv.FormatInt(serverId, 10) + "@" + domain
|
var domainKey = strconv.FormatInt(timestamp, 10) + "@" + strconv.FormatInt(serverId, 10) + "@" + domain
|
||||||
@@ -118,6 +122,8 @@ func (this *TrafficStatManager) Add(serverId int64, domain string, bytes int64,
|
|||||||
domainItem.CachedBytes += cachedBytes
|
domainItem.CachedBytes += cachedBytes
|
||||||
domainItem.CountRequests += countRequests
|
domainItem.CountRequests += countRequests
|
||||||
domainItem.CountCachedRequests += countCachedRequests
|
domainItem.CountCachedRequests += countCachedRequests
|
||||||
|
domainItem.CountAttackRequests += countAttacks
|
||||||
|
domainItem.AttackBytes += attackBytes
|
||||||
|
|
||||||
this.locker.Unlock()
|
this.locker.Unlock()
|
||||||
}
|
}
|
||||||
@@ -160,6 +166,8 @@ func (this *TrafficStatManager) Upload() error {
|
|||||||
CachedBytes: item.CachedBytes,
|
CachedBytes: item.CachedBytes,
|
||||||
CountRequests: item.CountRequests,
|
CountRequests: item.CountRequests,
|
||||||
CountCachedRequests: item.CountCachedRequests,
|
CountCachedRequests: item.CountCachedRequests,
|
||||||
|
CountAttackRequests: item.CountAttackRequests,
|
||||||
|
AttackBytes: item.AttackBytes,
|
||||||
CreatedAt: timestamp,
|
CreatedAt: timestamp,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -181,6 +189,8 @@ func (this *TrafficStatManager) Upload() error {
|
|||||||
CachedBytes: item.CachedBytes,
|
CachedBytes: item.CachedBytes,
|
||||||
CountRequests: item.CountRequests,
|
CountRequests: item.CountRequests,
|
||||||
CountCachedRequests: item.CountCachedRequests,
|
CountCachedRequests: item.CountCachedRequests,
|
||||||
|
CountAttackRequests: item.CountAttackRequests,
|
||||||
|
AttackBytes: item.AttackBytes,
|
||||||
CreatedAt: types.Int64(pieces[0]),
|
CreatedAt: types.Int64(pieces[0]),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user