ПЗ: Linux, mgetty, pppd+radius pugin, RADIUS, iptables.
Рeалізацію RADIUS вибираєте відповідно до своїх уподобань (якщо база клієнтів має жити в mysql, подивіться на FreeRADIUS, якщо влаштовує текстовий файл, то можна Cistron). До ррр качаєте патч або плагін, який уміє працювати з РАДІУСОМ. Я особисто використовував цей:
http://www.chelcom.ru/~anton/projects/pppd-tacacs+radius/, Ви можете пробувати щось інше, реалізацій немало.
Щодо білінгу: не можу сказати готових рішень, але впевнений на 100% що це можна робити (і роблять) через той самий РАДІУС (який крім authorisation ще й accounting). Спробуйте пошукати.