Oppgave 1
I denne oppgaven skal du i delspørsmålene der du blir bedt om å gi
en kommando, angi en kommando på en linje, slik du ville ha tastet den inn
til bash på en Linux-maskin fra tastaturet (du svarer for eksempel
mkdir kat
hvis du blir spurt: Opprett en katalog med navn kat).
a) Gå til din egen hjemmekatalog.
b) Lag en symbolsk link threads
i katalogen du står i til katalogen undervisning/forelesning/threads
.
c) Sett rettighetene for scriptet run
i katalogen du står i slik at du får skrive,
lese og kjøre-rettigheter, mens ingen andre får noen rettigheter.
d) Sett rettighetene for web-området ditt ~/www
med alle filer og underkataloger slik
at alle filene som er der kan leses av alle brukere og at du som eier i tillegg kan skrive til alle filene.
e) Sett variabelen $user
lik ditt eget brukernavn.
Studer manualsiden for kommandoen ssh-keygen
:
NAME ssh-keygen - authentication key generation, management and conversion SYNOPSIS ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-f output_keyfile] DESCRIPTION ssh-keygen generates, manages and converts authentication keys for ssh(1). ssh-keygen can create RSA keys for use by SSH protocol version 1 and RSA or DSA keys for use by SSH protocol version 2. The type of key to be generated is specified with the -t option. Normally each user wishing to use SSH with RSA or DSA authentication runs this once to create the authentication key in $HOME/.ssh/id_dsa or $HOME/.ssh/id_rsa. Normally this program generates the key and asks for a file in which to store the private key. The public key is stored in a file with the same name but '.pub' appended. -g Use generic DNS resource record format. -f filename Specifies the filename of the key file. -i This option will read an unencrypted private (or public) key file in SSH2-compatible format and print an OpenSSH compatible private (or public) key to stdout. -y This option will read a private OpenSSH format file and print an OpenSSH public key to stdout. -t type Specifies the type of the key to create. The possible values are 'rsa1' for protocol version 1 and 'rsa' or 'dsa' for protocol version 2. -N new_passphrase Provides the new passphrase. -U reader Upload an existing RSA private key into the smartcard in reader. -r hostname Print DNS resource record with the specified hostname.
f) Gi en kommando som lager en DSA key med en tom passphrase (tom streng) og legger key filen i ~/.ssh/id_dsa
.
(Ved å spesifisere hvor den skal ligge unngås at man blir spurt om en bekreftelse, slik at kommandoen er bedre
egnet for bruk i script, se oppgave 2)
g) Hva vil filen som inneholder public key hete og hvor blir den lagt?
h) Hva er hensikten med disse key filene og hva kan de brukes til? Forklar kort hvordan de brukes.
Oppgave 2
Gjør de 3 siste deloppgavene i oppgave 1 om ssh-keygen før du gjør denne oppgaven.
Når man bruker ssh-keygen for å generere private og public key må man gjøre flere kommandoer og kopieringer
for å få alt til å virke. Hvis det er ofte man får tilgang tilgang til en ny maskin med ssh
er det veldig
nyttig å samle hele operasjonen i et script, slik at det går raskt og man ikke trenger å huske alle operasjonene.
a)
Lag et slikt script med navn slogin
. Det tar som eneste argument navnet eller IP-adressen
til en host-maskin. Scriptet skal oppfylle følgende:
$user
$host
~/.ssh/id_dsa
ikke finnes fra før, skal den lages med ssh-keygen
~/.ssh/id_dsa
finnes fra før, skal det gis beskjed om at den ikke lages på nytt
$user
på maskinen $host
ssh
skal innholdet av filen som ble kopiert over til $host
legges til på slutten
av filen ~/.ssh/authorized_keys
, eid av brukeren $user
på maskinen $host
$host
skal så slettes
b) Det er ikke alltid man har samme brukernavn på den maskinen man sitter på som på den maskinen man ønsker å logge seg inn på. Likevel kan opplegget med public key forenkle innloggingen på den andre maskinen. I denne deloppgaven skal du utvide scriptet i forrige deloppgave, slik at det også takler å bli gitt to argumenter. Det første er som før host'en man ønsker å logge inn på og det andre argumentet er brukernavnet som man ønsker å logge inn som, på den andre maskinen. I tillegg til å virke som før skal den utvidede versjonen av scriptet oppfylle følgende:
$user
$user
$ host nix.iu.hio.no nix.iu.hio.no has address 128.39.74.71mens oppslag til en som ikke finnes ser slik ut:
$ host niks.iu.hio.no Host niks.iu.hio.no not found: 3(NXDOMAIN)Hvis man ønsker å utføre en kommando på en annen maskin for et annet brukernavn
bruker
, kan man gjøre det med
ssh bruker@host
.
Oppgave 3
I denne oppgaven skal vi se på nettverkstrafikk med utgangspunkt i figuren som viser tre nettverk som er koblet til Internett.
a) Hva er 128.39.74.16 og hvor mange bits brukes for å lagre det?
b) Forklar kort forskjellen på MAC-adresse og IP-adresse.
Følgende er output fra en Linux-kommando utført på en av maskinene i figuren:
eth1 Link encap:Ethernet HWaddr 00:0F:1F:8D:70:2A inet addr:128.39.74.71 Bcast:128.39.75.255 Mask:255.255.254.0
c) Hva er navnet til maskinen kommandoen er utført på og hvilken Linux-kommando er det?
d) Hva er IP-adressen, MAC-adressen og netmask for denne maskinen?
e) Når cube
(128.39.74.16) sender en nettverkspakke til nix
(128.39.74.71), går pakken innom
gatewayen cadeler30-gw.uninett.no? Forklar kort.
f) Når cube
(128.39.74.16) sender en nettverkspakke til nexus
(128.39.89.10), går pakken innom
gatewayen cadeler30-gw.uninett.no? Forklar kort.
g) En nettverkspakke sendes fra cube
(128.39.74.16) til nexus
(128.39.89.10). Vil denne pakken under
normale forhold sendes til alle maskinene på 128.39.89.0 nettet eller bare til nexus
? Forklar kort.
h) En nettverkspakke sendes fra cube
(128.39.74.16) til sfinx(158.36.89.34). Vil denne pakken under
normale forhold sendes til alle maskinene på 158.36.89.0 nettet eller bare til sfinx? Forklar kort.
i) IP-adressen til en av host'ene i figuren er ugyldig og må være feil. Hvilken? Forklar kort.
j) Hvordan kan både cube
(128.39.74.16) og gandalf(128.39.75.245) være på samme nettverk 128.39.74.0?
Hvorfor tilhører ikke gandalf nettverket 128.39.75.0? Forklar kort.
k) Når en bruker på nero
(158.36.89.12) logger seg inn på cube
(128.39.74.16) med
telnet
, startes opprettelsen av forbindelsen ved at det sendes en nettverkspakke
til cube
. Som svar på denne pakken, returneres det en pakke fra cube
til nero
.
Figuren viser noen av feltene i IP og TCP-headeren for en slik pakke.
Skriv ned verdien for følgende felt i svarpakken fra cube
: sender adresse, mottager adresse, source port,
destination port, SYN og ACK. Ett av dem kan du ikke vite nøyaktig, men skriv ned en typisk verdi.
l) Neste pakke som sendes går fra nero
som startet forbindelsen tilbake til cube
igjen.
Skriv ned verdien for de samme feltene som i forrige delspørsmål for denne pakken også.
m) I løpet av denne telnet-forbindelsen Vil brukeren på nero
sende sitt passord til cube
for å bli pålogget. Er det mulig å lese dette passordet hvis man har tilgang til nettverkstrafikken på
pil52-gw.uninett.no? Forklar kort.
n) Med tanke på sikkerhet, vil du anbefale brukeren på nero
som ønsker å logge seg på cube
en
annen måte å logge seg inn på? Forklar kort hvorfor.
o) Hvor mange bit består et portnummer av og hva er dermed det høyest mulige portnummeret?
Oppgave 4
Brukerne på en Unix-maskin er vanligvis definert i filen /etc/passwd
.
Starten på denne filen kan se ut som følger
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ftp:x:99:99:Anonymous FTP:/local/iu/ftp:/bin/sync snort:x:10004:1005:Snort IDS:/var/log/snort:/bin/false nobody4:x:65534:65534:SunOS 4.x Nobody:/:/bin/sync mroot:x:0:0:Tcsh Root account:/local/iu:/bin/bash studwww:x:24:24:web server daemon:/:/bin/bash snort:x:10044:1005:Snort IDS:/var/log/snort:/bin/falseSkriv et perl-script med navn
check.pl
som kontrollerer
/etc/passwd
og melder ifra om følgende:
$ check.pl /etc/passwd Scriptet kjører på rex under OS'et Linux -rw------- 1 haugerud drift 453 Jan 31 20:56 /etc/passwd Det er 10 brukere i passordfilen Følgende brukere har UID = 0: root (root) mroot (Tcsh Root account) Følgende brukere har samme brukernavn: Brukernavn snort: UID 10004 (Snort IDS) UID 10044 (Snort IDS) Følgende brukere har samme userID: Uid 0: Brukernavn root (root) Brukernavn mroot (Tcsh Root account) Uid 65534: Brukernavn nobody (nobody) Brukernavn nobody4 (SunOS 4.x Nobody)Hvis det for eksempel ikke finnes brukere med samme brukernavn, skal scriptet ikke skrive ut linjen "Følgende brukere har samme brukernavn:".