I sidste afsnit fik jeg installeret OpenBSD på min Mac via Parallels. Det gik sådan set fint nok. Liiige indtil jeg ordentlig fik nærlæst den side på 256.com jeg havde tænkt mig at følge. Dang hvor var det i grunden en langhåret omgang. Så jeg droppede tanken, og begyndte at lede efter en anden måde at installere OpenBSD på en Soekris. Efter lidt googlen frem og tilbage finder jeg frem til denne side. Hold da op tænker jeg, mens jeg læser den igennem et par gange, det ser da ud til at jeg kan finde ud af det. Du skal lige have i baghovedet at jeg ikke har prøvet at installere OpenBSD før, så jeg skal have det hele skåret rimelig meget ud i pap. Jeg er dog ikke helt ny inden for Unix verdenen, da jeg jo som bekendt er Mac OS X bruger, som er bygget på Apples egen Unix flaf.
Jeg gider ikke at skrive alle kommandoerne ned for så bliver det sgu en fortælling. Så jeg henviser hele tiden til at følge manualen, også nævner jeg hvis jeg gør det på en anden måde end manualen. Så det her er lidt mere en fortælling om hvad jeg har observeret under installation.
Denne fremgangsmåde går ud på at man laver en DHCP server og en TFTP server. Man sætter så DHCP serveren til at tildele en IP til Soekris plus en IP på en TFTP server hvor de ligger en pxeboot fil (netboot).
Jeg finder mig en spand, der kører en CentOS-distro (Linux), og får konfigureret den med de services som det ovenstående link foreskriver. Jeg får downloadet pxeboot og bsd.rd fra ftp.openbsd.dk og får dem lagt i filen
Jeg får mokket et netværkskabel i Soekris, samt et serielkabel (NULL modem) så jeg kan følge med i hvad der sker via en hyperterminal. Da jeg ikke har en almindelig langsom serielport i min Mac vælger jeg lige at bruge den selvsamme Linux maskine som Terminalcomputer. (Husk at Soekris kører 19200 i stedet for 9600 som de fleste serielle dimser gør).
Så plugger jeg kabel i, ser til min glæde at Soekris går i gang med Power-On Self Test (POST). Og ganske som guiden beskriver bliver jeg bedt om at trykke ctrl+p inden 5 sekunder. Jeg gør dette, og skriver efterfølgende boot F0.
Det ligner en succes. Jeg kan se at den finder en DHCP server. Den får tildelt en IP og det begynder VIRKELIG at ligne succes… Da jeg får beskeden ”tftp: Permission denied”. Shit. Det forekom mig lidt underligt, da der jo ikke er de store muligheder for permissions i TFTP. Da opdager jeg at jeg ikke har gjort det helt rigtigt. I punkt 2. i manualen står der at man skal lave en fil der hedder etc/boot.conf , og det havde jeg åbenbart glemt. DOH. Det skal her nævnes at mappen ‘etc/’ skal ligge i tftproot. Jeg får lavet filen og prøver til igen. POST, ctrl+p, boot F0. Mon der er succes. For at citerer mig selv: ”FUCKING YES! Det virker jo”.
Så jeg skynder mig at fortsætte. Installationen kører derudaf. Jeg husker at lave 3 partitioner som manualen foreslår.
Det går derudaf, men så laver jeg en dum fehler, som betød at jeg blev nødt til at geninstallere systemet. Okay, jeg kunne sikkert godt på en eller anden obskur måde have redet trådene ud, men jeg droppede det og geninstallerede. Det jeg gjorde var, at da jeg blev spurgt om jeg ville bruge com0 (seriel forbindelse) som standard consolport, svarede jeg nej. Det er lidt/meget dumt, for så er der ikke rigtig nogen måde at komme i kontakt med Soekris, da jeg på daværende tidspunkt ikke havde konfigureret andet end et interface. Så derfor valgte jeg altså at geninstallere. Så fik jeg jo også lidt øvelse i installation af OpenBSD.
Jeg får installeret, bootet i singleuser mode, logget ind og jeg er klar!
Nu er det så at jeg skal i gang med at lave et read-only filsystem, for at spare på read/write til CF kortet. Man skal jo så lige huske at et OS har forbandet svært ved at køre read-only, da der altid er nogle tmp filer og andre ting der skal laves. Det er så ideen at gemme dem i hukommelsen. Altså lave en ramdisk, og så mounte resten af diskene read-only. Ideen er god nok, men lad os se om det virker.
Jeg følger guiden slavisk og får kopieret de filer jeg skal og tilføjet et par linjer her og der i /etc/rc.
Nu er det så jeg skal reboote.
Det ser godt ud. Umiddelbart er der ikke nogle fejl. Jeg ser lige i /etc/fstab. Den er god nok. min root partition står til Read-only.
Jeg laver en df -h og jeg kan se at min Ramdisk (mfs) faktisk ER mountet.
Jeg prøver at se om jeg kan se filerne på Ramdisken. Det kan jeg sørme.
Og så vil jeg lige teste det allervigtigste så prøver jeg at lave en touch /testfile. Her knækker filmen så, for jeg kan fandme oprette en fil. Det var jo ikke meningen. Nu begynder jeg så at kigge manualen igennem et par gange for at se om jeg skulle have glemt noget. Men jeg finder ikke lige noget jeg har glemt.
I filen /etc/rc finder jeg så ud af at root bliver mountet i rw mode, og det overruler åbenbart /etc/fstab.
Jeg tænker så at jeg vel bare kan lave lave en mount kommando i /etc/rc hvor jeg mounter root som read-only. Det kan jeg sådan set godt. Men det resulterede i at alle andre services der prøver at skrive til filsystemet under opstart ikke får lov, og jeg står nu med en Soekris der kun virker halvt. Simple logik løser dog denne opgave: jeg tilføjer mount kommandoen til sidst i /etc/rc. Det virker. Hurra! Jeg er nu ejeren af en Soekris der er mountet i read-only. Har jeg så flere problemer? Nej, for det hedder opgaver der skal løses. Men da jeg prøver at få adgang via ssh fra min mac får jeg en permission denied kastet i hovedet. Det var dog mærkeligt tænkte jeg, og kiggede lidt i logfilen for at se om jeg kunne finde årsagen til dette. Og her lærer jeg så noget nyt om ssh. Når man logger ind via ssh, ændres permissions på /dev/ttyp00 (eller noget i den stil). Men det kan den jo ikke for root er mountet som read-only. DOH.
Denne sag kan ses fra to sider.
- Det er lidt dumt for så kan jeg jo ikke administrere min Soekris via ssh og jeg bliver nødt til at have en fysisk forbindelse til boxen. Det var ikke meningen.
- Det er lidt smart for så kan jeg jo ikke administrere min Soekris via ssh og jeg bliver nødt til at have en fysisk forbindelse til boxen. Det var ikke meningen, men det gør også min Soekris ret sikker over for hacker indbrud. For selv om det skulle lykkes en hacker at få fat i min adgangskode, så kan han/hun ikke logge ind. Jeg tænker så lidt videre og ser endnu en fordel. Alle forsøg bliver logget (til min ramdisk) og man kan se om forsøge lykkedes eller ej. Kan du se det smarte endnu? (det er fair nok hvis du ikke kan). Hvis ikke så forklarer jeg lige disse to senarier:
- jeg ser i logfilen at nogen har forsøgt at logge ind, men det er ikke lykkes for dem. Det er jo ikke så godt, men ingen skade sket. Jeg kan fremover være opmærksom på om det er et enestående tilfælde eller om det er noget der ser ud som et angrebsforsøg.
- Jeg ser i logfilen at nogen har forsøgt at logge ind og at det faktisk er lykkes for dem. Det må jo betyde at de har været i besiddelse af et gyldigt brugernavn/password. Nu kan jeg så vurdere situationen om min (måske mit firmas) sikkerhed er blevet kompromitteret og om der skal skiftes nogle passwords.
Som jeg ser det har jeg faktisk lavet mig noget der ligner en honeypot. Altså en computer, der skal lokke folk i en fælde. Det synes jeg er smart. Det kan så godt være at denne sikkerhed kan omgås, men det er vist ikke sådan lige til, som jeg ser det.
Jeg ville under normale omstændigheder have valgt at satse på case 1 og lave min Soekris til en Honeypot. Men da det er mit legetøj og jeg ikke gider til at sidde inde i mit lille serverrum hvergang jeg skal lave en ændring i konfigurationen, så valgte jeg case 1.
Så jeg finder /etc/rc frem igen og fjerner mount kommandoen.
Herefter sætter jeg mig ned og overvejer hvad pokker jeg kan gøre ved denne sag. I samråd med Bent (en lærer på EUC Syd, Sønderborg, der underviser i Unix) kommer vi frem til at nu når /tmp /var/log /var/run er blevet flyttet over på Ramdisken, så er det jo egentlig ret begrænset hvor mange andre steder operativ systemet står og læser/skriver til ved normal drift. Og strengt talt er der jo ikke nogen grund til at lave filsystemet read only. Det er selvfølgelig noget jeg vil kigge på senere, men jeg gider ikke bruge mere tid på et read-only system i denne omgang.
Det var vist lige hvad jeg havde at sige om installationen af OpenBSD på Soekris. Hvis du har spørgsmål eller du mener du kan bidrage med noget konstruktivt til konfigurationen (f.eks. hvordan jeg laver min root til read-only), så sig frem. Husk det er føste gang jeg kigger på OpenBSD, så jeg vil ikke lade som om jeg er en haj!
Næste gang vil jeg fortælle lidt om mit møde med pf (Packet Filter) som er OpenBSDs firewall.