Zdravim!
Muzete mi prosim nekdo pomoct pochopit, jak funguje WiFi captive portal?
- Uzivatel uvidi verejnou sit a klikne na pripojit
- AP (server) ho pripoji a na FW mu zablokuje vsechny porty krome TCP 80 a ten presmeruje na prihlasovaci stranku
- Klient se uspesne prihlasi a server pro jeho MAC adresu prida vyjimku na FW a povoli mu plny pristup do site
- Po urcite dobe AP odebere z FW pravidlo a klient je vykopnut
Chapu to dobre?
Shanim nejaky jednoduchy software na captive portal, ktery pobezi na OpenWrt. Potrebuju mit v databazi, idealne SQLite hesla, idealne jen hesla a ne jmena - prihlasovani pouze vygenerovanym retezcem.
Velke programy jako chillispot nebo coova-chilli nechci, shanim neco maleho. Zaujal me nodogsplash (http://wiki.openwrt.org/doc/howto/wireless.hotspot.nodogsplash), ale ten neumi tahat hesla z DB.
Mate nejaky napad na jiny captive portal aby sel pod OpenWrt?
Dalo by moc prace napsat v PHP captive portal? Co vsechno by musel umet?
Dekuji za pomoc.
Plus minus ruzne nuance funguje CP timhle zpusobem.
Trochu si protirecis - na jednu stranu nechces pouzit dost lehkotonnazni veci jako chillispot nebo nodogsplash(nebo ti nevyhovuji) a na druhou stranu chces pachat implementaci v php kterou na necem s 16-32 mb ram a ~200 bogomips rozbehas tezko. IMO mas dve moznosti a to bud implementovat captive portal na brane centralne (pfsense, monowall, mikrotik atp) a napr na jednotlivych AP vytvorit pres VAPy odpovidajici omezenou podsit NEBO to resit samostanym captive portalem na kazdem zarizeni a pouzit nejaky (ne)centralizovany system overovani uzivatelu proti db/ldap atp.
PHP na 32 MiB RAM běží a dá se to. Databáze, to už je horší. Nešlo by to držet v souboru? :)
Upozorňuji, že CP je by-design nebezpečný, neboť k identifikaci přihlášeného klienta nepoužívá žádný kryptograficky bezpečný mechanismus, nýbrž MAC adresu, která se přenáší nešifrovaně a každý si ji může odposlechnout a posléze nastavit.
Implementace by teoreticky měla jít dát přes noc, skript najde zadaný řetězec v texťáku, podívá se na IP adresu, která k ní patří, zjistí odpovídající MACku (ip neigh || arp) a přidá pravidlo do iptables. Případně se jednou za čas spustí nějaký cron a pročistí neaktivní klienty.
Citace od: Jenda kdy 14. 08. 2012, 00:06:20
Databáze, to už je horší. Nešlo by to držet v souboru? :)
Slo a asi by to bylo i nejlepsi.
Citace od: Jenda kdy 14. 08. 2012, 00:06:20
Upozorňuji, že CP je by-design nebezpečný, neboť k identifikaci přihlášeného klienta nepoužívá žádný kryptograficky bezpečný mechanismus, nýbrž MAC adresu, která se přenáší nešifrovaně a každý si ji může odposlechnout a posléze nastavit.
S tim pocitam.
Citace od: Jenda kdy 14. 08. 2012, 00:06:20
Implementace by teoreticky měla jít dát přes noc, skript najde zadaný řetězec v texťáku, podívá se na IP adresu, která k ní patří, zjistí odpovídající MACku (ip neigh || arp) a přidá pravidlo do iptables. Případně se jednou za čas spustí nějaký cron a pročistí neaktivní klienty.
Presne tak jsem to myslel. Jednoducha PHP stranka ktera bude pomoci PHP exec() (http://www.php.net/manual/en/function.exec.php) spoustet vsechny prikazy.
Jen me zajimalo, jestli uz neco takoveho neni hotove - nechci znova vynalezat kolo. :-)
Moje pozadavky:
- Do DB/textoveho souboru si vlozim/vygeneruju hesla a jejich platnost (1h,8h,24h)
- Klient zada heslo, CP ho smaze/oznaci ze souboru a pusti klienta na net. Pomoci cronu nebo at si prida jeho odpojeni
Nic vic nechci. Existuje neco takoveho?
kup si nejaky nejlevnejsi mikrotik, tam je funkce "hotspot", coz je captive portal, ktery si umi lizat pristupy (mimojine) z Radiusu.
No a kdyz pouzijes freeradius, tak ten si to zase umi lizat z mysql a jsme tam kde jsme chteli byt :)
Hmm,
pokud je o neco velmi velmi jednoducheho, takze zacnete treba zde.
http://www.andybev.com/index.php/Using_iptables_and_PHP_to_create_a_captive_portal
http://aryo.info/labs/captive-portal-using-php-and-iptables.html
Pripadne juknete na sadu NoCat, ale nevim jestli projekt zive, posledni release vidim z 2005, kdysi j
jsem v tom neco delal.
http://nocat.net