initial commit
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
%! Author = alex
|
||||
%! Date = 2/26/24
|
||||
|
||||
% Preamble
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
% Packages
|
||||
\usepackage{time}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{hyperref}
|
||||
\usepackage[backend=biber, style=authoryear, citestyle=authoryear-comp]{biblatex}
|
||||
\addbibresource{references.bib}
|
||||
|
||||
|
||||
\title{A Distributed System for Deep Packet Inspection and Event Detection}
|
||||
\author{Alexander Blank \\ Leipzig University - Chair of Mathematics and Computer Science}
|
||||
\date{\today}
|
||||
|
||||
% Document
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\begin{abstract}
|
||||
This paper proposes a conceptual design for a distributed system aimed at enhancing deep packet
|
||||
inspection and event detection within large-scale network environments, a cornerstone of network security.
|
||||
It explores the integration of scalable, fault-tolerant architectures with modern technologies such as
|
||||
Apache Kafka for message brokering and Redis for state management, highlighting the potential for real-time
|
||||
analysis and anomaly detection.
|
||||
Through theoretical examination and design proposals, this work seeks to underscore the challenges and
|
||||
solutions associated with protecting expansive network infrastructures.
|
||||
While acknowledging the existence of similar systems, this project emphasizes the educational process of
|
||||
designing a network security solution, offering insights into system scalability, fault tolerance,
|
||||
and the practical application of theoretical knowledge.
|
||||
This endeavor not only contributes to the academic exploration of network security challenges but also
|
||||
enhances understanding of distributed system architectures' role in mitigating these challenges.
|
||||
\end{abstract}
|
||||
|
||||
|
||||
\section{Introduction}\label{sec:introduction}
|
||||
The escalating complexity and scale of modern networks pose significant challenges to traditional
|
||||
network security measures, necessitating the development of innovative, scalable solutions capable of real-time
|
||||
threat detection and analysis.
|
||||
This paper introduces a practical distributed system designed to meet these demands through deep packet inspection
|
||||
(DPI) and event detection.
|
||||
Utilizing a scalable, fault-tolerant architecture integrated with Apache Kafka for efficient message brokering and
|
||||
Redis for effective state management, the system offers a robust solution for monitoring and analyzing
|
||||
network traffic across large-scale environments.
|
||||
|
||||
Detailing the development and implementation phases, this work highlights the system's design principles,
|
||||
key functionalities, and its ability to adaptively scale, ensuring comprehensive network security coverage.
|
||||
By showcasing the system's deployment and its proficiency in detecting diverse network anomalies, the paper aims to
|
||||
contribute to the enhancement of network security mechanisms, addressing the critical need for systems that can
|
||||
evolve in tandem with the networks they protect.
|
||||
|
||||
Due to a length limitation, the paper focuses on the conceptual design and the system's key components, omitting
|
||||
detailed implementation and deployment aspects.
|
||||
More detailed information on the system's implementation and deployment can be found in the
|
||||
project's repository or provided by the author upon request.
|
||||
|
||||
|
||||
\section{Method}\label{sec:method}
|
||||
The distributed system is composed of at least 4 components, each with a specific role in the overall
|
||||
functionality of the system.
|
||||
Each component can be scaled horizontally without having to change the configuration of the system.
|
||||
The work will be distributed automatically to the available components, and the system will be able to
|
||||
handle the increased load without any manual intervention.
|
||||
|
||||
To actually use the results of the system, additional components can be added, that react to, or interact
|
||||
with changes in the network state or the individual nodes' analysis results.
|
||||
|
||||
Figure~\ref{fig:system_diagram} shows a diagram of the system's components and their interactions.
|
||||
% show a diagram of the system
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{resources/system_diagram}
|
||||
\caption{The systems components and their interactions.}
|
||||
\label{fig:system_diagram}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Packet Processor}\label{subsec:packet-processor}
|
||||
This component is responsible for analyzing batches of incoming packets,
|
||||
based on processing steps defined in the configuration of the system.
|
||||
|
||||
The system accepts network packets from a Kafka topic, which are then processed by the packet processors.
|
||||
Each processor takes in a predefined number of packets and processes them
|
||||
based on a list of processing steps, which are defined in the configuration of the system.
|
||||
Processing steps are defined as a list of functions, which are applied to each packet in the batch.
|
||||
The resulting information is written to a Kafka topic, which is then consumed by the state merger component.
|
||||
|
||||
\subsection{State Merger}\label{subsec:state-merger}
|
||||
This component is responsible for merging the information produced by the packet processor into a global state.
|
||||
Merging behaviour is defined in the configuration of the system.
|
||||
Each processing step also needs a merging function, that defines how the information produced by the processing
|
||||
step is merged into the global state.
|
||||
|
||||
A state merger will take in batches of processed packets, apply the respective merging functions to them and
|
||||
save the resulting global network state to a Redis database.
|
||||
A locking mechanism is used to ensure that no information is lost on concurrent writes to the database.
|
||||
|
||||
\subsection{Work Dispatcher}\label{subsec:work-dispatcher}
|
||||
This component is responsible for distributing the work resulting from the network state to a work queue.
|
||||
Work packages contain the node identity of the node that should be analyzed and the creation time to ensure that
|
||||
timeouts can clean up old packages that might otherwise clog up the work queue.
|
||||
An interval can be set, that defines how often each node should be analyzed.
|
||||
|
||||
Additionally to dispatching work packages, the work dispatcher also takes care of the results of said work packages
|
||||
by processing result messages from the result queue and updating the node registry accordingly.
|
||||
If a result does not come in after a given timeout, the work dispatcher will dispatch the work package again,
|
||||
taking into consideration any changes in network state that happened until then.
|
||||
|
||||
\subsection{Node Analysis}\label{subsec:node-analysis}
|
||||
This component is responsible for analyzing the network state of a given node and producing results based on
|
||||
configured analysis steps.
|
||||
The analysis steps are defined in the configuration of the system and contain a dataset function, that defines
|
||||
how the data for the analysis is retrieved from the global network state, and a model and scaler, that define
|
||||
the actual analysis model and, if needed, a scaling model, that gets applied to the extracted dataset before
|
||||
it is fed into the model.
|
||||
Depending on the model used, a model function needs to be given, that defines how to interact with it.
|
||||
For each analysis step, a interpretation function can be given, that will be applied to the models result to
|
||||
produce a usable interpretation or human-readable result.
|
||||
The set of results of each analysis step will then get written to the resul queue.
|
||||
|
||||
\subsection{Node Registry}\label{subsec:node-regsitry}
|
||||
The node registry contains all information analyzed by the system, such as the last time a node was analyzed
|
||||
and the result of each of the analysis steps.
|
||||
The registry can then be used by other components to react to these results, such as a recognition of an attack,
|
||||
that might trigger a countermeasure.
|
||||
|
||||
\subsection{Processing Step}\label{subsec:processing-step}
|
||||
As a proof of concept, a simple processing step is implemented, that converts the current network state based
|
||||
on the packets it receives into a graph representation of the network.
|
||||
This graph representation then serves as a base for further processing steps and the event detection component.
|
||||
The graph encompasses the nodes of the network as vertices and the connections between the nodes as edges.
|
||||
Each edge gets the data associated to the connection on a per connection and per second basis as edge attributes,
|
||||
based on the configuration of the source fields.
|
||||
Since this has the disadvantage of being limited to a resolution of one second and having a rather complex merging
|
||||
function, it should be noted that this is only a proof of concept and can be replaced by more sophisticated
|
||||
processing steps, which are tailored to the specific use case of the system.
|
||||
|
||||
\subsection{Analysis Models}
|
||||
There are two implemented models as a proof of concept for the event detection component.
|
||||
|
||||
The first model is a simple random forest classifier, which is trained on the dataset of network traffic
|
||||
developed in the lecture.
|
||||
Its purpose is to detect an incoming attack for any given node in the network.
|
||||
The attack is defined bye the attack column given by the dataset.
|
||||
On unseen test data, the model achieves a precision of 99.9\% and a recall of 99.9\% being trained on appropriaetly
|
||||
weighted data to reflect the huge class imbalance in the dataset.
|
||||
|
||||
|
||||
The second model is a neural network classifier aimed at detecting nodes that are behaving anomalously, i.e.\ nodes
|
||||
that are sources of attacks.
|
||||
The neural network is also trained on the dataset of network traffic developed in the lecture.
|
||||
This model achieves a precision of 99.9\% and a recall of 95.2\% on unseen test data.
|
||||
The lower recall is due to the fact that, as stated above, the dataset is highly imbalanced, and as a rather
|
||||
complex model architecture, the neural network is prone to overfitting on the majority class.
|
||||
Extending the dataset with more data from the minority class would likely improve the recall of the model.
|
||||
|
||||
However, the models are not the focus of this paper, and therefore, they are not discussed in detail and can
|
||||
be considered a proof of concept for the event detection component.
|
||||
They can easily be replaced by more sophisticated models, which are trained on more extensive datasets.
|
||||
|
||||
|
||||
\section{Future Work}
|
||||
Since the current implementation is only a proof of concept, there are many areas that can be improved and
|
||||
extended in the future.
|
||||
|
||||
The current implementation is based on a single network state, that needs to be written to and read from the
|
||||
Redis database on each update, limiting the scalability of the system.
|
||||
A shard-based approach can be used to distribute the network state across multiple distinct network states, which
|
||||
enables the global state to be distributed across multiple Redis instances, thus improving the scalability of the
|
||||
system.
|
||||
|
||||
The current processing approach is based on a network graph representation, which is updated in its entirety on each
|
||||
update of the network state, limiting the scalability of the merging step.
|
||||
To improve the performance of the system, switching to partial graph updates, which only update the parts of the
|
||||
graph that have changed, would be beneficial.
|
||||
Additionally, a binary merge method can be used to further distribute the work load on the merging step.
|
||||
Switching to different database architectures, such as a graph database for the network state and a time-series
|
||||
database for the network traffic, can also improve the performance of the system.
|
||||
|
||||
Interacting with Kafka and Redis require serialization and deserialization of the data, which can be a bottleneck
|
||||
and security risk.
|
||||
At the moment, python's pickle module is used for serialization and deserialization, which is not secure and
|
||||
needs to be replaced by a more secure serialization method such as Apache Avro upon deployment.
|
||||
|
||||
However, the most important future work is the extension of the system's analysis capabilities.
|
||||
At the moment, the models are heavily limited by the dataset used to train them.
|
||||
Extending the dataset with more data from the minority class would likely improve the recall, and thus the
|
||||
overall performance of the models.
|
||||
Different approaches to the analysis of the network state can be implemented, such as unsupervised learning on the
|
||||
graph representation for clustering or anomaly detection or transformer based approaches for capturing long-range dependencies
|
||||
in the traffic patterns of the network could prove beneficial.
|
||||
Additional representations of the network state can be implemented, that allow for a different perspective on
|
||||
the network state.
|
||||
|
||||
|
||||
\section{Conclusion}
|
||||
In summary, this paper has presented a conceptual design for a distributed system to enhance deep packet
|
||||
inspection and event detection within large-scale network environments.
|
||||
Despite its theoretical nature and the limitations posed by the current implementation,
|
||||
the proposed system demonstrates significant potential for real-time analysis, anomaly detection,
|
||||
and network security enhancement. Future work will focus on improving scalability, performance,
|
||||
and analysis capabilities, with the aim of developing a more sophisticated and efficient system.
|
||||
Through continuous improvement and adaptation, this project contributes to the ongoing evolution of network
|
||||
security mechanisms, ensuring they remain effective against the challenges of modern network infrastructures.
|
||||
|
||||
|
||||
|
||||
\printbibliography
|
||||
|
||||
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user