Belépés

Támogatóink



802.1x otthonra ( Első rész )

Sokan, akik esetleg szeretnének otthonra 8021x-et, de nem akarnak vagy nincs kapacitásuk egy külön zúgó gépet beállítani a célnak és hallgatni állandóan, és pénzük sincs Cisco kategóriájú eszközöket venni ( jo, most eltekintünk attól, hogy a Linksys is Cisco érdekeltség ) nagyjából meg voltak lőve 8021X téren. Más választás nem lévén, maradhattak a mostmár majdnem minden gyártó által támogatott WPA-PSK mellett. A következő rövid howtoval szeretnénk segíteni SOHO eszközökkel, külön gép nélkül történő EAP-TLS megvalósításban.


Előjáték

A howto OpenWRT firmware-re, illetve az ott található dokumentációra fog támaszkodni. Szeretném felhívni a próbálkozók figyelmét, hogy az OpenWRT használata garanciavesztéssel jár. Persze a kapott feature-ok miatt kit érdekel? J

A howto egy ASUS WL-500GD ( D = deluxe ) routerre támaszkodva készült el, de kalandosabb kedvűek bármilyen OpenWRT képes AP-val próbálkozhatnak, amelyben legalább 4Mb flash áll rendelkezésére. A mostani howto írása alatt egy ASUS-al játszottam, de előzőleg a rendszer összeállítása ( EAP-TLS ) sikerült WRT54G v2.2-es eszközzel is. A telepítés részletei szintén asus hw verzióhoz igazodnak, tehát más eszköznél érdemes az installálás részt is az OpenWRT honlapjáról összeszedni.

Az nvram változók ASUS specifikusak, ha valamelyik másik gyártó termékénel próbálód meg az installálást, érdemes előtte a OpenWRT dokumentációval konzultálni. Minden szükséges adat ott van, csak olvasási kézség kell hozzá. J

Az openwrt telepítéshez, illetve megfelelő konfigurálásához az alábbi programokra lesz szükségünk:

tftp kliens
telnet kliens
ssh kliens
scp kliens

Amennyiben első alkalommal próbálkozik valaki nem árt működő internet elérés, vagy ha ez nem járható út, akkor egy ismerőshöz átballagni egy üveg borral, hogy ne haragudjon, hogy sokaig fogunk zavarni. ( Egyébként is ajánlatos pár szem nyugtató, sör/bor/kóla és pizza beszerzése J )

OpenWRT installálást

Az első részben telepíteni fogunk egy OpenWRT-t a routerünkre, valamint nagyobb tárhelyet készítünk elő egy USB-s pendrive segítségével.

Kössük össze a routert a géppel egy kábellel úgy, hogy a router oldalán a kábel a switch portok egyikébe jusson.

Az ASUS hw-ek Broadcom chipsetre épülnek, ezért az openwrt-brcm* firmware valamelyike kell hozzá. A deluxehoz a 4Mb-os JFFS2 image-t fogjuk használni. ( openwrt-brcm-2.4-jffs2-4MB.trx ). Töltsük le a gépünkre a filet, majd indítsuk el a tftp kliensünket: Feltételezem, hogy ha az eszköz már használatban volt előzőleg, egy resetet mindenki megeresztett rajta :-) Amennyiben rosszul feltételezem, a tftp parancsot az eddig használt IP címre kell kiadni. ( Az asus eszközök a linksysekkel ellentétben failsafe boot közben nem állnak vissza az eredeti IP címre! )

# wget http://downloads.openwrt.org/whiterussian/rc4/bin/openwrt-brcm-2.4-jffs2-4MB.trx

Linux:

tftp 192.168.1.1
> binary
> rexmt 1
> trace on
> put openwrt-brcm-2.4-jffs2-4MB.trx

Jelmagyarázat:
binary – bináris mód
rexmt 1 – milyen időközönként próbálkozzon újra, ha nem tud a tftp kiszolgálóra csatlakozni ( erre leginkább Linksysek esetében lesz szükségünk, az asus AP-k esetében ahogy elindítjuk a firmware-t, azonnal el is kezdi tölteni )
trace on – ezzel a kapcsolóval láthatjuk, hogy éppen hol tart a feltöltés


Windows:

tftp -i 192.168.1.1 PUT openwrt-brcm-2.4-jffs2-4MB.trx

majd itt álljunk is meg egy pillanatra. Húzzuk ki az AP-ból a tápot, nyomjuk be a reset gombot, majd a reset gomb nyomva tartása mellett dugjuk vissza a tápot az eszközbe. Ahogy látjuk, hogy elkezd világítani az eszköz ledje, engedjük el a reset gombot. Majdnem abban a pillanatban elkezd a power ( PWR ) led lassan villogni. Csapjunk az enterre, máris láthatjuk, hogy elindul az openwrt image fölfele.

Amennyiben később mégis szeretné valaki visszatenni a gyári firmware-t, ugyan ezekkel a lépésekkel próbálkozhat.

Miután a feltöltéssel készen van a masina, a PWR led abbahagyja a villogást, illetve rebootol az eszközünk. Ha esetleg az eszköz pár percen belűl mégsem bootolna újra, ami előfordul, akkor sem kell pánikba esni, csak új eszközt kell vennünk. Ja, nem... Csak húzzuk ki az AP-ból a tápot, dugjuk vissza, és szinte biztosan fel fog bootolni az eszközünk.

Mostanra, ha minden jól ment, van egy működőképes OpenWRT által hajtott és garanciát vesztett routerünk. Mivel a rendszer az első boot során nem veszi bírtokába a teljes rendelkezésre álló flash területet, húzzuk ki újra a tápot, majd dugjuk vissza, egy újabb rebootra kényszerítve eszközünket. Pár másodperc múlva újra talpon van a masina, nézzünk körül, hogy mit és merre találunk.

Az OpenWRT egyik, a felhasználók felé leglátványosabb fejlesztése az whiterussian RC4-ben egy webes konfigurációs felület, amit a kedvenc böngészőnkbe pötyögött http://192.168.1.1 URL-el el is érhetünk. Természetesen mivel mi ugyes h4X0r0k vagyunk, ilyen megalázó dolgot, mint kattingatós konfigolás nem teszünk, tehát először nézzünk körül másfelé, aztan ha majd minden készen van, megnézhetjuk a webes felületet is, megmutathatjuk a csajunknak, hogy milyen vérprofik vagyunk, mert nem ám színes felületen adminoljuk a szürke villogó izét az asztal alatt ( szőke ! techie csajok esetén ).

Fogjuk meg kedvenc telnet kliensünket, és pötyögjük be a konzolba:
# telnet 192.168.1.1
( windows és linux esetén is van a gépen telnet kliens )

egy röpke pillanat múlva már a router konzolján ücsörgünk.

Mivel azonban a telnet nem eleg 1337, írjuk be gyorsan, hogy passwd, majd üssünk entert. Írjunk be egy jelszót, amit később sem felejtünk el, majd a felkínált promptnál ismételjük meg az előzőleg beírt jelszavunkat. Ha ezzel végeztünk, inditsuk újra a routert.

Amint felbootolt az eszközünk, egy érdekes változást vehetünk észre. Webes felület továbbra is van ( huhh ) viszont nincs telnet. Van viszont helyette ssh, ami egy sokkal jobb dolog, mivel titkosítva tudunk kommunikálni a routerrel később is, akár WLAN oldalról, akár kábelen keresztül.

Konfigurálás

Kapjuk elő a kedvenc ssh kliensünket ( windowsos felhasználóknak javaslom a putty használatát ) es lépjünk be:

# ssh root@192.168.1.1

a felkínált jelszó promptnál adjuk meg azt a jelszót, amit előzőleg adtunk meg. Ha ez sikerült, újból a telnet belépést követő képernyő fogad minket.

Mielőtt bármilyen érdemi telepítésbe és konfigurálásba kezdünk, néhány alapvető konfigurálást el kell végezni.

Rendszeridő

Az EAP-TLS/TTLS/PEAP esetén a certekkel történő azonosítás során a radius szerver figyelembe veszi, hogy mettől meddig érvényes az adott certificate, tehát ha a rendszeridőnk rosszul van beállítva, akkor bizony "még nem érvényes", vagy "már nem érvényes" hibaüzenettel fogja eldobni a kapcsolódási kéréseket. Emiatt fontos a rendszeridó beállítása.

# echo "CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00" > /etc/TZ

# cd /etc/init.d/
# touch S41rdate
# vim S41rdate

és írjuk bele:

#!/bin/sh
/usr/sbin/rdate time.kfki.hu

Ezzel biztosítjuk, hogy ha az eszközünk ujraindul, akkor is a hálózat ( ppp, dhcp, static ip ) felhúzása után beállitsa magának a pontos időt. ADSL kapcsolat esetén érdemes egy sleep 5-öt írni az rdate sor elé, hogy a ppp kapcsolat felépítésének lassúsága miatt ne timeoutoljon az rdate.

Az OpenWRT képes eszközöknél a hálózati interface-ek nevei eltérőek, az ASUS WL500GD esetében:

LAN: vlan0
WAN: vlan1
WIFI: eth1

illetve az eth0 a teljes switch, a LAN és WAN porttal együtt. Ha más eszközzel, vagy éppen ASUS más verziójával próbálkozunk, akkor mindenképpen éremes megnézni az OpenWRT oldal referenciáit.

A WLAN eszközök az alapvető beállításokat nvramban tárolják. Az OpenWRT alap telepítésben is adja nekünk az /usr/sbin/nvram-ot, amivel ezeket a beállításokat tudjuk macerálni. Érdemes a változókat megnézni ( nvram show, de mivel sok lesz a kimenet, érdemes egy fileba menteni, így később is meg tudjuk nézni ), és esetleg később utána nézni, hogy mi mit jelent. Amig azonban nem tudjuk, hogy melyik változó mit csinál, nem érdemes akármit megváltoztatni, mivel a változtatás a legtöbb esetben csak reboot esetén lép életbe, így aztan elég gyorsan elérhető, hogy villogó tégla legyen a kis kedvencunkből.

Nvram változtatás esetén minden alkalommal az "nvram commit"-ot kell futtatni, hogy az új értékek mentésre kerüljenek.

A hálózat beállításnál két esetet írok, az egyik, amikor DHCP-n kapjuk az IP címet a szolgáltatótol, a másik, amikor PPPoE-n. Mindkét esetnél az alapértelmezett belső lábakat hagyjuk, azaz a WiFi és a switch portok egy bridgeben vannak összekötve, és egy darab IP címmel rendelkeznek. Ennek egyszerűen kényelmi szempontja van, így ugyanis működik a DHCP a belső hálón, hat szétszedjük, akkor nem. J

Intranet oldal:

lan_ifname=br0
lan_ifnames="vlan0 eth1"
lan_proto=static
lan_ipaddr=192.168.1.1
lan_netmask=255.255.255.0

Megadtuk, hogy a belső lába a routernek a br0 legyen, illetve, hogy a lan interface-ek a vlan0 és az eth1-ből álljanak. Ezzel a konfiggal a br0 IP címe 192.168.1.1 lesz, és 255.255.255.0 netmaskkal fog dolgozni.

wan_ifname=vlan1
wan_proto=dhcp

A wan_ifname azt az interface-t jelöli, amelyik a külső linkünk lesz, tehát erre az interface-ra kapjuk meg a szolgáltatótol az IP címet. A wan_proto pedig értelem szerűen azt adja meg, hogy hogyan szeretnénk megkapni azt az IP-t.

PPP esetén más a történés:

wan_ifname=ppp0
wan_proto=pppoe
ppp_idletime=10
ppp_mtu=1492
ppp_passwd=jelszó
ppp_redialperiod=15
ppp_username=felhasználó
pppoe_ifname=WAN if, jelen esetben vlan1

mindkét esetben a változókat

# nvram set valtozo_neve=valtozo_erteke

( például nvram set ppp_redialperiod=15 )

formában kell megadni, és amikor végeztünk, nvram commit-al mentsük el a változásokat.

Bootoljuk újra az eszközünket.

Pár másodperc után ismét lehet ssh-val kapcsolódni az eszközre, és ha minden jól van beállítva, akkor kilátunk az internetre is. ( ping huwico.hu, ha van válasz, akkor remek, ha nincs, akkor lehet megint ledöglött ez a nyavajas szerver &@"/%=+"+#+4@&x, pingelj valami mást. ) Ha nem lehet pingelni kifele, akkor valamit sikerült elkonfigolni. A "Konfigurálás" résztől kezdődően végig kell menni újra a procedúrán.

Ha minden jó, akkor kezdődhet az pendrive beillesztése a rendszerbe.

USB storage

Az ASUS WL500GD eszközön két darab, elvileg usb2 képes csatlakozó található. Erre akár külső rackben IDE vinyót is lehet kötni, igényeknek megfelelően. Ha valaki elég perverznek érzi magat ( szia manoo :) ) akkor bindtól elkezdve MTA-n keresztül apache-on és php-n át akármit leforgathat, és működésre bírhat egy ilyen eszközön.

Az OpenWRT built-in csomagkezelővel rendelkezik, amit ipkg-nak hívnak. Az ipkg a debianban dpkg néven megtalálható program kicsi testvére, lényegében a funkciók teljes arzenáljával. A lehetséges kapcsolókról az

# ipkg help

paranccsal kaphatunk információt. Futtassunk le az

# ipkg update

ezzel mentésre kerülnek az elérhető csomag információk.

Első körben el kell hitetnünk a rendszerrel, hogy neki bizony van usb csatlakozója, és abba bele is dugtunk már egy pendriveot. Ehez telepítsük fol az USB cssatoló felismeréséhez szükséges modulokat:

# ipkg install kmod-usb-core kmod-usb-uhci kmod-usb2 kmod-usb-storage

illetve különböző filerendszerekhez a modulokat:

# ipkg install kmod-vfat kmod-ext2 kmod-ext3

valamint a partíció és filerendszer elkészítéséhez szükséges toolokat:

# ipkg install http://downloads.openwrt.org/people/nico/testing/mipsel/ \
packages/fdisk_2.12r-1_mipsel.ipk
# ipkg install http://downloads.openwrt.org/people/nico/testing/mipsel/ \
packages/e2fsprogs_1.38-1_mipsel.ipk

Ezzel lényegében mindent fel is telepítettünk, ami az alap rendszerre kell. Bootoljuk újra az eszközünket.

Belépés után nézzük meg, hogy a rendszer megtalálta-e az USB storageot:

# dmesg | grep SCSI SCSI subsystem driver Revision: 1.00 scsi0 : SCSI emulation for USB Mass Storage devices Type: Direct-Access ANSI SCSI revision: 02 SCSI device sda: 64000 512-byte hdwr sectors (33 MB)

ha valami ilyesmi van a logban, akkor a rendszer megtalálta a pendriveot.

Készítsük el a partíciót:

# fdisk /dev/scsi/host0/bus0/target0/lun0/disc

majd formázzuk:

# mkfs.ext2 /dev/scsi/host0/bus0/target0/lun0/part1

Az OpenWRT alapértelmezetten a /tmp/mnt/discX_Y alá mountolja az usb-storage eszközöket ( X = lemez, Y = partíció )

A csomagok nem az alapértelmezett rootba történő telepítése miatt módosítani kell a /etc/ipkg.conf filet, valahogy így:

echo "dest usb /tmp/mnt/disc0_1 " >> /etc/ipkg.conf

Természetesen aki mas könyvtáron keresztül szokta elérni a gépein az adattárolásra szolgáló partíciókat, az csinálhat egy symlinket ( ln -s ) vagy megkeresheti, hogy hol definiálja a boot alatt a rendszer a mountpointokat, és módosíthatja azt is.

Lépjünk be a /etc könyvtárba, és módosítsuk a preinit és profile fileokat az alábbiak szerint: ( a létező export PATH sort kell kiegészíteni )

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/tmp/mnt/disc0_1/bin:/tmp/mnt/disc0_1/sbin:\
/tmp/mnt/disc0_1/usr/bin:/tmp/mnt/disc0_1/usr/sbin

mindkét fileban, és allítsuk is be az új PATH változót.

# `grep PATH /etc/preinit`

Akik esetleg ssh-n kulccsal autholnak, fel lehet másolni a /etc/dropbear ( a dropbear az openwrt ssh szervere ) könyvtárba az authorized_keys fileunkat, így többet nem kell jelszót gépelnünk a belépéshez.