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):
| Regel | Standaard |
|---|---|
| Beheerprotocol van Server Admin, TCP 8446 | open vanuit het eigen subnet (allow tcp 8446 lan) |
| SSH, TCP 22 | alleen 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 poort | dicht; 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
| Build | Serverrol | sshd |
|---|---|---|
productie (-prod-images) | elke | nooit; de firewall verwijdert elke allow-regel voor poort 22 |
test (-sbx-images) | geen werkplekrol | toegestaan (start bij het opstarten als AUTHKEYS.TXT er is en SSHD.TXT niet off is) |
| test | werkplekrol | alleen 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
| Opdracht | Argumenten | Wat het doet |
|---|---|---|
network | – | adapters, standen en het externe adres tonen |
network | <adapter> dhcp | DHCP voor die adapter |
network | <adapter> static <ip>/<prefix> <gateway|-> <dns1> [<dns2>] | vast adres (statisch wordt ook geaccepteerd, het is het bestandswoord) |
network | external <adres> | external none | het externe adres instellen of wissen (oude aliassen extern, geen; ook -) |
firewall | – | de regels, voorstellen en het aantal geblokkeerd tonen |
firewall | open <regel> | alleen testbuild: een regel vooraan toevoegen |
firewall | close <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, dns | gedeelde netwerkopdrachten, zie Netwerk van het bureaublad |
netwerk is de oude alias van network.
Functies en modules
| Onderdeel | Rol |
|---|---|
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
| Bestand | Regel / sleutel | Waarden | Betekenis |
|---|---|---|---|
\EOS\FW\NETWORK.TXT (oud NETWERK.TXT) | <MAC> dhcp | DHCP voor de adapter met dat MAC-adres | |
<MAC> statisch <ip>/<prefix> [<gateway>|-] <dns1> [<dns2>] | masker ook als a.b.c.d | vast adres | |
extern <adres> | IP-adres of DNS-naam | extern adres achter NAT | |
\EOS\FW\FIREWALL.TXT | eerste regel | EUZOS-firewall-v1 | kop |
regel=<regel> | zie hieronder | één regel, op volgorde | |
handtekening= | 128 hex | Ed25519-handtekening met de serversleutel | |
\EOS\FW\SSHD.TXT | heel het bestand | off (oud uit) | sshd niet starten |
\EOS\FW\AUTHKEYS.TXT | OpenSSH-regels | ssh-ed25519 … | toegestane SSH-sleutels (testbuild) |
\EOS\FW\WORKPLC.TXT | dev-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 (oudtoestaan, ookopen),deny= tegenhouden (oudweigeren, ookdicht);- poort 1–65535 of
van-tot; bijicmpis de poort-; - bron
lan(het eigen subnet van de adapter waarop het pakket binnenkomt),anywhere(oudoveral; 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
- docs/EDITIONS.md ("Network after the installation", "Firewall", "Console of a production server")
- docs/WORKPLACE.md
- Server Admin, Serverconsole, Netwerk van het bureaublad
EUZOS