radius.conf

# 定义了服务器使用的不同目录的路径。
prefix = /usr/local
exec_prefix = ${prefix}
sysconfdir = ${prefix}/etc
localstatedir = ${prefix}/var
sbindir = ${exec_prefix}/sbin
logdir = ${localstatedir}/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct

#
#  定义了运行服务器的名称。
name = radiusd

#  定义了配置文件、模块配置、证书、数据库等的存放目录。
confdir = ${raddbdir}
modconfdir = ${confdir}/mods-config
certdir = ${confdir}/certs
cadir   = ${confdir}/certs
run_dir = ${localstatedir}/run/${name}
db_dir = ${raddbdir}

# 定义了rlm_*模块的位置。
libdir = ${exec_prefix}/lib

#  定义了放置RADIUS服务器进程ID的文件位置。
pidfile = ${run_dir}/${name}.pid

#  panic_action: 定义了服务器意外终止时执行的命令。
#panic_action = "gdb %e %p"  测试环境使用
#panic_action = "gdb -silent -x ${raddbdir}/panic.gdb %e %p 2>&1 | tee ${logdir}/gdb-${name}-%p.log"  生产环境使用

#  定义了请求处理的最大时间(values: 5s to 120s) 
max_request_time = 30

# 缓存时间:数据包发送给nas之后,会缓存一段时间,以便收到nas的重复请求的情况下可以快速应答。
#  Useful range of values: 2 to 30
cleanup_delay = 5

# 最大请求数,必须为256的整数倍,官方建议设置为客户端数量的1000倍。
#  Useful range of values: 256 to infinity
max_requests = 16384

# 是否记录客户端名称或仅记录它们的IP地址。默认关闭,如果打开会进行dns反向查询客户端名称。建议关闭。
#  allowed values: {no, yes}
#
hostname_lookups = no

#  客户端无响应的情况下管理员记录一些内容。
#
#postauth_client_lost = no

#  日志记录部分。各种“log_*”配置项最终将移动到此处。
#
log {
        #
        #  日志消息的目标。这可以是以下其中之一:
        #
        #       files - log to "file", as defined below.
        #       syslog - to syslog (see also the "syslog_facility", below.
        #       stdout - standard output
        #       stderr - standard error.
        #
        #  命令行选项“-X”覆盖了此选项,并强制将日志记录转到stdout。
        #
        destination = files

        #  高亮显示日志: stderr and stdout.要求客户端支持。
        colourise = yes

        #  如果destination==“files”,则服务器的日志记录消息会附加到此文件的尾部,如果服务器在调试模式下运行,则不使用此文件。
        file = ${logdir}/radius.log

        # 当destination ==“syslog”时,使用的系统日志工具,不建议修改。
        syslog_facility = daemon

        # 是否记录请求中的完整用户名属性。
        # allowed values: {no, yes}
        stripped_names = no

        # 将所有(接受和拒绝)身份验证结果记录到日志文件中。
        #  allowed values: {no, yes}
        auth = no

        # 记录认证成功的日志。仅当“auth=no”时使用
        #  allowed values: {no, yes}
#       auth_accept = no

        # 记录认证失败的日志。仅当“auth=no”时使用 
        #  allowed values: {no, yes}
#       auth_reject = no

        #  将密码与身份验证请求一起记录。
        #  auth_badpass  - 登录失败的时候记录密码
        #  auth_goodpass - 登录成功的时候记录密码
        #  allowed values: {no, yes}
        auth_badpass = no
        auth_goodpass = no

        #  在登录结果消息的末尾记录其他文本,必须将上面的“auth”和“authgoodpass”或“auth_badpass”配置设置为“yes”,下面的消息内容可以自定义,但是这会影响服务器性能,不建议设置。
#       msg_goodpass = ""
#       msg_badpass = ""

        #  用户尝试登录但因超过允许的同时使用次数而被阻止时所显示的消息。
        msg_denied = "You are already logged in - access denied"

        #  是否在调试状态下,打印密码等机密信息。
#       suppress_secrets = no
}

#  定义了用于执行并发检查的程序路径
checkrad = ${sbindir}/checkrad

#  环境变量
ENV {
        # 将环境变量“FOO”设置为值“/bar/baz”,请注意,您必须使用'='。不能使用'+='来附加值。该环境变量不能被其他配置文件引用。
#       FOO = '/bar/baz'

        # 删除环境变量,注释掉就行了。
#       BAR

        #  LD_PRELOAD是一个特殊的环境变量。它通常在应用程序运行之前设置,并由动态链接器解释。你可以设置:
        #  LD_PRELOAD = /path/to/library.so

        # 如果需要加载多个:
#       LD_PRELOAD = /path/to/library1.so
#       LD_PRELOAD = /path/to/library2.so
}

# 安全配置
security {
        # 更改root目录,限制能使用的文件路径
#       chroot = /path/to/chroot/directory

        # user/group: 运行radiusd的用户和用户组
#       user = radius
#       group = radius

        # 是否允许生成核心dumps文件,建议生产环境不允许,仅在调试的时候使用。
        #  allowed values: {no, yes}
        #
        allow_core_dumps = no

        #  radius数据包中允许的最带属性数量,设置为0时,表示允许任意数量的属性。不建议设置太高,攻击者可能发送带有大量属性的报文冲击服务器。
        max_attributes = 200

        # 发送访问拒绝时,可能会延迟几秒钟。这可能有助于减缓DoS攻击。它也有助于减缓人们试图暴力破解用户密码的速度。将此数字设置为0表示“立即发送拒绝”,
        #  如果此数字设置为高于“cleanup_lay”,则拒绝将在从内部请求缓存中删除请求的“cleanup_lay”时间发送。
        # 这个数字可以是小数,例如3.4
        #  Useful ranges: 1 to 5
        reject_delay = 1

        #
        #  status_server: 服务器是否会响应status server请求。用于nas探测radius是否可用。
        status_server = yes

        #
        #  allow_vulnerable_openssl: 允许服务器从已知存在关键漏洞的openssl版本启动。
        allow_vulnerable_openssl = no
}

# 代理配置
#  proxy_requests: 打开或关闭RADIUS请求的代理。要禁用代理,请将“yes”更改为“no”,并对$INCLUDE行进行注释。如果您的系统没有设置为将请求代理到另一台服务器,那么您可以在此处关闭代理。
#  allowed values: {no, yes}
proxy_requests  = yes
$INCLUDE proxy.conf


# 客户端配置
#客户端配置在“clients.conf”中定义。
$INCLUDE clients.conf


# 线程池配置
# 下面给出的数字应该足以应付大多数情况。
thread pool {
        #  初始启动的时候的线程数。
        start_servers = 5

        # 最大线程数
        max_servers = 32

        # freeradius会基于负载情况创建线程,下面是一个最大和最小值,当小于最小值的时候会创建新的备用线程,大于的时候就会失效掉一些备用线程。
        min_spare_servers = 3
        max_spare_servers = 10

        # 服务器处理的队列大小,如果队列溢出,可能是流量过大,或者数据库性能太低。
#       max_queue_size = 65536

        #  线程处理的最大请求数,达到这个数值之后将会被清理,重新创建新的线程,0表示无穷大。
        max_requests_per_server = 0

        #  限制计费请求的数量,在性能不足的时候可以启用,nas会重传计费请求,不太会影响业务。
        auto_limit_acct = no
}

######################################################################
#  SNMP通知
# 取消注释以下行以启用snmptrap。请注意,您还必须在“trigger.conf”文件中配置“snmptrap”命令的完整路径。
#$INCLUDE trigger.conf

# 模块配置
# 在这里定义模块后,可以在该配置文件的其他部分中通过名称引用它们。
modules {
        #
        #  配置示例如下:
        #
        #       name [ instance ] {
        #               config_item = value
        #               ...
        #       }
        #
        #  name”用于加载实现模块功能的“rlm_name”库。“instance”是可选的。若要拥有一个模块的两个不同实例,首先必须使用“name”来引用它。
        #  通过两个“instance”名称来创建模块的不同副本,例如“instance1”和“instance2”,有关示例,请参阅“radutmp”配置。

        # 如果模块有调用关系,需要先加载被调用的模块,按照顺序写。这里是加载sql模块
        $INCLUDE mods-enabled/sql

        #
        #  所有模块都在mods-enabled/下面. 只有在处理部分引用了模块(如授权、身份验证、记帐、代理前/代理后等)时,才会对模块进行初始化。
        $INCLUDE mods-enabled/
}

# 实例化
# 当类似authorize的部分引用模块时,模块会自动加载和初始化。但是,有些模块可能没有在任何处理过程中调用,就需要在此处列出,通常不需要在此处列出模块。
instantiate {
        # 计数器模块
#       daily

        # 定义的“虚拟”模块满足在 "redundant"(冗余)、"load-balance"(负载均衡)或 "redundant-load-balance"(冗余负载均衡)的场景下使用。
        # 启用动态扩展,允许在回复消息中使用冗余SQL模块组
        # update reply {
        # 使用动态扩展引用冗余_SQL模块组的结果
        # Filter-Id := "%{redundant_sql: ... }"
        # 其他回复消息的更新...
        # }
        #
        #  配置虚拟模块对应的真实数据库池
        #
        # redundant redundant_sql {
        # retry_delay = 5  # 重试延迟设置为5秒

        # sql1 {
        #         driver = "rlm_sql_postgresql"
        #         server = "postgresql.server1.example.com"
        #         database = "radius"
        #         # 其他必要的配置...
        # }
        # sql2 {
        #         driver = "rlm_sql_postgresql"
        #         server = "postgresql.server2.example.com"
        #         database = "radius"
        #         # 其他必要的配置...
        # }
        # }
}

######################################################################
# 加载策略文件
policy {
        $INCLUDE policy.d/
}

######################################################################
# 加载虚拟服务器,允许您通过将文件放入raddb/sites-enabled/目录来定义新的虚拟服务器。
$INCLUDE sites-enabled/

######################################################################
#所有其他配置部分,如“authorize{}”、“authenticate{}”、“accounting{}”,都已移动到文件中:
#               raddb/sites-available/default

  

posted on 2024-04-29 19:03  torotoise512  阅读(26)  评论(0)    收藏  举报