The Dynamic Firewall Manager is a C++-based project that allows dynamic management of firewall rules on Linux-based systems. It enables users to add, remove, and view firewall rules programmatically using use-case-specific scenarios. This project leverages D-Bus for inter-process communication (IPC) to provide a flexible and efficient interface for managing firewall rules.
-
Dynamic Rule Management:
- Add firewall rules dynamically based on use cases.
- Remove specific or all rules with ease.
- View active rules currently applied to the system.
-
Use-Case Flexibility:
- Manage rules tailored to specific application or network scenarios.
-
Linux Integration:
- Uses Linux’s native
iptablesornftablesfor rule management.
- Uses Linux’s native
-
D-Bus IPC:
- Inter-process communication for interacting with the firewall system.
- Allows multiple applications to request and manage firewall rules.
- Operating System: Linux (any modern distribution supporting
iptablesornftables) - Dependencies:
- G++ or Clang compiler
- CMake for build configuration
- D-Bus development libraries (
libdbus-1-dev) iptablesornftablesinstalled on the system
-
Clone the Repository:
git clone https://github.com/sidharth-sanal-01/Dynamic_Firewall.git cd Dynamic_Firewall -
Build the Project:
- Create a build directory:
mkdir build && cd build
- Configure the project with CMake:
cmake ..
- Compile the project:
make
- Create a build directory:
-
Install:
- Run the following command to install the binary (optional):
sudo make install
- Run the following command to install the binary (optional):
Start the application from the terminal:
./DynamicFirewall -
Rule Manager:
- Implements logic for adding, removing, and listing firewall rules.
- Interfaces with
iptablesornftablescommands.
-
D-Bus IPC:
- Provides an IPC layer for communication.
- Exposes APIs for external applications to interact with the firewall.
-
CLI Interface:
- User-friendly command-line interface for managing rules.
- Parses and executes user commands.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Commit your changes and push the branch:
git push origin feature-name
- Submit a pull request.
This project is licensed under the Private License. See the LICENSE file for more details.
For questions, issues, or feature requests, please contact: