TDDI41 Grundläggande systemadministration
Eventuell changelog finns längst ned på sidan
OBS! Som alltid, följ de allmänna instruktionerna kring inlämning, och kopiera in vad ni gjorde och utdata. Se exempel på sidan.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
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 ip
på man-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ållaproxy
- och
/etc/hosts
192.168.1.2 proxy.example.com proxy
Nätverkskonfiguration
För Debianmaskiner finns nätverksskonfiguration i filen/etc/network/interfaces
.
Era maskiner kommer ännu inte åt internet.
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.
Värdnamn
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.
- 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).
- client-1 ska tillåta inkommande (och utgående) trafik på loopback-gränssnittet
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å.
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.