Рейтинг:0

Apache: разрешить определенным пользователям только из указанной подсети

флаг us

У меня есть требование изменить аутентификацию Apache 2.4, чтобы наиболее пользователи могут получить доступ к веб-сайту из любого места, но некоторым пользователям (которых можно идентифицировать несколькими способами, но проще всего использовать группу LDAP) может быть разрешен доступ только из подсети с определенным IP-адресом. (Аутентификация осуществляется через модуль OIDC и группы ldap.)

(упрощенная версия того, что) текущая конфигурация Apache

<RequireAll>
    <RequireAny>
        Require valid-user
        Require claim aud:apache123.company.com
    </RequireAny>
    Require ldap-attribute companyMemberOf="ALL_USERS_OF_THIS_TOOL"
</RequireAll>

Я не уверен, как лучше всего реализовать это отрицательное предложение для определенной группы.

Мне пришлось использовать обходной путь обсуждалось здесь с манекеном Требовать все предоставленные оговорка, чтобы избежать Директива RequireAll содержит только директивы отрицательной авторизации. ошибка.

Я думаю, что добавление этого сделает это, но я был бы признателен за обратную связь. Потому что с такими вещами я легко могу представить, как кто-то пишет: «Вы думаете, что это сработает, но это не так, потому что…» или «Да, это работает, но на самом деле это неправильный способ сделать это, потому что… ."

    <RequireAny>
        <RequireAll>
            RequireNone ldap-attribute companyMemberOf="RESTRICTED_GROUP"
            # Just to keep Apache happy
            Require all granted
         </RequireAll>
        RequireIp 10.10.0.0/22
    </RequireAny>
Рейтинг:0
флаг es

Давайте следовать логической логике правил в том виде, в каком они были бы:

<RequireAll>
### First, and foremost, users need to be Apache users.
    Require ldap-attribute companyMemberOf="ALL_APACHE_USERS"

### AND
    <RequireAny>
##### Users need to be either valid
        Require valid-user
##### Or have the appropiate claim.
        Require claim aud:apache123.company.com
    </RequireAny>

### AND
    <RequireAny>
##### Finally, users need to NOT have the companyMemberOf="RESTRICTED_GROUP" attribute
        Require not ldap-attribute companyMemberOf="RESTRICTED_GROUP"
##### Or be accessing from the 10.10.0.0/22 subnet.
        Require ip 10.10.0.0/22
    </RequireAny>
</RequireAll>

Логика подсказывает, что последний блок будет оцениваться как истина (и, следовательно, предоставление доступа), только если:

  • а). Пользователи приходят из подсети,
  • или б). Пользователи НЕ ограничены.

Итак, я считаю, что правила должны удовлетворять ваши потребности.

Однако обратите внимание на пробел между «Require» и «ip» и использование «not» вместо «None»; директива используется для включения набора директив, аналогично или .

Mort avatar
флаг us
Спасибо. Я только что обновил свою проблему после некоторого тестирования и новой информации с https://serverfault.com/questions/984997/apache-2-4-require-exclude-ip-range. Есть забавный синтаксис, связанный с отрицаниями.
флаг es
Я действительно думал, что этот подход был каким-то «обратным», LOL, но не мог придумать «прямой» способ сделать это, чтобы он был чище, яснее и проще в обслуживании.
флаг es
Кроме того, вы пробовали использовать «Не требовать» вместо «Не требовать»? То, как я написал, не должно бросать AH01624 (поскольку «требовать ip» не является отрицательным).
Mort avatar
флаг us
"отрицательная директива Require не действует в директива"

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.