Home | 문태준 | 시스템어드민 메일링 | Sys Admin 세미나
Skip to end of metadata
Go to start of metadata

apache 2.0 에서는 nested group 을 지원하는 기능이 실험적인 형태로 있었는데 apache 2.2 에서는 없는 것 같다.
그러면 그룹안의 그룹은 apache 2.2 에서 인식할 수 없다.
그대신 Require ldap-group 을 여러개 써서 동일한 기능을 구현할 수 있다.

http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html

apache 2.2 에서 LDAP 연동은 apache 2.0 과 달라진 부분이 있다.

해당 모듈은 mod_authnz_ldap 이며 인증 Authentication - 인가 Authorization 과정을 거친다.
ldap 과 연동을 하려면 AuthBasicProvider 에 ldap을 반드시 지정해 주어야 LDAP을 통해 인증할 수 있다.

mod_authnz_ldap registers both an authn_ldap authentication provider and an authz_ldap authorization handler. The authn_ldap authentication provider can be enabled through the AuthBasicProvider directive using the ldap value. The authz_ldap handler extends the Require directive's authorization types by adding ldap-user, ldap-dn and ldap-group values.

인증, 인가에서 아래는 모두 사용이 된다.AuthLDAPBindDN 는 LDAP 에 연결하여 검색을 하는 DN이며 익명 접속을 허용하지 않았을 경우에는 반드시 지정을 해주어야 하며 readonly 계정을 이용하는 것이 좋겠다.

  • AuthLDAPURL Specifies the LDAP server, the base DN, the attribute to use in the search, as well as the extra search filter to use.
  • AuthLDAPBindDN An optional DN to bind with during the search phase.
  • AuthLDAPBindPassword An optional password to bind with during the search phase.

인증에서는 속성, 필터를 이용하여 검색필터를 구성하고 인가에서는 ldap-user, ldap-dn, ldap-group, ldap-attribute, ldap-filter 를 이용할 수 있다. apache 문서에서 Examples 를 참고하는 것이 좋다.

AuthzLDAPAuthoritative 는 LDAP에 지정한 인가만 사용을 할 것인지를 지정을 하며 apache 에서 다른 인가를 결합해서 사용할 경우(접속할 호스트 지정 등)을 함께 쓸 경우에는 off로 해야 한다.

http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html 에서 관련 부분 참고.
Set to off if this module should let other authorization modules attempt to authorize the user, should authorization with this module fail. Control is only passed on to lower modules if there is no DN or rule that matches the supplied user name (as passed by the client).
When no LDAP-specific Require directives are used, authorization is allowed to fall back to other modules as if AuthzLDAPAuthoritative was set to off.

AuthzLDAPAuthoritative 에 대해서는 아래의 내용도 참고한다. 여러가지 조건과 맞물려 작동이 달라진다. http://www.linux.com/archive/feature/120050

그룹으로 제어를 하는 경우에는 다음의 속성이 필요한 경우가 있다.
AuthLDAPGroupAttribute : 그룹멤버쉽을 점검할 때 사용할 LDAP 속성으로 지정하지 않으면 member 와 uniquemember 를 지정한다.
AuthLDAPGroupAttributeIsDN : 그룹멤버쉽을 점검할 때 dn을 사용할 것인지 여부. LDAP 구성에 따라 판단해야 하며 그룹에 사용자의 dn을 모두 넣은 경우에는 on 으로 해 주어야 함

OpenLDAP 에서 사용자 단위 예제

OpenLDAP 에서 그룹을 이용하여 지정할 경우. 아래에서는 confluence-administrators 와 관련됨

http://blogs.open.collab.net/svn/2009/03/subversion-with-apache-and-ldap-updated.html

AD에서 그룹단위. 설정은 OpenLDAP과 동일하다.
다만 AD를 검색할 수 있는 AuthLDAPBindDN 는 설정에 따라 다르고 AuthLDAPGroupAttribute 는 member 이다.
아래에서 3268 은 global catalog 를 검색하는 것이며 GC를 이용하면 트러스트된 KR, JP, CN, US 모든 AD를 검색할 수 있다.
Require ldap-group 을 이용하여 접근할 그룹을 제어할 수 있는데 그룹안의 그룹은 지원이 안되므로 속해있는 팀을 일일이 모두 지정하여 처리할 수 있다.

호스트단위 접근 제어, 사용자 또는 그룹 단위 접근 제어 등을 복합적으로 하는 경우가 있을 수 있다.
예를 들어 아래와 같이 모든 것을 거부한 다음 필요한 접속을 추가하는 경우가 있을 수 있다.
Order deny,allow
Deny from All

이와 관련되어 있는 것은 다음과 같다.
AuthzLDAPAuthoritative : on 으로 하면 인가에서 LDAP에 있는 것만 사용을 한다.
Satisfy : Allow 와 Require 를 함께 사용하는 경우 접근 정책에 대한 부분임. 기본값은 All. 사용자이름과 클라이언트 호스트 주소 둘다 사용하여 접근제한을 하는 경우에만 사용함. Any 로 해두면 두가지 조건 중 한가지만 만족하여도 접근할 수 있음. 특정 IP에서는 인증없이 접근하고 그외에는 사용자 인증을 하는 경우 유용함. http://httpd.apache.org/docs/2.2/mod/core.html#satisfy 참고

예를 들어 다음의 경우 192.168.1 대역에서는 인증없이 접근하도록 하고 그 외에는 인증이 필요한 경우 다음과 같이 구성을 할 수 있다.

Labels
  • No labels