Зміст

p5-radius3

Встановлення FreeRadius v3

Даний варіант установки не з офіційної документації і розроблений для нашої мережі, але може бути портований і в інші мережі! Він не має MySQL модуля, але є потужний модуль PERL, який дозволяє робити запити до бази набагато зручніше в плані маніпуляцій. На офіційному сайті FreeRadius сказано, що rlm_perl продуктивніше rlm_sql. Використання цього варіанта ви робите на свій страх і ризик :).

Встановлення пакетів

pkg install freeradius3 p5-Digest-MD5 p5-Authen-Radius

Після встановлення обов'язково заблокуйте freeradius3, щоб уникнути випадкового оновлення, оскільки злітають права на файли налаштувань і РАДІУС білше не запрацює!

Я не зміг виявити, що саме спричиняє таку проблему, тому і не знаю як її обійти!

pkg lock freeradius3

Налаштування FreeRadius v3

Резервна копія оригінальних конфігів

 cp -a /usr/local/etc/raddb/ /usr/local/etc/raddb.orig/

Видалимо зайве

 rm -rf /usr/local/etc/raddb/sites-enabled/*
 rm /usr/local/etc/raddb/mods-enabled/eap

Створимо основний конфіг

 nano /usr/local/etc/raddb/sites-enabled/nodeny

з таким вмістом:

/usr/local/etc/raddb/sites-enabled/nodeny
  1. server nodeny {
  2. listen {
  3. type = auth
  4. ipaddr = *
  5. port = 1812
  6. limit {
  7. max_connections = 64
  8. lifetime = 0
  9. idle_timeout = 30
  10. }
  11. }
  12. listen {
  13. type = acct
  14. ipaddr = *
  15. port = 1813
  16. }
  17.  
  18. # Authorization.
  19. authorize {
  20. #detail
  21. preprocess
  22. pap
  23. chap
  24. files
  25. perl
  26. # if((User-Name =~ /^.*%{Calling-Station-ID}.*$/i)){
  27. # update control {
  28. # &Auth-Type = 'Perl'
  29. # }
  30. # }
  31. if (ok || updated) {
  32. update control {
  33. Auth-Type := Perl
  34. }
  35. }
  36.  
  37. }
  38.  
  39. # Authentication.
  40. authenticate {
  41. Auth-Type Perl {
  42. perl
  43. }
  44. Auth-Type PAP {
  45. pap
  46. }
  47. Auth-Type CHAP {
  48. chap
  49. }
  50. }
  51.  
  52. # Pre-accounting. Decide which accounting type to use.
  53. preacct {
  54. acct_unique
  55. preprocess
  56. }
  57.  
  58. accounting {
  59. attr_filter.accounting_response
  60. perl
  61. }
  62.  
  63. session {
  64. radutmp
  65. }
  66.  
  67. # Post-Authentication
  68. post-auth {
  69. Post-Auth-Type REJECT {
  70. attr_filter.access_reject # pppoe
  71. perl #ipoe
  72. }
  73. perl
  74. }
  75. }

також можна увімкнути сервер статусу командою:

ln -s /usr/local/etc/raddb/sites-available/status /usr/local/etc/raddb/sites-enabled/
echo '' > /usr/local/etc/raddb/clients.conf
nano /usr/local/etc/raddb/clients.conf
client 127.0.0.1 {
    ipaddr    = 127.0.0.1
    secret    = hardpass5
    shortname = localhost
    nastype   = other
}
ln -s /usr/local/etc/raddb/mods-available/perl /usr/local/etc/raddb/mods-enabled/
echo '' > /usr/local/etc/raddb/mods-enabled/perl
nano /usr/local/etc/raddb/mods-enabled/perl
perl {
	filename = /usr/local/nodeny/nod/_radius.pl
}

Перевірити відповідність

nano /usr/local/etc/raddb/mods-config/attr_filter/access_reject
DEFAULT
    EAP-Message =* ANY,
    State =* ANY,
    Message-Authenticator =* ANY,
    Error-Cause =* ANY,
    Reply-Message =* ANY,
    MS-CHAP-Error = * ANY,
    Proxy-State =* ANY
nano /usr/local/etc/raddb/mods-config/files/authorize
DEFAULT Auth-Type = Perl
        Fall-Through = yes

Завершення установки

sysrc radiusd_enable="YES"
#sysrc radiusd_flags="-d /path/to/raddb"
service radiusd start

test

radtest [-t chap] login password 127.0.0.1 0 hardpass5

OR

NAS-IP-Address = 127.0.0.1
User-Name = IPOE_VLAN|afaf.afaf.afaf|3410
User-Password = 6894244B56EB
NAS-Port = 0
Calling-Station-Id = SSID
NAS-Port-Id = jun:3410
cat rad.test | radclient -x 127.0.0.1 auth hardpass5

radperf debian

$ apt install libfreeradius3 freeradius-common freeradius-config
$ wget https://networkradius.com/assets/packages/radperf/radperf_2.0.1_amd64.deb
$ dpkg -i radperf_2.0.1_amd64.deb

Prepeare file

Blank lines in the input separate individual packets. e.g.

users.txt
User-Name = "test"
User-Password = "123"

User-Name = "test1"
User-Password = "0007"

User-Name = "test2"
User-Password = "011998"

testing

radperf -s -f ../users.txt -p 800 -a pap 10.3.1.1 auth radiussomething

where users.csv file contains 10000 user names with password, I get this output:

Total succeeded        :  3811
     Total failed      :  6189
     Total no reply    :  0
     Total time (s)    :  10.588
     Packets/s         :  944
     Response times:
< 10 usec  : 0
< 100 usec : 0
< msec     : 0
< 10 msec  : 1
< 0.1s     : 3758
< s        : 5897
< 10s      : 344
< 100s     : 0

ADDS

https://docs.librenms.org/Extensions/Applications/#freeradius