separating-node-client-traffic.asciidoc 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. [role="xpack"]
  2. [[separating-node-client-traffic]]
  3. === Separating node-to-node and client traffic
  4. Elasticsearch has the feature of so called {ref}/modules-transport.html[TCP transport profiles]
  5. that allows it to bind to several ports and addresses. {es} {security-features} extends on this
  6. functionality to enhance the security of the cluster by enabling the separation
  7. of node-to-node transport traffic from client transport traffic. This is important
  8. if the client transport traffic is not trusted and could potentially be malicious.
  9. To separate the node-to-node traffic from the client traffic, add the following
  10. to `elasticsearch.yml`:
  11. [source, yaml]
  12. --------------------------------------------------
  13. transport.profiles.client: <1>
  14. port: 9500-9600 <2>
  15. xpack.security:
  16. type: client <3>
  17. --------------------------------------------------
  18. <1> `client` is the name of this example profile
  19. <2> The port range that will be used by transport clients to communicate with
  20. this cluster
  21. <3> Categorizes the profile as a `client`. This accounts for additional security
  22. filters by denying request attempts on for internal cluster operations
  23. (e.g shard level actions and ping requests) from this profile.
  24. If supported by your environment, an internal network can be used for node-to-node
  25. traffic and public network can be used for client traffic by adding the following
  26. to `elasticsearch.yml`:
  27. [source, yaml]
  28. --------------------------------------------------
  29. transport.profiles.default.bind_host: 10.0.0.1 <1>
  30. transport.profiles.client.bind_host: 1.1.1.1 <2>
  31. --------------------------------------------------
  32. <1> The bind address for the network that will be used for node-to-node communication
  33. <2> The bind address for the network used for client communication
  34. If separate networks are not available, then
  35. {stack-ov}/ip-filtering.html[IP Filtering] can
  36. be enabled to limit access to the profiles.
  37. When using SSL for transport, a different set of certificates can also be used
  38. for the client traffic by adding the following to `elasticsearch.yml`:
  39. [source, yaml]
  40. --------------------------------------------------
  41. transport.profiles.client.xpack.security.ssl.truststore:
  42. path: /path/to/another/truststore
  43. password: x-pack-test-password
  44. transport.profiles.client.xpack.security.ssl.keystore:
  45. path: /path/to/another/keystore
  46. password: x-pack-test-password
  47. --------------------------------------------------
  48. To change the default behavior that requires certificates for transport clients,
  49. set the following value in the `elasticsearch.yml` file:
  50. [source, yaml]
  51. --------------------------------------------------
  52. transport.profiles.client.xpack.security.ssl.client_authentication: none
  53. --------------------------------------------------
  54. This setting keeps certificate authentication active for node-to-node traffic,
  55. but removes the requirement to distribute a signed certificate to transport
  56. clients. For more information, see
  57. {stack-ov}/java-clients.html#transport-client[Configuring the Transport Client to work with a Secured Cluster].