Skip to content

Commit 75ca94c

Browse files
committed
Use mounted volumes for webserver htpasswd files
- also some small fixes to documentation - and supression of whois warning
1 parent 30f7706 commit 75ca94c

20 files changed

Lines changed: 90 additions & 72 deletions

Changelog.md

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
## 1.11.x (upcoming)
4+
5+
- MONITORING_AUTH_RAW, is no longer used to configure monitoring authentication. Instead password entries must be entered directly in `/opt/Internet.nl/volumes/webserver/htpasswd/monitoring.htpasswd`. See: [Docker-Metrics](https://github.com/internetstandards/Internet.nl/blob/main/documentation/Docker-metrics.md#monitoring-user/allowlist-management). If you had configured monitoring auth previously you need to move this into the new file.
6+
37
## 1.11.0 (in progress)
48

59
_Compared to the latest 1.10 release._
@@ -11,7 +15,7 @@ All tests were updated to match the
1115
[2025-05 version of the NCSC TLS guidelines](https://www.ncsc.nl/documenten/publicaties/2025/juni/01/ict-beveiligingsrichtlijnen-voor-transport-layer-security-2025-05).
1216
Most significant changes:
1317

14-
- The list of good/sufficient/phase out/insufficient TLS versions, TLS authentication, curves, hashes,
18+
- The list of good/sufficient/phase out/insufficient TLS versions, TLS authentication, curves, hashes,
1519
key exchange algorithms, FFDHE groups, RSA key lengths, and bulk encryption algorithms were updated
1620
to match the new guidelines.
1721
- A test for Extended Master Secret (RFC7627) was added.
@@ -26,17 +30,17 @@ Most significant changes:
2630
[are now detected as such](https://github.com/internetstandards/Internet.nl/issues/1641).
2731
Several issues with OCSP stapling reliability were also resolved.
2832
- Issues were fixed where the cipher order failed to detect some bad scenarios,
29-
including some where servers preferred RSA over ECDHE, or CBC over POLY1305.
33+
including some where servers preferred RSA over ECDHE, or CBC over POLY1305.
3034
- CCM_8 ciphers are now detected when enabled on a server.
3135
- OLD ciphers are no longer detected.
32-
- The cipher order test no longer separates between "the server cipher order preference is wrong"
36+
- The cipher order test no longer separates between "the server cipher order preference is wrong"
3337
and "the server has no preference".
34-
38+
3539

3640
### Significant internal changes
3741

3842
- ...
39-
-
43+
-
4044
### Possibly required changes to deployments
4145

4246
...
@@ -105,7 +109,7 @@ The API version is updated to 2.6.0 due to the new CAA fields.
105109
- Fixed handling for [CAA with non-ascii characters](https://github.com/internetstandards/Internet.nl/pull/1788).
106110
- Fixed possible exception in [mail test prechecks](https://github.com/internetstandards/Internet.nl/pull/1787).
107111
- Fixed an [issue with rate limiting](https://github.com/internetstandards/Internet.nl/pull/1792).
108-
- Update [Django to 4.2.22](https://github.com/internetstandards/Internet.nl/pull/1795) to fix
112+
- Update [Django to 4.2.22](https://github.com/internetstandards/Internet.nl/pull/1795) to fix
109113
[CVE-2025-48432](https://www.djangoproject.com/weblog/2025/jun/04/security-releases/).
110114

111115
## 1.10.0
@@ -126,7 +130,7 @@ _Compared to the latest 1.9 release._
126130

127131
### Significant internal changes
128132

129-
- The test code no longer interfaces with libunbound, but
133+
- The test code no longer interfaces with libunbound, but
130134
[uses dnspython as a stub resolver](https://github.com/internetstandards/Internet.nl/pull/1578).
131135
- Periodic tests [are no longer enabled by default](https://github.com/internetstandards/Internet.nl/pull/1628).
132136
- UWSGI [cheaper](https://uwsgi-docs.readthedocs.io/en/latest/Cheaper.html) options are used to reduce idle processes and reduce memory consumption.
@@ -157,7 +161,7 @@ docker network rm internetnl-prod_public-internet
157161
## 1.9.3
158162

159163
- Updated the [expired PGP key](https://github.com/internetstandards/Internet.nl_content/pull/57).
160-
164+
161165
## 1.9.2
162166

163167
- Fixed an issue where static files incorrectly required authentication (#1676)
@@ -212,7 +216,7 @@ jobs to generate the same report over and over.
212216

213217
1.8.7 mainly contains various important fixes to support batch deployment.
214218

215-
* Updated sectxt to use a patched version of PGPy with a fix for a
219+
* Updated sectxt to use a patched version of PGPy with a fix for a
216220
[catastrophic regex backtracking issue](https://github.com/SecurityInnovation/PGPy/pull/467)
217221
* Updated nassl to fix memory leak in OCSP check.
218222
* Connection test zones are now re-signed every week instead of every month.
@@ -299,7 +303,7 @@ This release has API version 2.4.0:
299303

300304
## 1.7.1
301305

302-
- Fixed the new [display of TLS versions](https://github.com/internetstandards/Internet.nl/issues/944) for mail tests.
306+
- Fixed the new [display of TLS versions](https://github.com/internetstandards/Internet.nl/issues/944) for mail tests.
303307
- Fixed a [language mix-up](https://github.com/internetstandards/Internet.nl/issues/941) in the security.txt labels.
304308
- Fixed an [issue with the connection test and CSP form-action](https://github.com/internetstandards/Internet.nl/issues/945)
305309

@@ -409,7 +413,7 @@ Bugfixes
409413
- Fix some minor typos and broken link [(#574)] [(#575)]
410414
- Add a missing ' in the frame-ancestors explanation [(#578)]
411415
- An empty part of Content Security Policy gives an error [(#583)]
412-
- Recursion error when stripping nonces in IPv4 and IPv6 comparison [(#587)]
416+
- Recursion error when stripping nonces in IPv4 and IPv6 comparison [(#587)]
413417
- Remove certificate from the certificate chain in the shipped cert chain file [(#614)]
414418

415419
Dependencies
@@ -716,19 +720,19 @@ Initial public release.
716720
--- Brief description for next version ---
717721

718722
New
719-
-
723+
-
720724

721725
Changes
722-
-
726+
-
723727

724728
Bug Fixes
725729
-
726730

727731
Dependencies
728-
-
732+
-
729733

730734
Migrations
731-
-
735+
-
732736

733737
Settings
734-
-
738+
-

docker/batch-test.env

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@ IPV4_IP_TEST_TARGET_MAIL_PUBLIC=172.16.43.52
3838
IPV6_IP_TEST_TARGET_PUBLIC=fd00:43:1::51
3939
IPV6_IP_TEST_TARGET_MAIL_PUBLIC=fd00:43:1::52
4040

41-
# use easy test/test user/passwords for authenticated endpoints
42-
MONITORING_AUTH_RAW='test:$apr1$PfpYZVWM$tLUKMXt91KJV6I.CF3TOt1,test_raw:$apr1$6YuDyduL$706z.FPTe5c09R767N3W90'
43-
4441
LETSENCRYPT_STAGING=1
4542
LETSENCRYPT_EMAIL=letsencrypt@example.com
4643

docker/compose.development.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ services:
2626
# auto rebuild/reload when config files change
2727
- path: ./webserver/
2828
action: rebuild
29+
volumes:
30+
# mount monitoring credentials for testing/development
31+
- ./webserver/dev.htpasswd:/etc/nginx/htpasswd/monitoring.htpasswd:ro
2932

3033
app:
3134
develop:

docker/compose.integration-tests.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ services:
192192
public-internet:
193193
ipv6_address: $IPV6_IP_PUBLIC
194194
ipv4_address: $IPV4_WEBSERVER_IP_PUBLIC
195+
volumes:
196+
# mount monitoring credentials for testing/development
197+
- ./webserver/dev.htpasswd:/etc/nginx/htpasswd/monitoring.htpasswd:ro
195198

196199
unbound:
197200
networks:

docker/compose.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ services:
3131
environment:
3232
- INTERNETNL_DOMAINNAME
3333
- IPV6_TEST_ADDR
34-
- MONITORING_AUTH_RAW
3534
- AUTH_ALL_URLS
3635
- ALLOW_LIST
3736
- ROUTINATOR_ALLOW_LIST
@@ -56,7 +55,11 @@ services:
5655
volumes:
5756
# persist certbot configuration between restarts
5857
- certbot-config:/etc/letsencrypt
59-
- htpasswd-files:/etc/nginx/htpasswd/external
58+
# include configured password for http basic auth (if enabled)
59+
- $INTERNETNL_INSTALL_BASE/volumes/webserver/htpasswd:/etc/nginx/htpasswd
60+
# mount old static password configuration for migration
61+
- htpasswd-files:/etc/nginx/htpasswd-old
62+
# share logs with logs exporter
6063
- nginx-logs-exporter:/var/log/nginx/prometheus-nginxlog-exporter/
6164

6265
healthcheck:

docker/defaults.env

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,6 @@ ALLOW_LIST=
9191
# comma separated of IP(v6) addresses/subnets that are allowed to access the /routinator endpoint (used for multi instance deployements
9292
ROUTINATOR_ALLOW_LIST=
9393

94-
# comma separated user:htpasswd_encrypted pairs for /grafana and /prometheus, and side wide
95-
# password must already be encrypted
96-
# please not that the value needs to be enclosed by single quotes to prevent interpolation of the dollar signs
97-
# eg: MONITORING_AUTH_RAW='test1:$apr1$wGM8gxBe$DxGwifTGWZJ7nftK7LzFt/,user2:$apr1$BoZzsbb/$2NgfYCfF9lxmGrfSqsZKc/'
98-
MONITORING_AUTH_RAW=
99-
10094
# Django debug mode, on test run without debug, same as production
10195
DEBUG=False
10296

docker/deploy.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ cp -v /dist/docker/* docker
1111
# put $RELEASE into the compose.sh file
1212
envsubst '$RELEASE' < docker/compose-dist.sh > docker/compose.sh
1313
chmod a+x docker/compose.sh
14+
chmod a+x docker/user_manage.sh
1415

1516
# set release version in local.env config
1617
echo "RELEASE='$RELEASE' # deploy $(date)" >> docker/local.env

docker/develop.env

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ COMPOSE_PROJECT_NAME=internetnl-develop
1111
# enable for testing batch api
1212
ENABLE_BATCH=True
1313

14-
# use easy test/test user/passwords for authenticated endpoints
15-
MONITORING_AUTH='test:$apr1$PfpYZVWM$tLUKMXt91KJV6I.CF3TOt1'
16-
1714
LETSENCRYPT_STAGING=1
1815
LETSENCRYPT_EMAIL=letsencrypt@example.com
1916

docker/test.env

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ IPV4_IP_TEST_TARGET_MAIL_PUBLIC=172.16.43.52
3737
IPV6_IP_TEST_TARGET_PUBLIC=fd00:43:1::51
3838
IPV6_IP_TEST_TARGET_MAIL_PUBLIC=fd00:43:1::52
3939

40-
# use easy test/test user/passwords for authenticated endpoints
41-
MONITORING_AUTH_RAW='test:$apr1$PfpYZVWM$tLUKMXt91KJV6I.CF3TOt1,test_raw:$apr1$6YuDyduL$706z.FPTe5c09R767N3W90'
42-
4340
LETSENCRYPT_STAGING=1
4441
LETSENCRYPT_EMAIL=letsencrypt@example.com
4542

docker/user_manage.sh

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
#!/usr/bin/env sh
2+
23
# Small wrapper around user mgmt script shipped in webserver image
34
# For both convenience, and to have a suitable command to put in sudo
4-
/usr/bin/docker compose --env-file=docker/defaults.env --env-file=docker/host.env --env-file=docker/local.env exec -ti webserver /user_manage_inner.sh "$1" "$2"
5+
6+
set -e # fail on error
7+
8+
# determine install base (parent of directory containing this file)
9+
INTERNETNL_INSTALL_BASE=$(dirname "$(dirname "$(readlink -f "$0")")")
10+
11+
"$INTERNETNL_INSTALL_BASE/docker/compose.sh" exec -ti webserver /user_manage_inner.sh "$1" "$2"

0 commit comments

Comments
 (0)