1 (edytowany przez jacekalex 2023-05-04 11:50:04)

Temat: [SOLVED]Freeradius - zrzucanie uprawnień

Cześć

Skonfigurowałem freeradiusa3, autoryzuje smartfony elegancko, udało się skonfigurować
eap-ttls + mschapv2.

Ale demon radiusd jest podnoszony w systemie jako użytkownik root, co nie jest ani konieczne, ani rozsądne, za to mocno niebezpieczne.

Skoro Prosody i Unbound mogą zrzucać uprawienia i chodzić napoziomie użytnoka z powłoką /bin/false, to czy radiusd ma jakieś specjalne wymagania?

W moim Linuxie tez mam radiusa, ale chodzi jako user radius

grep radius /etc/passwd
radius:x:95:95:FreeRadius program user:/dev/null:/sbin/nologin

W OpenWRT zrobiłem z palca usera i grupę radius:

# OpenWRT ###  11:45  OpenWrt : ~ 

root ~> grep radius /etc/passwd /etc/group
/etc/passwd:radius:x:95:95:radius:/var/run/radiusd:/bin/false
/etc/group:sslkey:x:99:prosody,unbound,radius
/etc/group:radius:x:95:radius

ale ponieważ nie ma tam programu setuidgid (z pakietu daemon-tools), to chyba trzeba użyć innej metody obniżania uprawnień?

Sam radiusd nie zrzuca uprawnień i nie akceptuje w konfigu opcji user i group.

EDIT:
zrobilem inny skrypt startowy o innej nazwie,np radauth:

cat /etc/init.d/radauth


#!/bin/sh /etc/rc.common
#
# Copyright (C) 2006-2015 OpenWrt.org
#

USE_PROCD=1

START=50

NAME=radiusd
PROG=/usr/sbin/radiusd
DEFAULT=/etc/default/radiusd

start_service()
{
    [ -f $DEFAULT ] && . $DEFAULT
    mkdir -p /var/log
    mkdir -p /var/run/radiusd
        chown radius:radius /var/run/radiusd
    mkdir -p /var/db/radacct
        chown radius:radius /var/db/radacct
    mkdir -p /tmp/radiusd
        chown radius:radius /tmp/radiusd
                

    procd_open_instance
    procd_set_param user radius
    procd_set_param group radius
    procd_set_param command $PROG -s
    procd_set_param env LD_LIBRARY_PATH=/usr/lib/freeradius3
    [ -n "$IPADDR" ] && procd_append_param command -i $IPADDR
    [ -n "$OPTIONS" ] && procd_append_param command $OPTIONS
    procd_set_param respawn
    procd_close_instance
}

Ale niestety, radiusd dalej wstaje jako root. sad

2

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

Freeradius3 w openwrt odpalany jest przez procd, więc zmień sobie init i dodaj sobie

procd_set_param user radius
procd_set_param group radius

W ten sposób robiony jest domoticz, mariadb, wpad, sysntp i kilka innych. A jeżeli ci to zadziała to zgłoś poprawkę https://github.com/openwrt/packages/pulls niech inni też mają.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez jacekalex 2023-05-04 11:16:43)

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

procd_set_param user radius
procd_set_param group radius

tak właśnie zrobiłem ale bez rezultatu, w poście wyżej dałem po edycji treść nowego inita robionego na wzór i podobieństwo prosody.

Tak podnoszę radiusa w Gentoo przez daemontoolsa:

##cat /service/radiusd/run
#!/bin/sh

exec 2>&1
RADIUSD="/usr/sbin/radiusd"
getcap $RADIUSD | grep cap_net_bind_service,cap_net_raw 2>&1>/dev/null || setcap cap_net_bind_service,cap_net_raw+ep $RADIUSD


exec setuidgid radius  $RADIUSD -X

W gole to daemontools by się w OpenWT przydał, powstał w czasach, kiedy OpenBSD chodziło na 16 MB ram.
Sznurek: https://cr.yp.to/daemontools.html
Do dziś przydaje się do rzeczy, których systemd nie potrafi.

U mnie daemontools działa bardzo grzecznie tak  (od 2010 roku):

/service/cgroup: up (pid 3000) 150677 seconds
/service/crond: up (pid 2988) 150677 seconds
/service/dovecot: up (pid 3055) 150676 seconds
/service/dropbear: up (pid 2980) 150677 seconds
/service/mail1: up (pid 3020) 150677 seconds
/service/mail2: up (pid 2972) 150677 seconds
/service/mail3: up (pid 3043) 150677 seconds
/service/mail4: up (pid 2968) 150677 seconds
/service/mouse: up (pid 2970) 150677 seconds
/service/mysqld: up (pid 2985) 150677 seconds
/service/named: up (pid 4075) 115982 seconds
/service/nginx: up (pid 2978) 150677 seconds
/service/ntpd: up (pid 2986) 150677 seconds
/service/opendkim: up (pid 3082) 150676 seconds
/service/postfix: up (pid 2979) 150677 seconds
/service/postgresql14: up (pid 3028) 150677 seconds
/service/postgrey: up (pid 3067) 150676 seconds
/service/radiusd: up (pid 3515) 10116 seconds
/service/rsyslogd: up (pid 3118) 150676 seconds
/service/smartd: up (pid 3097) 150676 seconds
/service/spamd: up (pid 1169) 14709 seconds
/service/sshd: up (pid 2975) 150677 seconds
/service/temperatura: up (pid 3116) 150676 seconds
/service/vnstat: up (pid 3029) 150677 seconds

4

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

Nie do końca jest prawdą to co napisałeś. Freeradius normalnie przechodzi na innego usera, patrz:

root@OpenWrt:/# ps | grep rad
 6916 radius    8276 S    /usr/sbin/radiusd -s
 6953 root      1120 S    grep rad
root@OpenWrt:/# grep radius /etc/freeradius3/radiusd.conf 
## radiusd.conf    -- FreeRADIUS server configuration file - 3.0.21
##    http://www.freeradius.org/
#    read "man radiusd".  See the section titled DEBUGGING.  It
#        $ radiusd -X
#    More documentation on "radiusd -X" is available on the wiki:
#        https://wiki.freeradius.org/radiusd-X
#    debugging mode (radiusd -X).  Failure to do so means that all
#    to "post the output of radiusd -X".
#        https://wiki.freeradius.org/list-help
#        https://wiki.freeradius.org/
#        https://networkradius.com/doc/FreeRADIUS-Technical-Guide.pdf
#        https://networkradius.com/freeradius-documentation/
raddbdir = /etc/freeradius3
name = radiusd
# Should likely be ${localstatedir}/lib/radiusd
libdir = /usr/lib/freeradius3
#  e.g.:  kill -HUP `cat /var/run/radiusd/radiusd.pid`
#  - %e   The currently executing program e.g. /sbin/radiusd
#  e.g., www.freeradius.org (on) or 206.47.27.232 (off).
    file = ${logdir}/radius.log
    # user/group: The name (or #number) of the user/group to run radiusd as.
    #   set to radius'.
    user = radius
    group = radius

Bez żadnych innych kombinacji. Zainstalowałem, dodałem user/grupę, zrobiłem ręcznie katalogi i zmieniłem uprawnienia.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez jacekalex 2023-05-04 11:40:33)

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

hmm:
radiusd.conf:

user = radius
group = radius
prefix = /usr
exec_prefix = ${prefix}
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = ${localstatedir}/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
confdir = ${raddbdir}
run_dir = /var/run/radiusd
db_dir = $(raddbdir)
libdir = /usr/lib/freeradius3
pidfile = /var/run/radiusd.pid
max_request_time = 10
cleanup_delay = 5
max_requests = 100
hostname_lookups = no
regular_expressions    = yes
extended_expressions    = yes
log {
    destination = files
    file = ${logdir}/radius.log
    syslog_facility = daemon
    stripped_names = no
    auth = no
    auth_badpass = no
    auth_goodpass = no
}
checkrad = ${sbindir}/checkrad
security {
    max_attributes = 200
    reject_delay = 1
    status_server = yes
}
proxy_requests  = yes
 $INCLUDE proxy.conf
$INCLUDE clients.conf
snmp    = no
#$INCLUDE snmp.conf
thread pool {
    start_servers = 2
    max_servers = 3
    min_spare_servers = 2
    max_spare_servers = 3
    max_requests_per_server = 3
}
modules {
    $INCLUDE ${confdir}/mods-enabled/
    $INCLUDE eap.conf

}
instantiate {
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/

Odpalam:

radiusd -X
FreeRADIUS Version 3.0.21
Copyright (C) 1999-2019 The FreeRADIUS server project and contributors
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE
You may redistribute copies of FreeRADIUS under the terms of the
GNU General Public License
For more information about these matters, see the file named COPYRIGHT
Starting - reading configuration files ...
including dictionary file /usr/share/freeradius3/dictionary
including dictionary file /etc/freeradius3/dictionary
including configuration file /etc/freeradius3/radiusd.conf
including configuration file /etc/freeradius3/proxy.conf
including configuration file /etc/freeradius3/clients.conf
including files in directory /etc/freeradius3/mods-enabled/
including configuration file /etc/freeradius3/mods-enabled/pap
including configuration file /etc/freeradius3/mods-enabled/preprocess
including configuration file /etc/freeradius3/mods-enabled/chap
including configuration file /etc/freeradius3/mods-enabled/radutmp
including configuration file /etc/freeradius3/mods-enabled/mschap
including configuration file /etc/freeradius3/mods-enabled/logintime
including configuration file /etc/freeradius3/mods-enabled/files
including configuration file /etc/freeradius3/mods-enabled/sradutmp
including configuration file /etc/freeradius3/mods-enabled/detail
including configuration file /etc/freeradius3/mods-enabled/digest
including configuration file /etc/freeradius3/mods-enabled/expiration
including configuration file /etc/freeradius3/eap.conf
including configuration file /etc/freeradius3/policy.conf
including files in directory /etc/freeradius3/sites-enabled/
including configuration file /etc/freeradius3/sites-enabled/router
main {
 security {
     allow_core_dumps = no
 }
    name = "radiusd"
    prefix = "/usr"
    localstatedir = "/var"
    logdir = "/var/log/radius"
    run_dir = "/var/run/radiusd"
/etc/freeradius3/radiusd.conf[1]: Configuration item "user" is deprecated
/etc/freeradius3/radiusd.conf[0]: Cannot use deprecated configuration item "user"

Zainstalowane:

root ~> opkg list-installed  |grep  '^freeradius'
freeradius3 - 3_0_21-2
freeradius3-common - 3_0_21-2
freeradius3-mod-chap - 3_0_21-2
freeradius3-mod-detail - 3_0_21-2
freeradius3-mod-digest - 3_0_21-2
freeradius3-mod-eap - 3_0_21-2
freeradius3-mod-eap-gtc - 3_0_21-2
freeradius3-mod-eap-md5 - 3_0_21-2
freeradius3-mod-eap-mschapv2 - 3_0_21-2
freeradius3-mod-eap-peap - 3_0_21-2
freeradius3-mod-eap-tls - 3_0_21-2
freeradius3-mod-eap-ttls - 3_0_21-2
freeradius3-mod-expiration - 3_0_21-2
freeradius3-mod-files - 3_0_21-2
freeradius3-mod-logintime - 3_0_21-2
freeradius3-mod-mschap - 3_0_21-2
freeradius3-mod-pap - 3_0_21-2
freeradius3-mod-preprocess - 3_0_21-2
freeradius3-mod-radutmp - 3_0_21-2
freeradius3-utils - 3_0_21-2

6

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

W sekcji security user i group, tak jak tam pierwotnie jest umiejscowione. Nie w głównej.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

Cezary napisał/a:

W sekcji security user i group, tak jak tam pierwotnie jest umiejscowione. Nie w głównej.

Dziękuję, pomogło radykalnie.

konfig:

prefix = /usr
exec_prefix = ${prefix}
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = ${localstatedir}/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
confdir = ${raddbdir}
run_dir = /var/run/radiusd
db_dir = $(raddbdir)
libdir = /usr/lib/freeradius3
pidfile = /var/run/radiusd.pid
max_request_time = 10
cleanup_delay = 5
max_requests = 100
hostname_lookups = no
regular_expressions    = yes
extended_expressions    = yes
log {
    destination = files
    file = ${logdir}/radius.log
    syslog_facility = daemon
    stripped_names = no
    auth = no
    auth_badpass = no
    auth_goodpass = no
}
checkrad = ${sbindir}/checkrad
security {
    user = radius
    group = radius
    max_attributes = 200
    reject_delay = 1
    status_server = yes
}
proxy_requests  = yes
 $INCLUDE proxy.conf
$INCLUDE clients.conf
snmp    = no
#$INCLUDE snmp.conf
thread pool {
    start_servers = 2
    max_servers = 3
    min_spare_servers = 2
    max_spare_servers = 3
    max_requests_per_server = 3
}
modules {
    $INCLUDE ${confdir}/mods-enabled/
    $INCLUDE eap.conf
#    $INCLUDE files.conf
#    $INCLUDE sql/mysql/counter.conf
}
instantiate {
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/

8 (edytowany przez jacekalex 2023-05-04 19:28:03)

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

Jak mawiają klasycy:

Ale Jaja! Ale Jaja! Ale Jaja1

Narobiłem się przy radiusie jak osioł po to, żeby potem zauważyć, że ten radius wcale nie jest niezbędny ani potrzebny.
Na przyszłość muszę sobie przed podobną gimnastyką marchewki zjeść. wink

hostapd.conf napisał/a:

# Path for EAP server user database
# If SQLite support is included, this can be set to "sqlite:/path/to/sqlite.db"
# to use SQLite database instead of a text file.
#eap_user_file=/etc/hostapd.eap_user

# CA certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS
#ca_cert=/etc/hostapd.ca.pem

# Server certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS
#server_cert=/etc/hostapd.server.pem

https://github.com/xradvanyip/hostapd-o … stapd.conf

Trafiłem na ten wątek  przypadkiem, szukając,
jak posadzić radiusa z certami letsencrypt:
https://stackoverflow.com/questions/753 … ertificate


Pozdro
wink

9

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

No tak, hostapd ma to wbudowane. Od bardzo dawna ma.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10 (edytowany przez jacekalex 2023-05-04 19:41:06)

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

Cezary napisał/a:

No tak, hostapd ma to wbudowane. Od bardzo dawna ma.

Jak w Openwrt podpiąć do hostapd konfig hostapad.eap_user i certyfikaty?

Tutaj znalazłem jeszcze ciekawszą instrukcję z Debiana:

cat /usr/share/doc/hostapd/examples/hostapd.eap_user napisał/a:

# Phase 2 (tunnelled within EAP-PEAP or EAP-TTLS) users
"t-md5"        MD5    "password"    [2]
"DOMAIN\t-mschapv2"    MSCHAPV2    "password"    [2]
"t-gtc"        GTC    "password"    [2]
"not anonymous"    MSCHAPV2    "password"    [2]
"user"        MD5,GTC,MSCHAPV2    "password"    [2]
"test user"    MSCHAPV2    hash:000102030405060708090a0b0c0d0e0f    [2]
"ttls-user"    TTLS-PAP,TTLS-CHAP,TTLS-MSCHAP,TTLS-MSCHAPV2    "password"    [2]

Ale nie wiem, jak  uci/luci nauczyć  tej dokumentacji.
wink

11

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

Bardzo stary artykuł: https://openrouter.info/index.php?optio … ;Itemid=61

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12 (edytowany przez jacekalex 2023-05-05 00:56:23)

Odp: [SOLVED]Freeradius - zrzucanie uprawnień

Na razie idzie dosyć ciężko:

2023 May  5 00:28:17 OpenWrt hostapd: wlan0: CTRL-EVENT-EAP-STARTED b6:3a:9b:e0:e4:01
2023 May  5 00:28:17 OpenWrt hostapd: wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
2023 May  5 00:28:17 OpenWrt hostapd: wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=25
2023 May  5 00:28:17 OpenWrt hostapd: wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=21
2023 May  5 00:28:17 OpenWrt hostapd: wlan0: CTRL-EVENT-EAP-FAILURE b6:3a:9b:e0:e4:01
2023 May  5 00:28:17 OpenWrt hostapd: wlan0: STA b6:3a:9b:e0:e4:01 IEEE 802.1X: authentication failed - EAP type: 0 (unknown)
2023 May  5 00:28:17 OpenWrt hostapd: wlan0: STA b6:3a:9b:e0:e4:01 IEEE 802.1X: Supplicant used different EAP type: 21 (TTLS)
2023 May  5 00:28:22 OpenWrt hostapd: wlan0: STA b6:3a:9b:e0:e4:01 IEEE 802.11: deauthenticated due to local deauth request

Ale po malutku aż do skutku, jakoś to zamiaruję rozpracować.

Konfiguracja w tej minucie:

wireless.default_radio0=wifi-iface
wireless.default_radio0.device='radio0'
wireless.default_radio0.network='lan'
wireless.default_radio0.mode='ap'
wireless.default_radio0.ssid='wifi4eap'
wireless.default_radio0.encryption='wpa2'
wireless.default_radio0.eap_server='1'
wireless.default_radio0.eap_user_file='/etc/config/hostapd.eap_user'
wireless.default_radio0.ca_cert='/etc/config/certs/serwerCA.crt'
wireless.default_radio0.server_cert='/etc/config/certs/serwer.crt'
wireless.default_radio0.priv_key='/etc/config/certs/serwer.key'
wireless.default_radio0.check_crl='0'
wireless.default_radio0.dh_file='/etc/config/certs/dh4096.pem'
wireless.default_radio0.ieee8021x='1'
wireless.default_radio0.auth_algs='3'
wireless.default_radio0.eapol_version='2'

posiłkuję się tym:
https://gist.github.com/noahwilliamsson … 959ffa9c92


EDYTA:
Muszę od eap w hostapd odpocząć, bo mis się łepetyna zagotowała. tongue
I zapytać na liście ML hostapd, czy to eap jest jeszcze rozwijany,
bo wygląda, że się zatrzymał na WPA1.

Pozdrawiam