Проверка сеанса Shibboleth в Tomcat

У меня есть веб-сервер Apache/2.2.15 с модулями mod_shib, mod_ssl и mod_jk. У меня есть виртуальный хост, который настроен (прикреплен ниже) с AuthType Shibboleth, SSLCertificates и JKMount для направления запросов с использованием AJP на мой сервер Tomcat 8 после успешного установления сеанса с правильным IDP. Когда мой http-запрос достигает моего сервера приложений, я вижу различные заголовки Shib-* вместе с атрибутами, которые мой SP запросил у IDP.

Есть ли способ, которым мой сервер приложений может проверить файл cookie shibsession или другие заголовки? Я пытаюсь защититься от сценария, когда мой веб-сервер, находящийся в демилитаризованной зоне, каким-то образом скомпрометирован, и злоумышленник делает запросы к моему серверу приложений, который находится во внутренней зоне.

Есть ли способ проверить подпись чего-либо, доступного в заголовках, чтобы гарантировать, что содержимое действительно исходит от IDP, а не было создано злоумышленником, который получил контроль над моим веб-сервером?

Есть ли что-то в библиотеке OpenSAML, которое я мог бы использовать для достижения этой цели?


person Daniel Faltyn    schedule 22.05.2015    source источник


Ответы (1)


Есть ли способ, которым мой сервер приложений может проверить файл cookie shibsession или другие заголовки?

mod_shib уже сделал за вас эту сложную работу. После проверки возврата информации от поставщика удостоверений (IdP) mod_shib затем устанавливает переменные среды (не могут быть установлены клиентом), чтобы ваше приложение читало их и доверяло им. Внедрение OpenSAML в ваше приложение не является обязательным, так как mod_shib сделал всю работу по проверке за вас.

Из документов:

Самый безопасный механизм, используемый по умолчанию для серверов, допускающих его использование, — это использование переменных среды. Этот термин является несколько общим, поскольку переменные среды не обязательно всегда подразумевают реальную среду процесса в традиционном смысле, поскольку часто не существует отдельного процесса. На самом деле это относится к набору контролируемых элементов данных, которые веб-сервер предоставляет приложениям и которыми нельзя каким-либо образом манипулировать извне веб-сервера. В частности, клиент не имеет права голоса в них.

person samottenhoff    schedule 08.06.2015
comment
Спасибо, и я понимаю, что mod_shib делает это, но даже в соответствии с приложенными доказательствами, которые вы предоставили ... нельзя каким-либо образом манипулировать извне веб-сервера. Меня беспокоит вектор атаки, если сам веб-сервер скомпрометирован! В моем сценарии веб-сервер, который я планировал установить для mod_shib, находился в демилитаризованной зоне, а сервер приложений в более безопасной внутренней зоне дополнительно защищен брандмауэром, с помощью ACL и т. д. Однако я искал в Shibboleth что-то, что я мог бы дополнительно использовать для установления доверительных отношений либо между сервером приложений и веб-сервером, либо между сервером приложений и idp. - person Daniel Faltyn; 08.06.2015
comment
Вы хотите разобрать утверждение SAML и проверить, является ли информация подлинной на доверенном сервере. Если вы не доверяете веб-серверу, не используйте mod_shib на этом сервере. Либо используйте mod_shib на доверенном сервере, либо выполняйте свою собственную работу SAML с OpenSAML непосредственно в своем приложении. - person samottenhoff; 08.06.2015
comment
Еще раз спасибо. Варианты в таблице прямо сейчас: 1) Переместите веб-сервер, на котором работает mod_shib, в ту же зону, что и сервер приложений, как вы предлагаете 2) пусть IDP отправят подписанный атрибут, который может проверить мой сервер приложений. Как правило, вариант 2 трудно реализовать, но, поскольку мой список ВПЛ невелик, и я могу легко повлиять на них, это возможно. Использование OpenSAML напрямую кажется более сложным и склонным к ошибкам с моей стороны, чтобы сделать это правильно. Еще раз спасибо. - person Daniel Faltyn; 09.06.2015
comment
Да, проверка подписей — сложная работа, особенно если вы получаете подтверждения от различных IdP, таких как Shibboleth, simpleSaml и ADFS. Каждое утверждение будет немного другим. Если программное обеспечение IdP будет последовательным, это будет меньше работы. Есть несколько надежных библиотек, таких как spring-security-saml. - person samottenhoff; 09.06.2015