Представь, что тебе нужно развернуть централизованную систему аутентификации для корпоративной сети. FreeRADIUS — это мощный, гибкий и бесплатный RADIUS-сервер, который станет твоим лучшим помощником в этой задаче. В этой статье мы разберем установку FreeRADIUS на Ubuntu от А до Я, как настоящие DevOps-инженеры.
Что такое FreeRADIUS и зачем он нужен?
FreeRADIUS — это самый популярный открытый RADIUS-сервер, который используется для централизованной аутентификации, авторизации и учета (AAA) в сетях. Он поддерживает:
- Аутентификацию пользователей Wi-Fi сетей
- VPN-подключения (OpenVPN, IPSec)
- Сетевые устройства (коммутаторы, маршрутизаторы)
- 802.1X для проводных сетей
Подготовка системы к установке
Давай начнем с обновления системы и установки необходимых зависимостей:
# Обновляем список пакетов
sudo apt update
# Обновляем установленные пакеты
sudo apt upgrade -y
# Устанавливаем необходимые зависимости
sudo apt install -y build-essential libtalloc-dev libpcre3-dev \
libssl-dev libcurl4-openssl-dev libsqlite3-dev libpam0g-dev \
libmysqlclient-dev libfreeradius-dev
Установка FreeRADIUS из репозитория
Самый простой способ установки — использовать официальные репозитории Ubuntu:
# Устанавливаем FreeRADIUS и утилиты
sudo apt install -y freeradius freeradius-utils freeradius-mysql \
freeradius-postgresql freeradius-ldap
Базовая настройка FreeRADIUS
После установки переходим к конфигурации. Основные конфигурационные файлы находятся в /etc/freeradius/3.0/ (для версии 3.x).
Настройка клиентов
Клиенты — это устройства, которые будут отправлять запросы на наш RADIUS-сервер. Отредактируем файл клиентов:
# Открываем файл клиентов для редактирования
sudo nano /etc/freeradius/3.0/clients.conf
Добавь следующую конфигурацию для локального клиента (например, для тестирования):
client localhost {
ipaddr = 127.0.0.1
secret = testing123
require_message_authenticator = no
nas_type = other
}
# Пример для сетевого устройства
client network-switch {
ipaddr = 192.168.1.10
secret = StrongSecretKey123
shortname = switch-1
}
Настройка пользователей
Для начала создадим простую локальную базу пользователей. Отредактируем файл users:
sudo nano /etc/freeradius/3.0/mods-config/files/authorize
# Простой тестовый пользователь
testuser Cleartext-Password := "testpass123"
Reply-Message = "Hello, %{User-Name}!"
# Пользователь с ограничением по IP
alice Cleartext-Password := "alicepass"
Framed-IP-Address = 192.168.1.100,
Session-Timeout = 3600
Запуск и тестирование FreeRADIUS
Теперь давай запустим сервер и протестируем его работу:
# Перезапускаем FreeRADIUS
sudo systemctl restart freeradius
# Проверяем статус службы
sudo systemctl status freeradius
# Включаем автозагрузку
sudo systemctl enable freeradius
Тестирование в режиме отладки
Для отладки запустим FreeRADIUS в foreground-режиме:
# Останавливаем службу
sudo systemctl stop freeradius
# Запускаем в режиме отладки
sudo freeradius -X
В другом терминале тестируем аутентификацию:
# Тестируем аутентификацию
radtest testuser testpass123 127.0.0.1 0 testing123
Расширенная настройка: интеграция с базами данных
Для production-среды локальный файл пользователей не подходит. Давай настроим MySQL/PostgreSQL:
# Устанавливаем MySQL и необходимые модули
sudo apt install -y mysql-server freeradius-mysql
# Импортируем схему базы данных
sudo mysql -u root -p < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
Настройка модуля SQL в /etc/freeradius/3.0/mods-available/sql:
sql {
driver = "rlm_sql_mysql"
dialect = "mysql"
server = "localhost"
port = 3306
login = "radius"
password = "SecurePassword123"
radius_db = "radius"
# Параметры пула соединений
num_sql_socks = 5
# Логирование
logfile = "/var/log/freeradius/sql.log"
}
Безопасность и оптимизация
После базовой настройки обязательно выполни эти шаги:
| Мера безопасности | Описание | Команда/Настройка |
|---|---|---|
| Смена секретов | Замени testing123 на сложные секреты | clients.conf |
| Firewall | Открыть только порты 1812/1813 | sudo ufw allow 1812,1813/udp |
| Логирование | Настройка ротации логов | /etc/logrotate.d/freeradius |
| Мониторинг | Настройка health checks | radwatch |
Частые проблемы и их решение
Проблема: Сервер не запускается
Решение: Проверь логи sudo journalctl -u freeradius -f. Частая причина — синтаксическая ошибка в конфигах.
Проблема: Аутентификация не работает
Решение: Запусти в режиме отладки freeradius -X и проверь, что секреты клиентов совпадают.
FAQ: Ответы на частые вопросы
Какой порт использует FreeRADIUS?
По умолчанию FreeRADIUS использует UDP порты 1812 для аутентификации и 1813 для учета (accounting). Некоторые старые устройства могут использовать порты 1645 и 1646.
Как настроить резервирование (HA)?
Для High Availability можно использовать несколько подходов: балансировку нагрузки через keepalived, репликацию базы данных или использование внешних бэкендов (например, LDAP).
Как мигрировать с версии 2.x на 3.x?
FreeRADIUS 3.x имеет обратную совместимость, но рекомендуется провести тестирование. Основные изменения: новая структура каталогов и улучшенная модульная архитектура.
Чеклист успешной установки
- ✓ Служба freeradius запущена и включена
- ✓ Команда radtest возвращает "Access-Accept"
- ✓ Порт 1812 открыт в firewall
- ✓ Секреты клиентов изменены с дефолтных
- ✓ Настроено логирование и мониторинг
Поздравляю! Теперь у тебя работает полноценный RADIUS-сервер на Ubuntu. Помни: это только начало. FreeRADIUS — невероятно гибкая система, которую можно адаптировать под любые требования. Экспериментируй с модулями, настраивай политики и не забывай про безопасность.