Op 17 september 2005 heb ik een demonstratie gegeven met unslung op een Linksys NSLU2 kastje. Hier kunt u alles nog eens nalezen.

Het apparaatje

Linksys_NLSU2

Functie:

  • Klein kastje (ca. 13x8x2 cm) met 2 USB 2.0 aansluitingen en een ethernet aansluitng.
  • Maakt USB disken of sticks beschikbaar voor het netwerk via SMB (Windows 'Share')
  • Instellingen en beheer via netwerkinterface.
  • Kastje is te koop voor minder dan € 100,- (sept. 2005, zonder disks)

Hardware

  • Externe voeding, max 10W
  • 32 MB RAM
  • Intel XScale IXP420 microcontroller
    • 32bit 133 Mhz ARM version 5
    • Geen hardware foating point.
    • o.a. geintegreerde USB, ethernet en DRAM controller

Unslung

Hompage unslung: http://www.nslu2-linux.org/

Vooraf:

Het installeren van andere firmware gebeurt op eigen risico, en waarschijnlijk is daarna aanspraak op garantie niet meer mogelijk!

Doelstelling:

  • Laat basisfuncties van linksys software intact, maar geef de gebruiker mogelijkheden tot uitbreiden.

Hoe werkt dit:

  • Aangepaste firmware
  • Bestaande software wordt naar HD gekopieerd, en in flash worden links naar harddisk partitie gemaakt.
  • Zo kan software op HD worden gewijzigd en uitgebreid.

Wat kan dan bijvoorbeeld:

  • Centrale mail server (IMAP/POP) inclusief spam en virusfilter
  • NFS server i.p.v. SMB
  • Radius server voor netwerk authentificatie.

Wat moet ik daarvoor doen:

  • Unslung installeren!
  • Benodigde pakketen installeren

  • Pakketten configureren
  • Documentatie lezen!


Installatie

Stap voor stap:

  1. Formatteer de harddisk m.b.v. de webinterface van de standaard NSLU2
      • Ga naar de administration interface ( standaard adres is 192.168.1.77 )
      • Pas de netwerk instellingen aan, m.n. kies een IP-addres in je igen netwerk. Met dit bedoelen we verderop het ip adres dat bij stap twee is ingesteld!
      • Formateer de disk.
      • Controleer of hij werkt.Dowload en unzip de firmware: http://www.unslung.org/downloads.php
      • Zet de NLSU2 uit, en koppel disk(s) af.
      2. Zet de NLSU2 uit, en koppel disk(s) af

      Installeren: EXACT volgens de beschrijving in het README bestand

          1. Controleer of telnet toegang tijdens bootproces mogelijk is


        1. (zie hiervoor http://www.nslu2-linux.org/wiki/HowTo/TelnetIntoRedBoot )

          Deze procedure is uw beste kans als het flashen mislukt, daarom is het belangrijk te controleren of het werkt.

          1. computer moet kunen communiceren met ip-adres 192.168.0.1.

          1. Routers o.i.d. gebruiken dit adres vaak, koppel deze af of maak met een losse hub of switch een aparte verbinding met de NLSU2.
          2. u moet op uw linux doos beschikken over (kijk bij uw distributie naar deze pakketten):
            • telnet
            • arping (de iputils versie, deze heeft de '-f' optie)
            • sudo
          3. als root (ethx is de naam van de netwerkinterface die u gebruikt)
            1. route add 192.168.0.1 ethx
            2. sudo arping -I ethx -f 192.168.0.1; telnet 192.168.0.1 9000

          1. Zet nu NSLU2 aan
          2. zodra u output ziet op ctrl-C drukken. Al het goed is verschijnt de redboot prompt:
            1. Redboot>
          3. Het kan nodig zijn deze procedure te herhalen.
        1. Dowload en unzip de firmware: http://www.unslung.org/downloads.php

        1. De nieuwe firmware flashen

          1. NLSU2 uitschakelen,
            • Evt,. disks(s) afkoppelen,
          2. Weer aanzetten.

          1. In het adminstration menu van de webinterface de nieuwe firmware kiezen en uploaden.

          2. De NSLU2 uitschakelen.

          3. Disk(s) aansluiten.

          4. Weer inschakelen en kontroleren of alles normaal werkt.

            • Kontroleer met name of de disks normaal herkend worden en dat gegevens normaal beschikbaar zijn.

        1. 'Unslingen'

          1. De NSLU2 uitschakelen, en disk(s) loskoppelen.

          2. Weer inschakelen zonder disk(s).

          3. activeer telnet toegang door naar http:///Management/telnet.cgi te gaan en de knop te drukken.

          4. Ga met telnet naar de NLSU2:

            • telnet 
          5. Koppel de disk waarop u wilt 'unslingen' aan en wacht ee poosje.

          6. kontroleer in de web interface of de disk door de NLSU2 herkend wordt.

          7. Draai het unsling commando in de telnet sessie voor de disk die u wilt gebruiken

            • # /sbin/unsling disk1
      1. Password aanpassen

        1. Nieuw password aanmaken

        1. # passwd

        1. Changing password for root

        1. Enter the new password (minimum of 5, maximum of 8 characters)

        1. Please use a combination of upper and lower case letters and numbers.

        1. Enter new password:

        1. Re-enter new password:<

        1. Password changed.

        1. #

        1. Password file naar HD kopieren:

        1. # cp /etc/passwd /share/hdd/conf/passwd
        2. Reboot:

          # reboot
      1. Klaar!

      De software

      Standaard software:

      • Linux kernel 2.4.22
      • Samba voor disk sharing
      • thttpd voor web interface
      • uitilities zoals busybox met udhcpc en een aantal andere zaken.

      pakketten

      1. Actueel maken van de pakketten database:

        1. Eerste update
          • # ipkg update
            Downloading http://ipkg.nslu2-linux.org/feeds/unslung/cross/Packages.gz
            Inflating http://ipkg.nslu2-linux.org/feeds/unslung/cross/Packages.gz
            Updated list of available packages in /usr/lib/ipkg/lists/cross
            Downloading http://ipkg.nslu2-linux.org/feeds/unslung/native/Packages.gz
            Inflating http://ipkg.nslu2-linux.org/feeds/unslung/native/Packages.gz
            Updated list of available packages in /usr/lib/ipkg/lists/native
            Downloading http://ipkg.nslu2-linux.org/feeds/unslung/oe/Packages.gz
            Inflating http://ipkg.nslu2-linux.org/feeds/unslung/oe/Packages.gz
            Updated list of available packages in /usr/lib/ipkg/lists/oe
            #
        2. Toevoegen van extra pakket bronnen:

          • # ipkg install unslung-feeds
            .....
            # ipkg update
            ......
      2. Gebruik van ipkg

        • Ipkg is een compacte package manager gemaakt voor toepassing in embedded linux distributies die in het gebruik veel lijkt op apt-get zoals we dat van de debian distributie kennen.

        • Veel gebruikte commando's:

          • Bekijken van lijst met beschikbare pakketten:
            # ipkg list
          • Installeren van pakket:
            # ipkg install ....
          • Verwijderen van een pakket:
            # ipkg remove ....
          • Bekijken van lijst met geinstalleerde pakketten:
            # ipkg list_installed
        • Voor overige mogelijkheden zie output van :

      3. Enkele handige hulpmiddelen installeren:

        • # ipkg install bash less
        • Merk op dat we meerdere pakketten tegelijk kunne installeren en dat er automatisch ander noodzakelijk pakketten worden geinstalleer

      beveiligen

      Waarom

      De standaard webinterface is een normale onbeveiligde site (http:/...). Iemand die op hetzelfde netwerk actief is kan zo gemakkelijk achter het root (administratie) password komen. En als we een wireless netwerk hebben dat niet of alleen met WEP beveiligd is kan dat makkelijk iemand zijn die we niet kennen. Het is dus goed om in ieder geval de dingen die de administratie van het netwerk betreffen te beveiligen.

      Dit kan door het dataverkeer te versleutelen met SSH (i.p.v. telnet) en SSL (voor de web interface).

      Stunnel

      Probleem is dat de ingebouwde kleine webserver geen SSL ondersteuning heeft. Dit gaan we oplossen met behulp van een 'secure tunnel' ,stunnel. Stunnel kan inkomend verkeer op een poort omleiden via een beveiligde tussenlaag.

      Normaal luisterd een webserver op poort 80, en een beveilgde webserver op poort 443. Met stunnel kun je beveiliging 'om' een onbeveiligde (web)server zetten.

      Dus i.p.v.

      browser: vraagt leesbaar http://.... -> netwerk ->
      -> poort 80 van webserver: maakt leesbare pagina -> netwerk ->
      -> browser: laat pagina zien

      krijg je nu

      browser: vraagt versleuteld https://... -> netwerk ->
      -> poort 443 van stunnel: ontcijfert en stuurt lokaal door naar ->
      -> poort 80 van webserver: maakt leesbare pagina ->
      -> stunnel: versleutelt -> netwerk ->
      -> browser: ontcijfert pagina en laat zien

      M.a.w het verkeer over het netwerk wordt versleuteld door stunnel , terwijl de webserver daar zelf niks van merkt.

      Haal de benodigde pakketten op met ipkg

      • # ipkg install openssh, stunnel
        • Merk op dat ipkg automatisch ook zlib en openssl installeert.

        • Er zal tijdens de installatie van stunnel een certificaat worden aangemaakt, beantwoord de vragen over de ' certificate request' op een zinnige manier.
      • Test of je met ssh kunt inloggen:
        • ssh root@
      • vanaf nu is telnet niet meer nodig!
        • log uit in de telnet sessie met exit
        • 'Disable telnet' in de webinterface

      Configuratie van stunnel en webserver

      Stunnel moet verker op poort 443 doorsturen naar lokale poort 80

      1. Stunnel

        1. Voeg toe aan /opt/etc/stunnel.conf
          [https]
          accept = 443
          connect = 80
          TIMEOUTclose = 0
        2. (her)start stunnel
          /opt/etc/init.d/S68stunnel

          Merk op dat startup scripts voor met ipkg geinstalleerde pakketen in /opt/etc/init.d staan.

        3. Controleer nu of je de webinterface ook met https:// kunt benaderen
      2. thttpd

        Thttpd moet nu zo worden geconfigureerd dat het alleen nog maar naar aanvragen vanuit de NLSU2 zelf luistert (localhost). We willen niet dat je per ongeluktoch met http:// i.p.v. https:// naar de machine kan.
        Thttpd is standaard deel van de linkstys software, en dus bevinden zich de startup scripts niet in /opt/etc/init.d maar in /etc/rc.d. In dit geval heet het /etc/rc.d/rc.thttpd
        Om tijdens het booten onze eigen configuratie te starten voor i.p.v. de linksys maken we een omleiding ('diversion' ) door een gelijkgenaamd script in de /unslung directory te zetten.

        1. Maak een 'diversion' script'

          Dit is een script dat (in dit geval) uitgevoerd wordt vóór het uitvoeren van de standaard script.

          Dit is de inhoud van het script /unslung/rc.thttpd
          #!/bin/sh
          if [ ! -e /opt/etc/orig/thttpd.conf ]; then
          cp -p /etc/thttpd.conf /opt/etc/orig/thttpd.conf
          fi

          sed -i -e 's/# host=0.0.0.0/host=127.0.0.1/' /etc/thttpd.conf
          return 1

          Dit script:

          • Kijkt of er een configuratiebestand /opt/etc/orig/thttpd.conf bestaat
          • Zo nee,
            • kopieert /etc/thttpd.conf (het originele linksys bestand) naar deze locatie
          • Veranderd dan de regel met toegang van alle ip- adressen (0.0.0.0) naar alleen de locale machine (127.0.0.1)
          • eindigt dan met returnwaarde 1.
            • Dit betekent dat de rest van het origienele script in /etc/rc.d normaal moet worden uitgevoerd.
            • Bij een return waarde van 0 zou het niet worden uitgevoerd en dan wordt zo'n script in plaats van het origineel uitgevoerd
        2. Herstart thttpd
          # /etc/rc.d/rc/thttpd
        3. Met http:/ moet je nu een foutmelding krijgen (could not connect to host)
          • met https:// niet
      3. Nu is het moment om...

        • Het root password opnieuw in te stellen zoals bij het unslingen
        • Het admin passwoord via de webinterface te veranderen.

      Mailserver

      Uitgangspunten:

      • We halen mail op via POP of IMAP van een provider.
      • We sturen mail weg, direct uit de mail client van de computer waar we werken.
      • We willen onze mail kunnen lezen op meerdere computers.
      Een mogelijke oplossing hiervoor is dat we een IMAP server op de NSLU2 zetten, die in de homedirectories van de gebruiker(s) de mail bewaard. De mail moeten we dan regelmatig gaan ophalen met van onze provider m.b.v. een POP/IMAP client.

      IMAP server

      Hiervoor gebruiken we dovecot. Dat is een eenvoudig te configureren IMAP server, die weinig resources vraag en niet vaak met beveiligingsproblemen in beeld komt. De andere, meer 'standaard' oplossing (Cyrus-IMAP) is weliswaar waarschijnlijk sneller, maar lastiger te configureren en bovendien kwa veiligheids probelemen regelmatig aan de orde.

      Informatie en documentatie over dovecot vindt u op http://www.dovecot.org/

      1. Installeren met ipkg

        • Dit moet u nu zelf kunnen....
      2. Configuratiefile /opt/etc/dovecot.conf

        • In pricipe zijn de defaults voor ons op dit moment i.h.a. voldoende en hoeven we maar een ding te wijzigen.
        • De standaard directory voor mail plaatsen we in het maildir formaat onder de home directory van elke gebruiker. De home drectory van een gebruiker staat op /share/hdd/data/. we noemen de mail diractory MailDir dus dan moeten de volgende regel toevoegen.
          default_mail_env = maildir:/share/hdd/data/%u/MailDir
      3. Dovecot herstarten

        • Ook dat moet nu lukken.

      Share

      Login






      Uw gebruikersnaam of wachtwoord verloren?
      Registreer

      HCC op Twitter

      Oneliners

      Ik kan alles, maar moet het alleen nog leren.