on master help sign in
filtron.sh: updated rules from production
0d6153dMarkus Heiser
utils/templates/etc/filtron/rules.json+123−103
@@ -1,105 +1,125 @@
1[
1[
2− { "name": "suspiciously frequent IP",
2+ {
3− "filters": [],
4− "interval": 600,
5− "limit": 30,
6− "aggregations": [
7− "Header:X-Forwarded-For"
8− ],
9− "actions":[
10− {"name":"log"}
11− ]
12− },
13− { "name": "search request",
14− "filters": [
15− "Param:q",
16− "Path=^(/|/search)$"
17− ],
18− "interval": 61,
19− "limit": 999,
20− "subrules": [
21− {
22− "name": "roboagent limit",
3+ "name": "roboagent limit",
23− "interval": 61,
24− "limit": 1,
25− "filters": [
4+ "filters": [
26− "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"
5+ "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client|Ruby|UniversalFeedParser)"
27− ],
6+ ],
7+ "limit": 0,
8+ "stop": true,
28− "actions": [
9+ "actions": [
29− { "name": "log"},
10+ { "name": "log"},
30− { "name": "block",
11+ { "name": "block",
31− "params": {
12+ "params": {
32− "message": "Rate limit exceeded"
13+ "message": "Rate limit exceeded"
33− }
14+ }
34− }
15+ }
35− ]
16+ ]
36− },
17+ },
37− {
18+ {
38− "name": "botlimit",
19+ "name": "botlimit",
39− "limit": 0,
40− "stop": true,
41− "filters": [
20+ "filters": [
42− "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"
21+ "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"
43− ],
22+ ],
23+ "limit": 0,
24+ "stop": true,
44− "actions": [
25+ "actions": [
45− { "name": "log"},
26+ { "name": "log"},
46− { "name": "block",
27+ { "name": "block",
47− "params": {
28+ "params": {
48− "message": "Rate limit exceeded"
29+ "message": "Rate limit exceeded"
49− }
30+ }
31+ }
32+ ]
50− }
33+ },
51− ]
34+ { "name": "suspiciously frequent IP",
52− },
35+ "filters": [],
36+ "interval": 600,
37+ "limit": 30,
38+ "aggregations": [
39+ "Header:X-Forwarded-For"
40+ ],
41+ "actions":[
42+ {"name":"log"}
43+ ]
44+ },
45+ { "name": "search request",
46+ "filters": [
47+ "Param:q",
48+ "Path=^(/|/search)$"
49+ ],
50+ "interval": 61,
51+ "limit": 999,
52+ "subrules": [
53+ {
54+ "name": "missing Accept-Language",
55+ "filters": ["!Header:Accept-Language"],
56+ "limit": 0,
57+ "stop": true,
58+ "actions": [
59+ {"name": "block",
60+ "params": {"message": "Rate limit exceeded"}}
61+ ]
62+ },
53− {
63+ {
64+ "name": "suspiciously Connection=close header",
65+ "filters": ["Header:Connection=close"],
66+ "limit": 0,
67+ "stop": true,
68+ "actions": [
69+ {"name": "block",
70+ "params": {"message": "Rate limit exceeded"}}
71+ ]
72+ },
73+ {
54− "name": "IP limit",
74+ "name": "IP limit",
55− "interval": 61,
75+ "interval": 61,
56− "limit": 9,
76+ "limit": 9,
57− "stop": true,
77+ "stop": true,
58− "aggregations": [
78+ "aggregations": [
59− "Header:X-Forwarded-For"
79+ "Header:X-Forwarded-For"
60− ],
80+ ],
61− "actions": [
81+ "actions": [
62− { "name": "log"},
82+ { "name": "log"},
63− { "name": "block",
83+ { "name": "block",
64− "params": {
84+ "params": {
65− "message": "Rate limit exceeded"
85+ "message": "Rate limit exceeded"
66− }
86+ }
67− }
87+ }
68− ]
88+ ]
69− },
89+ },
70− {
90+ {
71− "name": "rss/json limit",
91+ "name": "rss/json limit",
92+ "filters": [
93+ "Param:format=(csv|json|rss)"
94+ ],
72− "interval": 121,
95+ "interval": 121,
73− "limit": 2,
96+ "limit": 2,
74− "stop": true,
97+ "stop": true,
75− "filters": [
76− "Param:format=(csv|json|rss)"
77− ],
78− "actions": [
98+ "actions": [
79− { "name": "log"},
99+ { "name": "log"},
80− { "name": "block",
100+ { "name": "block",
81− "params": {
101+ "params": {
82− "message": "Rate limit exceeded"
102+ "message": "Rate limit exceeded"
83− }
103+ }
84− }
104+ }
85− ]
105+ ]
86− },
106+ },
87− {
107+ {
88− "name": "useragent limit",
108+ "name": "useragent limit",
89− "interval": 61,
109+ "interval": 61,
90− "limit": 199,
110+ "limit": 199,
91− "aggregations": [
111+ "aggregations": [
92− "Header:User-Agent"
112+ "Header:User-Agent"
93− ],
113+ ],
94− "actions": [
114+ "actions": [
95− { "name": "log"},
115+ { "name": "log"},
96− { "name": "block",
116+ { "name": "block",
97− "params": {
117+ "params": {
98− "message": "Rate limit exceeded"
118+ "message": "Rate limit exceeded"
99− }
119+ }
100− }
120+ }
101− ]
121+ ]
102− }
122+ }
103− ]
123+ ]
104− }
124+ }
105]
125]