Giter Site home page Giter Site logo

llevier / vigrid Goto Github PK

View Code? Open in Web Editor NEW
17.0 3.0 3.0 3.94 MB

Vigrid is a Cyber Range redesign of the GNS3 tool able to virtualize almost any physical device on many CPU. It is also able to virtualize entire networks not visible between them. Vigrid adds industrial cloning. clientless console accesses. snapshots. unlimited scalability. standalone or infrastructure and cloud designs.

License: Other

Shell 19.85% PHP 11.95% Perl 0.39% JavaScript 55.59% Makefile 0.07% CSS 0.78% HTML 11.37%
cybersecurity cyber-range network-simulation virtualization

vigrid's Introduction

Vigrid

Vigrid new release v1.1, validated for Ubuntu 22LTS.

Vigrid is an extension to the GNS3 Hypervisor to turn it to a Cyber Range or a industrial training platform.

Once GNS3 is redesigned to Vigrid standards, trainings, Blue Team/Red Team or classical Capture The Flags will be possible through unlimited (upon hardware capabilities of servers) number of clones so each user or team can work on his own.

Virtual machines can work on many CPU (amd64/x86 of course, but also ARM, PowerPC, MIPS, Sparc etc).

A simple functionnal web server provides clientless access to virtual devices consoles (telnet or graphical) without keyboard issues and virtual machine or lab basic controls (power). Finally, through easy CLI commands (Web GUI TODO), virtual machine snaping shot, massive project cloning are available. RBAC is not yet provided because it will be available with GNS3v3.

Your server power is the limit :-)

Vigrid relies on standard designs: Standalone (historical gns3 design), Standalone with NAS, slaves with NAS, scalable with NAS Vigrid covers all topics to have all features available, from start to end: NAS installation, GNS3 installation with Vigrid extensions

Name 'Vigrid' refers to the Ragnarok battleground, ultimate battle of the Gods (nordic mythology). You may also think it as 'V grid' (Virtualization Grid).

Vigrid extension is copyrighted to Laurent LEVIER, licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International

Last updates

Vigrid (main) is now API ready:
- New NGinx+PHP installations to provide device load details are now part of install scripts.
- Requests performed over HTTPS will provide cpu/network/disk details in JSON format.
- Added to vigrid-addslave the actions to add Slave to Master NGinx configuration and then address them via Vigrid Master.


- Still to update Vigrid Web pages to move to API and no longer use the dirty SSH scripts.
- Ongoing developpement of a JS interface, expected much faster response than current synchronous PHP.

New service : Vigrid deployer. Its mission is to massively install operating systems on baremetal or virtual machines. To install it, runs on your Vigrid NAS:
sudo /Vstorage/GNS3/bin/vigrid-update
sudo /Vstorage/GNS3/install/vigrid1-deployer-install.sh

Nota : Vigrid-deployer will install a DHCP server on the Vigrid NAS, it might conflict with your own one.

QUICK INSTALL

First, install the last Ubuntu server LTS version on your hosts(s).
Nota: install now validated until Ubuntu 22 LTS.

Recommendations:

  • Ubuntu:
    • 32GB for root filesystem
    • Swap at your convenience
  • GNS data storage:
    • Either on NAS or standalone servers: add more disk(s) (the bigger the better) for data and others for cache (R/W speed++). These disks for Vigrid storage will be detected and managed by the install script.

If you want to build an infrastructure (development version), please first install NAS launching:

    wget https://raw.githubusercontent.com/llevier/vigrid/main/install/vigrid1-nas-install.sh
    sudo sh vigrid1-nas-install.sh, then provide the user password.
    Nota: all script input/output is logged to a file into /tmp..

    Vigrid NAS design: the main ennemy of NAS is disk I/O. Roughly, it is considered a mecanical drive is able to perform 100 IOps. Accordingly, recommandations to have best NAS are:
    - Rely on hardware RAID (check possible performance issues related to ReadAhead & WriteBack).
    - Use RAID-1 or RAID-5, not RAID6 and more parity drives (loss of performance at writings).
    - Use as maximum of physical hard drives to spread the load, dont care about too much disk space.
    - Use SSD drives as cache, as with RAID, dont be afraid to have RAID-1 virtual drive as cache, spreading will raise IOps.
    - Disable all hardware optimisation mecanisms for cache drives (again ReadAhead & WriteBack).
    - Of course, obviously, if all hard drives are SSD, you will tremendously increase performance.

    As an example: server with 2xe5-2620v3/128GB RAM, hardware RAID5 of 10x6TB HD + RAID1 of 2x400GB SSD as cache handled around 1000 32GB GNS3 VM simultaneously over a 10Gb/s network link.

Else or to install Vigrid server(s) (standalone, scalable or cloning farm), launch:

    wget https://raw.githubusercontent.com/llevier/vigrid/main/install/vigrid2-gns-install.sh
    sudo sh vigrid2-gns-install.sh, then provide the user password.
    Nota: all script input/output is logged to a file into /tmp.

You can read the documentation for further explanations about designs, installation and usage.

IMPORTANT

When Vigrid is in NAS mode, it means many projects/clones could be launched at a time. One must keep in mind that a NAS has not infinite disk or network bandwidth. Despite all my efforts, growing timeouts etc, if you launch too many nodes at a time with virtual hard drives stored on central NAS, network or disk saturation could lead to node failure or virtual machine disk I/O errors. For now I have no other (yet) cooking recipe than checking each node load time, then put enough delays between project/nodes launches to avoid this situation. With local data risk strong reduces, so I prepared Vigrid in a new design: Hybrid. In such a design, Vigrid keeps controlling centrally but projects are restricted to specific hosts where data is stored. Of course, this risk can be manage also with better network, storage devices etc, as well as using different network interfaces and NASes. Promissing study: ZFS over GlusterFS, itself sharing over NFS 4.2 (multipath). At the moment changes on ZFS are not propagated to GlusterFS :-(

VERSIONS

For now, Vigrid is updated at high frequency and there is no starting version yet. Best method to be up to date is to regularly launch 'vigrid-update', considering this might generate short time issues. A v1 version is planned ASAP so versionning can be properly performed.

ISSUES

You can report your issues via github. For each issue, please at least provide the Vigrid Type (standalone, master etc) and the Vigrid network design (your concern, TINY of FULL cyber range).

CONTRIBUTIONS

Vigrid layer is only developped by a single person on best effort on personal time. All contributors to add new features are welcome.
Some most wanted features for a Cyber Range are in the TODO list: Cloning with docker nodes + PuppetMaster.

Feel free to contact me.

TODO with status

Topic Status
First GNS3v3 tests Postponed to new RBAC model on GNS3v3
Error handling by command in install scripts (failing command can be rerun endlessly) Queued
Change Control Tower display (project first column, then host) so start button automatically select best available host Queued
Check code for security issues (input controls etc) Periodic action
Test & validate 'projects with docker nodes' cloning Validated (limitations now known), queued
Try to build a ZFS snapshot hierarchical tree to show dependencies Queued
Add ZFS hold/release management on snapshot page Queued
Concurrent/conflicting action detector Queued
Add BTRFS management on servers (tested/validated but not implemented in Vigrid) DONE, extensive tests to perform
Finish snaping/cloning at nodes level Validated with both FS, queued
Add IPMI support for power control commands (only HP iLO for now) Queued
Add automatic ecological savings (power on/off slaves according to needs) Validated, queued
Add control tower URL to VIGRIDclones.list query (for mail sent to clone owner) Queued
Move from PHP to Javascript code so browser can control slaves directly (via Vigrid hybrid mode) with much faster web display response time Hybrid mode validated, queued
Move Vigrid NAS so it can satisfy requirements + provide parallel network sharing (major risk of projects launch failures) Study ongoing
Developing a scenario automation software (PuppetMaster) to control discrete agents (Ghosts) into project so they can perform actions. For now, only concept of a central server controlling Ghost nodes into projects has been proven. Ongoing
Creating a life simulation systems so network behaves as if real users would be working (mail, surf etc). Ongoing
Add a shortcut on each Qemu node to 'qemu rebase' node disk (thus removing appliance image dependancy) or 'qemu commit' node disk to have appliance disk updated (thus failing all other nodes depending on it). Queued

vigrid's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

vigrid's Issues

Vigrid-deployer-host

Bonjour M.

Souhaitant mettre en place mon NAS Vigrid, j'ai réalisé l'installation en suivant, premièrement l'installation vigrid1-nas-install.sh puis en utilisant le vigrid1-deployer-install.sh.
Après avoir réglé des soucis de packages (git, grub,...), les deux installations se font sans erreur.
Cependant, ma machine ne connaît pas la commande mentionner à la fin de l'installation qui permet l'ajout d'hôte : vigrid-deployer-host.
Quand est-ce que cette commande est censé être appris par mon PC ?

Cordialement,
Le Bohec Pierre

Installing vigrid NAS

Hello,
I have a problem installing the vigrid NAS with git version 1.1. I'm using a virtual machine under Ubuntu 22 and I installed the NAS on VDI. But during installation, I was always confronted with a problem concerning the '/Vstorage/GNS3/vigrid/lib/systemd/system/vigrid-ZFSexportUDP.service' repository. The fact is that this repository does not exist and is not created during installation. When I go to /Vstorage/GNS3 I don't have /vigrid. I hope you'll have a solution for the proper implementation of the repository.

Respectfully

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.