Identity Management : LDAP, 게이트웨이 서버 구축하기 (호스트그룹별 사용자별 접근권한)

896 views
Skip to first unread message

문태준

unread,
Dec 10, 2012, 9:10:01 PM12/10/12
to sysadm...@googlegroups.com
Identity Management : LDAP

오늘은 LDAP에 대해서 이야기를 해보려고 합니다.
다들 사용자 인증은 어떻게 이용하고 계세요?
매우 유용하지만 국내에서 잘 활용되지 않고 있는 부분중의 하나가 LDAP을 통한 인증 시스템입니다.
그래서 예전 스터디모임을 할 때도 여러번 제가 설명을 했었는데 도시락 싸들고 돌아다니면서 LDAP을 꼭 쓰라고 하고픈 마음입니다.

제가 아주 예전 DSN에 올렸던 글들은 아래에 목차만 있습니다. 제 개인홈피를 닫아둔 상태라서 다시 파일을 올려야 하는데요.
http://database.sarang.net/?inc=read&aid=2325&criteria=ldap&subcrit=tutorials&id=&limit=20&keyword=&page=1
http://database.sarang.net/?inc=read&aid=2213&criteria=ldap&subcrit=tutorials&id=&limit=20&keyword=&page=1

1. 기존 사용자 인증의 문제점
개별 시스템별로 개별 애플리케이션별로 사용자 정보를 관리합니다. 그래서 제대로 계정 관리도 안되고 패스워드 관리도 안됩니다.
DBMS를 이용하는 경우 replcation 을 별도로 설정해야 하는 문제가 있습니다.

1. LDAP의 장점
LDAP은 표준프로토콜이며 다양한 프로그램 및 장비에서 지원합니다.
그래서 사용자 인증 또는 사용자 정보가 필요한 프로그램에서 손쉽게 연동할 수 있습니다.
replication 이 DBMS에 비해서 상대적으로 쉽습니다. multi master도 지원을 합니다.

1. LDAP을 지원하는 다양한 프로그램
일단 LDAP쪽에 사용자 아이디와 비밀번호 및 기타 정보가 있으면 다양한 프로그램에서 연동을 하여 사용을 할 수 있습니다.
다양한 프로그램이란 : OS 계정, 각종 이메일 프로그램의 주소록, apache, svn, VPN, 네트워크 장비(네트워크 장비의 경우 RADIUS 같은 것을 통하여 연결되는 것으로 알고 있습니다), 원격접속콘솔(Drac), 메신저, 게시판, DNS서버의 백엔드, /etc/hosts, 기타
사용자 인증이 필요한 프로그램이나 장비의 경우는 거의 대부분 LDAP을 지원합니다. 하다못해 해외에서 개발되는 오픈소스 게시판을 보면 ldap을 지원합니다.

1. LDAP과 리눅스 OS 계정 관리
시스템계정을 어떻게 관리하세요? 아마도 여기 메일링 가입하신 분들은 이 주제가 가장 관심있을 건데요.
- 리눅스 OS를 LDAP과 연동하여 일반 사용자 계정 관리
이 부분은 NIS를 이용하되 사용자 정보는 LDAP을 이용하는 것입니다. 제가 위에 글을 적었던 것도 이 방식이구요.
openldap에서 특정 호스트나 사용자를 지정하여 시스템 접속 계정을 관리할 수 있습니다.
그렇지만 이 방식의 경우는 ldap을 통한 호스트, 사용자별 접근 제한하는 것이 편리하지 않습니다.
또한 LDAP 서버가 죽으면 LDAP에 있는 계정으로는 로그인을 하지 못하는 문제가 있습니다.

- 사용자 정보는 LDAP을 이용하되 각 시스템 계정은 별도로 관리 (각 시스템에 접속하기 위한 게이트웨이 서버 구축시 유용)
이 부분은 별도로 빼서 논의를 할 수도 있는데 일단 적어 보겠습니다.
이 부분은 실제 LDAP과 연관이 된다기 보다는 게이트웨이 서버 구축과 연관된 부분인데요.
사용자 계정은 LDAP에 넣습니다. 그렇지만 보안을 위해서 각 서버에 직접 접속하는 것이 아니라 게이트웨이 서버를 통해서 접속하도록 합니다.
게이트웨이 서버는 jail, chroot 기능을 위해서 보안을 강화를 하구요.
ldap에서 업데이트가 있는 경우 스크립트 등을 통하여 게이트웨이 서버에 해당 계정 정보를 변경합니다.
http://linux.die.net/man/5/slapd-perl 이런 것을 쓰면 ldap 에서 특정 작업이 있을 경우 perl 스크립트를 실행하여 원하는 작업을 할 수 있습니다.
게이트웨이를 제외한 다른 시스템은 모든 사용자 계정이 있을 필요가 없습니다.
그래서 각 시스템은 admin1, admin2, admin3 등으로 사용자 계정을 만들고(puppet 으로 관리) 각 사용자별로 sudo를 통하여 실행할 수 있는 명령을 제한합니다.
각 시스템도 용도별로 또는 접근권한별로 구분을 합니다.
그러면 예를 들어 웹서버 호스트 그룹에 taejoon 이라는 사용자는 admin3 권한을 가진다고 지정합니다.
이 정보도 ldap에 넣을 수 있고 별도 db에 넣고 관리를 합니다.

이 경우 ldap 서버가 문제가 생겨도 사용자는 게이트웨이 서버에 ssh로 접속할 수 있고 각 시스템별로 접근하는 것은 호스트 그룹별, 사용자별로 제어가 가능합니다.

글로벌을 고려하는 경우 ldap replication 을 이용하면 되므로 필요한 경우 ldap slave 역할을 하는 게이트웨이 서버만 계속 추가하면 됩니다.

리눅스에서 NIS기능을 이용하여 처리하려고 하는 경우는 여러가지 면에서 막히는 것이 많은데 지금 방식대로 하면 보안도 강화하고 사용자별로, 호스트그룹별로 좀 더 상세한 접근제어가 가능합니다.

1. OpenLDAP, Active Directory
기존에 이미 AD로 사내 인프라 구축이 된 경우가 많을 것입니다. 일반적인 LDAP 연동이라면 AD를 이용하여 모두 처리할 수 있습니다.
그렇지만 위의 게이트웨이 서버구축의 경우처럼 스키마를 수정하고 부가기능을 사용하려면 AD를 사용하기가 쉽지는 않을 것입니다.
이런 경우는 AD와 다른 LDAP서버와의 동기화를 생각해 볼 수 있을 듯 합니다.
질의가 많지 않으면 openldap 서버의 multi-master, replication 으로도 모두 처리가 가능한데 질의가 많은 경우 openldap 서버는 문제가 생긴다고 합니다.
저는 아직 이런 경우가 없었지만 그 경우에는 다른 오픈소스로 된 ldap 서버 이용하시면 됩니다.

1. 정책
- 모든 사용자 정보는 ldap에 저장한다
- 인증이 필요한 애플리케이션의 경우는 ldap에서 사용자 계정, 비밀번호, 그룹 등의 질의를 한다. 각 애플리케이션에서 개별적으로 사용자 인증 정보를 구축하지 않는다. (단 사용자나 그룹별 상세한 acl 설정 등은 각 app에서 처리해야 함. LDAP 스키마를 확장해서 특정 필드를 추가하여 사용할 수는 있음)
- LDAP 사용여부와 관계없이 전체 시스템의 uid, gid는 통일해서 사용한다. (puppet 같은 툴 이용)

1. 기타
- SSO 솔루션
SSO 솔루션을 이용하면 여러 개의 LDAP 서버(AD이건 openldap이건)를 통합하여 마치 하나의 LDAP서버처럼 사용 가능합니다.
저는 다른 상용 SSO 솔루션을 사용해 보지 않았고 confluence, jira 를 개발하는 atlassian에서 나오는 Crowd SSO를 사용중입니다.
여러 개의 LDAP 서버가 섞여 있는 곳에서는 SSO 기능과 별개로 이 기능이 매우 유용합니다.
인프라 조직과 상관없이 조직 전체적인 차원에서 사용자 인증 통합, SSO 구현은 필요한 부분입니다.

taejoon moon

unread,
Dec 10, 2012, 9:41:22 PM12/10/12
to sysadm...@googlegroups.com
위에서 이야기한 Perl backend to slapd 프로그램(http://linux.die.net/man/5/slapd-perl )은 OpenLDAP accesslog overlay 와 함께 사용이 되는 것이네요. 이런 설정을 통해서 LDAP 에서 어떠한 변화가 있으면 이것을 알아채서 게이트웨이 서버의 해당 계정 정보를 업데이트하는 것이지요.

게이트웨이 서버 구축과 관련하여서는 다음에 또 한번 더 자세히 이야기를 하겠습니다.
LDAP과는 다른 주제이어서요.

2012년 12월 11일 오전 11:10, 문태준 <taejoo...@gmail.com>님의 말:

--
Google 그룹스 'sysadminstudy' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/sysadminstudy/-/xfAcW9U_mQcJ을(를) 방문하세요.
이 그룹에 게시하려면 sysadm...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 sysadminstud...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/sysadminstudy?hl=ko에서 그룹을 방문하세요.

Kwon-Han Bae

unread,
Dec 10, 2012, 9:45:46 PM12/10/12
to sysadm...@googlegroups.com
사실 ldap 만 잘 구축해도 대부분의 경우에 auth 백엔드로 잘 됩니다.





2012년 12월 11일 오전 11:41, taejoon moon <taejoo...@gmail.com>님의 말:



--
배권한
KwonHan Bae
Kris Bae
http://iz4u.net/blog
linux, python, php, ruby developer

Dr.Mirr

unread,
Dec 11, 2012, 11:11:34 AM12/11/12
to sysadm...@googlegroups.com
으흐흐 언젠가 엘답이나 에이디등 드뤡토리서버 이야기가 나올줄 알았드랬죠?

물론 리눅스만 위주로 지원하던 회사들은 케베로스카 기타 인증 플러긴 및 언동모듈들을 빼라고 합니다만..

외국에선 너무나도 잘 쓰고 오랬동안 쓰는 것들이거든요 ㅠㅠ

제 경우엔 미 국토안보부? 국토관리국? 머 아런데에서 LDAP + 구성인데,리눅스 클러이언트에서 CA 에러가 났다는 것임미다..

것도 돌고돌고돌아 받은 리퀘스트라 다시 넘길수도 없어 한참 파다가...결국 고객이 로컬타임엔지니어 요청해 가더라구요 ㅡㅡ

나름 깜놀랐지만 사실 인증관리가 얼마나중요한지 인식의 중요성이 크단걸 새삼깨닳았죠..(포 모사는 CA의계정관리사용함다)

다만 국내의 케아스도 없고 알려줄 수있을 만큼의 이해도가 없어 활용 부족이아고 생각해 왔었는데... 경험있으신 분들 공유해주시면 감사할거같아요..

전 유닉스(메인프레임)기반 계정 관리이스 정리해 올릴게요

Dr.Mirr

unread,
Dec 11, 2012, 11:29:18 AM12/11/12
to sysadm...@googlegroups.com
조금 궁금한부분이 생겨 다시 답글답니다 ㅠㅠ

1. LDAP과 리눅스 OS 계정 관리
시스템계정을 어떻게 관리하세요? 아마도 여기 메일링 가입하신 분들은 이 주제가 가장 관심있을 건데요.
- 리눅스 OS를 LDAP과 연동하여 일반 사용자 계정 관리
이 부분은 NIS를 이용하되 사용자 정보는 LDAP을 이용하는 것입니다. 제가 위에 글을 적었던 것도 이 방식이구요.
openldap에서 특정 호스트나 사용자를 지정하여 시스템 접속 계정을 관리할 수 있습니다.
그렇지만 이 방식의 경우는 ldap을 통한 호스트, 사용자별 접근 제한하는 것이 편리하지 않습니다.
또한 LDAP 서버가 죽으면 LDAP에 있는 계정으로는 로그인을 하지 못하는 문제가 있습니다.

- 사용자 정보는 LDAP을 이용하되 각 시스템 계정은 별도로 관리 (각 시스템에 접속하기 위한 게이트웨이 서버 구축시 유용)
이 부분은 별도로 빼서 논의를 할 수도 있는데 일단 적어 보겠습니다.
이 부분은 실제 LDAP과 연관이 된다기 보다는 게이트웨이 서버 구축과 연관된 부분인데요.
사용자 계정은 LDAP에 넣습니다. 그렇지만 보안을 위해서 각 서버에 직접 접속하는 것이 아니라 게이트웨이 서버를 통해서 접속하도록 합니다.
게이트웨이 서버는 jail, chroot 기능을 위해서 보안을 강화를 하구요.
ldap에서 업데이트가 있는 경우 스크립트 등을 통하여 게이트웨이 서버에 해당 계정 정보를 변경합니다.
http://linux.die.net/man/5/slapd-perl 이런 것을 쓰면 ldap 에서 특정 작업이 있을 경우 perl 스크립트를 실행하여 원하는 작업을 할 수 있습니다.
게이트웨이를 제외한 다른 시스템은 모든 사용자 계정이 있을 필요가 없습니다.
그래서 각 시스템은 admin1, admin2, admin3 등으로 사용자 계정을 만들고(puppet 으로 관리) 각 사용자별로 sudo를 통하여 실행할 수 있는 명령을 제한합니다.
각 시스템도 용도별로 또는 접근권한별로 구분을 합니다.
그러면 예를 들어 웹서버 호스트 그룹에 taejoon 이라는 사용자는 admin3 권한을 가진다고 지정합니다.
이 정보도 ldap에 넣을 수 있고 별도 db에 넣고 관리를 합니다.

이 경우 ldap 서버가 문제가 생겨도 사용자는 게이트웨이 서버에 ssh로 접속할 수 있고 각 시스템별로 접근하는 것은 호스트 그룹별, 사용자별로 제어가 가능합니다.

글로벌을 고려하는 경우 ldap replication 을 이용하면 되므로 필요한 경우 ldap slave 역할을 하는 게이트웨이 서버만 계속 추가하면 됩니다.

리눅스에서 NIS기능을 이용하여 처리하려고 하는 경우는 여러가지 면에서 막히는 것이 많은데 지금 방식대로 하면 보안도 강화하고 사용자별로, 호스트그룹별로 좀 더 상세한 접근제어가 가능합니다.

---------

사실 LDAP 과 NIS (특히+) 와의 연동..전 별로 권하고 싶지 않더랍니다...니스는 니스대로의 문제(securerity network 관련 및 개별 계정)

가 많기때문입니다. 특히, 게쩡 uid 나 gid 가 섞일때는 이슈발생시 분석 및 관리하주는 입장에선 난리가 나는거죠.. 속에서 ㅋ

말씀하셨던 역량을 누구나 모두가 이해하고 받아들이며 실천해나가지는 못합니다.. 그런 면에선 오히려 전문 업체와 파트너쉽을 맺는것보다 못한 엔트로피의 과다생산만 부추기게 돠는것이지요..

실제로, 기업역량이 부족해 엔지니어를 자체보유 못한다는말씀은 아주 중요한 말씀이셨지만, 막상 맡겨놓으면 망치고 산으로 간다는 걱정에 앞서는 것도, 반대급부라는것입니다...

ㅠㅠ 죄송합나 오타들..제가 건방진마음에 이제 난 컴퓨터는 필요 없어! 라며 아이패드를 노트북을 대체시켜버라는 바람에 오타가 많더라구요 ㅋ

그래요 다들 불편해하며 이해 못합니다. 하지만 전 요타몇번 더 고치는거 외에는 일반 키보드 타수나 다름없이 사용합니다. 오히려 기동력도 좋구요 ㅋ

이런 시스템에대한 이야기도 나눌 수 있으 면 좋겠습니다..
저희는 VPN 을 이용하며, 모바일기기에서도 VPN profile 셋팅을 제공하고, 접속 가능하게하며, 저의경우느 Wyse app 을 이용하여,

가상화 되어있는 제 오피스 머신과,공용 데스크탑, 개인 서버, 애플맥 포 미디어 를 조합하여 집아든 자하철이든, 옥상이든, 마닐라든 업무으, 영속성을 유지하는 편입니다(물론 모텔이나 여관, 룸 등 특수목적 이용시 제외)

Dr.Mirr

unread,
Dec 11, 2012, 11:37:47 AM12/11/12
to sysadm...@googlegroups.com
또 한가지.... 커널이나 드라이버등의 버그 및 지원 스코프 아웃등은 어떻게 처리하세요? 실 업무에서??
모든 커널 및 하드웨어들은 서로 의존적이며, 특히 가상화나 클라우드 시장에선 HCL 도 무시 못하는 부분인데, 통틀어서 전반적인, 오픈소스에 대한 코어적 고객지원( Critical Customer Support by Technician ) 관리도 필요하지 않을까요? 커널버그인데, 검증 할 프로세스가 없다면요? 셋팅 유불인데, 검증할 이가 없다면뇨? 이부분도 못지않게 중요하다봅니다, 이게 바로 기술 혁명, 의식개혁, 의ㅛㅔ식 평눈화임당

문태준

unread,
Dec 12, 2012, 2:06:40 AM12/12/12
to sysadm...@googlegroups.com
네 제가 위에서 적은 것도 NIS로 관리하기 불편한 부분이 있기 때문에 사용자 정보는 LDAP에 저장을 하되 프로그램을 통하여 연동을 하여 사용하는 형태로 구현을 한 것입니다.
일단 지금 여기에서 전문업체에 맡길 것인지 아니면 자체적으로 직접 할 것인지는 논의할 필요가 없을 것 같습니다.
필요한 경우에는 전문업체에서 기술지원을 받는 것이 나쁜 것이 아니고 때론 필요한 작업이지만 내부조직에도 이러한 업무를 담당할 사람이 계속 있어야 추후 관리가 가능합니다.
새로운 기술의 경우 초창기 기술지원, 컨설팅 서비스는 필요하며 해외에는 오픈소스 기반의 컨설팅, 서비스를 제공하는 회사들이 많습니다.
아뭏든 이런건 나중에 다른 이메일에서 이야기..

커널이나 드라이버등의 버그 및 지원 스코프 아웃등은 어떻게 처리하세요? -> 이건 다른 메일로 빼서 질문하시는게 좋겠습니다. 지금 주제와는 다른 이야기이어서요.
그리고 질문 내용이 무엇인지 잘 이해가 안 가는데 좀 더 쉽게 설명을 해 주시면 고마겠네요.

2012년 12월 12일 수요일 오전 1시 37분 47초 UTC+9, Dr.Mirr 님의 말:

문태준

unread,
Dec 12, 2012, 2:13:20 AM12/12/12
to sysadm...@googlegroups.com
아 UID, GID 이야기가 있었는데 위에서 이야기를 한대로 각 시스템은 admin1,2,3 계정만 동일하게 있습니다.
나머지 계정(uid, gid)는 모두 puppet 에서 관리를 하고 있어서 유일한 uid, gid 정보를 사용하고 있습니다.
이건 LDAP자체와는 무관한 내용이고 시스템 운영 정책 부분이겠지요.
예를 들어 UID x번대는 기본 접속 계정말고 실사용자 계정, x번대는 내부 서비스 계정 등 자체 정책에 따라서 설정을 하고 있습니다.
어찌되었건 어떤 계정이든 전체 시스템에서 유일한 uid, gid를 가집니다.

물론 이렇게 하기 위해서는 모든 시스템 설정을 사람이 수작업으로 하면 안되고 puppet 같은 configuration 도구를 통해서 중앙에서 관리하고 통제를 해야 가능합니다. 그래서 실제 쉽지는 않습니다.

DSN에 아시는 분이 LDAP 전문적으로 하시는 분이 계신데 예전 한글책을 내려다가 출판사의 사정이 있었고 원고가 없어지는 문제가 있어서 책이 안 나왔었지요.
한글로 된 책이 있는 것은 기술 확산에 매우 중요한 부분인 것 같습니다.
위에 예전 다른 분 자료를 기초로 하여 제가 정리했던 자료가 있는데 나중에라도 보강하고 업데이트할 겁니다.

2012년 12월 12일 수요일 오후 4시 6분 40초 UTC+9, 문태준 님의 말:
Reply all
Reply to author
Forward
0 new messages