Node Network Security
This guide provides a technical implementation for a Sentry Node architecture. The primary objective is to isolate a validator node from the public internet to enhance security and mitigate direct attacks, such as DDoS. The validator node communicates exclusively with a set of trusted Sentry Nodes, which act as its relays to the broader peer-to-peer network.
This guide uses Lighthouse as the example client, which defaults to p2p port 9000
, and ufw
(Uncomplicated Firewall) for network
rule management.
Architecture Overview
The setup consists of two distinct components:
Validator Node (VAL0
): This machine runs the validator client and a beacon node. It is completely isolated from the public
internet and does not accept connections from or initiate connections to untrusted peers.
Sentry Nodes (SEN1
, SEN2
, SEN3
): These are standard beacon nodes exposed to the public internet. They find peers and sync
the blockchain as normal. The validator node (VAL0) will connect only to these trusted sentry nodes.
Sentry Node Configuration
The Sentry Nodes are configured to be accessible on the public network to discover and connect with other Ethereum peers, while maintaining a restrictive firewall.
Apply the following ufw
rules to each Sentry Node (SEN1
, SEN2
, SEN3
):
Once the firewall is configured, install and run the Lighthouse beacon node on each sentry as per the official documentation. These nodes will connect to the mainnet using public bootnodes.
Validator Node Configuration
The Validator Node is configured for maximum isolation. It will deny all traffic by default, only permitting connections to and from the local private network where the Sentry Nodes reside.
This configuration assumes all nodes (VAL0
, SEN1
, SEN2
, SEN3
) are on the same private network (e.g., a cloud VPC or a physical LAN using private IP ranges like 10.0.0.0/8
or 192.168.0.0/16
).
Apply the following ufw
rules to the Validator Node (VAL0
):
Discovery and Static Peering
The final step is to configure the Validator Node (VAL0
) to connect exclusively to the Sentry Nodes. Since VAL0
cannot access the public internet, it cannot use public bootnodes and must be given the addresses of the sentries.
Obtain Sentry Node Addresses
First, you must retrieve the Ethereum Node Record (ENR) or multiaddress for each of your running Sentry Nodes. This can typically be found in the startup logs of the sentry's beacon node or by querying its API.
Configure Validator Peering
Use the retrieved ENRs or multiaddresses to configure the VAL0
beacon node startup command. This forces it to only peer with your trusted sentries.
-
Option 1: Using
--boot-nodes
(Recommended) Pass a comma-separated list of the Sentry Nodes' ENRs. -
Option 2: Using
--libp2p-addresses
Alternatively, pass a comma-separated list of the Sentry Nodes' multiaddresses.
With this configuration, your validator is now shielded from the public internet, significantly improving its security.