Categories

Category cover

Automation
155 posts

Category cover

Learning paths
119 posts

Category cover

CISO
22 posts

Category cover

Security
20 posts

Category cover

Notes
19 posts

Category cover

Personal Security
18 posts

Category cover

Infrastructure
12 posts

Category cover

OT/ICS
5 posts

Category cover

Books
3 posts

Category cover

UNetLab
3 posts

Category cover

Write-up
3 posts

Category cover

OSInt
2 posts

Category cover

My life
1 posts

Customizing EVE-NG

Andrea Dainese
July 27, 2024
Post cover

Let’s delve into the most important part: customizing EVE-NG for DevNetOps. In particular, we will proceed to:

  • Configure an internal network dedicated to device management.
  • Import the labs from the GitHub repository  dedicated to DevNetOps courses.
  • Compile and install Python  3.10 (not required in EVE-NG 6)
  • Create a user dedicated to development, with a dedicated Pythonenvironment.
  • Utilize Visual Studio Code  for remote development on the EVE-NG server.

Configure an Internal Management Network

In automation, each lab we create requires a seemingly trivial yet essential characteristic: the IP addresses of the devices must be accessible from the automation system. If the EVE-NG PRO  version has a native feature (NAT Cloud) that simplifies this, in EVE-NG CE, we need to find a strategy to achieve the same result.

The goal is to configure an additional network on EVE-NG that allows us to connect the management interfaces of the devices we will use for our labs, whether they are virtual (internal to EVE-NG) or physical (PLC and other external physical devices). The diagram below summarizes our intention:

Firstly, let’s clarify the networking of EVE-NG and introduce some concepts in Linux in general.

A Linux system represents its network interfaces with various names, typically prefixed (eth, ens…) associated with an identifier number. Network interfaces can represent either a physical network card or a virtual network card. In our environment, we find that the physical network card is represented by eth0, but there are other network cards named pnet.

We can view the network interfaces of the system with one of the following commands:

ifconfig -a
ip link

The configured pnet interfaces are actually virtual switches (bridges) configured by default during installation:

In particular, we see that the bridge pnet0 is associated with the physical interface eth0. Or, in other words, anything associated with the bridge pnet0 will also be transmitted on the eth0 network. As we’ll see in the web interface, we can add Cloud networks. Cloud networks are simply the pnet bridges. In particular, the pnet0 network is also used for web access. In fact, the management IP address is associated with the bridge pnet0, as we can see using one of the following commands:

ifconfig pnet0
ip address show pnet0

We can then configure an IP address on the pnet9 network and connect the management interfaces of the devices to the Cloud9 network.

EVE-NG, based on Ubuntu Linux Server 20.04 LTS, configures networks via the /etc/network/interfaces file. In particular, we need to configure the part related to the pnet9 bridge as follows:

We use the APIPA  network, defined to be local. In this sense, in an Enterprise context, we have reasonable certainty of not overlapping with other networks. The remaining pnet2-9 interfaces can be deleted.

We can now reload the modified network configuration:

/etc/init.d/networking restart

If we ever want to associate a physical interface with this bridge, we need to add the line:

bridge_ports eth1

Continue reading the post on Patreon .