Ще инсталираме и конфигурираме RADIUS сървър на Debian. И ще настроим RADIUS аутентикация за OpenConnect VPN сървъра. Защо? За да позволим на един потребител да има право на една активна VPN сесия и да не предава своето потребителско име/парола на други хора за използване.

Протокол RADIUS

Протоколът RADIUS изпълнява три основни функции:

  • проверява автентичността на потребителя преди да му разреши достъп до мрежата;
  • оторизира потребителя за достъп до определени мрежови услуги;
  • възпроизвежда и следи за използването на тези мрежови услуги.

RADIUS протоколът се нарича още протокол на AAA (Authentication, Authorization and Accounting), което се разшифрова като „Аутентикация, авторизация и счетоводство“.

Когато ААА не се използва, архитектурата се описва като „отворена“, където всеки може да получи достъп и да прави всичко, което иска, без никакво проследяване.

Може да се използва само частта ААА. Например, ако сметките на потребителите за услугите на компанията не са свързани с обема на предавания трафик през мрежата на компанията, компанията може да реши да удостоверява и оторизира потребителите, но да игнорира активността на потребителите и да не се занимава със счетоводство. Вместо това, в системата за наблюдение ще се води счетоводство и ще се проследява необичайната активност на потребителите, а задачата по удостоверяване и оторизиране може да бъде предоставена на друга система в мрежата.

RADIUS сървър

Най-популярният RADIUS сървър в света с отворен код е FreeRADIUS.

Инсталация и конфигурация на FreeRADIUS

Инсталация

Инсталираме FreeRADIUS и PostgreSQL база данни:

apt install freeradius freeradius-postgresql postgresql postgresql-contrib
RADIUS сървър. Инсталация в Debian

Настройка PostgreSQL

При инсталиране на PostgreSQL автоматично се създава потребител postgres. След това трябва да изпълним няколко команди от името на потребителя postgres. За целта влизаме с потребителския акаунт postgres:

su - postgres

Създаваме потребител с името radius:

createuser radius --no-superuser --no-createdb --no-createrole -P

При създаването на потребител radius ще бъде необходимо да измислите паролата му. В бъдеще този парола ще ни бъде от полза.

Създаваме база данни с името radius:

createdb radius --owner=radius

Излизаме от потребителя postgres:

exit

Импортираме схемата (schema.sql) на базата данни в базата radius, XXX – това е версията на FreeRADIUS:

psql -U radius radius < /etc/freeradius/XXX/mods-config/sql/main/postgresql/schema.sql

След като импортирам, в моята база данни се появиха 8 таблица с името radius:

RADIUS сървър. База данни на RADIUS.

Настройка FreeRADIUS

Създаваме връзка към SQL модула, XXX е версията на FreeRADIUS:

ln -s /etc/freeradius/XXX/mods-available/sql /etc/freeradius/XXX/mods-enabled/

Настройваме SQL модула (конфигурационен файл /etc/freeradius/XXX/mods-available/sql), като променяме параметрите за връзка с базата данни според нашите данни:

sql {
dialect = "postgresql"
driver = "rlm_sql_${dialect}"

# Connection info:

server = "localhost"
port = 5432
login = "radius"
password = "radius_password"

# Database table configuration for everything except Oracle

radius_db = "radius"
}

# Table to keep radius client info
client_table = "nas"

където radius_password е паролата на потребителя radius, която създадохме в предишния раздел на статията.

В конфигурационном файле /etc/freeradius/XXX/sites-enabled/default проверяем, что в секции authorize присутствует -sql и в секции accounting присутствует -sql:

authorize {
........
-sql
........
}
accounting {
........
-sql
........
}

Презареждаме FreeRADIUS с командата:

systemctl restart freeradius

Проверка на работоспособност на RADIUS сървър

За да проверим работоспособността на RADIUS сървъра, добавяме тестов потребител и неговата парола в базата данни radius. Влизаме с потребителското име postgres:

su - postgres

Стартираме интерактивната обвивка на PostgreSQL:

psql

Свързване с базата данни radius:

\c radius

Добавяме в базата данни radius, в таблицата radcheck тестовия потребител user01 с парола pass01:

INSERT INTO radcheck (username, attribute, op, value) VALUES ('user01', 'Cleartext-Password', ':=', 'pass01');

Излизаме от интерактивната обвивка на PostgreSQL:

\q

Излизаме от потребителя postgres:

exit

Спираме FreeRADIUS:

systemctl stop freeradius

Стартираме RADIUS сървър в режим на debug:

freeradius -X - debug mode

В новом терминальном прозорец стартираме командата:

radtest user01 pass01 127.0.0.1 0 testing123

Тази команда се опитва да изпълни аутентикационен тест за потребител user01 с парола pass01 на локалната машина (127.0.0.1) чрез RADIUS сървър, който слуша на стандартния порт (затова в командата е посочен порт 0), използвайки тайния парола testing123. Тайният парола е зададен по подразбиране във файла /etc/freeradius/XXX/clients.conf, XXX – това е версията на FreeRADIUS.

При успешна аутентикация ще се изведе „Received Access-Accept„.

RADIUS сървър. Тест на потребителска аутентикация.

За да спрете RADIUS сървъра в режим debug, натиснете комбинацията от бутони Ctrl + C. И стартирайте RADIUS сървъра в нормален (работен) режим:

systemctl start freeradius

RADIUS аутентикация за OpenConnect VPN

Инсталацията и конфигурацията на OpenConnect VPN се описват в статията: „OpenConnect VPN. Подробно ръководство„. В тази статия се обяснява аутентикацията на VPN клиентите чрез парола от самия OpenConnect VPN сървър. В момента обаче искаме да прехвърлим задачата за аутентикация, авторизация и отчет на VPN потребителите към RADIUS сървъра. За тази цел ще ни бъде необходима библиотеката radcli.

Инсталиране на библиотеката radcli

Създаваме директория, в която ще изтеглим библиотеката radcli:

mkdir /usr/local/src/radcli

Прехвърляме се в тази директория:

cd /usr/local/src/radcli/

Изтеглям библиотеката radcli, YYY е версията на библиотеката radcli:

wget https://github.com/radcli/radcli/releases/download/YYY/radcli-YYY.tar.gz

Разархивираме архива:

tar zxvf radcli-YYY.tar.gz

Отиваме в директорията radcli-YYY, където YYY е версията на библиотеката radcli:

cd radcli-YYY

Компилираме и инсталираме:

./configure --sysconfdir=/etc/ && make && make install

Готово! Библиотека radcli е инсталирана.

Ако е необходимо да се премахне radcli, това може да се направи:

cd /usr/local/src/radcli/radcli-YYY
make uninstall

Настройка radcli

Имам OpenConnect VPN сървър и FreeRADIUS на една и съща машина.

Отварям конфигурационния файл /etc/radcli/radiusclient.conf и проверявам настройките:

authserver localhost
acctserver localhost
servers /etc/radcli/servers
dictionary /etc/radcli/dictionary
default_realm
radius_timeout 10
radius_retries 3
bindaddr *

Отварям конфигурационния файл /etc/radcli/servers и добавяме ред с тайна парола testing123:

localhost/localhost   testing123

Настройка OpenConnect VPN

Отваряме конфигурационния файл /etc/ocserv/ocserv.conf и коментираме с символа # всички редове, започващи с auth.

Включваме RADIUS аутентикацията с помощта на следния ред:

auth = "radius[config=/etc/radcli/radiusclient.conf,groupconfig=true]"

Включваме RADIUS запис с помощта на следния ред:

acct = "radius[config=/etc/radcli/radiusclient.conf]"

Добавяме опцията stats-report-time, в която се посочва времето в секунди, когато трябва да се предава счетоводна информация.

stats-report-time = 360

У мене получи така:

RADIUS сървър. RADIUS аутентикация на OpenConnect VPN сървъра.

Запазваме промените в конфигурационния файл и рестартираме OpenConnect VPN сървъра:

systemctl restart ocserv

Проверка работоспособности RADIUS-аутентификации OpenConnect VPN

Проверката на функционалността на RADIUS аутентикацията на OpenConnect VPN сървъра е много лесна. Отваряме OpenConnect VPN клиента, въвеждаме потребителско име user01 и парола pass01. Ако всичко е настроено правилно, ще получите достъп до VPN.

Един потребител на VPN – една сесия.

Нека настроим така, че един VPN потребител да има право само на една активна сесия. Това е, за да не предават потребителите своите VPN акаунти на други хора, а само да ги използват самите.

В конфигурационном файле /etc/freeradius/XXX/sites-enabled/default, где XXX – это версия FreeRADIUS, в секцию session добавляем sql:

session {
sql
}

В конфигурационния файл /etc/freeradius/XXX/users, в края му, добавяме редица:

DEFAULT Simultaneous-Use := 1

Презареждаме FreeRADIUS с командата:

systemctl restart freeradius

Проверяваме, че втората VPN връзка със същия потребителско име/парола не се установява. Например, в този случай клиентът на AnyConnect VPN извежда съобщение: „Вече сте влезли в системата – достъпът е отказан„, което означава „Вече сте влезли в системата – достъпът е отказан“.

RADIUS сървър. Един потребител - една активна сесия.

Изводи

С помощта на RADIUS сървъра вече VPN клиентът може да има само една активна сесия.

Очаквам въпроси в коментарите под статията!

Коментари

Вашият коментар

Этот сайт защищен reCAPTCHA, и к нему применяются Google Политика конфиденциальности и Условия использования.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.