Я новичок в strongswan, поэтому прошу прощения за этот вопрос новичка. Я создал сервер Debian с помощью strongswan. К этому серверу подключены три сети network_1: 192.168.10.0/24, network_2: 192.168.20.0/24 и network_3 192.168.30.0/24 через маршрутизаторы Mikrotik LTE и протокол IKEv2-PSK. Вместе с этой сетью к этому серверу могут быть подключены клиенты Windows, iOS, OSX и Android по протоколу IKEv2 и аутентификации MSCHAP-EAP. Все работает без проблем, и для каждого подключенного клиента доступны все IP во всех этих трех сетях.
На данный момент я хотел бы назначить некоторые из следующих прав доступа для клиентов MSCHAP-EAP, например:
Клиент Боб / пароль1 должен иметь доступ только к IP-адресам в сети2 и никаким другим IP-адресам. Клиент Алиса / пароль2 должен иметь доступ только к диапазону IP-адресов 192.168.20.100–150 во второй сети, и никакие другие IP-адреса. Клиент Джон / пароль3 не должен иметь доступа. доступ только к диапазонам IP-адресов 192.168.30.10 - 50 и 192.168.10.150 -200 и IP-адрес 192.168.20.44
Может ли кто-нибудь быть таким добрым и помочь мне решить эту проблему? В идеале применительно к любому примеру решения…
заранее спасибо
Петр
Возможный способ сделать это - использовать EAP-RADIUS. Сервер радиуса может вернуть Класс атрибуты, которые можно сопоставить с конфигами (правые группы в ipsec.conf или группы в swanctl.conf). Затем вы можете определить разные селекторы локального трафика для каждой из этих групп. В ikev2 / rw-eap-md5-класс-радиус Сценарий тестирования strongSwan иллюстрирует это.
Если вы не хотите или не можете использовать EAP-RADIUS, есть способ сопоставить отдельные идентификаторы EAP, но это немного сложно, потому что strongSwan не полностью поддерживает переключение соединений на основе таких идентификаторов. Для этого необходимо использовать фиктивное соединение с поддельной группой. Вот как это может выглядеть в ipsec.conf:
conn eap-shared
# options shared by all clients e.g.
leftcert=...
# or
rightsourceip=...
# or
rightauth=eap-mschapv2
conn eap-init
also=eap-shared
# this config is used to do the EAP-Identity exchange and the
# authentication of client and server
eap_identity=%identity
# the following is used to force a connection switch after
# the authentication completed
rightgroups=<any string that is not used as group/class>
auto=add
conn eap-bob
also=eap-shared
eap_identity=bob@strongswan.org
# any options that only apply to this user follow here e.g.
leftsubnet=192.168.20.0/24
auto=add
conn eap-alice
also=eap-shared
eap_identity=alice@strongswan.org
# any options that only apply to this user follow here e.g.
# (note that ipsec.conf does not support ranges, and most kernel
# interfaces do neither, so a range might be converted to a larger
# subnet when installing IPsec policies, so deaggregating the range
# is the most accurate way to do this currently)
leftsubnet=192.168.20.100/30,192.168.20.104/29,192.168.20.112/28,192.168.20.128/28,192.168.20.144/30,192.168.20.148/31,192.168.20.150/32
auto=add
conn eap-john
also=eap-shared
eap_identity=john@strongswan.org
# any options that only apply to this user follow here e.g.
# (see above)
leftsubnet=192.168.30.10/31,192.168.30.12/30,192.168.30.16/28,192.168.30.32/28,192.168.30.48/31,192.168.30.50/32,192.168.10.150/31,192.168.10.152/29,192.168.10.160/27,192.168.10.192/29,192.168.10.200/32,192.168.20.44/32
auto=add
С EAP-RADIUS конфигурация будет выглядеть примерно так же, но вам не понадобится eap-init
соединение (вместо этого вы бы добавили eap_identity=%identity
к eap-shared
) и вместо определения eap_identity
в каждом отдельном подключении, которое вы установили rightgroups
группам (т.е. значениям атрибутов класса EAP-RADIUS), для которых должно использоваться это соединение (т.е. это позволяет использовать один и тот же раздел conn для нескольких пользователей).
Большое спасибо за ваш ответ. Я это протестирую. Моя первая идея заключалась в том, чтобы изменить аутентификацию mschap-eap на eap-tls и использовать разные клиентские сертификаты и раздел conn для каждой группы, но я не знаю, будет ли это правильным способом.