Server Admin
FAQ › EUZOS Server › Server Admin · English
Wat is het?
Server Admin (srvadmin) is de app waarmee een beheerder EUZOS-servers beheert vanaf een EUZOS-pc (EUZOS Desktop). Het is een ondertekend native EUZOS-programma uit de appcatalogus, geïnstalleerd in apps/, en het enige programma dat het recht server_admin krijgt. De app zelf ziet geen sleutel en geen token: hij geeft de kernel een verzoek, en de kernel doet de cryptografie en het netwerk. Hij praat met de server via het beheerprotocol: HTTPS (TLS 1.3, gepinde sleutel) op TCP-poort 8446, los van de cachepoort 8445, zodat de firewall ze apart kan openen.
Een EUZOS Server in productie wordt alleen zo beheerd: hij heeft geen SSH, en zijn eigen console kan de firewall alleen bekijken.
Hoe doe ik…?
Hoe installeer en start ik Server Admin?
Op een EUZOS-pc, ingelogd met een account met beheerrechten:
apps install srvadmin
serveradmin
Zonder inloggen: "log in first (an account with admin rights)". Als de app ontbreekt: "(to install: apps install srvadmin)". Server Admin draait alleen op x86-64.
Na apps install srvadmin staat Server Admin ook in het menu (kolom APPS) als grafische app: zie hieronder.
Hoe gebruik ik de grafische app Server Admin?
Open Server Admin in het menu. De app staat er alleen in als de ondertekende app srvadmin geïnstalleerd is (alleen beheerders krijgen een downloadtoken) en je bent ingelogd; anders toont het venster "Alleen voor beheerders". Beheren kan alleen vanaf een EUZOS-pc: er is geen webbeheer en geen ander besturingssysteem.
- Servers: de servers van je organisatie (van de profielserver): naam, online of offline, adres, extern adres, ID, versie, geïnstalleerd op en door, en de pakketten aan of uit. Klik (of pijltjes en Enter) op een server.
- Een server, met tabbladen: Status (versie, draait sinds, schijf, LAN, aanmelding, verkeer; Nu aanmelden en controleren, Server herstarten; de publieke sleutels), Pakketten (een schakelaar per pakket), Firewall (regels met Sluiten, voorstellen van pakketten met Openen, een regel openen), Netwerk (adapters met DHCP gebruiken, een vast adres, het externe adres), Poorten (een schakelaar per netwerkadapter, USB-poort en USB-klasse; Poorten), Back-up (stand, bewaartermijn, quotum, gebruik per account en apparaat), Bestandsserver (gedeelde mappen, rechten, groepen, quotum, prullenbak), Webserver (sites, certificaten met ACME-status en verloopdatum, proxyregels, uploaden uit Mijn bestanden, logboek), Pakketcache (inhoud, gebruik, legen, welke apps), Logboek, Terminal (één consolecommando tegelijk, standaard uit) en Updates (gepland, UPDATES.md).
- Elke wijziging vraagt eerst om bevestiging, met de precieze opdracht (bijvoorbeeld
pakket-uit web bevestig); Esc of Annuleren doet niets. De uitkomst komt als groene of rode kaart boven in het tabblad, met de redencode uitgelegd (bijvoorbeeld "dit heeft Werkplekbeheer nodig op deze server"). - Toetsenbord: pijl links/rechts wisselt van tabblad, Tab gaat naar het eerste veld (en verder), Enter voert het veld uit, Esc verlaat het veld of gaat terug naar de servers. Het schermtoetsenbord komt bij een veld. Licht en donker thema en alle 34 talen.
De app gebruikt dezelfde beheeracties als serveradmin (het tabblad Terminal gebruikt console, console-set en console-check): elke opdracht krijgt een beheerbewijs van de profielserver en wordt ondertekend met de apparaatsleutel. Een beheerbewijs wordt 5 minuten hergebruikt (het is 10 minuten geldig en alleen bruikbaar met een verse uitdaging en de apparaatsleutel van deze pc); bij uitloggen wordt het gewist. Het logboek van de pc krijgt alleen de actienaam, nooit argumenten, antwoorden, tokens of sleutels; de registratiecode van de installer wordt niet getoond.
Hoe gebruik ik het tabblad Terminal (een opdracht op een server uitvoeren)?
Server Admin heeft per server een tabblad Terminal. Het is geen SSH en geen nieuwe poort: elke opdracht is één ondertekend verzoek met zijn antwoord over het bestaande beheerprotocol (poort 8446), met jouw beheerbewijs en de sleutel van deze pc. Er is geen interactieve sessie en er blijft geen proces aan hangen.
- Standaard uit. Een server accepteert niets totdat een beheerder de terminal aanzet: Aanzetten in het tabblad (met bevestiging), of
serveradmin <id> console-set on confirm. Uitzetten (ofconsole-set off) stopt het weer. De instelling is het bestand\EOS\FW\CONSOLE.TXTop de server; een ontbrekend of vreemd bestand betekent uit. - Typ een opdracht en druk op Enter of Uitvoeren. De server zegt eerst hoe hij de opdracht indeelt (
console-check):- alleen lezen (op de lijst van de server:
help,pci,usb,ports,disks,sysinfo,ps,mem,ip,network,packages,log [n],audit [n]en nog enkele): wordt meteen uitgevoerd; - al het andere (verandert iets, herstart, of staat niet op de lijst): de app vraagt eerst en toont de precieze opdracht; pas na Uitvoeren gaat hij weg. Dit is de standaard voor elke onbekende opdracht;
- geweigerd: draait nooit, ook niet bevestigd (reden
command_denied).
- alleen lezen (op de lijst van de server:
- De weigerlijst: niets dat geheimen of sleutels toont of verandert (
pckey,sign,hostkey,wifi,vpn,vault,tpm,profile,workplace,smb,sshd,bootvaren andere), niets dat bestanden leest of schrijft (cat,type,get,put,read,dump,copy), en elke opdracht die een sleutelbestand of geheim noemt (PCKEY,HOSTKEY,WPKEY,AUDKEY,*KEY.TXT,*TLS.TXT,secret,token,password,seed). De precieze lijsten zijnDENIED,SECRET_WORDSenREAD_ONLYinlibs/workplace/src/console.rs. Alleen consolecommando's die de server al heeft kunnen draaien, en alleen die zijn eigen consoleregels toestaan (een productieserver heeft een korte lijst). - Het antwoord is beperkt tot 48 KiB en eindigt met
[... output truncated after 48 KiB]als het is afgekapt. De app bewaart de laatste 8 uitvoeren (300 regels elk). - Geschiedenis: omhoog en omlaag in het opdrachtveld loopt door eerder getypte opdrachten (de laatste 50).
- Elke opdracht staat in het auditlogboek (Auditlogboek) met jouw account en deze pc; van een geweigerde opdracht alleen het eerste woord (er kan een geheim in staan). Geweigerde pogingen (terminal uit, geweigerd) staan er ook in.
- Selecteren en kopiëren: Server Admin heeft nog geen tekstselectie, dus de uitvoer kan niet uit het venster worden geselecteerd of gekopieerd.
- Redenen staan zoals in de andere tabbladen:
console_off("de terminal staat uit op deze server"),command_denied,confirmation_needed.
Wat heeft de pc nodig?
- een apparaatsleutel:
pckey createschrijft\EOS\FW\PCKEY.TXT(op de ESP van de interne schijf);pckeytoont de publieke sleutel en de vingerafdruk; - de pc geregistreerd bij de organisatie op de profielserver (
pc-register '<naam>' <sleutel> <organisatie>, zie CLI); - een account dat beheerder is van de organisatie waar de server bij hoort.
Hoe zie ik welke servers ik mag beheren?
serveradmin (of serveradmin list). Per server: id (16 hex), naam, LAN-adres, stand, en (nieuwere servers) wie hem installeerde, wanneer, en het externe adres.
Hoe geef ik een server een opdracht?
serveradmin <server-id> <actie> [arg], bijvoorbeeld serveradmin <id> status of serveradmin <id> firewall-open allow tcp 8445 lan. Alle acties staan in de tabel hieronder.
Waarom werd mijn opdracht geweigerd?
Server Admin toont "refused or failed:" met een uitleg van de redencode, bijvoorbeeld: niet ingelogd, geen beheerrechten voor deze organisatie, geen apparaatsleutel, pc niet geregistreerd of ingetrokken, pc/server/beheerder niet in dezelfde organisatie, onbekende of ingetrokken werkplekserver, server zonder organisatie, het beheerbewijs is verlopen (klok?), de uitdaging klopte niet, of de server heeft zich nog niet aangemeld bij de profielserver.
Details
Een opdracht gaat in vier stappen (crate::server_admin::execute_with):
- Beheerbewijs: de kernel vraagt de profielserver, met het pc-token van de ingelogde gebruiker, om een beheerbewijs (
POST …/admin-proof, inhoudwerkplek=<id>,pcsleutel=<apparaatsleutel>). Het antwoord bevatok,lan=(de LAN-URL van de server),tls=(zijn TLS-pin) en het bewijsdocumentEUZOS-werkplek-beheerbewijs-v1, ondertekend door de profielserver en 10 minuten geldig. - Uitdaging:
POST /beheer/v1/uitdagingop poort 8446 van de server (valt bij oudere servers terug op de poort van de LAN-URL), met de TLS-sleutel gepind. Antwoord:ok,uitdaging=<32 hex>(eenmalig, 60 s geldig). - Opdracht: de kernel maakt
EUZOS-werkplek-opdracht-v1en ondertekent die met de apparaatsleutel van de pc (crate::device_key::sign_command). - Versturen:
POST /beheer/v1/opdrachtmet het bewijs gevolgd door de opdracht. De server controleert (euzos_workplace::admin::check): de sleutel van de profielserver (uitPROFILE.TXT), omgeving en server, zijn eigen id en organisatie, de tijd, de pc-handtekening (dezelfde pc-sleutel als in het bewijs) en de uitdaging. Daarna voert hij de actie uit en schrijft in het logboek wie wat deed vanaf welke pc.
Dreigingsmodel in het kort
Alleen op een EUZOS-pc (de systeemaanroep bestaat elders niet en de sleutels zitten in de kernel); alleen door een beheerder van de organisatie van de server (het bewijs); alleen vanaf een geregistreerde pc (de apparaatsleutel); vers (uitdaging, korte geldigheid).
Naslag
Consoleopdrachten
| Opdracht | Argumenten | Wat het doet |
|---|---|---|
serveradmin | – of list (oud lijst) | de servers die je mag beheren (alleen bureaublad) |
serveradmin | <server-id> <actie> [arg] | een actie sturen; de rest van de regel is het argument |
pckey | [create] (oud maak) | de apparaatsleutel van de pc tonen of maken (alleen bureaublad) |
apps install srvadmin | – | Server Admin uit de catalogus installeren |
Acties van Server Admin
Het opdrachtwoord is Engels; het oude Nederlandse woord (de draadnaam) wordt op de opdrachtregel nog geaccepteerd. Op de draad wordt de Nederlandse naam gebruikt en ondertekend.
| Opdrachtwoord | Draadnaam | Argument | Wijzigt? | Wat het doet |
|---|---|---|---|---|
status | status | – | nee | versie, draait sinds (uptime, met de seconden tussen haakjes), schijf, aanmelden, organisatie, adres, pin, verkeer |
cache | cache | – | nee | apps en versies in de cache |
fill | vul | – | ja | nu aanmelden en de cache controleren |
apps | apps | <a,b> (≤ 4) | ja | welke apps de cache bewaart (schrijft apps= in WORKPLC.TXT) |
network | netwerk | – | nee | LAN-URL, adapters, stand van SSH en het overzicht van network |
network-set | netwerk-zet | <adapter> dhcp | <adapter> statisch <ip>/<prefix> <gateway|-> <dns1> [<dns2>] | extern <adres>|geen | ja | het netwerkbestand wijzigen en toepassen |
log | logboek | – | nee | de laatste 100 regels van het logboek van de server |
audit | audit | [n] | nee | het blijvende auditlogboek, gecontroleerd (hashketen en MAC's), daarna de nieuwste n records (Auditlogboek) |
reboot | herstart | – | ja | herstart over 2 s |
revoke | intrekken | – | ja | de sleutels en WORKPLC.TXT wissen: na een herstart een gewone pc; trek hem ook in op de profielserver |
reset | opnieuw | – | ja | nieuwe sleutels; opnieuw registreren en herstarten |
firewall | firewall | – | nee | regels, voorstellen van pakketten, aantal geblokkeerd |
firewall-open | firewall-open | <regel> | ja | een regel vooraan toevoegen |
firewall-close | firewall-sluit | <regel> | ja | precies die regel verwijderen |
firewall-set | firewall-zet | <regel>; <regel>; … | ja | alle regels vervangen (het beheerprotocol moet toegelaten blijven) |
packages | pakketten | – | nee | het scherm Pakketten |
package-on | pakket-aan | <id> | ja | een pakket aanzetten |
package-off | pakket-uit | <id> [confirm] | ja | zonder confirm alleen tonen wat er gebeurt; confirm (oud/draad bevestig) doet het |
cache-clear | cache-clear | [confirm] | ja | de pakketcache legen (Pakketcache); zonder confirm alleen tonen wat er gebeurt |
files | files | [<subopdracht>] | ja | de Bestandsserver: shares, quotum, rechten, groepen, gebruik (Bestandsserver) |
web | web | <subopdracht> | hangt af | het pakket Webserver: sites, proxyregels, certificaten, logboek, uploads (zie Webserver) |
backup | backup | – | nee | het pakket Back-up: toestand, bewaarbeleid, quotum, gebruik per account en apparaat (Back-up) |
backup-set | backup-set | daily=<n> weekly=<n> monthly=<n> quota-account-gib=<n> quota-device-gib=<n> | ja | bewaarbeleid en quotum van Back-up (naar BACKUP.TXT; de opruimtaak draait kort daarna) |
ports | ports | – | nee | netwerkadapters, USB-poorten en USB-klassen met hun stand (Poorten) |
ports-set | ports-set | net <adapter> on|off [confirm], usb <positie> on|off [confirm], usb-class <klasse> on|off [confirm] | ja | één aan- of uitzetten (naar PORTS.TXT); nooit de adapter van de beheerverbinding of de poort van de opstartstick; de laatste adapter en het enige toetsenbord vragen confirm |
console-check | console-check | [<opdracht>] | nee | de stand van de terminal (console=on|off) en, bij een opdracht, zijn klasse (read, confirm, denied) |
console-set | console-set | on confirm | off | ja | de terminal aanzetten (vraagt confirm) of uitzetten; geschreven naar CONSOLE.TXT; standaard uit |
console | console | [confirm] <opdracht> | ja | één consolecommando uitvoeren en de uitvoer teruggeven (≤ 48 KiB); alleen als de terminal aan staat, nooit een geweigerde opdracht, en een opdracht die niet alleen-lezen is alleen met confirm |
Regelsyntaxis: allow|deny tcp|udp|icmp <poort|van-tot|-> lan|anywhere|<ip>[/<prefix>] (oud: toestaan|weigeren, overal) (zie Netwerk en firewall).
Functies en modules
| Onderdeel | Rol |
|---|---|
user/srvadmin (main.rs) | de app: leest de opdrachtregel, toont antwoorden, legt redencodes uit |
systeemaanroep 0x100a (crate::server_admin::syscall) | verzoek van de app aan de kernel; alleen met PERM_SERVER_ADMIN |
crate::server_admin::execute, execute_with | bewijs, uitdaging, ondertekenen, versturen |
crate::server_admin::command | de consoleopdracht serveradmin (start de app) |
crate::device_key::{public_key, sign_command, command} | de apparaatsleutel van de pc (PCKEY.TXT) |
crate::workplace::admin, execute | de serverkant: uitdaging en opdracht afhandelen, de acties |
euzos_workplace::admin::{Proof, Command, Action, check, CONFIRM} | de documentformaten en de controle |
crate::app_store::SERVER_ADMIN | de appnaam srvadmin |
euzos_ui::apps::server_admin | de grafische app: toestand, opmaak (een plan van wat waar staat), tekenen, klikken, toetsen |
euzos_ui::apps::server_admin_data | de antwoorden lezen: serverlijst, regels, pakketten, firewall, netwerk, redencodes |
crate::server_admin_app | kernelkant van de app: alleen met srvadmin geïnstalleerd, verzoeken in een eigen thread via crate::server_admin::execute |
euzos_workplace::console (libs/workplace/src/console.rs) | het beleid van de terminal: standaard uit, weigerlijst, indeling, groottegrens (op de host getest) |
crate::server_console (kernel/src/server/console.rs) | de serverkant van de terminal: de instelling CONSOLE.TXT, de opdracht uitvoeren met opgevangen uitvoer |
crate::server_admin::forget | bij uitloggen: de hergebruikte beheerbewijzen weg |
euzos-ui-preview serverbeheer <map> | renders van alle schermen (nl/en, 1366×768 en 1920×1080; make ui → build/ui/serverbeheer) |
Configuratiebestanden
| Bestand | Waar | Betekenis |
|---|---|---|
\EOS\FW\PCKEY.TXT | de pc | de seed van de apparaatsleutel (64 hex, geheim) |
\EOS\FW\WPKEY.TXT, WPTLS.TXT | de server | de sleutels van de server (geheim) |
\EOS\FW\PROFILE.TXT | de server | de profielserver en zijn publieke sleutel, om het bewijs te controleren |
API-eindpunten
Op de profielserver (aangeroepen door de kernel van de pc met het pc-token; de kernel gebruikt de oude paden):
| Methode | Engels pad | Oud pad | Doel |
|---|---|---|---|
| GET | /api/workplace/v1/admin-list?token= | /api/werkplek/v1/beheerlijst | de servers die deze beheerder mag beheren |
| POST | /api/workplace/v1/admin-proof?token= | /api/werkplek/v1/beheerbewijs | een beheerbewijs voor één server; met een limiet |
Op de server, poort 8446 (HTTPS, gepinde TLS-sleutel; alleen POST):
| Methode | Pad | Inhoud | Antwoord |
|---|---|---|---|
| POST | /beheer/v1/uitdaging | leeg | ok\nuitdaging=<32 hex>\n |
| POST | /beheer/v1/opdracht | bewijsdocument + opdrachtdocument | ok\n<tekst> of fout\nreden=<code>\n |
De beheerpaden antwoorden alleen op 8446 en de cachepaden alleen op de cachepoort; anders 404 pad.
Protocolberichten en formaten
Verzoek app ↔ kernel (systeemaanroep 0x100a, ≤ 1024 bytes):
actie=lijst
werkplek=<16 hex>
actie=<draadactie>
arg=<tekst>
Beheerbewijs (ondertekend door de profielserver):
EUZOS-werkplek-beheerbewijs-v1
omgeving=<omgeving>
server=<profielserver>
werkplek=<id>
organisatie=<organisatie>
pcsleutel=<64 hex>
account=<e-mailadres van de beheerder>
beheer=werkplek
uitgegeven=<unix-tijd>
geldig-tot=<unix-tijd>
sleutel-id=<16 hex>
handtekening=<128 hex>
Opdracht (ondertekend met de apparaatsleutel van de pc):
EUZOS-werkplek-opdracht-v1
werkplek=<id>
pcsleutel=<64 hex>
uitdaging=<32 hex>
actie=<draadactie>
arg=<tekst, ≤ 256>
handtekening=<128 hex>
De handtekening is Ed25519 over <soort>\0 + alle bytes tot en met de \n vóór handtekening=. Een document is hoogstens 4096 bytes; elke sleutel hoogstens één keer. Een bewijs is hoogstens 10 minuten geldig (+120 s klokspeling).
Redencodes (draadwaarden): van de controle van de server ongeldig, bewijs_handtekening, pc_handtekening, actie_onbekend, omgeving_onjuist, andere_werkplek, andere_organisatie, bewijs_verlopen, andere_pc, uitdaging_onjuist; van de beheerpoort geen_willekeur, te_vaak, geen_serversleutel, niet_aangemeld, klok, pad; van de acties geen_rol, pakket_onbekend, pakket_binnenkort, confirmation_needed, package_not_installed, console_off, command_denied; van de kernel van de pc niet_ingelogd, geen_apparaatsleutel, werkplek_zonder_adres, werkplek_geen_uitdaging; van de profielserver onder andere geen_beheerder, pc_onbekend, pc_ingetrokken, werkplek_onbekend, werkplek_ingetrokken, werkplek_zonder_organisatie, te_vaak.
Lijstregel (actie=lijst): werkplek=<id>\t<naam>\t<lan>\t<actief|niet actief>\t<geïnstalleerd door>\t<datum>\t<extern adres>.
Zie ook
- docs/WORKPLACE.md (fase E2, "Server Admin")
- docs/WORKPLACE-PROTOCOL.md
- docs/EDITIONS.md
- Pakketten, Netwerk en firewall, Organisaties, API
EUZOS