freeradius config kérdések

Fórumok

A probléma a következő: Debian on fut egy Freeradius szerveren. A rootereken saját fejlesztésű Openwrt alapú disztribució, chillispot-al. A rooteren DDns ez-ipupdate fut, egy PPPOE ADSL DHCP-vel kiosztott interneten. A rendszer rendben működik, de van egy két dolog amikre nem igazán tudtam értelmes megoldást találni:

- A freeradius-ban (client.conf) domain (dyndns) azonosítja a client-et. Ha a rooternek megváltozik a IP-je, (reboot stb.) akkor a rooter átállítja a DDNS IP címet, de a freeradius csak újratöltés után kéri le az aktuális IP címet. (Jelenleg a crontab-ban van beállítva a reload)

- Az adatbázisban (radcheck) Simultaneous-Use:=1 használok, hogy egyszerre csak 1 felhasználó tudja használni az elérést. Ha megszakad a kapcsolat akkor a RadAcct session tovább él, tehát nem tud ismét bejelentkezni a user. Meg lehet -e adni valahol hogy a freeradius valami Session Life Time alapján lezárja a megszakadt kapcsolatokat? Nyilván elsősorban a chillispotban kéne ezt megoldani, de az internet kapcsolat megszakadása esetén ismét megmarad a probléma.

Ha valakinek van valami megvalósítható őtlete, szívesen olvasnám...

Hozzászólások

A rootereken saját fejlesztésű Openwrt alapú disztribució, chillispot-al.

Hozzá lehet férni az itt említett disztribhez? :)

covek@covek.hu

Igen ez vicces... Nos félretéve a viccet, nem a rooteren van a hangsúly, hanem a radiuson, és a jövőben sem lehet hozzáférni rooteren lévő programokhoz, csak nekem :)

Csupán csak az a kérdésem, hogy tud -e valaki valami paramétert a freeradiusban arra, hogy amikor a user logout nélkül lép ki a rendszerből, akkor az adatbázisban az AcctStopTime ne maradjon '0000-00-00 00:00:00' és ha lehet akkor az AcctSessionTime se maradjon '0' ? Vagy ehez scriptet kell írnom? És ehez egy nálamnál szakavatottabb freeradius Guru tapaszatalata szükséges...

Igen valóban félreértettem a covek beírását, mert nem igazanán a rooterre fokuszáltam, hanem a radiusra. A wrt amit gyártottam rá, annyiban tér el az alap openwrt white russian rc5 -től kiindulva került fel 4-5 db saját alaklmazás: SOAP egy Cube Cart illetve a OS commerce webáruházokhoz, WEB interface, tűzfal át lett konfigolva, stb. Az eszköz a központi szerverről kapja meg a beállítási információkat pl. hosztnevet, az radius auth paramétereket stb. A megrendelői igény az volt hogy csak a minimális PPP vagy PPPOE beállításokat keljen beállítani a felhasználónak, amit lehet a rendszer automatikusan végezzen el.
A cél az volt hogy olyan prémium Hostspot rendszer készüljön el amibe az eshop vagy az üzlettulajdonosok beregisztrálhatnak, ezután egy FW flashel felraják az asus, wrt54g eszközökre a scripteket; kirakják az access pointokat az üzletükbe ami nyitva áll mindenki számára és annyi nethozzáférést kapnak a vásárlók amennyit vásároltak. Mint mondtam az FW openwrt alapokról indult, és lett belőle az ami lett egy hibrid-wrt.

Most egy freeradiuson tudom teszetlni a rooter(eket), ezért lenne fonotos belőnöm a szervert.

Azt megköszönném a ventura -nak, ha utána nézne...

meg lehet csinálni, mert annó megcsináltuk, ha jól emléxem.
bár már régen volt, de ha addig nem talán hétfőn utána tudok
nézni hogy hogyan oldottuk meg.

Celeron-M 1400Mhz, 768M, Debian SID, 2.6.18-rc7

Lehet hogy meg van a megoldás és a Fall-Through := 1 lesz az én barátom?

Danke

Ha valakit érdekel, akkor azt is leírom hogy miként lehet a Freeradiust rábírni arra hogy a MySQL-ből vegye a kliensek nas paramétereit. Visszagondolva triviális, nekem mégis ráment egy napom, de most már látom hogy én sem vagyok tökéletes:

/etc/freeradius/sql.conf:

readclients = yes

míg az adatbázisban:

CREATE TABLE `nas` (
`id` int(10) NOT NULL auto_increment,
`nasname` varchar(128) NOT NULL default '',
`shortname` varchar(32) default NULL,
`type` varchar(30) default 'other',
`ports` int(5) default NULL,
`secret` varchar(60) NOT NULL default 'secret',
`community` varchar(50) default NULL,
`description` varchar(200) default 'RADIUS Client',
PRIMARY KEY (`id`),
KEY `nasname` (`nasname`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

nasname: pl. a hostname vagy az IP
shortname: nasid
type: other
secret: radius secret
a többit meg ki lehet találni.

Talán valakinek segítettem, vagy magamnak, ha pár hónap múlva megint elfelejteném :)

Helló!

Már 3 napja nem tudok válaszolni, mindig ezt a hibát kapom:
---------
Forbidden
You don't have permission to access /comment/reply/30126/460491 on this server.
---------
és trey at hup.hu pedig eddig még nem reagált...

De végre rájöttem az okára.
Az SQL parancsot szűri ki a rendszer a válaszomban, ezért a szóközt kicseréltem benne egy aláhúzásra. :-)

Szóval a válaszom a kérdésedre:

Régebben így:


INSERT_INTO `radcheck` (`id`, `UserName`, `Attribute`, `op`, `Value`) VALUES
(1, 'teszt', 'Password', '==', 'teszt'),
(2, 'probauser', 'Password', '==', 'proba');

Mostanában így:


INSERT_INTO `radcheck` (`id`, `UserName`, `Attribute`, `op`, `Value`) VALUES
(1, 'teszt', 'Cleartext-Password', ':=', 'teszt'),
(2, 'probauser', 'Cleartext-Password', ':=', 'proba');

http://wiki.freeradius.org/SQL_HOWTO

Szabi

Hello!

Itt is Debian Etch, freeradius 1.1.3-3

Itt a konfigfile (a kommenteket kiszedtem, remélem nem baj): http://molnarp.pastebin.com/m660f599d

clients.conf:

client 127.0.0.1 {

secret = testing123

shortname = localhost

nastype = other

}

szerk:

freeradius -X ezt írja a konzolon:

rad_recv: Access-Request packet from host 127.0.0.1:4214, id=222, length=57
        User-Name = "teszt"
        User-Password = "teszt"
        NAS-IP-Address = 255.255.255.255
        NAS-Port = 10
rad_lowerpair:  User-Name now 'teszt'
rad_rmspace_pair:  User-Name now 'teszt'
  Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 0
  modcall[authorize]: module "preprocess" returns ok for request 0
  modcall[authorize]: module "chap" returns noop for request 0
  modcall[authorize]: module "mschap" returns noop for request 0
    rlm_realm: No '@' in User-Name = "teszt", looking up realm NULL
    rlm_realm: No such realm "NULL"
  modcall[authorize]: module "suffix" returns noop for request 0
  rlm_eap: No EAP-Message, not doing EAP
  modcall[authorize]: module "eap" returns noop for request 0
    users: Matched entry DEFAULT at line 152
  modcall[authorize]: module "files" returns ok for request 0
modcall: leaving group authorize (returns ok) for request 0
  rad_check_password:  Found Auth-Type System
auth: type "System"
  Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 0
  modcall[authenticate]: module "unix" returns notfound for request 0
modcall: leaving group authenticate (returns notfound) for request 0
auth: Failed to validate the user.
Login incorrect: [teszt/teszt] (from client localhost port 10)
rad_lowerpair:  User-Password now 'teszt'
rad_rmspace_pair:  User-Password now 'teszt'
  Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 0
  modcall[authorize]: module "preprocess" returns ok for request 0
  modcall[authorize]: module "chap" returns noop for request 0
  modcall[authorize]: module "mschap" returns noop for request 0
    rlm_realm: No '@' in User-Name = "teszt", looking up realm NULL
    rlm_realm: No such realm "NULL"
  modcall[authorize]: module "suffix" returns noop for request 0
  rlm_eap: No EAP-Message, not doing EAP
  modcall[authorize]: module "eap" returns noop for request 0
    users: Matched entry DEFAULT at line 152
  modcall[authorize]: module "files" returns ok for request 0
modcall: leaving group authorize (returns ok) for request 0
  rad_check_password:  Found Auth-Type System
auth: type "System"
  Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 0
  modcall[authenticate]: module "unix" returns notfound for request 0
modcall: leaving group authenticate (returns notfound) for request 0
auth: Failed to validate the user.
Login incorrect: [teszt/teszt] (from client localhost port 10)
Delaying request 0 for 1 seconds
Finished request 0

OK. Nem olvastad elég figyelmesen a mikrotikes leírást, amit linkeltél. :-)

Jelenleg a jelszó ellenőrzésekor a mysql adatbázist nem használja, mert kihagytad a konfigból ezt:


authorize {
       sql
}

Ha az adatbázisban akarod tartani a forgalmi adatokat, akkor kell még ez is:


session {
       sql
}

Szabi

Próbáld meg a konfigot, ahogy a leírásban is van:
----------
instantiate {
}
authorize {
chap
mschap
sql
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
}
preacct {
acct_unique
}
accounting {
sql
}
session {
sql
}
post-auth {
sql
}
----------

Mennie kell!

Szabi

Hello!

Ismét kérdezek: az megvalósítható valahogyan, hogy az adatbázisban ne plaintext-ben, hanem valami hash-ben (MD5, CRYPT stb.) tárolódjon a jelszó?

Nos, utánanéztem: a CHAP nem támogatja a titkosított jelszót, csak a PAP. Tehát ez azt jelenti, hogy választhatok, hogy vagy az adatbázisban van a jelszó kódolatlanul, vagy pedig a hálózaton közlekedik kódolás nélkül?

Petya