Göm menyn

TDDI41 Grundläggande systemadministration

Nätverk

Nätverket är en central del för att få våra maskiner att kunna kommunicera med varandra. I denna laborationen kommer du börja jobba med att sätta upp nätverket för era maskiner. Från och med denna laboration kommer du jobba med fyra olika maskiner router, server, samt två klienter. Huvudmålet med denna laboration är att se till så att alla maskiner når varandra samt att alla maskiner når ut på internet. För att starta era fyra maskiner kör du /courses/TDDI41/start_project.sh

Labben uppdateras

  • 230911: Uppdaterat formulering kring kedjor.
  • 230906: Denna labb genomgår smärre förändringar i textens utformning. Fråga din labbass om du är osäker på något krav.

Förberedelser

Nätverkskort och interface

En dator kan ha flera nätverks-gränssnitt (interface). Varje interface möjliggör anslutningen till ett nätverk. I regel har man ett interface per nätverkskort (exempelvis ett för Ethernet, ett för WiFi, ...), men undantag finns.

Övning 1

Verktyget/kommandot ping är ett enkelt men kraftfullt verktyg för att undersöka nätverk. Läs på dokumentationen om ping man-sidan och besvara följande frågor:
  • Vad är kommandot för att skicka 5 paket till localhost?
  • Vad är kommandot för att skicka 3 paket till localhost med 2 sekunders mellanrum mellan varje paket?

Övning 2

Verktyget ip är ett användbart verktyg för att både konfigurera och undersöka nätverket och nätverksinterfacen på den lokala maskinen. Läs dokumentationen om ipman-sidan samt följande Fusklapp (cheat sheet) och besvara följande frågor (med hjälp av ip-kommandot):

  • Vad är kommandot för att lista adresserna för alla nätverksinterface i datorn?
  • Vad är kommandot för att ta nätverksinterfacet ens4 online?
  • Vad är kommandot för att ge nätverksinterfacet ens4 ip-adressen 192.168.1.2 med en 24-bitars nätmask?
  • Vad är kommandot för att visa routing-tabellen?

Huvuduppgift

Nu kommer vi till huvuduppgiften ni ska här konfigurera ert egna nätverk. För att göra det lite lättare är det bra att få en bild över hur era 4 maskiner är kopplade. Figur 1 illustrerar hur dina maskiner är ihopkopplade. Dina virtuella maskiner körs på den arbetsstation du arbetar på. De är anslutna till varandra med VDE-switch (en funktionsrik virtuell switch) Din router är också ansluten till en extern virtuell VDE-switch som i sin tur är kopplad mot internet. I labben här kommer vi att tala om routern omväxlande som router och gateway.

Figur 1

Innan du börjar den här delen eller någon senare del, se till att du tänker på vilka adresser och värdnamn ditt system kommer att använda. Vi rekommenderar att ni väljer 10.0.0.0/24 som nätverk. Det krockar inte med några av IDA:s egna nät. Bestäm er för vilken ip-adress ni vill ge varje maskin. Tänk på att ni inte vill använda adresser som slutar på .0. Det finns två filer som är relevanta för namngivning av en dator: /etc/hostname och /etc/hosts. /etc/hostname innehåller värdnamnet för datorn (inte FQDN1) medan /etc/hosts innehåller värdens adress, FQDN och värdnamn. Observera att manipulering /etc/hosts bara skapar en IP-adressnamnmappning; den tilldelar inte en IP-adress till datorn.

Som ett exempel: om en dator har ip adressen 192.168.1.2 och FQDN proxy.example.com., så kommer

/etc/hostname innehålla
proxy
och /etc/hosts
192.168.1.2 proxy.example.com  proxy

Nätverkskonfiguration

För Debianmaskiner finns nätverksskonfiguration i filen /etc/network/interfaces.
Se till att alla era maskiner har ip-adresser, nätmask, samt gateway; samt verifiera att server, client-1 och client-2 når din router (börja med din router). Din konfiguration ska klara av en omstart av maskinerna. (För er router är det enbart gränssnittet ens4 som behöver konfigureras. ens3 får en ip-adress (samt default route, m.m.) av en extern dhcp-server)

Era maskiner kommer ännu inte åt internet.

Använd nc (även känd som netcat) för att skicka meddelanden mellan era virtuella maskiner. Testa på lite olika portnummer! Sätt upp något som lyssnar på en viss port på en av maskinerna, och försök ansluta och skicka meddelanden från en annan.

Brandvägg

Ni kan ännu inte installera paket på client-1, client-2 eller servern. På er gateway når ni dock internet, och debians paketrepon. Installera paketet nftables. Detta ger er en brandvägg, och ett sätt att interagera med den (programmet nft). Man kan läsa mycket om denna brandvägg, exempelvis på archwiki sida om nftables. Brandväggen kan användas för att stänga ute trafik, men kommer också hjälpa er att skicka den vidare på rätt sätt. Ändra inte någon default-policy än! Än så länge är det OK att den släpper igenom all trafik!

En nyhet för i år är att vi inte tillåter iptables (ens som front-end, eller för att generera regler som vi sedan omvandlar till nftables-regler). iptables är på väg ut (något som i ärlighetens namn varit sant i många år, i skrivande stund). För den intresserade, har nftables en sida om skillnaderna.

Man kan skriva konfiguration i /etc/nftables.conf och starta om brandväggen för att få den att få genomslag (systemctl restart nftables). Man kan också manipulera den direkt (nft add ...). Om man gjort det, kan man ibland vilja ta en titt på utdata genom från nft list ruleset.

Ip-forwarding och NAT

IP-forwarding är processen som accepterar paket från ett nätverksinterface och skickar dem till ett annat, enligt nuvarande routing-tabell. Du kan läsa mer om ip-forwading på Debian ip-forwarding. Network address translation (NAT) är en metod för att mappa om ett IP-adressutrymme till ett annat genom att ändra nätverksadressinformation i Internet-protokoll (IP) datagram pakethuvudet. För detta projekt kommer ni använda IP-masquerading som är en teknik för att helt dölja en intern private addressrymd. Du kan läsa mer om NAT och masquerading på nftables-wikin eller mer utförligt hos RedHat.

Konfigurera din gateway så att den tillåter dina övriga maskiner (server, client-1, client-2) att nå internet. Du behöver både konfigurera ip-forwarding samt ip-masquerading. Du gör dina mer permanenta IP-masquerading-inställningar i /etc/nftables.conf. Man ska kunna starta om routern utan att behöva göra några manuella inställningar för att IP-forwarding och NAT fungerar.

Värdnamn

Ställ in värdnamnet på alla dina maskiner. Routern ska namnges 'gw', servern ska namnges 'server' och klienterna 'client-1' samt 'client-2'. Glöm inte FQDN (t ex server.grupp13.liu.se, om ni valt att låtsas att ni har de adresserna).

Brandväggar, del 2

I denna kurs kommer vi bara att snudda vid brandväggskonfiguration. Detta är ett stort och viktigt område, och vi kommer medvetet att förenkla en hel del för att ge en inledning.

Om ni tittar på utdata från nft list ruleset ser ni att alla kedjor slutar med att acceptera all trafik som inte har förkastats (policy accept). Det är ofta en dålig idé. Här nedan kommer vi att stegvis arbeta för att göra extremt grundläggande ingress-filtrering (inkommande trafik) utifrån deny by default-principen. Vi kommer inte att komma in ens på enkel filtrering av utgående trafik, djup paketinspektion, detektering av olika kända attacker eller dylikt, utan skrapar bara på ytan.

Det är helt OK att lägga in alla era regler i respektive standardkedja, utan att tänka på hopp, hooks och annat.

  • Konfigurera client-1 så att den släpper (drop) all inkommande trafik, förutom det som anges nedan.
  • client-1 ska släppa igenom trafik som tillhör etablerade konversationer eller kopplingar, och relaterad trafik (established,related). TCP är ett uppkopplings-orienterat (connection-oriented) protokoll, där detta bör fungera.
Använd något eller några av verktygen ni har läst om hittills (ssh, ping, nc...) för att testa att ni lyckats med detta.
  • client-1 ska tillåta icmp-trafik överlag (så det ska exempelvis gå att pinga client-1).
  • client-1 ska tillåta trafik på normala ssh-porten (fundera på vad detta innebär).

OBS! Även om du klipp-klistrat ihop lösningarna, ska du kunna (i) källhänvisa, (ii) förklara vad de olika delarna betyder, (iii) förklara varför det här borde lösa uppgiften (och inte mer).

  • När client-1 fungerar som den ska, konfigurera client-2, server och router också.

Inlämning nftables.conf-filer (ange vilken fil som rör vilken/vilka hosts).

OBS! I senare labbar kommer ni att lägga till tjänster. Ni kan behöva förändra er brandväggskonfiguration för att tjänsterna ska fungera som de ska.

Redovisning

För denna labb ska du besvara frågorna ovan samt skriva automatiserade tester som visar att ditt nätverk är korrekt uppsatt.

Saker att testa för alla maskiner:

  • Har maskinen rätt IP,Nätmask, och Getway
  • Har maskinen rätt namn
  • Kan maskinen nå routern

Saker att testa och verifiera för routern:

  • Kan routern nå 10.0.2.2.
  • Är ip-forwading påslaget
  • Är IP-masquerading korrekt uppsatt

Saker att testa överlag:

  • Uppfylls kraven på brandväggen, såsom de skrivs ovan?

Demonstrera för en labbassistent genom att visa samt köra dina tester. Lämna in tester tillsamans med ändringar ni gjort i systemets konfiguration.

Redovisning

Visa upp ett korrekt konfigurerat system, samt fungerande tester för er labass. Skicka sedan innan svar på frågorna, era tester, samt tillräcklig information för att kunna sätta upp ett system identiskt med det ni satt upp (förslagsvis genom en beskrivande text, eller konfigurationsfiler).

Fotnoter

  1. FQDN står för "Fully Qualified Domain Name", och är ens värdnamn tillsamans med full domän. T.ex. kan machinename vara värdnamnet, och machinename.example.com. vara ens FQDN. return

Sidansvarig: Anders Fröberg
Senast uppdaterad: 2023-12-11