diff --git a/plugin/src/main/java/org/elasticsearch/xpack/security/rest/RestRequestFilter.java b/plugin/src/main/java/org/elasticsearch/xpack/security/rest/RestRequestFilter.java
index fa859305a45..344586aff83 100644
--- a/plugin/src/main/java/org/elasticsearch/xpack/security/rest/RestRequestFilter.java
+++ b/plugin/src/main/java/org/elasticsearch/xpack/security/rest/RestRequestFilter.java
@@ -6,6 +6,7 @@
 package org.elasticsearch.xpack.security.rest;
 
 import org.elasticsearch.ElasticsearchException;
+import org.elasticsearch.common.Nullable;
 import org.elasticsearch.common.Strings;
 import org.elasticsearch.common.bytes.BytesReference;
 import org.elasticsearch.common.collect.Tuple;
@@ -16,6 +17,7 @@ import org.elasticsearch.common.xcontent.support.XContentMapValues;
 import org.elasticsearch.rest.RestRequest;
 
 import java.io.IOException;
+import java.net.SocketAddress;
 import java.util.Map;
 import java.util.Set;
 
@@ -50,6 +52,18 @@ public interface RestRequestFilter {
                     return true;
                 }
 
+                @Nullable
+                @Override
+                public SocketAddress getRemoteAddress() {
+                    return restRequest.getRemoteAddress();
+                }
+
+                @Nullable
+                @Override
+                public SocketAddress getLocalAddress() {
+                    return restRequest.getLocalAddress();
+                }
+
                 @Override
                 public BytesReference content() {
                     if (filteredBytes == null) {
diff --git a/plugin/src/test/java/org/elasticsearch/xpack/security/rest/RestRequestFilterTests.java b/plugin/src/test/java/org/elasticsearch/xpack/security/rest/RestRequestFilterTests.java
index 4f004e06554..a3730d73008 100644
--- a/plugin/src/test/java/org/elasticsearch/xpack/security/rest/RestRequestFilterTests.java
+++ b/plugin/src/test/java/org/elasticsearch/xpack/security/rest/RestRequestFilterTests.java
@@ -14,6 +14,8 @@ import org.elasticsearch.test.ESTestCase;
 import org.elasticsearch.test.rest.FakeRestRequest;
 
 import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.util.Collections;
 import java.util.Map;
 
@@ -69,4 +71,15 @@ public class RestRequestFilterTests extends ESTestCase {
         assertEquals("bar", second.get("foo"));
         assertNull(second.get("third"));
     }
+
+    public void testRemoteAddressWorks() throws IOException {
+        BytesReference content = new BytesArray("{\"root\": {\"second\": {\"third\": \"password\", \"foo\": \"bar\"}}}");
+        RestRequestFilter filter = () -> Collections.singleton("*.third");
+        InetSocketAddress address = new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 32768);
+        FakeRestRequest restRequest =
+                new FakeRestRequest.Builder(NamedXContentRegistry.EMPTY).withContent(content, XContentType.JSON)
+                        .withRemoteAddress(address).build();
+        RestRequest filtered = filter.getFilteredRequest(restRequest);
+        assertEquals(address, filtered.getRemoteAddress());
+    }
 }