Skip to content

MikeHopcroft/labyrinth

Folders and files

NameName
Last commit message
Last commit date
Jun 2, 2021
May 12, 2021
May 12, 2021
May 12, 2021
May 12, 2021
May 12, 2021
Jan 28, 2021
Oct 30, 2020
Feb 23, 2021
Jun 2, 2021
Mar 19, 2021
Mar 19, 2021
Jun 2, 2021
Oct 30, 2020
Nov 5, 2020
Jun 2, 2021
Apr 14, 2021
Jun 2, 2021
May 12, 2021
May 12, 2021
Feb 16, 2021
Feb 25, 2021

Repository files navigation

Labyrinth NSG

Node.js CI codecov

Labyrinth is an experimental tool for performing packet flow analysis in computer networks. Given a description of a network configuration, Labyrinth can answer questions like:

  • Which servers can receive traffic directly from the internet?
  • Can traffic from the internet reach my database?
  • Which services can my front-end web servers interact with?
  • Can my back-end web service call out to services on the internet?
  • Is the jump-box the only server that can SSH to the front-end web servers?

The Labyrinth graph algorithms are network agnostic and capable of analyzing a wide variety of networking concepts and appliances. Labyrinth makes use of converters to transform vendor-specific network configuration descriptions into Labyrinth graphs, suitable for analysis.

Currenly, Labyrinth includes a converter for Azure Resource Graphs. This converter models OSI Layer 3 traffic. This means it can reason about IP packet headers fields, like the source and destination IP addresses and ports, and the protocol. The Labyrinth algorithm is fairly generic and capable of modeling concepts from other layers such as

Try Labyrinth

Labyrinth is currently in the earliest stages of development, so documentation is sparse, and the API is evolving. If you are interested in taking a look, we recommend starting with the Labyrinth Tutorial.

How Labyrinth Works

If you are interested in learning more about how Labyrinth works, please read the Labyrinth Architectural Concepts.