From bdb23594ad3e0c47c8568ce028a7c244a406cf9d Mon Sep 17 00:00:00 2001 From: Buster Neece Date: Fri, 28 Apr 2023 01:47:44 -0500 Subject: [PATCH] Tighten allowed IPs to avoid brute-force workarounds. --- CHANGELOG.md | 4 ++ frontend/vue/components/Admin/Settings.vue | 5 +- .../Admin/Settings/SecurityPrivacyTab.vue | 46 ++++++++++++++- src/Controller/Api/Admin/RelaysController.php | 5 +- .../Api/Stations/Requests/SubmitAction.php | 8 ++- src/Entity/Enums/IpSources.php | 56 +++++++++++++++++++ .../Migration/Version20230428062001.php | 26 +++++++++ src/Entity/Settings.php | 32 +++++++++++ src/Http/ServerRequest.php | 27 --------- src/RateLimit.php | 6 +- 10 files changed, 181 insertions(+), 34 deletions(-) create mode 100644 src/Entity/Enums/IpSources.php create mode 100644 src/Entity/Migration/Version20230428062001.php diff --git a/CHANGELOG.md b/CHANGELOG.md index ee16191088..abac36d980 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ release channel, you can take advantage of these new features and fixes. ## Code Quality/Technical Changes +- In sections of our application that depend on IP addresses, we've tightened our allowed IP addresses significantly to + improve security and prevent brute-force flooding. If you're using a reverse proxy or CloudFlare, you should update + your "IP Address Source" under the "System Settings" page. + ## Bug Fixes --- diff --git a/frontend/vue/components/Admin/Settings.vue b/frontend/vue/components/Admin/Settings.vue index 580f62bef8..d1d39639a3 100644 --- a/frontend/vue/components/Admin/Settings.vue +++ b/frontend/vue/components/Admin/Settings.vue @@ -133,6 +133,7 @@ const {form, v$, ifValid} = useVuelidateOnForm( always_use_ssl: {}, api_access_control: {}, + ip_source: {}, check_for_updates: {}, acme_email: {}, @@ -150,13 +151,14 @@ const {form, v$, ifValid} = useVuelidateOnForm( use_external_album_art_in_apis: {}, use_external_album_art_when_processing_media: {}, last_fm_api_key: {}, + $validationGroups: { generalTab: [ 'base_url', 'instance_name', 'prefer_browser_url', 'use_radio_proxy', 'history_keep_days', 'enable_static_nowplaying', 'enable_advanced_features' ], securityPrivacyTab: [ - 'analytics', 'always_use_ssl', 'api_access_control' + 'analytics', 'always_use_ssl', 'ip_source', 'api_access_control' ], servicesTab: [ 'check_for_updates', @@ -179,6 +181,7 @@ const {form, v$, ifValid} = useVuelidateOnForm( enable_advanced_features: true, analytics: null, always_use_ssl: false, + ip_source: 'local', api_access_control: '*', check_for_updates: 1, acme_email: '', diff --git a/frontend/vue/components/Admin/Settings/SecurityPrivacyTab.vue b/frontend/vue/components/Admin/Settings/SecurityPrivacyTab.vue index ad5e6859c6..5ced1c9a1f 100644 --- a/frontend/vue/components/Admin/Settings/SecurityPrivacyTab.vue +++ b/frontend/vue/components/Admin/Settings/SecurityPrivacyTab.vue @@ -69,9 +69,32 @@ + + + + + +