You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -11,25 +11,136 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
12
12
## [Unreleased]
13
13
14
+
## v1.20.0: Thancred Waters
15
+
16
+
The big ticket items are as follows:
17
+
18
+
- Implement a no-JS challenge method: [`metarefresh`](./admin/configuration/challenges/metarefresh.mdx) ([#95](https://github.com/TecharoHQ/anubis/issues/95))
19
+
- Implement request "weight", allowing administrators to customize the behaviour of Anubis based on specific criteria
20
+
- Implement GeoIP and ASN based checks via [Thoth](https://anubis.techaro.lol/docs/admin/thoth) ([#206](https://github.com/TecharoHQ/anubis/issues/206))
21
+
- Add [custom weight thresholds](./admin/configuration/thresholds.mdx) via CEL ([#688](https://github.com/TecharoHQ/anubis/pull/688))
14
22
- Move Open Graph configuration [to the policy file](./admin/configuration/open-graph.mdx)
15
-
- Enable support for default Open Graph metadata
23
+
- Enable support for Open Graph metadata to be returned by default instead of doing lookups against the target
24
+
- Add `robots2policy` CLI utility to convert robots.txt files to Anubis challenge policies using CEL expressions ([#409](https://github.com/TecharoHQ/anubis/issues/409))
25
+
- Refactor challenge presentation logic to use a challenge registry
26
+
- Allow challenge implementations to register HTTP routes
27
+
28
+
A lot of performance improvements have been made:
29
+
30
+
- Replace internal SHA256 hashing with xxhash for 4-6x performance improvement in policy evaluation and cache operations
31
+
- Optimized the OGTags subsystem with reduced allocations and runtime per request by up to 66%
16
32
- Replace cidranger with bart for IP range checking, improving IP matching performance by 3-20x with zero heap
17
33
allocations
34
+
35
+
And some cleanups/refactors were added:
36
+
18
37
- Remove the unused `/test-error` endpoint and update the testing endpoint `/make-challenge` to only be enabled in
19
38
development
20
39
- Add `--xff-strip-private` flag/envvar to toggle skipping X-Forwarded-For private addresses or not
21
-
- Requests can have their weight be adjusted, if a request weighs zero or less than it is allowed through
22
-
- Refactor challenge presentation logic to use a challenge registry
23
-
- Allow challenge implementations to register HTTP routes
24
-
- Implement a no-JS challenge method: [`metarefresh`](./admin/configuration/challenges/metarefresh.mdx) ([#95](https://github.com/TecharoHQ/anubis/issues/95))
25
40
- Bump AI-robots.txt to version 1.37
26
41
- Make progress bar styling more compatible (UXP, etc)
27
-
- Optimized the OGTags subsystem with reduced allocations and runtime per request by up to 66%
28
42
- Add `--strip-base-prefix` flag/envvar to strip the base prefix from request paths when forwarding to target servers
29
-
- Add `robots2policy` CLI utility to convert robots.txt files to Anubis challenge policies using CEL expressions ([#409](https://github.com/TecharoHQ/anubis/issues/409))
30
-
- Implement GeoIP and ASN based checks via [Thoth](https://anubis.techaro.lol/docs/admin/thoth) ([#206](https://github.com/TecharoHQ/anubis/issues/206))
31
-
- Replace internal SHA256 hashing with xxhash for 4-6x performance improvement in policy evaluation and cache operations
32
-
- Add [custom weight thresholds](./admin/configuration/thresholds.mdx) via CEL ([#688](https://github.com/TecharoHQ/anubis/pull/688))
43
+
44
+
Request weight is one of the biggest ticket features in Anubis. This enables Anubis to be much closer to a Web Application Firewall and when combined with custom thresholds allows administrators to have Anubis take advanced reactions. For more information about request weight, see [the request weight section](./admin/policies.mdx#request-weight) of the policy file documentation.
45
+
46
+
TL;DR when you have one or more WEIGHT rules like this:
47
+
48
+
```yaml
49
+
bots:
50
+
- name: gitea-session-token
51
+
action: WEIGH
52
+
expression:
53
+
all:
54
+
- '"Cookie" in headers'
55
+
- headers["Cookie"].contains("i_love_gitea=")
56
+
# Remove 5 weight points
57
+
weight:
58
+
adjust: -5
59
+
```
60
+
61
+
You can configure custom thresholds like this:
62
+
63
+
```yaml
64
+
thresholds:
65
+
- name: minimal-suspicion # This client is likely fine, its soul is lighter than a feather
66
+
expression: weight < 0 # a feather weighs zero units
67
+
action: ALLOW # Allow the traffic through
68
+
69
+
# For clients that had some weight reduced through custom rules, give them a
0 commit comments