80 년 대부터 시작해 90년 대 초까지 기업 IT 환경은 메인프레임이 주를 이루고 있었다. 이때 대부분의 IT 자원들은 중앙의 전산 센터에 위치해 있었으며, 여기에 실제 접근할 수 있는 사용자의 수는 극히 일부에 국한돼 있었다. 이런 환경 하에서는 전산 센터 내부로의 출입통제가 가장 효과적인 보안법이었다. 물론 지금도 전산 센터의 출입통제는 중요한 보안 사항 중 하나다. 하지만 90년 대에 접어 들면서 대부분의 직원들에게 데스크톱이 지급됐으며, 기업 내부 네트워크가 확장되면서 IT 자원에 대한 접근이 일반 직원들에게까지 확산됐다. 또 인터넷의 급속한 보급과 기업 업무의 온라인화로 인해 기업 외부 사용자들도 접근이 용이해졌다. 보다 용이해진 사내외 사용자들의 서버 접근최근 메인프레임 환경에서 개방형 시스템인 유닉스, 윈도우 환경으로의 마이그레이션이 지속적으로 일어나고 있다. 이에 따라 당연히 보안 문제가 더욱 심각해지고 있으며, 이를 방어하기 위한 보안 솔루션의 기능도 발전을 거듭하고 있다. 초기 IT 환경에서의 보안이 단지 출입통제 수준의 물리적 보안에 주안점을 뒀다면, 현재의 보안은 출입통제 뿐만 아니라 사용자의 보안의식을 강화하는 관리적 보안에도 신경을 많이 쓰고 있다. 즉, 보안 자체가 기업의 중요한 인프라로 인식되고 있는 것이다. 서버 보안도 이런 배경하에 등장한 기술 중 하나다. 서버 보안이란 정보와 자원들이 실제로 존재하게 되는 서버에 대해 보안을 구축해 기업의 중요한 자원을 공격으로부터 방어하는 것이 주 목적이라 하겠다. 실제 가치 있는 자원에 대해 보안을 적용함으로써 네트워크 보안으로는 적절한 방어가 불가능한 내부 사용자들의 자원 접근을 통제해 고의 또는 실수로 인한 정보의 유출과 훼손을 미연에 방지하자는 것이다. 파이어월이나 IDS 등 기존의 네트워크 보안 솔루션들은 기업의 외부 네트워크에서 내부로 칩입하는 공격에 대해서는 어느 정도 방어할 수 있지만, 내부 사용자의 IT 자원 접근에 대해서는 통제가 불가능하다. 또한 네트워크 보안 시스템을 쉽게 통과할 수 있는 침입 방법이 많이 공개돼 있어 일단 내부 네트워크로의 침입이 성공하면 서버에 대한 공격이 용이하다. 결국 공격의 최종 목표가 되는 서버에 대한 보안 구축은 기업 보안의 최종 보안 지지선이라 할 수 있다. 현재 시장에 나와 있는 서버 보안 솔루션은 크게 두 가지로 분류할 수 있다. 호스트 기반 침입탐지 솔루션과 접근 제어 솔루션이 그것이다.호스트 기반 침입 탐지 솔루션은 서버에 대한 보안 공격, 즉 서비스 거부 공격이나 패스워드 추측 공격 등 서버에 대한 외부적인 공격을 방어하는 솔루션들이 이 범주에 속한다. 접근 제어 솔루션은 서버 내부에 존재하는 파일, 프로그램, 프로세스 등의 자원에 대해 사용자의 접근을 제어하는 솔루션들을 말한다. 서버 보안 솔루션을 도입하기 위해서는 사전에 몇가지 사항을 준비해야 한다. 보안이란 중요한 IT 자원을 불법적인 사용과 공격에 대해 방어하는 것이다. 서버 보안도 중요한 서버 자원을 보호하는 것이 주 목적이다. 그러므로 도입 전에 무엇을 보호할 것인가를 정의해야 한다. 서버에 존재하는 자원들을 정의하고, 그 자원들의 중요도를 측정하고, 존재할 수 있는 위험 요소를 정의한 후에야 중요도에 따라 보안 정책의 강도를 결정할 수 있다. 이와 병행해 향후 서버 보안 구축을 책임지고 수행할 관리자, 프로젝트 수행팀, 운영을 담당할 인력을 구성해야 한다. 보안 정책을 정의하는 것도 중요하지만, 이런 정책을 정의하고 유지 관리하는 인력을 정하는 것도 서버 보안 구축에서는 중요한 사항이다. 대부분의 기업에서 서버 관리자가 보안 관리자의 역할을 병행하도록 하고 있다. 이는 한 사람에게 너무 많은 권한을 부여하는 것으로, 시스템 관리 차원에서는 유리할 수 있으나 보안측면에서는 큰 위험을 내포할 수 있다. 즉, 수퍼유저(root나 Administrator)의 권한을 시스템 관리 측면으로 국한시키고, 보안 관리 영역은 다른 관리자에게 이양하는 것이 바람직한 모델이다. 서버 보안 솔루션 제대로 활용하기이제부터 본격적으로 서버 보안을 통해 기업의 보안을 강화할 수 있는 방법을 살펴보자. 현재 서버 보안과 관련해 시장에 나와 있는 상용 제품들은 그리 많지 않다. 이번 글에서는 그 중 하나인 CA의 eTrust Access Control을 예로 들어 대략적으로 서버 보안 제품들이 어떤 기능을 수행하고 있으며 어떻게 활용할 수 있는지 설명하고자 한다. 서버 보안 제품은 이름 그대로 서버에 존재하는 자원들에 대해 사용자 계정별로 접근을 제어하는 기능을 수행한다. 기본적으로 모든 보안 관리 대상 서버에 엔진 모듈이 설치돼 있어야 하며 관리자는 GUI나 CLI(Command Line Interface)를 통해 보안 정책을 정의하고 수정, 관리할 수 있다. 또한 각 서버에서 운영되는 서버 보안 솔루션이 기록한 보안 로그는 중앙으로 전송돼 보안 로그 감사를 중앙에서 관리하도록 한다. 서버 보안 솔루션을 제대로 사용하기 위해서는 다음과 같은 정책을 설정해야 한다.1. 패스워드 관리 정책대부분의 서버는 사용자 계정(User ID)과 패스워드를 이용해 사용자의 서버 접속을 인증한다. 인증을 받은 사용자는 서버의 자원을 사용할 수 있게 된다. 대부분 서버 해킹 공격의 시작은 서버에 존재하는 사용자의 계정과 패스워드를 알아내는 단계에서 출발한다. 즉, 사용을 거의 하지 않거나 최근에 로그인한 시기가 오래된 휴면 계정을 입수해 이 계정의 패스워드를 알아내는 공격을 시도한다.이를 방어하기 위해서는 각 사용자 계정의 사용 만료 기간을 설정하고, 쓰지 않는 계정에 대해서는 삭제하거나 ‘Suspend’를 설정해 다른 사용자에 의한 도용을 방지해야 한다. 패스워드 추측 (Password Guessing) 공격은 지속적으로 로그인을 시도해 패스워드를 입력하는 공격이다. 운영체제 차원에서도 로그인 시 실패 횟수를 지정해 시도 횟수가 지정된 수를 넘게 되면 자동으로 세션을 차단하는 기능을 제공하고 있으나, 이는 재시도되는 로그인 세션에 대해서는 방어를 할 수 없다는 점이 문제다.이 때문에 eTrust Access Control은 serevu라는 기능을 제공해 일정 횟수 이상 로그인을 실패하게 되면 자동으로 사용자 계정을 일정 시간 정지시키도록 하고 있다. Serevu는 데몬(daemon) 형태로 구동돼 계정의 로그인 사항을 감시한다. 하지만 루트의 경우 만약 해커가 일반 사용자의 계정이 아닌 루트에 대해 공격을 하는 경우 루트 계정이 정지될 수 있다. 이때 시스템 관리가 불가능해질 수가 있는데 이를 방지하기 위해 serevu는 일정 시간 동안만 계정을 정지시키고, 시간이 경과되면 자동으로 계정을 활성화시킬 수 있다. /usr/seos/bin/serevu -d 2h -f 55회 이상 로그인이 실패하면 2시간 동안 계정을 Suspend 시킨다./usr/seos/bin/senable UserIDSerevu에 의해 정지된 계정은 senable을 통해 사용을 허가하게 된다.이외에도 패스워드를 지정할 때 추측이 쉬운 패스워드 사용자 ID 또는 사용자 이름, 서버 이름 등의 사용을 방지해야 한다. eTrust Access Control은 패스워드의 사용 기간, 구성 포맷(길이, 대소문자 수, 특수 문자 수 등)을 지정해 패스워드 지정시 정책에 맞지 않은 경우 등록을 거부한다. 이때 sepass를 사용해 사용자 계정의 패스워드를 지정한다. 먼저 운영체제에서 제공되는 /bin/passwd를 다른 이름으로 변경한 후 sepass를 /bin/passwd로 링크해 주면 사용자나 관리자는 기존과 동일하게 /bin/passwd 명령을 통해 패스워드를 변경할 수 있다. 만약 eTrust Access Control이 정지돼 있는 상황에서는 원래의 패스워드 명령을 이용하도록 설정해준다. 이는 seos.ini 파일에 내용을 수정해 주면 된다. Sepass의 설정 방법은 아래와 같다./usr/seos/bin/secons -s → eTrust Access Control을 정지시킨다.mv /bin/passwd /bi/passwd.orgln -s /usr/seos/bin/sepass /bin/passwdvi /usr/seos/seos.ini; The default password program. If specified, this password program is used; when sepass is invoked and seosd is down.; Default Value:/bin/passwd DefaultPasswdCmd = /bin/passwd.org → 위에서 이름을 변경한/bin/passwd.org를 지정한다.










