Glenn Brunette의 보안 웹로그
InfoWorld 2008 Technology of the Year Award 리스트 순위에 든 솔라리스 10 에 영감을 받아 필자도 나만의 리스트를 작성해 보기로 했다. 독자들이 이런 흥미 없는 글을 관대히 봐주기를 바랄 뿐... 꼭 써봐야 할 솔라리스 10의 보안 기능 Top 5
이 리스트는 가장 직접적이고 즉각적인 가치를 사용자와 사용자의 회사에 제공할 솔라리스 10 OS의 다섯 가지 보안 컨트롤을 강조하기 위해 작성한 것이다. 대표적인 목록을 뽑기 위해 다섯에서 멈췄지만 심층설명(deep dive presentation)을 보면 솔라리스가 제공하는 기능이 훨씬 더 많다는 것을 알게 될 것이다. 우선 리스트부터 살펴보자... (기대하시라)...
5. 감사(Auditing).
솔라리스의 경우 솔라리스 2.3 이래 적절한 감사 기능을 가지고 있었으나, 그런 것이 존재한다는 것조차 모르는 사람들이 얼마나 많은지 셀 수도 없을 지경이다. 솔라리스의 감사 기능은 시스템에 어떤 일이 생겼는지를 알 수 있는 아주 훌륭한 기능이다. 커널 기반의 기능으로써 발생한 모든 것을 확인하고 기록할 수 있다. 이 때 발생한 일이 준수(compliance)와 관련하여 조직을 위해 절대적으로 중대한 일일 수도 있는 것이다.
Martin의 블로그에는 신용카드 업계를 위한 보안 요건에 대처할 수 있는 훌륭한 감사 환경 설정이 게시되어 있다. 또한 솔라리스가 이 분야에서 전체적으로 어떻게 대처하는지에 대한 백서도 참고가 될 것이다. 이제 이 이야기는 접고... 다음으로 넘어가자.
4. 권한(Privileges).
사용자들은 아마도 권한이 무엇인지 잘 모르는 채로 이를 사용하고 있을 것이며 이것은 잘못된 게 아니다. 솔라리스는 다수의 디폴트 set-uid 바이너리 및 시스템 서비스 전역에 걸쳐 “최소한의 권한”이라는 원칙을 구현해왔다. 다수의 서비스에 대해서 해당 서비스들이 필요로 하는 권한만 허용되며 필요하지 않은 것은 삭제하는 것이 기본이다. 왜 그래야 하는가? Sun BluePrint에는 제3자 애플리케이션 혹은 사용자 소유의 애플리케이션에 권한을 통합하는 방법이 기술되어 있다. 게다가 소프트웨어 개발을 하는 사람들을 위해, 이 문서에는 권한을 코드에 직접 통합하여 권한 사용을 일괄하여 다룰 수 있는 방법, 즉 사용자 코드를 권한을 가지고 수행할 때 앞서서 제한하는 방법이 수록되어 있다. 그런데 어떤 권한이 필요한지 모른다면? 권한 디버거(privilege debugger)를 확인하길. 방법이 보일 것이다. 필요한 권한만으로 수행함으로써 노출 범위가 상당히 감소된다. 따라서 모두 그것이 유용한 것이라는 의견에 동의할 것이다.
3. 역할기반 접근관리.
관리 기능에 액세스를 제한할 필요가 있는가? 때로 권한이 주어진 연산을 수행할 필요가 있는가? 그렇다면 역할기반 접근관리(RBAC)가 답이다. RBAC는 솔라리스 8에 처음 통합되어 있었으며 이후 나머지 운영체제에 더욱 더 많이 통합되게 되었다. 예를 들어, 운영자가 시스템 재시작은 할 수 있지만 시스템 서비스 변경은 할 수 없게 하려면 RBAC가 도움이 된다. Bart는 그 기술에 새로 접하는 사람들을 위한 아주 멋진 RBAC 투어를 개발했다. 한 발짝 더 나가가기를 원하는 사람들의 경우, RBAC를 사용하여 two-person (혹은 four-eyes) 액세스 컨트롤 시나리오를 구현할 수도 있다. 사용자가 그저 root 액세스를 위임하기를 원하든, 복잡한 액세스 컨트롤 정책의 구현을 원하든 상관없이, RBAC는 사용자의 요구에 맞춰 확장도 가능하다.
2. 존(Zones).
독자들은 존(zone)에 대해 언급할 걸 알고 있었을 것이다. 존(zone)은 필자의 소견으로는 솔라리스 10 OS의 보안 기능 중 가장 중요한 것 중 하나이다. 커널과 대부분의 루트 킷의 user-land 형식의 경우 애플리케이션을 sparse-root 비 글로벌 존(non-global zone)에서 실행할 때는 본질적으로 비효율 적인 것으로 간주된다. 존(zone)은 글로벌 존(global zone)의 상대방보다 더 적은 권한을 가지고 작동하는데, 이로써 권한 지향의 공격이 성공하기 더 어려워지게 된다. 또한, 코어 OS 바이너리, 라이브러리 및 커널 모듈은 모두 사실상 디폴트 구성에서 변경되지 않는다. 왜냐하면 그러한 것들은 글로벌 존(global zone)으로부터 읽기 전용의 루프백 마운트(loopback mount)를 사용하여 제공되기 때문이다. 이것은 또 무슨 의미일까? 간단히 말해 사용자는 그러한 것들을 변경할 수 없다는 의미이다. 이는 보안을 위해, 변경 제어(change control)를 위해, IT 관리를 위해, 그 밖에 무엇을 위해서든 위대한 승리임에 틀림없다. 기반이 되는 OS에 변경 위험 없이 안전한 환경에서 작업을 수행하도록 사용자는 애플리케이션에 액세스를 제공할 수 있다. 이는 변경할 필요가 있는 경우 솔라리스는 그것을 수용할 만큼 충분히 유연하다는 것을 말해준다. 사용자는 존(zone)에 장치, 파일 시스템, 네트워크 인터페이스, 심지어 권한까지도 추가할 수 있다. 사용자는 솔라리스 리소스의 부당한 공유를 사용하는 것을 막기 위해 존(zone)에 다양한 리소스 컨트롤을 시행할 수 있다. 뿐만 아니라, 사용자는 존(zone)에 대해 그것 고유의 안정된 구성, 명명(naming) 및 인증(authentication) 서비스, 감사 정책 등을 사용하여 개인화할 수 있다. 존(zone)간의 협동(cooperating zones)을 통해 매우 흥미로운 것을 수행할 수도 있다. 존(zone)은 감사, 권한 및 RBAC와 함께 필수 액세스 컨트롤을 구현한 썬의 다중 레벨 운영 체제인 Solaris Trusted Extensions의 토대가 되는, 주목하지 않을 수 없는 보안 기능을 제공한다.
1. 기본으로 제공하는 네트워크 보안.
마지막에 언급하기는 하지만 이 목록에서 틀림없이 아주 중요한 것이 기본으로 제공하는 보안(Secure by Default) 또는 SBD이다. SBD는 솔라리스 10 11/06에서 특히 구입 후 처음설정의 경우에 솔라리스 OS의 명백한 네트워크 공격(network-visible attack)의 표면을 줄이기 위한 수단으로 도입되었다. 그렇다면? 이는 SBD가 설치 시에 선택된 경우, 네트워크 상에서 노출될 유일한 솔라리스 OS 서비스는 보안 쉘(Secure Shell)이라는 것을 의미한다(사용자 환경에서 사용되거나 또는 사용되지 않을 수도 있는 전통적으로 긴 목록의 서비스가 아니라). SBD는 설치 시(최초 설치) 또는 설치 후(post-installation time) (업그레이드 및 그것을 나중에 작동시키기를 원할 때) 선택될 수 있다. 그것은 필수가 아닌(non-critical) 것으로 간주된 서비스를 중지시키거나 필요한 서비스를 로컬 전용(local-only) 상태로 설정하여 그것들이 로컬 시스템 자체로부터 오는 요청에만 응답하도록 할 것이다. 이로써 사용자가 보다 안전한 기본 구성으로부터 시작하여 실제로 원하는 서비스들만 작동시키도록 해준다. SBD는 글로벌 존(global zone) 또는 여러 비 글로벌 존(non-global zone)에서 구성될 수 있다(각 존(zone)은 각기 고유의 구성을 가질 수 있으므로). 커스터마이징(disable, enable, local-only 설정 등을 하고자 하는 서비스에 대해)과 관련하여 조금 더 원하는 경우, 솔라리스 보안 툴킷(Solaris Security Toolkit) 사용에 대해 생각해 볼 수도 있다. 이 툴킷을 통해 시스템 구성에서 할당 또는 지정된 것에 대한 정책을 설정할 수 있다. 어떤 툴을 선택하든 상관없이 이제 솔라리스 10 전개 시 더 쉽게 보안을 강화할 수 있을 것이다.
꼭 써봐야 할 솔라리스 10 보안 기능 Top 5 목록을 즐겁게 보았기를 바란다. 솔라리스 10이 가지고 있는 기능에 대해 더 자세한 내용을 원한다면, 다음의 사이트들이 도움이 될 것이다.
· 솔라리스 10 보안 홈페이지
· 솔라리스 10 보안 교육 센터
· 솔라리스 10 보안 우수 사례
· 솔라리스 보안 라이브러리
· 솔라리스 보안 프리젠테이션
· OpenSolaris 보안 커뮤니티
· 썬 블로그 (tagged Solaris + 보안)
저자에 관하여
Glenn Brunette은 썬의 뛰어난 엔지니어로써 , Client Solutions Security Program Office의 수석 엔지니어이고 CSO Security Architect의 대표 입니다. Sun의 고객들과 관련된 여러가지 다양한 주제의 보안에 관련된 글을 쓰고 있습니다.
이 글의 영문 원본은
http://blogs.sun.com/gbrunett
에서 보실 수 있습니다.



전체

댓글을 달아 주세요
댓글을 쓰시려면 로그인해주세요.