PAM - требуемый и достаточный флаг управления

Простое решение создает туннель между этими двумя серверами, например:

На сервере A:

ip tunnel add tunnel mode ipip remote 10.10.60.10
ip addr add 10.1.1.1/24 dev tunnel
sysctl -w net.ipv4.ip_forward=1

Последняя команда к передачам пакетов с Вашего недавно созданного туннельного устройства на Ваши виртуальные устройства Ethernet.

На сервере C

ip tunnel add tunnel mode ipip remote 10.10.51.182
ip addr add 10.1.1.2/24 dev tunnel
ip route add 192.168.0.0/16 via 10.1.1.1

В зависимости от Ваших брандмауэров между серверами Вам, вероятно, придется скорректировать некоторые правила.

Explenation: Server A и Server B находятся на общем сетевом сегменте, например, они могут отправить пакеты друг другу без потребности отправить пакеты на их шлюз. Это означает Server B просто попытки непосредственно для разрешения адреса 192.168.1.1 через ARP и Server A ответы им.

Server A и Server C находятся на различных сегментах сети, например, если Server C просто просит 192.168.1.1 (это было бы Вашей командой маршрута для Server C) это не получит ответа. Для решения этой проблемы, обычно можно указывать, как можно достигнуть определенной системы через таблицы маршрутизации, но можно только указать следующий транзитный участок. Как router Z кажется, не знает о 192.168.0.0/24 необходимо создать туннель между этими двумя системами.

Одна маленькая дополнительная подсказка, Вы не должны создавать виртуальные устройства Ethernet, можно добавить произвольное число IP-адресов к одному сетевому устройству, например:

for first in {1..4} ; do
   for second in {1..255} ; do
     ip addr add 192.168.$first.$second/16 dev eth0
    done
done

14
23.10.2017, 16:46
2 ответа

PAM продолжается через объекты на стеке в последовательности. Это только сохраняет память того, какое состояние это находится в (успех или отклонено, с успехом значения успеха до сих пор), не того, как это достигло того состояния.

Если объект отмечен sufficient успешно выполняется, библиотека PAM прекращает обрабатывать тот стек. Это происходит, были ли там предыдущими required объекты или нет. На данном этапе PAM возвращает текущее состояние: успех, если не предыдущий required объект перестал работать, иначе отклоненный.

Точно так же, если объект отмечен requisite сбои, библиотека PAM прекращает обрабатывать и возвращает отказ. В той точке это не важно ли предыдущее required объект перестал работать.

Другими словами, required не обязательно заставляет целый стек быть обработанным. Это только означает продолжать идти.

11
27.01.2020, 19:51
  • 1
    Но если любой required объект перестал работать, почему делает PAM должен продолжать проходить стек? если это наконец перестанет работать так или иначе? –  Mohammed Noureldin 21.08.2017, 15:31
  • 2
    @MohammedNoureldin, Даже если попытка входа в систему перестала работать, некоторые вещи, должен быть сделан, такие как вход, добавление тайм-аута против попыток "в лоб", И т.д. Также обычно система не показывает точную причину отказа, например, если поиск имени пользователя перестал работать затем, пользователю все еще предлагают пароль. –  Gilles 'SO- stop being evil' 21.08.2017, 21:17

По-моему, a required флаг управления должен быть всегда успешным для модуля, чтобы быть успешным.

A sufficient отмеченный модуль проигнорирован, если он перестал работать. Если это успешно и нет required отмеченные модули выше перестали работать затем, никакие другие модули того же типа не должны быть проверены, и модуль считают успешным. Так в основном, required флаг имеет более высокий приоритет, чем sufficient флаг, но последний имеет способность прекратить проверять остальную часть их если предыдущее required за следуют.

Пример:

1 auth       required     /lib/security/pam_nologin.so
2 auth       required     /lib/security/pam_securetty.so
3 auth       required     /lib/security/pam_env.so
4 auth       sufficient   /lib/security/pam_rhosts_auth.so
5 auth       required     /lib/security/pam_stack.so service=system-auth

Если строки 1, 2, 3 и 4 успешны затем, строка 5 может быть пропущена и модуль auth успешно. Если строка 4 не успешна, она проигнорирована, и строка 5 проверяется. Если какая-либо из строк 1, 2, 3 перестала работать затем, строка 4 не принята во внимание.

1
27.01.2020, 19:51
  • 1
    я думаю его вопрос, - то, что происходит, если 1 сбой и 2-4 успешно выполняется. 5 становится выполненным? Если бы 1 успешно выполнился, 5 не был бы выполнен. Или другими словами, делает "остановку после того, как достаточный успешно выполняется", применяются, если предыдущий необходимый модуль перестал работать? –  cjm 21.12.2013, 21:05
  • 2
    нет, подлинный модуль перестанет работать с такой комбинацией. –  dsmsk80 22.12.2013, 20:23
  • 3
    Вопрос не состоит в том, перестанет ли авторизация работать. Это будет. Вопрос состоит в том, будет ли модуль 5 работать, прежде чем о том отказе сообщают приложению. –  cjm 22.12.2013, 22:39

Теги

Похожие вопросы