diff --git a/core/core.services.yml b/core/core.services.yml
index 5cd3422..e1afa8c 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -7,6 +7,7 @@ parameters:
     default: keyvalue.database
   factory.keyvalue.expirable:
     default: keyvalue.expirable.database
+  filter_protocols: {}
 services:
   # Simple cache contexts, directly derived from the request context.
   cache_context.ip:
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index 6a5ce77..47dc211 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -466,8 +466,8 @@ public function preHandle(Request $request) {
     $this->container->get('request_stack')->push($request);
 
     // Set the allowed protocols once we have the config available.
-    $allowed_protocols = $this->container->get('config.factory')->get('system.filter')->get('protocols');
-    if (!isset($allowed_protocols)) {
+    $allowed_protocols = $this->container->getParameter('filter_protocols');
+    if (!$allowed_protocols) {
       // \Drupal\Component\Utility\UrlHelper::filterBadProtocol() is called by
       // the installer and update.php, in which case the configuration may not
       // exist (yet). Provide a minimal default set of allowed protocols for
diff --git a/core/modules/system/config/install/system.filter.yml b/core/modules/system/config/install/system.filter.yml
deleted file mode 100644
index 12ce55a..0000000
--- a/core/modules/system/config/install/system.filter.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-protocols:
-  - http
-  - https
-  - ftp
-  - news
-  - nntp
-  - tel
-  - telnet
-  - mailto
-  - irc
-  - ssh
-  - sftp
-  - webcal
-  - rtsp
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
index 7cde50d..12b0e6c 100644
--- a/core/modules/system/config/schema/system.schema.yml
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -126,17 +126,6 @@ system.diff:
           type: integer
           label: 'Number of trailing lines in a diff'
 
-system.filter:
-  type: config_object
-  label: 'Filter settings'
-  mapping:
-    protocols:
-      type: sequence
-      label: 'Allowed protocols'
-      sequence:
-        type: string
-        label: 'Protocol'
-
 system.logging:
   type: config_object
   label: 'Logging settings'
diff --git a/sites/default/default.services.yml b/sites/default/default.services.yml
old mode 100644
new mode 100755
index ecb1c43..b5b6a17
--- a/sites/default/default.services.yml
+++ b/sites/default/default.services.yml
@@ -96,3 +96,18 @@ parameters:
     # Default key/value expirable storage service to use.
     # @default keyvalue.database.expirable
     # default: keyvalue.database.expirable
+  # Provider protoctols we allow to generate URLs for.
+  filter_protocols:
+    - http
+    - https
+    - ftp
+    - news
+    - nntp
+    - tel
+    - telnet
+    - mailto
+    - irc
+    - ssh
+    - sftp
+    - webcal
+    - rtsp
