Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

RADIUS proxy

Описание

Docker ready решение для разворачивания простого прокси RADIUS auth запросов.
Внутри есть простой скрипт для настройки доступа к конечному радиус серверу, а также простейший менеджмент клиентов.

Утилита (raddock/radproxy.sh)

Из зависимостей - sudo, sed
Редактирует clients.conf, а также proxy.conf

radproxy cli config utility

available commands:
	help - prints this help
	client_add {alias} {ipaddr} {secret}	- add a client
	client_del {alias}						- delete client with this alias
	proxy_set {ipaddr} {port} {secret} 		- set proxy destination

Запуск

в корневой директории с помощью docker-compose up -d

Теория

В основе всего лежит конфиг default:

server default {

listen {
    type = auth
    ipaddr = *
    port = 0
}

authorize {
    preprocess
    files
    update control {
        Proxy-to-Realm := "network.example"
    }
    pap
}

}

Здесь происходит объявление сервера, который слушает отовсюду и в authorize запросах меняет realm для текущего пользователя на объявленный в proxy.conf прокси realm.

proxy.conf:

home_server remoteradius1 {
    type = auth
    ipaddr = ipaddr
    port = port
    secret = secret
}

home_server_pool remote_radius_failover {
    type = fail-over
    home_server = remoteradius1
}

realm network.example {
    auth_pool = remote_radius_failover
}

Тут realm'у с которым ассоциируются запросы назначается auth_pool - remote_radius_failover, который в свою очередь ссылается на home_server - целевой сервер для проксирования запросов.
Все конфиги здесь взяты "с википедии", и как видно, тут есть задаток на расширение функционала, то есть в remote_radius_failover по failover логике можно напихать кучу различных home_server'ов, а также локальный фоллбек сервер, чтобы, например, сохранять запросы которые не удалось обработать из-за недоступности home_server'ов, и, через какое-то время попробовать обработать их снова.

В home_server'e утилитой как раз настраивается целевой ip адрес, порт, и секрет.

Подмена/добавление аттрибутов

Данная логика так и не была реализована по ненадобности, но в основном все достигается с помощью мощного Unlang, что лежит в основе FreeRadius, а именно через директиву update.
Используя возможность выстраивать логику привычными стейтментами можно подменять/добавлять аттрибуты не прибегая к сторонним языковым прослойкам почти в любом кейсе.

Copyrights

Затюнено mintyleaf в 2021 для Wimark.

About

simple dockerized RADIUS proxy

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages