제가 예전에 테스팅을 한 내용은 다음과 같습니다. ipHost objectClass 이용하여 ipHostNumber 에 지정한 ip에 대하여 member로 지정한 사용자만 접속하도록 할 수 있습니다. 이렇게하고 각 ldap 클라이언트에 pam_group_dn 과 pam_member_attribute 를 설정하면 됩니다.
그런데 이렇게 하는 경우에는 ldap client 설정을 변경해주어야 하기때문에 여러대의 시스템에서의 접속제한을 하는 경우에는 불편합니다. 다른 방법이 없을까요? LDAP을 이용하여 각 서버에 접속하는 사용자의 인증을 통합하고 각 IP별로 접근가능한 사용자를 제어하려는 목적이지요. 이 방법은 오렐리에서 나온 ldap 서적에서 참고한 것인데 자료를 검색해봐도 잘 모르겠네요.
이 기능이 필요한건 ldap을 통해 인증을 통합한다고 하더라도 각 사용자별도 접근권한을 제어해야하기 때문인데요. 다른 방법도 있을 듯 한데 잘 모르겠군요.
참고로 다른 내용이기는 하지만 리눅스에서는 PAM을 이용하여 접속ip와 사용자를 조합하는것이 가능하지요.
# cat /etc/security/access.conf AppendIfNoSuchLine "-:root:All EXCEPT LOCAL localhost.localdomain 222.112.137. 211.239.157. 61.100.15."
위는 지정한 ip에서만 root 접속을 허용하는 것입니다.
# cat /etc/pam.d/sshd | grep access account required pam_access.so
sshd 에 pam_access.so 를 추가해주면 됩니다.
-----------------------------
특정 호스트에 접속가능한 사용자 제한하기
ou=hosts 가 먼저 있어야 한다.
# cat host.ldif
dn: ou=hosts, dc=isoc, dc=com
ou: hosts
objectclass: organizationalUnit
objectclass: domainRelatedObject
associatedDomain: isoc.com
# ldapadd -x -D 'cn=manager,dc=isoc,dc=com' -W -f host.ldif
이제 특정 호스트와 사용자에 대한 정보를 입력한다. 아래에서는 cn을 linux 를 하였다.
# cat iphost.ldif
dn: cn=linux,ou=hosts,dc=isoc,dc=com
objectClass: ipHost
objectClass: device
objectClass: extensibleObject
ipHostNumber: 192.168.0.23
cn: linux.isoc.com
cn: linux
member: uid=test,ou=people,dc=isoc,dc=com
member: uid=test2,ou=people,dc=isoc,dc=com
# ldapadd -x -D 'cn=manager,dc=isoc,dc=com' -W -f iphost.ldif
위에서는 192.168.0.23 에 test, test2 계정만 접속가능하도록 설정하였다.
ldap에 위의 정보를 입력한 후 각 ldap client 에 위 기능을 사용할 수 있도록 설정해야 한다.
이는 /etc/ldap.conf 에 다음 항목을 추가한다. 위에서 사용한 dn을 넣어주어야 한다.
pam_groupdn cn=linux,ou=hostss,dc=isoc,dc=com
pam_member_attribute member
테스팅을 한 결과 /etc/ldap.conf 에 pam_groupdn 설정을 두개 넣으면 작동을 하지 않았다.
그렇지만 각 ldap client 쪽에 이 설정이 두가지 들어갈 일이 없으므로 문제가 되지는 않는다.
iphost.ldif 에 설정한 내용을 각 ldap client 별로 ldap에 넣어주고 이후에는 그 설정내용만 계속 수정하면 된다.
|