вторник, 25 апреля 2017 г.

Базовая установка и настройка FreeRADIUS 3 в CentOS7 с поддержкой PostgreSQL

Базовая установка и настройка FreeRADIUS 3 в CentOS7 с поддержкой PostgreSQL.

Отключаем Firewall
# service firewalld stop
# chkconfig firewalld off

Установка пакетов, требующихся в дальнейшем:
# yum install libtalloc-devel –y
# yum install wget nano
# yum install gcc
# yum install tcpdump
# yum install openssl-devel
# yum install python-devel

Отключаем SELinux
# nano /etc/sysconfig/selinux
Комментируем все, вставляем строку
SELINUX=disabled
Перезагружаемся:
# reboot

Устанавливаем сервер PostgreSQL
# yum install postgresql-server
# yum install postgresql-devel
Устанавливаем расширения
# yum install postgresql-contrib
Производим инициализацию базы данных по умолчанию:
# service postgresql initdb
В дальнейшем с базой PostgreSQL можно работать при необходимости.

Переходим в папку установки:
# cd /usr/src/

Скачиваем архив с исходными кодами FreeRADIUS:
# wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-3.0.13.tar.gz

Распаковываем архив:
# tar -xvzf freeradius-server-3.0.13.tar.gz

Переходим в распакованную папку:
# cd freeradius-server-3.0.13

Устанавливаем:
# ./configure
# make
# make install

Конфигурация FreeRADIUS, послу естановки находиться в директории /usr/local/etc/raddb/

Делаем первый запуск
# radiusd -X
Получаем ошибку:
Debugger not attached
Refusing to start with libssl version OpenSSL 1.0.1e-fips 11 Feb 2013 0x1000105f (1.0.1e release) (in range 1.0.1 release - 1.0.1t rele)
Security advisory CVE-2016-6304 (OCSP status request extension)
For more information see https://www.openssl.org/news/secadv/20160922.txt
Once you have verified libssl has been correctly patched, set security.allow_vulnerable_openssl = 'CVE-2016-6304'
Refusing to start with libssl version OpenSSL 1.0.1e-fips 11 Feb 2013 0x1000105f (1.0.1e release) (in range 1.0.1 dev - 1.0.1f release)
Security advisory CVE-2014-0160 (Heartbleed)
For more information see http://heartbleed.com 
Исправление ошибки выполняется установкой параметра allow_vulnerable_openssl в настройках
# nano /usr/local/etc/raddb/radiusd.conf
По умолчанию:
allow_vulnerable_openssl = no
Меняем на 
allow_vulnerable_openssl = 'CVE-2016-6304'
Теперь после тестового запуска radius сервера старт завершается успешно:
# radiusd -X
FreeRADIUS Version 3.0.13
Copyright (C) 1999-2017 The FreeRADIUS server project and contributors
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 35712
Listening on proxy address :: port 37586
Ready to process requests
Остановка запущенного в тесте сервера:
CTRL +C

Удаляем шаблоны, работающие по умолчанию default и inner-tunnel
# rm –f /usr/local/etc/raddb/sites-enabled/inner-tunnel
# rm -f /usr/local/etc/raddb/sites-enabled/default

Отключаем проксирование
# nano /usr/local/etc/raddb/radiusd.conf
Строки
proxy_requests  = yes
$INCLUDE proxy.conf
Меняем на
proxy_requests  = no
#$INCLUDE proxy.conf

Отключаем логирование модуля unix
# nano /usr/local/etc/raddb/mods-enabled/unix
Комментируем строку
# radwtmp = ${logdir}/radwtmp
Это указание не вести логирование в файле /usr/local/var/log/radius/radwtmp

Учим FREERADIUS работать с атрибутами Cisco AV-Pair
# nano /usr/local/etc/raddb/mods-enabled/preprocess
Устанавливаем директиву with_cisco_vsa_hack в yes (по умолчанию no)
    with_cisco_vsa_hack = yes
# systemctl restart radiusd.service
Словари лежат здесь /usr/local/share/freeradius/dictionary
Для успешного приема атрибутов, передаваемых в Cisco AV Pair необходимо явно прописать их в настройках словарей FreeRADIUS.
# nano /usr/local/share/freeradius/dictionary.cisco
После блока SIP атрибутов (# SIP Attributes) пишем новые атрибуты
# Новые атрибуты
ATTRIBUTE       client-mac-address                      171     string
ATTRIBUTE       connect-progress                        172     string
ATTRIBUTE       ppp-disconnect-cause                    173     string
ATTRIBUTE       disc-cause-ext                          174     string
ATTRIBUTE       circuit-id-tag                          175     string
Теперь в логах вместо атрибута 
Cisco-AVPair = "client-mac-address=107b.ef5c.2579"
Будет две строки
Cisco-AVPair = "client-mac-address=2cb0.5d81.b453"
client-mac-address = "2cb0.5d81.b453"
То же для атрибутов connect-progress, ppp-disconnect-cause, disc-cause-ext, circuit-id-tag
И названия атрибутов client-mac-address, connect-progress и пр. можно будет использовать напрямую.

Меняем название файла логов аккаутинга, для того что бы можно было его успешно ротировать
# nano /usr/local/etc/raddb/mods-enabled/detail
Меняем строку
filename = ${radacctdir}/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d
на
filename = ${radacctdir}/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail
Логи сервера находятся в файле: /usr/local/var/log/radius/radius.log
Логи аккаутинга складываются в папку: /usr/local/var/log/radius/radacct/<ip-адрес-клиента>/
Организовываем ротацию файлов логов 
# cp /usr/src/freeradius-server-3.0.13/redhat/freeradius-logrotate /etc/logrotate.d/
# nano /etc/logrotate.d/freeradius-logrotate
Содержимое файла может быть таким:
/usr/local/var/log/radius/radius.log {
        rotate 2
        copytruncate
        missingok
        daily
        size=500k
        nomail
}
/usr/local/var/log/radius/radacct/*/detail {
        rotate 2
        noolddir
        nocopy
        create
        nocopytruncate
        missingok
        daily
        size=10M
        nomail
        postrotate
                /usr/bin/systemctl restart radiusd.service
        endscript
}
В заключении выполняем проверку правил ротации логов:
# logrotate -d /etc/logrotate.d/freeradius-logrotate
Принудительный запуск ротации:
# logrotate -f /etc/logrotate.d/freeradius-logrotate
Посмотреть что и когда ротировалось можно в файле /var/lib/logrotate.status

Создаем и подключаем свой модуль sql, которым будем пользоваться.
# cp /usr/local/etc/raddb/mods-available/sql /usr/local/etc/raddb/mods-available/sql_my
# ln -s /usr/local/etc/raddb/mods-available/sql_my /usr/local/etc/raddb/mods-enabled/sql_my
Редактируем модуль:
# nano /usr/local/etc/raddb/mods-enabled/sql_my
Здесь пока можно все закомментировать или удалить.
Для удаления всего содержимого выполняем:
# echo "" > /usr/local/etc/raddb/mods-enabled/sql_my

Создаем свой тестовый шаблон на основе имеющегося:
# cp /usr/local/etc/raddb/sites-available/default /usr/local/etc/raddb/sites-available/test
# ln -s /usr/local/etc/raddb/sites-available/test /usr/local/etc/raddb/sites-enabled/test
Теперь после запуска сервера мы имеем корректно запущенный сервер FreeRADIUS, прослушивающий порты 1812 и  1813.
# radiusd -X

Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Ready to process requests
Для проверки, в другой консоли набираем команду проверки открытых портов службами:
# netstat -ltupn | grep radius
udp        0      0 0.0.0.0:1812     0.0.0.0:*           1898/radiusd
udp     2176      0 0.0.0.0:1813     0.0.0.0:*           1898/radiusd
udp6       0      0 :::1812           :::*                1898/radiusd
udp6       0      0 :::1813           :::*                1898/radiusd

Внедряем unit FreeRADIUS в службу systemd
Копируем имеющийся в скаченном архиве готовый файл юнита:
# cp /usr/src/freeradius-server-3.0.13/redhat/radiusd.service /etc/systemd/system/multi-user.target.wants/
# chmod +x /etc/systemd/system/multi-user.target.wants/radiusd.service
Редактируем файл 
# nano /etc/systemd/system/multi-user.target.wants/radiusd.service
и приводим его к виду:
[Unit]
Description=FreeRADIUS multi-protocol policy server
After=network.target
Documentation=man:radiusd(8) man:radiusd.conf(5) http://wiki.freeradius.org/ http://networkradius.com/doc/

[Service]
Type=forking
EnvironmentFile=-/etc/sysconfig/radiusd
ExecStartPre=/usr/local/sbin/radiusd $FREERADIUS_OPTIONS -Cxm -lstdout
ExecStart=/usr/local/sbin/radiusd $FREERADIUS_OPTIONS -m
Restart=on-failure
RestartSec=5
ExecReload=/usr/local/sbin/radiusd $FREERADIUS_OPTIONS -Cxm -lstdout
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
Рестартуем демон systemd:
# systemctl daemon-reload
Теперь запуск сервера выполняем так:
# systemctl start radiusd.service
Статус:
# systemctl status radiusd.service
Остановка сервера:
# systemctl stop radiusd.service

2 комментария:

  1. Моя Россыпь: Базовая Установка И Настройка Radius 3 В Centos7 С Поддержкой Postgresql >>>>> Download Now

    >>>>> Download Full

    Моя Россыпь: Базовая Установка И Настройка Radius 3 В Centos7 С Поддержкой Postgresql >>>>> Download LINK

    >>>>> Download Now

    Моя Россыпь: Базовая Установка И Настройка Radius 3 В Centos7 С Поддержкой Postgresql >>>>> Download Full

    >>>>> Download LINK zn

    ОтветитьУдалить
  2. Добрый день, а для в конце нужно останавливать сервер radius?

    ОтветитьУдалить