← FAQ
FAQ

Netwerk en firewall

FAQ › EUZOS Server › Netwerk en firewall · English

Wat is het?

Drie dingen bepalen hoe een EUZOS Server bereikbaar is:

  • de netwerkinstelling per adapter: DHCP of een vast adres, plus een optioneel extern adres (publiek IP-adres of DNS-naam als de server achter NAT staat) dat bij het registreren wordt doorgegeven;
  • de inkomende firewall: altijd aan, standaard dicht, met ondertekende regels die op een server in productie alleen Server Admin kan wijzigen;
  • het SSH-beleid: een server in productie heeft geen SSH; alleen een testbuild (de SBX-images) kan sshd draaien, voor de ontwikkeling.

Alleen IPv4: de netwerkstack kent IPv6 nog niet.

Hoe doe ik…?

Hoe zie ik de netwerkinstelling?

network op de console (of network in Server Admin). Per adapter: nummer, naam, MAC-adres, verbinding, de ingestelde stand (dhcp of het vaste adres) en het adres dat nu in gebruik is; een publiek vast adres krijgt een opmerking; de laatste regel toont het externe adres.

Hoe geef ik een adapter een vast adres?

network <adapter> static <ip>/<prefix> <gateway|-> <dns1> [<dns2>]

<adapter> is de naam (bijvoorbeeld bcm0), het nummer uit network, of het MAC-adres. Het netmasker mag ook als 255.255.255.0 in plaats van /<prefix>. Een gateway - betekent geen gateway (alleen het eigen netwerk). De wijziging gaat naar het netwerkbestand en geldt meteen. Dit mag ook op de console van een server in productie (netwerkbeheer).

Hoe zet ik een adapter terug op DHCP?

network <adapter> dhcp.

Hoe stel ik het externe adres in?

network external <adres> (een IP-adres of DNS-naam) of network external none om het weg te halen.

Hoe bekijk ik de firewall?

firewall op de console, of firewall in Server Admin: de regels op volgorde (de regel van het beheerprotocol en de SSH-ontwikkelregel zijn gemarkeerd), een voorstel van Werkplekbeheer om de cachepoort te openen als die nog niet open is, en het aantal geblokkeerde pakketten.

Hoe open ik een poort, bijvoorbeeld de cache voor het LAN?

Met Server Admin: serveradmin <server> firewall-open allow tcp 8445 lan. Op de console van een server in productie kun je de firewall alleen bekijken; in een testbuild kan de console het ook: firewall open <regel> / firewall close <regel>.

Hoe sta ik ping toe?

ICMP-echo staat standaard dicht. Open het met een regel als allow icmp - lan.

Waarom kan ik de regel van het beheerprotocol niet weghalen?

Een regellijst zonder regel die TCP 8446 toelaat, wordt geweigerd: de server zou dan niet meer te beheren zijn ("without a rule that allows the admin protocol (tcp 8446), the server can no longer be managed").

Waarom werkt SSH niet op mijn server?

Op een productiebuild start sshd nooit en verwijdert de firewall elke regel die poort 22 toelaat. Op een testbuild start sshd alleen als AUTHKEYS.TXT er is, SSHD.TXT niet off (oud uit) zegt, en — op een werkplekserver — het rolbestand dev-ssh=yes (oud ontwikkel-ssh=ja) heeft. Anders: "sshd: not on a workplace server (only test build with dev-ssh=yes in WORKPLC.TXT)".

Details

Netwerkbestand

De kernel leest \EOS\FW\NETWORK.TXT (en, als oude terugval, NETWERK.TXT). Bij het opstarten en bij elke verbinding krijgt een adapter met een vaste regel dat adres (nooit door DHCP vernieuwd); de andere gebruiken DHCP op de eerste adapter met een kabel. Ongeldige regels worden genegeerd met een melding in het logboek. Vaste adressen worden gecontroleerd: geldig IPv4, niet 0.0.0.0, loopback, multicast, klasse E of link-local; niet het netwerk- of broadcastadres; de gateway binnen het subnet; één of twee DNS-servers. Hoogstens 16 adapters en 2 DNS-servers; een extern adres hoogstens 253 tekens (daar mag een IPv6-adres, het is alleen een hint voor de profielserver).

Firewall

crate::net::firewall filtert inkomende pakketten op de eigen netwerkstack van EUZOS (euzos_ip::firewall). Altijd toegelaten zijn antwoorden op wat de server zelf opent: TCP-pakketten zonder SYN-vlag (een bestaande verbinding; de controle is !syn), UDP van bronpoort 67 naar 68 (DHCP), van 53 (DNS) en van 123 (NTP), en ICMP-foutmeldingen en echo-antwoorden. Al het andere moet bij een regel passen; regels worden op volgorde bekeken, de eerste die past beslist (toestaan of weigeren), geen passende regel betekent dicht. Hoogstens 64 regels.

Standaard (geen geldig bestand):

RegelStandaard
Beheerprotocol van Server Admin, TCP 8446open vanuit het eigen subnet (allow tcp 8446 lan)
SSH, TCP 22alleen testbuild: open vanuit het eigen subnet (de ontwikkelregel); een productiebuild heeft geen SSH en ook deze regel niet
ICMP-echo (ping)dicht tot de beheerder hem opent
Back-up, TCP 8448 (Back-up)dicht; het pakket stelt allow tcp 8448 lan voor
Cache van Werkplekbeheer, TCP 8445, en elke andere poortdicht; het pakket stelt openen alleen voor

De regels staan in \EOS\FW\FIREWALL.TXT, ondertekend met de sleutel van de server (WPKEY.TXT, Ed25519). Een gewijzigd of onleesbaar bestand, of een bestand zonder WPKEY.TXT om het te controleren, telt niet: dan gelden de standaardregels en zegt het logboek dat. Elke wijziging gaat in het logboek van de server. Terwijl de regels gewijzigd worden, komen alleen antwoorden door.

SSH-beleid

BuildServerrolsshd
productie (-prod-images)elkenooit; de firewall verwijdert elke allow-regel voor poort 22
test (-sbx-images)geen werkplekroltoegestaan (start bij het opstarten als AUTHKEYS.TXT er is en SSHD.TXT niet off is)
testwerkplekrolalleen met dev-ssh=yes in WORKPLC.TXT

Het grafische serverinstallatieprogramma schrijft dev-ssh=yes in elke testbuild; het tekstinstallatieprogramma en workplace setup alleen als sshd op dat moment draait. Een testbuild kan toch met de omgeving PROD praten: de SSH-regel hangt af van de build, niet van de omgeving.

Grote overdrachten via SSH worden niet afgebroken: sshd vernieuwt zijn sleutels (rekey, RFC 4253 §9) als de client erom vraagt (OpenSSH na ongeveer 1 GiB) en uit zichzelf na 2^28 pakketten, 1 GiB of een uur, zonder de sessie te sluiten.

Naslag

Consoleopdrachten

OpdrachtArgumentenWat het doet
network–adapters, standen en het externe adres tonen
network<adapter> dhcpDHCP voor die adapter
network<adapter> static <ip>/<prefix> <gateway|-> <dns1> [<dns2>]vast adres (statisch wordt ook geaccepteerd, het is het bestandswoord)
networkexternal <adres> | external nonehet externe adres instellen of wissen (oude aliassen extern, geen; ook -)
firewall–de regels, voorstellen en het aantal geblokkeerd tonen
firewallopen <regel>alleen testbuild: een regel vooraan toevoegen
firewallclose <regel> (oud sluit)alleen testbuild: precies die regel verwijderen
sshd[start|stop|status]de SSH-server (geweigerd waar het beleid hierboven het verbiedt)
ip, dhcp [renew] [adapter], ping, dnsgedeelde netwerkopdrachten, zie Netwerk van het bureaublad

netwerk is de oude alias van network.

Functies en modules

OnderdeelRol
crate::net::static_ip::{config, apply, set_now, set, change, text, external_address, command}het netwerkbestand en de opdracht network
euzos_ip::static_ip::{Network, Mode, Static, read_external, read_mac}het netwerkbestand lezen, controleren en schrijven
crate::net::firewall::{init, allows, open, close, set, close_ports, text, command}de firewall in de kernel
euzos_ip::firewall::{Rule, Rules, defaults, without_ssh, ADMIN_PORT, DEV_SSH}regelsyntaxis, vergelijken, ondertekenen
crate::workplace::{public_key, sign, ssh_allowed}sleutel om het firewallbestand te controleren/ondertekenen; SSH-regel van de rol
crate::net::sshd::{command, role_allows}sshd en zijn beleidscontrole
crate::network_services (main.rs)start NTP en (als het mag) sshd zodra er een adres is

Configuratiebestanden

BestandRegel / sleutelWaardenBetekenis
\EOS\FW\NETWORK.TXT (oud NETWERK.TXT)<MAC> dhcpDHCP voor de adapter met dat MAC-adres
<MAC> statisch <ip>/<prefix> [<gateway>|-] <dns1> [<dns2>]masker ook als a.b.c.dvast adres
extern <adres>IP-adres of DNS-naamextern adres achter NAT
\EOS\FW\FIREWALL.TXTeerste regelEUZOS-firewall-v1kop
regel=<regel>zie hieronderéén regel, op volgorde
handtekening=128 hexEd25519-handtekening met de serversleutel
\EOS\FW\SSHD.TXTheel het bestandoff (oud uit)sshd niet starten
\EOS\FW\AUTHKEYS.TXTOpenSSH-regelsssh-ed25519 …toegestane SSH-sleutels (testbuild)
\EOS\FW\WORKPLC.TXTdev-ssh (oud ontwikkel-ssh)yes (oud ja)SSH op een werkplekserver in een testbuild

De bestandswoorden van NETWORK.TXT (statisch, dhcp, extern) zijn schijfformaat en blijven Nederlands. FIREWALL.TXT wordt sinds versie 2 in het Engels geschreven (rule=, signature=, allow, deny, anywhere); een ondertekend bestand van versie 1 (regel=, handtekening=, toestaan, weigeren, overal) wordt nog gelezen. Het grafische serverinstallatieprogramma en network schrijven NETWORK.TXT; de oude naam NETWERK.TXT wordt nog gelezen als NETWORK.TXT ontbreekt.

Protocolberichten en formaten

Regel: allow|deny tcp|udp|icmp <poort|van-tot|-> lan|anywhere|<ip>[/<prefix>]

  • allow = toelaten (oud toestaan, ook open), deny = tegenhouden (oud weigeren, ook dicht);
  • poort 1–65535 of van-tot; bij icmp is de poort -;
  • bron lan (het eigen subnet van de adapter waarop het pakket binnenkomt), anywhere (oud overal; overal vandaan, ook internet), of een IPv4-adres of subnet.

Firewallbestand, voorbeeld (algemeen), versie 2:

EUZOS-firewall-v2
version=7
rule=allow tcp 8446 lan
rule=allow tcp 8445 lan
rule=allow icmp - lan
signature=<128 hex>

De handtekening dekt het domein EUZOS-firewall-v2\0 en de tekst zoals die uit de gelezen regels opnieuw geschreven wordt, met de regel version= (File::to_sign). De teller gaat bij elke wijziging omhoog en firewall toont hem (file version:), zodat een ouder ondertekend bestand dat teruggezet is zichtbaar wordt; voorkomen vraagt opslag die een aanvaller met de schijf niet kan schrijven (TPM, nog niet). Een bestand van versie 1 (EUZOS-firewall-v1, regel=, handtekening=, Nederlandse woorden, domein EUZOS-firewall-v1\0) blijft geldig; de volgende wijziging schrijft versie 2.

Zie ook