Pakke (Package)
Package.toml-fil
Pakken inneholder alltid en package.toml
-fil, som definerer pakken og måten den er pakket inn på. Dette er et eksempel på package.toml
-filen:
[package]
name = "debian11"
description = "Debian 11.4.0 minimal CLI."
version = "1.3.0"
authors = ["Developer developers@cyber-range.nei"]
license = "MIT"
readme = "src/readme.md"
categories = ["exercise", "testing"]
[content]
type = "vm"
[virtual-machine]
operating_system = "Debian"
architecture = "amd64"
type = "OVA"
file_path = "src/debian11.ova"
accounts = [{name = "root", password = "password"}, {name = "user", password ="password"}]
Filen inneholder for øyeblikket tre seksjoner: [package]
, [content]
og en seksjon avhengig av pakke typen, for eksempel [virtual-machine]
.
First seksjon – Pakke (Package)
Seksjonen [package]
definerer følgende:
- Name – pakkenavn, som brukes når du søker etter pakken. Trenger ikke å være det samme som pakkefilens faktiske navn.
- Description – pakkebeskrivelse, kan være hva som helst.
- Version – versjon av pakken, bruker de semantiske versjoneringsreglene. Når vi laster opp en pakke, sjekker vi om samme versjon av pakken allerede eksisterer.
- Authors – pakke forfattere, kan være hva som helst.
- License – navnet på programvarelisensen som pakken er utgitt under. Lisensfeltet tolker SPDX 2.1 lisensuttrykk og lisensnavnet må være en kjent lisens fra SPDX lisenslisten. Flere lisenser kan brukes sammen med lisensuttrykk. Se SPDX-spesifikasjonen for mer informasjon.
- Readme – definerer plasseringen av readme-filen i pakken
- Category – en liste over kategorier pakken tilhører
- Assets – inneholder alle filene som vil bli kopiert til gjeste-OS. Array-medlemmer inneholder arrays som spesifiserer filen som skal kopieres, plasseringen på målet og filrettighetene som skal settes på den kopierte filen. Pakke type for hvilken det er obligatorisk:
feature
,condition
,inject
,event
,malware
[package]
name = "debian11"
description = "Debian 11.4.0 minimal CLI."
version = "1.3.0"
authors = ["Developer developers@cyber-range.nei", "Someone someone@cyber-range.nei"]
license = "MIT"
readme = "src/readme.md"
categories = ["exercise", "testing"]
assets = [ ["src/configs/my-cool-config1.yml", "/var/opt/my-cool-service1", "744", ], ]
Variabel | Obligatorisk | Type |
---|---|---|
name | ja | string |
description | ja | string |
version | ja | string |
authors | nei | array of strings |
license | ja | string |
readme | ja | string |
category | nei | array of strings |
assets | nei | array of arrays |
Andre seksjon – Innhold (Content)
Seksjonen [content]
spesifiserer pakke typen og innholdets forhåndsvisning hvis aktuelt:
- Type – spesifiserer typen av pakken, mulige typer:
vm
,condition
,feature
,inject
,event
,malware
,exercise
,other
. Flere innholdstyper per pakke støttes ikke. - Preview – lister forhåndsvisningsinnholdet ved å bruke
type:value
format. Forhåndsvisning gyldige typer erpicture
,video
,code
.Value
er en liste over filbaner til forhåndsvisningsfilene.
[content]
type = "vm"
preview = [
{type = "picture", value = ["pic.jpg", "src/pic2.jpg"]},
]
Variabel | Obligatorisk | Type |
---|---|---|
type | ja | string |
preview | nei | array of hashmaps |
Tredje seksjon
Den tredje seksjonen avhenger av pakke typen og er obligatorisk.
Virtuell maskin (Virtual Machine)
[virtual-machine]
- accounts – spesifiserer kontoene knyttet til VM-en.
- Operating_system – operativsystemet til VM-en. Vi sjekker om det gitte operativsystemet finnes i vår forhåndsdefinerte enum; hvis ikke, blir det tildelt "unknown" type. Liste over støttede operativsystemer:
AlmaLinux,
AmazonLinux,
Asianux,
CentOS,
Debian,
DebianGNULinux,
EComStation,
Fedora,
Flatcar,
FreeBSD,
KylinLinuxAdvancedServer,
MacOs,
MiracleLinux,
NeoKylinLinuxAdvancedServer,
OpenSuse,
OracleLinux,
OSX,
Pardus,
Photon,
RedHatEnterpriseLinux,
RockyLinux,
SCOOpenServer,
SCOUnixWare,
Solaris,
SUSELinuxEnterprise,
Ubuntu,
Windows10,
Windows11,
Windows2000,
Windows7,
Windows8,
WindowsServer2003,
WindowsServer2008,
WindowsServer2012,
WindowsServer2016,
WindowsServer2019,
WindowsServer2022,
WindowsVista,
WindowsXP
- Architecture – arkitekturen til VM-en. Vi sjekker om den gitte arkitekturen finnes i vår forhåndsdefinerte enum; hvis ikke, blir det tildelt "unknown" type. Liste over støttede operativsystemer:
amd64,
arm64,
armhf,
i386
- Type – filtypen til VM-en. Foreløpig støttes kun "OVA" type.
- File_path – definerer plasseringen av filen i pakken.
[virtual-machine]
accounts = [{name = "user1", password = "password1"},{name = "user2", password = "password2"}]
operating_system = "Debian"
architecture = "amd64"
type = "OVA"
file_path = "src/some-image.ova"
Variabel | Obligatorisk | Type |
---|---|---|
accounts | nei | en rekke kontoer som består av strengverdier for navn og passord |
operating_system | nei | string |
architecture | nei | string |
type | ja | string |
file_path | ja | string |
Betingelse (Condition)
[condition]
- Action – bane til den kjørbare filen.
- Interval – intervallet mellom kommando utførelser i sekunder.
[condition]
action = "executable/path.sh"
interval = 30
Variabel | Obligatorisk | Type |
---|---|---|
action | ja | string |
interval | ja | integer |
Funksjon (Feature)
[feature]
- Type – definerer funksjonstypen, kan være
service
,configuration
ellerartifact
. Hvis type =service
, er ogsåaction
feltet definert, ellers er feltet ikke definert. - Action – kommando å utføre, eller bane til en kjørbar fil.
- Restarts – boolsk som bestemmer om en maskin starter på nytt etter filkopiering eller utførelsesoperasjoner. Hvis en maskin må starte på nytt etter en tidligere nevnt operasjon, sett verdien til
true
.
[feature]
type = "service"
action = "ping google.com"
restarts = true
Variabel | Obligatorisk | Type |
---|---|---|
type | ja | string |
action | nei | string |
restarts | ja | bool, default false |
Injiser (Inject)
[inject]
- Action – kommando å utføre, eller bane til en kjørbar fil.
- Restarts – boolsk som bestemmer om en maskin starter på nytt etter filkopiering eller utførelsesoperasjoner. Hvis en maskin må starte på nytt etter en tidligere nevnt operasjon, sett verdien til
true
.
[inject]
action = "ping google.com"
restarts = true
Variabel | Obligatorisk | Type |
---|---|---|
action | nei | string |
restarts | ja | bool, default false |
Hendelse (Event)
[event]
- File_path – definerer plasseringen av filen i pakken.
[event]
file_path = "event.md"
Variabel | Obligatorisk | Type |
---|---|---|
file_path | ja | string |
Skadelig programvare (Malware)
[malware]
- Action – bane til den kjørbare filen.
[malware]
action = "installer/install_something.sh"
Variabel | Obligatorisk | Type |
---|---|---|
action | ja | string |
Øvelse (Exercise)
[exercise]
- File_path – definerer plasseringen av filen i pakken.
[exercise]
file_path = file_path = "exercise.yml"
Variabel | Obligatorisk | Type |
---|---|---|
file_path | ja | string |
Annet (Other)
[other]
- Ingen felt under
other
pakke type, men det er obligatorisk å definere seksjonen.