서버 보안 솔루션 활용도 높이기

일반입력 :2002/07/17 00:00

김진현

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를 지정한다.

2. 파일/디렉토리 접근 제어서버에 존재하는 모든 자원은 파일 형태로 디렉토리에 존재한다. 이런 파일과 디렉토리에 대한 접근 제어는 서버 자원 보호의 가장 기본적이고 중요한 사항이라고 할 수 있다. 운영체제에서는 파일과 디렉토리에 대해 읽기(R), 쓰기(W), 실행(X)의 3가지 접근 모드에 대해 소유자와 소유자의 그룹, 기타에 대해 접근 권한을 제어할 수 있다. 이에 반해 서버 보안 솔루션은 접근 모드를 세분화해 제어할 수 있다. 예를 들어 운영체제에서는 쓰기(W) 권한을 가지면 파일의 내용을 수정하거나 파일 자체를 삭제할 수 있는 권한 까지 자동으로 부여하지만, 서버 보안 솔루션은 쓰기 권한이 있더라도 삭제(Delete) 권한이 없으면 파일을 삭제할 수 없도록 할 수 있다. 파일/디렉토리 접근 제어에서 중요한 것은 일반 사용자가 자신의 홈디렉토리에서만 작업을 할 수 있도록 제한하는 것이다. 즉 자신의 홈디렉토리 내부에 있는 모든 자원에 대해서는 모든 권한을 부여하지만, 이외의 디렉토리나 파일에 대해서는 단지 읽기와 실행 권한 만을 부여해 임의로 파일을 수정하거나 삭제, 생성하는 것을 방지할 수 있다. 이를 위해 eTrust Access Control은 _restricted라는 사용자 그룹을 제공한다. 이 그룹에 포함된 사용자 계정은 접근이 허가된 파일이나 디렉토리 이외의 파일/디렉토리에 접근을 할 때는 _default 정책에 정의돼 있는 권한으로만 접근을 허가받게 된다. 만약 User1 계정에 대해 홈디렉토리에 대해서는 모든 권한을 부여 하고, 이외의 파일이나 디렉토리에 대해서는 읽기와 실행 권한 만을 부여하려면 아래와 같이 설정한다./usr/seos/bin/selangeTrust selang v5.10a (5.10) - eTrust command line interpreterPortions of this product Copyright (c) 1999-2001 Computer Associates Internatio.Portions of this product Copyright (c) 1995-2001 Memco Software Ltd., a CA comp.eTrust>join User1 group(_restricted) #User1을 _restricted 그룹에 포함시칸다.eTrust>cr file _default defacc(r,x,chdir) eTrust>nr file /home/user1 owner(nobody) defacc(none)eTrust>auth file /home/user1 uid(User1) acc(all)eTrust>quit이렇게 설정된 User1은 자신의 홈디렉토리인 /home/user1에 대해서는 모든 권한을 갖게 되나 다른 파일이나 디렉토리에의 접근은 읽기, 실행, 디렉토리 변경 권한만을 부여받는다.3. 트로이안 목마/백도어 공격 대응유닉스에는 다수의 setuid/setgid 프로그램이 존재한다. 대부분의 setuid/setgid 프로그램은 시스템을 관리하거나 운영할 때 많이 사용하는 프로그램들이므로, 해커들의 트로이안 목마나 백 도어 공격에 이용된다. eTrust Access Control은 서버에 존재하는 setuid/setgid 프로그램들의 변경이 일어나는 경우 자동으로 프로그램의 사용을 금지시킨다. 즉 트로이안 목마 공격을 위해 setuid/setgid 프로그램을 변경하면 자동으로 더 이상 그 프로그램이 구동되는 것을 막아 해킹 프로그램의 시작을 봉쇄하는 것이다. 이 기능을 실행하기 위해서는 먼저 시스템에 존재하는 setuid/setgid 프로그램을 검색해 eTrust Access Control의 DB에 등록하는 과정이 필요하다. 이 때 사용되는 명령이 /usr/seos/bin/s euidpgm이다. Seuidpgm은 지정한 디렉토리에 존재하는 setuid/setgid 프로그램을 검색해 스크립트를 생성해준다. 이 때 생성된 스크립트를 selang으로 DB에 등록하게 되면, 이 후 변경이 일어나는 것을 감지해 자동으로 실행을 못하도록 방어한다. 초기 등록 시에는 Trust 상태로 설정되고, 변경이 일어나면 Untrust 상태로 변경해 실행을 막고, 이 상황을 감사로그에 기록한다. 관리자는 감사 로그를 통해 변경된 setuid/setgid 프로그램 정보를 알 수 있어 변경된 사항이 정상적인 것인지 비정상적인 것인지를 조사해 공격 여부를 파악해야 한다. Setuid/setgid 프로그램의 등록 방법은 다음과 같다./usr/seos/bin/seuidpgm -dlnq / > setuid.scr#seuidpgm을 이용해 / 밑에 존재하는 모든 setuid/setgid 프로그램을 검색해 #setuid.scr이라는 스크립트를 생성한다./usr/seos/bin/selang < setuid.scr#selag을 통해 DB에 setuid/setgid 프로그램을 등록한다.일반적으로 운영체제의 패치를 적용하거나 새로운 프로그램을 설치할 때면 기존의 setuid/setgid 프로그램을 수정해야 하는 경우가 있다. 이 경우 작업이 끝난 후 eTrust Access Control을 구동시키면 패치나 프로그램 설치로 인해 변경된 setuid/setgid 프로그램들은 더 이상 사용할 수 없어 시스템을 정상적으로 운영할 수 없게 되는 경우가 발생할 수 있다. 운영체제 패치나 소프트웨어의 설치로 인한 setuid/setgid 프로그램의 변경은 정상적인 것이므로 eTrust Access Control에 setuid/setgid 프로그램을 재등록하는 과정이 필요하다. /usr/seos/bin/seretrust > retrust.scr#DB에 등록돼 있는 sertuid/setgid 프로그램에 대해 재검색을 한다./usr/seos/bin/selang -l< retrust.scr#seretrust에 의해 재검색된 setuid/setgid 프로그램을 DB에 재등록한다.위 작업은 패치나 소프트웨어를 설치한 이후 eTrust Access Control을 재구동시키기 전에 실시해야 한다. 즉, 설치 작업 전에 eTrust Access Control을 정지시킨 상태에서 설치 작업을 수행하고, 작업이 끝나면 seretrust로 재검색을 한 후 eTrust Access Control을 구동시키면 된다.4. 정기적인 유지/보수보안 관리자는 정기적으로 eTrust Access Control의 데이터베이스와 seos.ini 설정 파일을 백업 받아야 한다. 새로운 정책을 등록하거나 기존의 정책을 수정한 후에는 반드시 백업을 받아 혹시 일어날 수 있는 장애에 대비해야 한다. DB를 백업받을 때에는 sedb2scr을 사용한다.Sedb2scr은 DB를 스크립트 형태로 백업받을 수 있게 해준다. 백업 받은 스크립트는 selang을 통해 복원시킬 수 있다. 아래 과정은 DB를 재생성한 후 기존의 정책을 재등록하는 과정이다. /usr/seos/bin/secons -s eTrust Access Control을 정지시킨다.Cd /usr/seos/seosdbDatabase가 있는 디렉토리로 이동한다./user/seos/bin/sedb2scr -l > backup.scrsedb2scr을 사용해 DB의 내용을 backup.scr로 백업한다.Rm -rf /usr/seos/seosdbDB 디렉토리를 삭제한다.Mkdir /usr/seos/seosdbDB 디렉토리를 생성한다./usr/seos/bin/secredb -c새로운 DB를 생성한다.Cd /usr/seos/seosdb/usr/seos/bin/selang -l < backup.scr백업 받은 스크립트를 selang을 통해 새로 생성한 DB에 등록한다.위 과정은 DB의 재생성 뿐만 아니라 eTrust Access Control의 재설치와 업그레이드 작업에도 사용될 수 있다. 5. 지속적인 감시와 대응법의 개발과 적용실제로 완벽한 보안이란 것은 존재하지 않는다. 보안이란 지속적으로 보안 취약점을 찾아내 적절한 대응 방안을 설립하는 순환적인 업무이다. 단지 보안 솔루션의 도입으로는 강력한 보안을 구축하기에는 어려움이 있다. 실제로 현장에서 보안 솔루션의 기술 지원을 담당하고 있는 필자 입장에서도 보안 솔루션은 단지 보안 관리자가 좀더 안정된 보안 정책을 수립할 수 있도록 도와주는 도구에 불과하다고 생각한다. 결국 지속적인 감시와 대응 방법의 개발과 적용을 통해 일정 수준의 안정성을 유지할 수 있다. 이를 위해서는 보안 솔루션의 도입 뿐만 아니라, 실사용자들의 보안 의식을 고취시킬 수 있는 지속적인 교육과 빠르게 변하는 공격 기법과 이에 대한 대응 방안을 신속하게 적용하는 것에 승패가 걸려 있다고 하겠다. @