Fun met unslung
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
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
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:
-
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 bedoelen we verderop het ip adres dat bij stap twee is ingesteld!
- Formatteer de disk
- Controleer of hij werkt.
-
-
Zet de NLSU2 uit, en koppel disk(s) af
-
Installeren: EXACT volgens de beschrijving in het README bestand
-
Controleer of telnet toegang tijdens bootproces mogelijk is
- 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.
- 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
- als root (ethx is de naam van de netwerkinterface die u gebruikt)
-
route add 192.168.0.1 ethx
-
sudo arping -I ethx -f 192.168.0.1; telnet 192.168.0.1 9000
- Zet nu NSLU2 aan
- zodra u output ziet op ctrl-C drukken. Al het goed is verschijnt de redboot prompt:
-
Redboot>
- Het kan nodig zijn deze procedure te herhalen.
-
-
De nieuwe firmware flashen
- NLSU2 uitschakelen,
- Evt,. disks(s) afkoppelen,
- Weer aanzetten.
-
In het adminstration menu van de webinterface de nieuwe firmware kiezen en uploaden.
-
De NSLU2 uitschakelen.
-
Disk(s) aansluiten.
-
Weer inschakelen en kontroleren of alles normaal werkt.
-
'Unslingen'
-
De NSLU2 uitschakelen, en disk(s) loskoppelen.
-
Weer inschakelen zonder disk(s).
-
activeer telnet toegang door naar http:///Management/telnet.cgi te gaan en de knop te drukken.
-
Ga met telnet naar de NLSU2:
-
Koppel de disk waarop u wilt 'unslingen' aan en wacht ee poosje.
-
kontroleer in de web interface of de disk door de NLSU2 herkend wordt.
-
Draai het unsling commando in de telnet sessie voor de disk die u wilt gebruiken
-
Password aanpassen
- Nieuw password aanmaken
-
Changing password for root
-
Enter the new password (minimum of 5, maximum of 8 characters)
-
Please use a combination of upper and lower case letters and numbers.
- Password file naar HD kopieren:
-
# cp /etc/passwd /share/hdd/conf/passwd
-
Reboot:
# reboot
-
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
-
Actueel maken van de pakketten database:
- Eerste update
-
Toevoegen van extra pakket bronnen:
-
Gebruik van ipkg
-
Enkele handige hulpmiddelen installeren:
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
Configuratie van stunnel en webserver
Stunnel moet verker op poort 443 doorsturen naar lokale poort 80
-
Stunnel
- Voeg toe aan /opt/etc/stunnel.conf
[https] accept = 443 connect = 80 TIMEOUTclose = 0
- (her)start stunnel
/opt/etc/init.d/S68stunnel
Merk op dat startup scripts voor met ipkg geinstalleerde pakketen in /opt/etc/init.d staan.
- Controleer nu of je de webinterface ook met https:// kunt benaderen
-
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.
-
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
- Herstart thttpd
# /etc/rc.d/rc/thttpd
- Met http:/ moet je nu een foutmelding krijgen (could not connect to host)
-
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/
-
Installeren met ipkg
- Dit moet u nu zelf kunnen....
-
Configuratiefile /opt/etc/dovecot.conf
-
Dovecot herstarten
|