Назад | Перейти на главную страницу

Права доступа клиентов Strongswan

Я новичок в 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 для каждой группы, но я не знаю, будет ли это правильным способом.