Monibootti piilo-osio USB-tikku, osa 2

typografia huomautus

# komennon edessä tarkoittaa, että käsky pitää ajaa roottina tai sudolla
$ komennon edessä tarkoittaa, että tavalliset käyttäjän oikat riittävät

Osointi

Tikun toiminnan kannalta oleellinen osa on tikun osiointi. Osioin tikun 4 osaan cfdisk:n avulla

#

cfdisk /dev/sdb

Ensimmäinen osio on 32 gigainen primääri NTFS osio.  Toinen osio on 15 gigainen primääri ja boottaava EXT4 osio. Kolmas osio on 11 gigainen EXT4 osio ja viimeinen neljäs osio on 5 gigainen primääri EXT4 osio.

Image

Seuraavaksi luodaan tiedostojärjestelmät paikalleen. Kirjoita ylös tai paina mieleen mikä osionumero (sdbX, kuvassa 2) boottaavalla osiolla on. Tämä on kriittistä grubin konfiguroinnissa.

 #

mkfs.ntfs /dev/sdb1
# mkfs.ext4 /dev/sdb2
# mkfs.ext4 /dev/sdb3
# mkfs.ext4 /dev/sdb4

Lisää komentorivikytkimiä sen verta kun haluat virheiden tarkistamiseen, NTFS alustamisen nopeuttamiseen yms. Tällä asetuksella NTFS tiedostojärjestelmä kirjoittaa 0 osionsa täyteen, missä menee hyvä hetki.

Boottijärjestelmä

Tikun boottauksessa käytän grub 2:sta. Luodaan pohjat grubille, joita sitten hieman korjataan, jotta tikku käynnistyy oikein. Tätä varten mountataan juuri tehty 2. osio käyttöön ja aletaan asentelemaan.

# mkdir /mnt/grub-osio
# mount /dev/sdb2 /mnt/grub-osio
# grub-install –force –no-floppy –root-directory=/mnt/grub-osio /dev/sdb

Tämän jälkeen grubin runkotiedostot on kohdallaan, mutta niissä on virheitä ja valikko puuttuu. Aloitetaan ensin korjaamalla virheet ja tekemällä tikusta boottaava Winking smile

# cd /mnt/grub-osio/boot/grub
# vi device.map

Tuhoa tiedostosta kaikki muut rivit, paitsi rivi joka sisältää USB tikun, muuta se rivi tämän näköiseksi

(hd0)   /dev/sdb

Nyt asennetaan uudelleen grub, jotta saadaan tikku boottaavaksi

# grub-install –root-directory=/mnt/grub-osio /dev/sdb

Sitten lisätään grub.cfg hakemistoon /mnt/grub-osio/boot/grub , joka on varsinainen käynnistysvalikko

# vi grub.cfg

Lisää tiedoston sisälle seuraavat pohjat. Nyt tarvitaan set root määritelmässä boottaavan osion numero (sdbX)

# Boot menu by <NIMESI> YYYY-MM-DD
set root=(hd0,2)
menuentry “Memtest 86+ (5.01)” {
linux16 /memtest86+-5.01.bin
}

Sitten käydään imuroimassa oikea tiedosto muistitikun juureen

$ cd /mnt/grub-osio/
$ wget
http://www.memtest.org/download/5.01/memtest86+-5.01.bin.gz
$ gunzip memtest86+-5.01.bin.gz

Tikku irti koneesta ja testaamaan käyttökoneella. Jos homma meni oikein, tikku boottaa karuun grub valikkoon, jonka avulla saa muistitestit käynnistettyä.

Monibootti piilo-osio USB-tikku, osa 1

tikkuOlen vuosia sitten haaveillut USB-tikusta, joka sisältäisi kaikki käyttämäni ISO-imaget ja työkalut, mutta taito rakentaa moinen luotettavasti on puuttunut. Tästä esimerkkinä on niiden kahden PXE ympäristön rakentaminen. Tuntuu niin turhalta tehdä yhdestä alle 700 megan ISO imagesta boottaava 8 gigatavun tikun avulla. Käsittämätöntä tilanhukkaa ja se tikku on sen jälkeen täynnä sontaa, joka hankaloittaa sen käyttöä normaaliolosuhteissa. Sain kerran rakennettua monibootti USB-tikun, siitä on jo vuosia, mutta se ei toiminut luotettavasti – en oikeasti ymmärtänyt miten sen tein – saati sitten ollut päivitettävissä.

Nyt Kali Linux-tikkuni Kali alkaa olemaan vanhaa versiota, eikä sekään koskaan ollut tehty kunnolla. Se on härö ja vajaalla toiminnalla oleva tikku, mutta se toimi. Tikussa oli piilo-osio, jossa Kali lepäsi ja Kalilla oli oma salattu talletustila tikussa. Kaiken puolin kiva, mutta hidas ja Kali oli 64 bittinen, mikä ampui jalkaan yhden vanhemman läppärin kanssa mitä piti tuikkia, myös UEFI tuki boottui, joten Surface Pro 3:n kanssa se oli turha.

Visio

Tikulla on normaali NTFS osio, jonka voi alustaa,  jota voi täyttää ja joka näyttää, tuntuu, äänehtii ja maistuu normaalilta muistitikulta. Piiloitettu boottaava osio, jossa on puhtaita ISO-kuvia, joita voin helposti päivittää ja joilta pystyn boottaamaan surutta. Toinen piiloitettu osio, joka on salattu ja pitää sisällään Kalin pysyvät muutokset. Kolmas piiloitettu osio, joka on Tails Linuxin pysyvien tiedostojen osio. Näin tikkua voi käyttää arjessa satunnaisen koneen käyttöjärjestelmänä, voin antaa tikun toisille pikaisessa tiedonsiirrossa pelkäämättä että he sössivät tikun sisällön. Kun tikku on kiinni koneessa ja kone käynnistetään tikku on boottaava laite ja sen takaa paljastuu valikko, jossa on Kali Linux järjestelmän korkkaamiseen, Tails järjestelmän käyttämiseen anonyymisti sekä kasa erilaisia työkaluja osioiden muuttamiseen, levyn tarkistamiseen, turvakopioiden tekemiseen ja yleiseen PC diagnostiikkaan. Pikku nörtin “digitaalinen leatherman työkalu”.

Taustat

Miten ihmeessä tämä voisi toimia? USB-tikku toimii kuin normaali kiintolevy osioiden ja käynnistyksen suhteen. Windows vain leikkii USB muistitikun olevan erikoinen laite. Windows ei suostu näyttämään kuin ensimmäisen osion muistitikulta, mikä ei ole mitenkään ongelmallista, sillä sellaisina muistitikut tulevat linjalta ellei joku mene niitä ronkkimaan.

Boottauksen suhteen rajoitteitteena toimii se, että vain primääriosiolta voidaan käynnistää. Tämä ei ole ongelma, sillä vanhat speksit sallivat 4 primääriosiota ja vision mukaan tikussa on vain neljä osiota. Toinen primääriosio voidaan merkitä boottavaksi, sille voidaan asentaa GRUB eikä Windows näytä tätä osiota koskaan. Kolmas ja neljäs osio voisi olla loogisen osion sisällä, mutta en näe mieltä pilppoa tikkua mitättömiin palasiin, joten pidetään kaikki osiot primääreinä. Tikku menee kokonaan uusiksi, jos osoita tarvitaan lisää.

Tarvikkeet

Palaset, joita tarvitaan on siis

  1. Isolla kapasiteetilla varustettu USB(3) muistitikku – minun tapauksessa 64 GB USB3 tikku
  2. Linux (virtuaali) kone, varsinaista asennustyötä varten
  3. Läjä ISO-tiedostoja
  4. memdisk –tiedosto PXE boottileikeistä
  5. Testaamisen helpottamiseksi yksi fyysinen läppäri tms., jota on helppo bootata tikun testaamista varten. Virtuaalikoneet kun eivät ilman kikkailua osaa bootata USB-tikulta.

Debugging PXE

image

PXE on todella yksinkertainen kokonaisuus, tästä seuraa että tietokone ei kerro miksi se ei tällä kertaa boottaa sitä mitä valikosta klikkasit. Minun tapauksessa kaikki ongelmat paitsi yksi ovat olleet kirjoitusvirheitä. Se yksi virhe mikä ei ollut kirjoitusvirhe oli protokollan tuntemattomuuden piikkiin menevä ongelma – en tiennyt siirtorajaa TFTP:lle. Niinpä,

kirjoitusvirheiden metsästys tehty helpoksi

Työasemalla on hyvä olla virtualisointialusta, joka osaa PXE bootin. Itselleäni tämä on VMware Workstation 9.0. Loin sinne virtuaalikoneen millä ei ole ollenkaan levyä, vain yksi prosessori ja 1 GB muistia sekä verkkokortti. Tällä saa ladattua PXE ympäristön käyntiin ja varmistettua että ohjelmat starttaavat.

Toinen palanen mitä tarvitaan on tcpdump –ohjelma reitittimelle. TFTP toimii portissa 69, joten tcpdump polkaistaan päälle käskyllä

tcpdump –i br0 ‘port 69’

näin näemme kokoajan liikenteen. Protokolla on hyvin selkokielinen, joten vian metsästyksessä ei kauaa pitäisi mennä.

PXE boot with router part 2

imageSeuraava vaihe PXE:n virittelyssä vaatii mielellään koneen, joka pystyy boottaamaan PXE ympäristössä pystyyn. Itse käytän VMwarea ja virtuaalikonetta jolla ei ole levyä lainkaan. Se boottaa aina verkosta, sikäli se on mahdollista. Tämän laitteen kanssa pystyy katsomaan miltä konfiguraatio näyttää sitä tahtia kun se etenee.

Hakemistorakenne

Varsinainen runko juurihakemisto on tftpboot ja kaikki luodaan sen alle. Itse loin tftpboot-hakemiston alle hakemistot

tftpboot
|
\ pxesys
   |
   \pxelinux.cfg

Boottauksessa ensimmäinen tiedosto mikä ladataan on tiedosto nimeltä default. Kyseinen tiedosto sisältää varsinaisen valikon ja minun tapauksessa se hajoaa vielä kahteen alivalikkoon.

DEFAULT menu.c32
  PROMPT 0

MENU TITLE Leivo network PXE menu
  MENU AUTOBOOT Starting Local System in # seconds

LABEL bootlocal
   MENU LABEL ^Local boot disk
   MENU DEFAULT
   LOCALBOOT 0
  TIMEOUT 80
  TOTALTIMEOUT 9000

MENU SEPARATOR

LABEL ToolsMenu
   MENU LABEL ^Tools Menu
   KERNEL menu.c32
   APPEND pxelinux.cfg/tools.menu

LABEL OSMenu
   MENU LABEL ^OS Menu
   KERNEL menu.c32
   APPEND pxelinux.cfg/os.menu

Sikäli mitään ei tehdä, kone käynnistyy normaalisti omalta levyltään. Tämä ei vielä boottaa mitään, vain vie meitä pisin valikoita.

MENU TITLE Tools Menu

LABEL MainMenu

  
  MENU LABEL ^Return to Main Menu
  KERNEL menu.c32
  APPEND pxelinux.cfg/default

MENU SEPARATOR

LABEL memtest
  MENU LABEL ^Memtest86+ V5.01 (27/09/13)
  KERNEL memtest/memtest

LABEL Spinrite
  MENU LABEL ^Spinrite v6.0
  KERNEL memdisk
  APPEND initrd=Spinrite/SpinRite.iso

LABEL BootNuke
  MENU LABEL ^Boot & Nuke
  KERNEL memdisk
  APPEND initrd=BootandNuke/dban-2.2.8_i586.iso

LABEL Clonezilla
  MENU LABEL ^Clonezilla (2.1.1 686)
  KERNEL ClonezillaOLD/vmlinuz
  APPEND initrd=ClonezillaOLD/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" keyboard-layouts="fi" ocs_live_batch="no" locales="" vga=788 nosplash noprompt fetch=tftp://192.168.8.1/pxesys/ClonezillaOLD/filesystem.squashfs

Nyt systeemissä on kyky bootata jotain. KERNEL – kohta on se mikä meitä erityisesti kiinnostaa. Tämä kertoo missä päin levyä on mikäkin tiedosto. Itse sijoitan jokaisen järjestelmän omaan alikansioonsa pxesys –hakemiston alle. Hakemistorakenne tässä tapauksessa näyttää siis tältä:

tftpboot
|
\ pxesys
   |
   \pxelinux.cfg
   \memtest
   \Spinrite
   \BootandNuke
   \ClonezillaOLD

Kun bootataan CD tai DVD käytetään kernel parametriä memdisk. Tällä on rajansa, tarkkaanottaen 96 MB. Se on TFTP serverin maksimi tiedostonkoko, joten kokonaisen Linux-distron boottaaminen memdiskillä on pelkkää unelmaa. Järjestelmän pitää tukea PXE boottia kuten Clonezilla tukee.

PXELinux tosin tukee HTTP siirtoa myös, jolloin moiset turhat rajat eivät tule vastaan Winking smile

PXE boot with router

imageVirittelin “äkkiseltään” pystyyn PXE bootti kyvyn myös tomato reitittimelleni. Olen tähän saakka käyttänyt Serva PXE:tä, jota ajan pääserverilläni. Ajattelin vetäistä serverille muistitestin, mutta koska pääserveri on se kone, joka toimii myös PXE palvelimena, josta muistitestiohjelman lataisin homma ei toimi. Seuraava vaihtoehto olisi tehdä boottaava USB-tikku tai CD, mutta sellaisen tekemiseen menee ehkä vartti.  Joten nopeinta on vain rakentaa toinen PXE palvelin Winking smile. 8 tuntia myöhemmin voin iloisesti todeta, että reititn toimii hienosti PXE palvelimena ja useita päiviä myöhemmin voin todeta, että muistitestiä ei koskaan ajettu ! \o/ Mutta piru vie on hieno palvelu rullaamassa reitittimellä Open-mouthed smile

Keitto-ohje PXE palvelun virittämiselle Tomato firmikselle.

PXE vaatii 2 eri uutta komponenttia sekä muutoksen DHCP serverin konfiguraatioon. TFTP protokollalla siirretään data, joten sitä varten tarvitaan oma TFTP palvelin. Varsinainen boottiälli eli PXE binäärit tarvitaan ja sitten vielä pitää osata konfiguroida DHCP kertomaan PXE ympäristöstä.

TFTP

Tarvitsemme TFTP serverin, joten

ipkg-opt install atftp

Itselläni asennus päättyi virheeseen

Configuring atftp
postinst script returned status 1
ERROR: atftp.postinst returned 1
Nothing to be done
Successfully terminated.

asennuksessa itsestään ei ollut mitään vikaa, skriptin viimeinen tappokäsky vain tuottaa virheen, koska en käytä vielä mitään xined palvelua, joten editoin skriptin äkkiseltään toimimaan, muuttamalla sen aina raportoimaan onnistumisen Winking smile. Näinikkään:

vi /opt/lib/ipkg/info/atftp.postinst

lisätään viimeiselle riville

return 0

ja ajetaan

ipkg-opt upgrade

Sitten pitää konfiguroida tftpboot hakemisto. Oletuksena tftpboot hakemisto sijaitsee /opt/tftpboot – mikä ei valitettavasti minulle käy. ATFP:n konfiguraatiotiedosto löytyy hakemistosta

/opt/etc/xinetd.d/atftp

Sinne parametrien muutos ja näin TFTP on kunnossa. Kyky siirtää tiedostoja on kasassa. Sitten se boottiympäristö kasaan:

Itse PXE boottiympäristö

Sitten tarvitaan palat PXE ympäristölle. Käytän itse PXELINUX –palvelua.

  1. Imuroi syslinux-XXX.tar.gz PXELINUX sivujen kautta
  2. Pura paketista alla olevat tiedostot tftpboot/pxesys –hakemistoon
    1. lpxelinux.0
    2. pxelinux.0
    3. menu.c32
    4. ldlinux.c32
    5. libutil.c32
    6. memdisk
  3. Luo hakemisto pxelinux.cfg (- kyllä, hakemisto) tftpboot/pxesys –hakemiston alle

 

DHCP parametrit

Lisää Advanced valikkoon DHCP/DNS osuuteen Dnsmasq Custom configuraatioon rivi

dhcp-boot=pxesys/lpxelinux.0,,192.168.8.1

Like so:

Image

Nyt runko on valmis. Seuraavaksi käyn läpi peruskonffitiedostot.

Rikoin sitten Padfonen 3/3

WP&kiviKäsissäni on siis tiiliskiveksi taiottu lainattu puhelin. Kainalot märkänä kaivelin netistä miten luuri saadaan palautetta takaisin toimintakuntoon. ODIN on avainasemassa tässä, sillä laite vielä saadaan käynnistymään flashaystilaan, mutta ei milliäkään pitemmälle. Pitkän kaivelun jälkeen löysin verkosta 4.0.2 version firmiksen ja sain flashattya sen laitteeseen \o/. Luuri oli taas käynnissä normaalisti, mutta kun sain sen siinä oli 4.1.2 ja nyt siinä on 4.0.2. Luurin itsensä mukaan mitään päivityksiä ei enää tarvitse tehdä. \o/ tänään 5 tuntia kulutettu aikaa ja puhelin on melkein samanlainen kun saadessani se!

Tunnin lisäkaivelun jälkeen löysin verkosta 4.1.2 version, jonka sain onnistuneesti päivitettyä puhelimeen! Nyt kun osaan parsia luurin takaisin softatiiliskiven tuoltapuolen alkoi nälkä hieman kasvaa. Oma luurini on näet 4.4 versiossa Androidia ja kaiveluiden aikana löysin useamman vaihtoehtoisen firmwaren luuriin, jolla sen saisi 4.4 versioon. Ensimmäinen mitä koitin oli Neatrom. Verkon ohjeet siihen miten tuo saadaan oikeasti luuriin oli hieman heppoiset. Jos tulet stokkiversiosta, homma menee näin:

    1. Flashaa uusi boot-kerneli, vaikkaa Philz
    2. Luuri muuttuu “boottikelvottomaksi”, älä välitä, flash-bootti toimii yhä.
    3. Käynnistä luuri virta+koti+äänenvoimakkuusalas-nappi pohjassa
    4. Seuraa Neatrom asennusohjeita

Tämän jälkeen luuri oli kaunis kuin sika pienenä, valitettavasti en saanut Google Appseja toimimaan, joten luurin käyttö tällä modilla kesti vain hetken. Seuraavana listalla oli Cyanogenmod. Seuraten ohjeita Cyanogenmod toimivien Google appsien kanssa oli sisällä parissa tunnissa. YES! Titanium backupilla kevennetty versio ohjelmistosta sisään ja elämä on hyvää. Omat tärkeät softat kaikki sisällä, automaatio kohdillaan – kaikki hyvin! Koko päivä siihen meni, mutta se oli sen arvoista. Opin paljon vaihtoehtoisista firmiksistä ja luurin flashäyksestä ja minulla on hyvin toimiva varaluuri.

Seuraavana aamuna aamurutineejani tehdessäni luin sähköpostiviestiä kun puhelin meni täysin pimeäksi. Se ei enää käynnistynyt lainkaan. Epäilin akkua, mutta iTapsassa käynti vahvisti sen että vika ei ole akussa, laite ihan rehellisesti kuoli. Aika paiskata laite seinään.

Nyt käytän 521 Windows phonea, mutta olen syvästi kiinnostunut vanhoista Cyanogenmodia tukevista Android luureista tahi tableteista..

Rikoin sitten Padfonen 2/3

Googlen ohjelmien palautus ei ole lähelläkään samalla tasolla kuin Windows Phonessa. Jos jossain Windows Phone loistaa, niin sen täytyyremove-yellow-triangle-on-galaxy-s2 olla uudelleenasennuksessa. Mikä vie Androidilla minulta päiviä on Windows Phonella tehty 2 tunnissa, sillä se vain salasanat tarvii naputtaa jokaiseen ohjelmaan – kaikki muu on paikallaan.

Olen kiertänyt tämän kaamean Android rajoitteen käyttämällä Titanium backup-ohjelmaa. Ohjelman suurin ongelma on root-tunnusten vaatimus, joten luuri pitää korkata jotta voin käyttää tätä ohjelmistoa. Tarkistin kaverilta:

13:46 <@Leivo> Onko luuri rootattu?
13:46 <@Leivo> Haittaako jos roottaan?
13:46 <XXXX> ei ole, ei haittaa
17:53 <@Leivo> XXXX: Ostan toisen käytetyn tilalle jos brikkaan.
17:53 <@Leivo> Löytyy useita vaihtoehtoja, kaikki on uuden kernelin asentaminen.
20:19 <XXXX> Leivo: suosittelen, että heität sen seinään jos brickaat

We have green light!

Galaxy S2:n roottaaminen on helppoa – todella helppoa.

  1. Hae vaihtoehtoinen kerneli & ODIN flashays ohjelma
  2. Boottaa luuri virta+koti+äänenvoimakkuusalas-nappi pohjassa
  3. Flashaa
  4. profit

Titanium backup sisään, rikkinäisestä laitteesta muistikortti ja paska pyörimään. Tunteja myöhemmin totesin “hyvältä näyttää”, joitakin tunteja eteenpäin huomasin että vanhan luurin potku loppuu auttamatta kesken. Koitan tunkea 120 mm paskaa 100 mm putkeen. Pääsyy miksi vaihdoin edellisen Padfonen uuteen oli se että vanhasta loppui muisti kesken. Tässä lainalaitteessa tilanne on sama. Ei hätiä mitiä! Listasin päässäni mikä on oleellista mikä ei, mutta koska luuri oli jo hieman solmussa tein sille factory resetin päästäkseni selvään lähtötilanteeseen. Jotain resetissä ja uudessa rootilla varustetussa kernelissä oli vialla sillä sen jälkeen se oli pysyvästi kuvan mukaisessa tilassa. Tein siitä tiiliskiven! \o/ Onneksi Padfonessa oli vielä kaikki softat sisällä ja pad-näyttö toimii. :-I

Rikoin sitten Padfoneni 1/3

PadfoneOlen vuosia säätänyt luureja hartaudella. Jo vanhojen rakkaiden Nokia Symbian laitteiden aikaan saatoin istua tuntitolkulla siirtämässä kuvakkeita – osaa “turhat” kansioon, osaa uuteen järjestykseen, jotta luuri on täysin oikein, ajatukseni jatke.

Nokian julkaistua N900 homma lähti omalle planeetalleen. Nyt sain käsiini tietokoneen, jolla pystyi soittamaan. Sitä hartautta millä säädin, käänsin, väänsin ja räpläsin voidaan verrata normaalin säätööni – aikarajaa ei ole. Pidin siitä luurista juuri sen muokattavuuden (ja ylikellotettavuuden) vuoksi. N900:n seuraaja N9 oli karmea pettymys, N9 ei ollut lähelläkään N900:n seuraajaa. Niinpä skippasin sen. Kun firma siirtyi Windows Phone -aikaan ensimmäistä kertaa 6 vuoteen ostin omalla rahalla puhelimen. Tutkittuani pelikenttää paljon päädyin siihen että Asusksen Padfone olisi juuri minua varten ja tänä päivänä – kolme vuotta myöhemmin – vannon tuon konseptin perään. Android antaa lähes saman määrän säätämisen vapautta kuin N900, mutta Androidille on merkittävästi enemmän ohjelmia tarjolla. Niinpä tänä päivänä minulla menee yhden työviikon verran (40 tuntia) säätää luuri hyväksyttävälle tasolle, sitten on vielä ehkä viikko tai kaksi pieniä asioita korjaten. Lopputulos on luuri, joka tietää minusta enemmän kuin minä itse, joka on muistini ja ajatuksieni suora jatke – rakkaudella rakennettu pikku vempain. Mitä sitten tapahtuu kun rikot sen pikku puhelimen? Ensin vituttaa, sitten harmittaa ja – kun lopulta päätyy tulokseen että korjattava se on – huomaa kuinka perkeleen syvälle se on integroitu päivittäiseen elämään.

Selviänkö ilman sitä? – Kyllä, kyllä.
Onko elämä hemmetisti hankalampaa? – Oi kyllä!

Esimerkiksi, minulla on liki 300 eri salasanaa, niistä yli 80% on 20 merkkiä pitkiä satunnaista kirjainsotkuja. Tiedänkö niistä edes 10% ulkoa? – En. Kaikki merkittävät asiat vaatii toisen tekijän tunnistautumisen – mikä tehdään luurin avulla. Kaiken voi kiertää ja kaikkiin minulla on vaihtoehtoinen tie, mutta piru että tulee ryppyjä arkeen. Auton statistiikat, oma kuntoilu, aamun uutiset – kaikki on siellä luurissa. Puhumattakaan automaatiosta, se luuri menee automaattisesti äänettömäksi, imuroi podcasteja, vaihtelee profiileeja, tekee juttuja riippuen siitä missä olen, mikä kellonaika on tai mitä kalenterista löytyy.

Johtuen firmastani olen käyttänyt jonkin verran Windows Phoneja ja näin ollen aloinkin työstämään tiedonsiirtoa kohti Lumia 820. Listasin jo kaikkia vaihtoehtoisia ohjelmia, kun tajusin, että kavereilla saattaisi olla vanhempia Android luureja nurkissa. Voisin käyttää Titanium backup-ohjelmaa palauttamaan asetukset, kannat ja automaatiologiikan takaisin luuriin ilman hikeä + takaisin siirtyminen onnistuisi helposti, ei tarvisi käsin siirtää dataa kahden eri puhelinjärjestelmän välillä. Ja totta tosiaan, kaverilta löytyi Samsung Galaxy S2. Siirtyminen vaihtoehtoiseen Android luuriin ei osoittautunut ihan niin helpoksi kuin oletin, samalla paljastui paljon virheitä nykyisestä turvakopioinnistani.

Yritys kuvata kotini verkkorakennetta

Verkkoni runko alkaa olemaan kunnossa. Pystyn sylkäisemään verkon, reititykset ja serverit muutamassa tunnissa. Tämä näkyy siinä, että kotiverkossani on nyt 7-10 verkkoa. Osaan pääsee sisäverkosta (intranet), osaan pääsee kiinni vain koneilta, jotka ovat kiinni kahdessa eri verkossa ja sitten on yksi erikoisverkko, joka ei lähtökohtaisesti ole kiinni missään muussa verkossa.

Tässä on ensivedokseni siitä miltä verkkoni näyttävät. En ole 100% tyytyväinen tähän, sillä tämä ei välitä kunnolla tietoa siitä miten reititykset menevät, mutta tämä lienee hyvä alku. (psst, klikkaa kuvaa nähdäksesi se isompana) Osa työasemista on kuvattu virtuaalisina, sillä ne ovat virtuaalisia. Suurin osa servereistä on virtuaalisia, mutta en tässä vaiheessa lähtenyt metsästämään niille omaa ikonia. Käytännössä vain intranetissä ja MökkiLAN-verkossa on fyysisiä koneita.

Leivo Network 2.0

Iso tiedosto äkkiä jakoon kaverille

Tuli vastaan tilanne missä minun piti jakaa iso tiedosto kaverille. Tiedosto on sen verta kookas, että pikaratkaisu “tuuppaa se Dropboxiin” ei tullut kyseeseen. Sitä paitsi tälläisessä ratkaisussa se tiedosto siirrettäisiin kahdesti. Ensin minun toimesta pilveen ja sitten kaverin toimesta hänen koneelle. Moinen on tehotonta.

Seuraava vaihtoehto: “tuuppaa se omalle julkiselle serverille”. Ihan hyvä vaihtoehto, olen tehnyt tätä aikaisemmin, mutta jälleen kerran kyseessä on tehoton operaatio.

Seuraava vaihtoehto :”jaa se suoraan kotoa”. Nyt tehokkuus on kohdallaan ja toinen talon nettiyhteyksistä voidaan pyhittää tälle operaatiolle, jolloin oma netin käyttö ei kärsi tästä. Kotona on palvelinta pieni verkko täynnä, joten jollain niistä voi äkkiseltään jakaa tiedoston. Web serverillä bitti jakoon, helppoa, hauskaa, ei välitä mikä laite kaverillla on tiedostonsiirtoa varten! Lighttpd on tämän hetken web serverialustani. Siispä hommiin.

Lighttpd vhost

Ensinnäkin, kyseinen palvelin tarjoaa kotiverkon “intranet-sivustoa”, joten sinne piti tehdä vhost.eri porttiin, jotta kotiliikenne ei häiriinny. conf.d -hakemistoon uusi tiedosto fileshare.conf ja sisällöksi

$SERVER["socket"] == "0.0.0.0:500" {
  server.document-root = "/mnt/DATA/fileshare"
  dir-listing.activate = "enable"
}

Hakemistolistaus sallittu, asialle pyhitetty hakemisto. Kuunnellaan portissa 500, jotta a) muut ei löydä serveri perusskannauksilla b) omat HTTPS konffikset ei mene sekaisin.

En tietenkään halua, että kuka tahansa tuonne pääsee, jos vaikka joku vahingossa tuon löytää, joten salasanasuojaus.

Lighttpd salasanasuojaus

Meidän pitää ladata laajennuksia ja tehdä vähän määrittelyjä. Käsin tehdään, joten 05-auth.conf luoden.

server.modules  += ( "mod_auth" )
auth.backend = "plain"
auth.backend.plain.userfile = "/etc/lighttpd/lighttpdpassword"

Universaali käyttäjienahallinta AD:n on vielä työn alla – rankasti, joten yksinkertainen tiedosto tarvitaan käyttäjiä varten. Tiedostoon pitää lisätä käyttäjät, selkokielisenä seuraavanlaisesti

käyttäjä:salasana

Ylimääräiset oikeudet pois tiedostosta

chmod 640 /etc/lighttpd/lighttpdpassword

ja sitten korjataan hieman tuota fileshare.conf tiedostoa

$SERVER["socket"] == "0.0.0.0:500" {
  server.document-root = "/mnt/DATA/fileshare"
  dir-listing.activate = "enable"
  auth.require = ( "/" =>
    (
      "method" => "basic",
      "realm" => "Password protected area",
      "require" => "user=käyttäjä"
    )
  ) # auth require
}

Ja näin, nyt olin jo useita sekuntteja tyytyväinen ratkaisuuni. Sitten tajusin, että eihän tuolla käyttäjätunnuksella ja salasanalla tee mitään ilman HTTPS yhteyttä! SSL pitää virittää paikalleen.

Lighttpd SSL

Onneksi SSL on helppoa ja varmenteet pala kakkua. Rykäisin omasta CA:sta pihalle 3 vuoden SSL varmenteen ja muokkasin fileshare.conf:n olemaan seuraavanlainen

$SERVER["socket"] == "0.0.0.0:500" {
  server.document-root = "/mnt/DATA/fileshare"
  dir-listing.activate = "enable"
  auth.require = ( "/" =>
    (
      "method" => "basic",
      "realm" => "Password protected area",
      "require" => "user=käyttäjä"
    )
  ) # auth require
  # SSL part
  ssl.engine  = "enable"
  ssl.pemfile = "/etc/lighttpd/public.crt"
  ssl.ca-file = "/etc/lighttpd/ca.pem"
}

Näin. Muistetaan, että varmennetiedostoista poistetaan ylimääräiset oikat myös. Huomioidaan että oman varmenteen varmennetiedoston rakenne on <varmenne><avain> ja CA varmenteiden varmennetiedoston rakenne on <sub CA><root CA>.

Nyt vain tuntia myöhemmin meillä on web serverin runkokonffis millä voidaan jakaa turvallisesti kavereille bittiä kun tarve tulee. Sitten tajusin, että voin tehdä tämän vielä paremmin. Voin korjata SSL asetukset kuntoon samantein kun tälläistä nyplään. On hyvä kotiservereilläkin välttää CRIME ja BEAST hyökkäykset ja kukapa ei haluaisi täydellistä taaksepäin suojaavaa salausta?

Onneksi tämä työ oli tehty minun puolesta jo etukäteen, joten pikagooglaus vie minut tälläiselle sivulle. Läppästään nämä omaan konffikseen ja rock and roll!

Lighttpd SSL done right

Lopullinen konfiguraatiotiedosto on siis

$SERVER["socket"] == "0.0.0.0:500" {
  server.document-root = "/mnt/DATA/fileshare"
  dir-listing.activate = "enable"
  auth.require = ( "/" =>
    (
       "method" => "basic",
      "realm" => "Password protected area",
      "require" => "user=käyttäjä"
    )
  ) # auth require
  # SSL part
  ssl.engine  = "enable"
  ssl.pemfile = "/etc/lighttpd/public.crt"
  ssl.ca-file = "/etc/lighttpd/ca.pem"
  ssl.use-sslv2 = "disable"
  ssl.use-sslv3 = "disable"
  ssl.use-compression = "disable"
  ssl.honor-cipher-order = "enable"
  ssl.cipher-list = "AES256+EECDH:AES256+EDH"
}

Huomaattehan, että ssl.cipher-list on tiukka, vanhat laitteet ei vältsisti toimi tämän kanssa. Sitten enää puhkotaan reijät pariin reitittimeen ja homma rock and roll! Näin on serveripuoli laitettu kuntoon. Sitten se viimeinen askel on toimittaa salasanat ja tunnus ystävälle.

Kotitunnusten toimittaminen

Ensimmäinen vaihtoehto, luonnollisesti, olisi salattu sähköposti, mutta sitä harvempi harrastaa joten tieto pitää toimittaa hajautettua kanavaa pitkin, jotta sähköpostin salakuuntelijat ei saa selville miten sinne päästään.

SMS: salasana
email: osoite

ja etukäteen sovittu käyttäjätunnus 🙂 tai sitten kaveri kyselee perään jos ei tiedä.