달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'웹서버보안'에 해당되는 글 1

  1. 2008.11.21 10-9. 안전한 웹서버 운영을 위한 보안지침

1. 관리자 계정과 암호는 안전한가?

 

Windows NT계열의 OS에서의 마스터 계정은 Administrator 이다. 이 계정을 기본적인 상태로 그냥 두는 것은 바람직하지 않은 일이다. 많은 관리자들이 기본계정을 그대로 쓰고 있다. 결국 이것은 제3자에게 시스템을 컨트롤하는 계정이 누구라는 것을 그냥 알려주는 결과가 된다. 기본적으로 계정을 변경하여야 한다. Administrator, Admin, Root, Webmaster 등 흔히 알수 있는 계정을 사용하여서는 안 된다. 또한 관리자의 실명을 근거로 하는 계정을 사용해서도 안 될 일이다. 특별한 계정을 사용하도록 하자. 계정 자체가 어려울 필요는 없다. 다만 쉽게 추측하지 못할만한 계정을 사용하는 것이 좋다.

 

계정을 새롭게 만드는 것이 아니고 Administrator계정을 다른 이름으로 변경해서 사용하면 된다. 도메인 컨트롤러라면 “Active Directory 사용자 및 컴퓨터를 통해서 작업하고 그밖의 서버라면 컴퓨터관리도구를 통해서 이름을 변경할 수 있다.

 

또한 작업을 마친후에 Administrator라는 일반 사용자 권한을 가진 계정을 하나 만들고 아주 어려운 패스워드를 할당해 두라. 패스워드를 기억할 필요도 없다. 당신이 사용할 계정이 아니다. 이 계정은 실제로 사용되기 위한 계정이 아니라 감사(Audit)”를 통해서 모니터링 할 대상이다. 감사를 통해서 누군가가 이 계정을 공격하는 것을 발견했다면 당신은 해킹의 흔적이 있었음을 알 수 있을 것이다. 


2
. 서비스팩, 핫픽스 패치에 인색하지 않는다.

 

Windows 계열의 OS가 사용자 인터페이스의 편리성 때문에 많은 사용자를 가지고 있기는 하지만 그만큼 많은 위험에 시달리고 있는 것도 사실이다. 하지만 상대적으로 소스가 공개되지 않은 OS이기 때문에 OS에서 동작하는 소프트웨어들의 결함을 통해서 많은 공격이 있기는 하지만 OS자체에 대한 공격은 오히려 어려운 OS이기도 하다. 하지만 OS역시 하나의 덩지큰 소프트웨어인 만큼 수많은 버그가 발견이 되고 있는데 그러한 버그를 이용한 취약점 공격 툴들이 시스템을 위태롭게 하는 위험요소가 되고 있는 것이다.

 

다행스럽게 마이크로소프트는 각종 버그가 발견될때마다 적극적으로 이것에 대한 해결을 위해 패치를 제공하고 있다. OS가 발표되고 정책적으로 서비스팩이라는 통합패치가 출시되며 서비스팩의 출시 사이에 있는 긴급한 보안상의 위험요소를 해결하기 위한 목적으로는 핫픽스를 발표하고 있다. 관리자라면 이러한 패치를 명확히 판단하여 설치하는 것에 인색하지 말아야 한다. 사실 너무나 잦은 패치의 발표 때문에 짜증나는 일이 아닐 수 없지만 이미 잘 구축된 시스템의 추가의 위험에 대한 해결은 이 패치에 의존할 수 밖에 없는 것이 Windows관리의 현실이라고 생각한다.

 

하나의 서버에 웹서비스, Exchange서버, SQL서버 등이 운영되고 있다면 위험은 상대적으로 더 커지게 된다. 먼저 OS자체에 대한 위험, 웹서버에 대한 위험, Exchange, SQL 서버에 대한 위험요소가 제각각 발생되고 있기 때문에 패치를 할 때도 이러한 전체적인 부분들에 대해서 고려해야 한다. 하지만 SQL서버가 운영되지 않은 시스템에 SQL서버 관련 패치를 설치한다거나 하는 작업은 명백히 시간낭비일 뿐이다. 수없이 발표되는 핫픽스들 중에서 현재 당신이 운영하고 있는 시스템과 관련된 핫픽스들을 판단해 내고 그들을 설치하여 시스템의 건강을 챙기는 작업. 그것은 보안관리에 있어서 핵심적인 작업이라고 생각해야 한다. 대부분의 핫픽스들이 시스템 재시작을 요구하는 만큼 패치를 설치하는 시기는 서버유지관리시 고려해야 할 요소이다.

 

3. 서버용 백신 프로그램을 설치한다.

 

바이러스는 데스크탑의 전용이 아니다 서버에게도 바이러스는 잘 동작한다. 그것도 아주 잘. 보통 흔히 구할 수 있는 백신프로그램들은 서버에서 동작하지 않는 경우가 많다. 서버용 백신 프로그램을 구입해야 할 것이다. 백신 프로그램의 특성상 지속적인 업데이트가 이루어지지 않으면 무용지물인 경우가 많으므로 신중하게 선택해야 한다. 트렌드마이크로, 안철수연구소, 하우리 등의 회사들이 개발한 백신 소프트웨어가 많이 사용된다.

 

4. 익명액세스 허용하지 말 것

 

당신의 서버에 대해서 다른 컴퓨터를 통해서 아래의 테스트를 해 보자. 아래의 내용은 명령프롬프트를 통해서 192.168.10.1 IPAddress를 사용하는 서버에 접근해 본 것이다.

C:\>net view \\192.168.10.1  (192.168.10.1 의 공유자원을 보여달라고 요청했다.)

시스템 오류 5() 생겼습니다.

액세스가 거부되었습니다.

 

C:\>net use \\192.168.10.1 “” /user:”” (익명(Anonymous)의 계정으로 세션을 맺는다.)

명령을 잘 실행했습니다.

 

C:\>net view \\192.168.10.1 (192.168.10.1 의 공유자원을 보여달라고 요청했다.)

\\192.168.10.1의 공유 리소스

 

공유 이름   종류   다음으로 사용  설명

----------------------------------------------------------------

networking  Disk

public      Disk

source      Disk

명령을 잘 실행했습니다. (앞에서와는 달리 서버는 자신의 공유자원을 보여준다. 결국 이 서버는 익명의 계정에 대한 연결을 허용하고 있다는 것을 의미한다. 우리가 남의 서버를 이렇게 들여다 보는 것은 흥미있는 일일지는 모르지만 당신의 서버를 누군가 이렇게 보고 있다고 생각하면 기분나쁜 일이다. )

C:\>

 

-- 레지스트리에서 익명액세스 허용하지 않도록 설정을 바꾼 후 테스트

C:\>net view \\192.168.0.1

시스템 오류 5() 생겼습니다.

액세스가 거부되었습니다.

 

C:\>net use \\192.168.0.1 “”/user:””(익명으로 접근을 시도하지만 허용되지 않는다.)

시스템 오류 5() 생겼습니다.

액세스가 거부되었습니다.

 

서버에서 익명액세스를 허용하지 않기 위해서는 레지스트리를 편집함으로써 가능해진다. 레지스트리 편집기(regedt32.exe)를 열고 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 키로 접근한다. 오른쪽 패널에서 Restricanonymous 값을 찾은다음 “0”으로 되어 있는 데이터를 “2”로 변경한다. (Windows NT 4.0 = 1, Windows 2000, 2003 = 2 를 사용)


 <그림10-122. 레지스트리 수정을 통한 널 세션 허용 않음>

 

5. 반드시 NTFS 파일시스템을 사용하자.

 

Windows NT기반의 시스템에서는 FAT NTFS파일시스템을 지원한다. FAT파일시스템에 비해서 NTFS파일시스템은 여러가지 장점을 제공한다. 또한 NTFS파일시스템의 퍼미션은 로컬에서 사용하는 파일서버 등에서만 적용되는 것이 아니다. 사용자가 HTTP FTP를 이용해서 웹을 통한 접근을 하더라도 IIS서버는 가장 마지막에 서버의 파일에 접근하는 사용자가 NTFS퍼미션이 있는지를 체크하기 때문에 보다 안전한 서버를 운영할 수 있도록 해 준다. 특정폴더의 모든 파일은 공개되지만 특별한 파일 몇 개는 접근을 거부시키는 방법은 바로 NTFS 퍼미션을 통해서 가능하다는 것을 상기하라.

 

<참고> 웹서비스와 관련된 폴더 및 파일에 대한 보안설정

1. 웹 애플리케이션(ASP, CGI ) 파일에는 Everyone 의 퍼미션을 제거하고, 그밖의 파일들에는 Everyone에 대해서 읽기 권한만 가지도록 설정한다.

2. 웹폴더의 각 파일을 파일형식별로 분류하는 것이 좋다. 파일에 대한 퍼미션 관리가 용이하기 때문이다. 예를 들면, 아래와 같은 형식으로 폴더를 구분한다.

-C:\inetpub\wwwroot\mscs.co.kr\static (.html)

-C:\inetpub\wwwroot\ mscs.co.kr\include (.inc)

-C:\inetpub\wwwroot\ mscs.co.kr \script (.asp)

-C:\inetpub\wwwroot\ mscs.co.kr \executable (.dll)

-C:\inetpub\wwwroot\ mscs.co.kr \images (.gif, .jpeg)

 

3. FTP폴더와 SMTP폴더 권한설정

기본적으로 FTP루트폴더는 C:\inetpub\ftproot 이고, SMTP루트폴더는 C:\inetpub\mailroot 이다. 이 두 폴더에 대한 NTFS권한은 Everyone에게 모든 권한이 부여되어 있다. 필요한 만큼만 퍼미션을 가지도록 구성해야 할 것이다.

쓰기를 지원하도록 하기 위해서 IIS 서버가 설치된 볼륨과 다른 볼륨으로 이동하거나, 또는 Windows 2000의 디스크 할당량을 사용하여 업로드 크기를 제한하는 것은 좋은 방법이다.

 

4. IIS 로그 파일에 대한 권한설정

해커가 서버에 침입했다면 그는 마지막 작업으로 IIS서버의 로그파일을 지워 자신의 흔적을 없애려는 시도를 할 것이다. IIS에서 생성하는 로그 파일(%Systemroot%\system32\LogFiles)에 대한 NTFS 퍼미션을 아래와 같이 구성한다. - Administrators (모든 권한) , System (모든 권한) , Everyone (RWC)

* 참고자료 : 마이크로소프트 테크넷 홈페이지 (http://www.microsoft.com/korea/technet/security/tools/iis5cl.asp#165330a)

 

6. 서버에 불필요한 소프트웨어는 설치하지 않는다.


서버는 서버용도로 사용해야 할 것이다. 서버에서 관리자가 일부 작업을 한다고 해서 관리자가 개인적으로 필요한 소프트웨어를 사용한다든가 하는 등의 일은 서버를 아프게 해서 빨리 죽게 하는데는 좋은(?) 방법이다.

 

7. DNS서버의 보안을 고려하자.


DNS
서비스를 등한시 하는 경우가 있다. DNS서버가 문제가 발생하면 웹서비스, 메일서비스 등 전반적인 서비스가 동작하는데 문제가 생긴다. DNS에서 고려해야 할 보안을 제대로 챙기는 것도 전반적인 서버의 건강과 직결되는 문제이다.

 

-DNS 영역전송 보안 : 기본적으로 Windows 2000 DNS서버는 아무 서버에게나 영역전송이 허용되도록 되어 있다. 이것은 DNS가 가진 전체 레코드를 한꺼번에 외부로 유출시키는 결과를 초래할 수 있다. DNS영역전송을 보조DNS서버로만 제한하는 것이 필요하다. Windows Server 2003 DNS의 기본설정은 영역전송 허용안함이다. 좋은 설정이다.

 

-DNS 동적 업데이트 허용 않음 : DNS 동적업데이트는 관리상 유용한 기능인 것은 분명하지만 외부에 공개된 DNS서버가 동적업데이트를 허용하도록 구성되어 있으면 물리적인 방법에 의해 외부의 제3자가 의도하는 레코드로 업데이트가 일어날 수 있다. 회사의 www 호스트레코드가 엉뚱하게도 음란사이트가 운영되는 서버의 IP로 바뀌었다고 생각해 보라. 어처구니 없는 노릇이지만 얼마든지 일어날 수 있는 일이다. 외부DNS서버는 동적 업데이트를 허용하지 말아야 할 것이다.

 

-, 외부 DNS영역설정 : DNS서버에 있어서는 최상위의 보안을 제공할 수 있는 방법이다. 외부에서 접근해야 하는 리소스들의 레코드를 가진 외부DNS와 내부의 사용자들만이 접근하는 리소스들의 레코드를 가진 내부DNS서버를 분리시킴으로써 보다 안전하게 DNS서버를 운영하는 방법이 될 수 있다.

 

8. 반드시 필요한 서비스만 오픈시킨다.

 

이것은 중요한 의미를 가진다. 웹서버를 구동중이라면 웹서비스를 정상적으로 운영하는데 필요하지 않은 그밖의 서비스들은 돌고 있지 않아야 한다. 웹서버를 철통같이 방어했다고 하더라고 해커가 다른 서비스에서 발견된 버그를 통해서 접근한다면 결국 서버는 안전하지 못하기 때문이다.


<참고> 일반적으로 시작되어 있는 서비스들중 꼭 필요하지는 않은 서비스들


Aleter Service

Computer Browser Service
DHCP Client

DHCP Server

Distributed File System

FTP Publishing Service

Messenger

Indexing Service
Remote Registry Service
Routing and Remote Access Service
Server Service
Simple TCP/IP Service
SMTP Service

SNMP Service

Task Scheduler Service
Telnet Service
Terminal Service
Windows Media Services

 

* 서비스별 역할 및 사용하지 않을 때의 영향 참고 자료

http://www.microsoft.com/korea/technet/prodtechnol/windows2000serv/deploy/prodspecs/win2ksvc.asp )

 

9. IIS SQL서버는 분리시킨다.

 

많은 관리자들이 IIS에 대한 보안을 상당히 신경쓰면서도 그밖의 서비스에 대해서는 무관심한 경우가 있다. IIS에서 ASP를 사용하고 SQL서버가 하나의 서버에서 동작하고 있다면 IIS가 아닌 SQL서버에 대한 공격이 시도될 수 있다. 데이터베이스가 공격을 받게 되었을 때 그 영향은 상당히 치명적이다. IIS SQL서버를 분리시키고 SQL서버는 개인네트워크로 구성하면 그만큼 SQL서버에 대한 직접적인 공격에 대한 위험요소가 감소한다.

 

10. 웹서비스 폴더에서 불필요한 파일들을 제거한다.

 

- IISLockDown을 통하여 IIS의 반드시 필요하지 않은 서비스나 가상디렉터리를 삭제한다.

- 웹서비스 폴더내에 불필요한 파일을 삭제한다.(, *.bak ) 웹저작도구로써 많이 사용하는 몇몇 프로그램들은 html 파일을 생성하면 자동적으로 *.bak 라는 백업파일을 만들게 되는데, 이것을 그대로 방치하면 IIS서버에서 SQL서버의 ODBC연결에 사용되는 SQL로그인ID와 암호 등의 정보를 너무나 쉽게 알려주는 결과를 초래한다. IIS LockDown 툴은 IIS서버에서 사용하지 않는 서비스들과 폴더 등을 제거하여 보안에 도움을 줄 수 있는 도구이다.(관련자료 : http://www.microsoft.com/korea/technet/security/tools/locktool.asp ) 파일을 다운로드 받은 다음 테스트해 보자.

 

11. 계정 및 자원에 대한 감사정책을 구현하자.


소잃고 외양간 고치는 경우가 많은데 그중에 하나가 바로 감사정책이다. 시스템이 엉망이 된 후에 도대체 누가 언제 이런 일을 한 것인지 알고자 하지만 뒤늦은 후회일 뿐이다. 감사정책은 그러한 위험요소를 사전에 점검해 보고, 문제발생시 이벤트뷰어를 통한 보안로그를 통해서 로깅된 정보를 확인할 수 있다.

 

12. FTP서버 운영시 신중을 기하자.


- FTP
를 사용하는 경우 쓰기권한을 제한하여 업로드를 하지 못하도록 설정한다.

- FTP를 사용하는 경우는 익명 계정 서비스만 권장한다. FTP 로그온 인증에 암호화가 이루어지지 않음을 고려해야 한다.

- FTP를 사용하는 경우 VPN 사용을 고려한다.

 

13. 주기적으로 점검하는 것을 잊지 않는다.

MBSA(Microsoft Baseline Security Analyzer)는 보안관련된 각종 구성정보들을 점검하고 대비할 수 방법을 제공하는 효율적인 도구이다. 시스템을 전체적으로 점검해 볼 수 있는 좋은 도구이니 활용할 수 있도록 한다.(참고: http://www.microsoft.com/korea/technet/security/tools/tools/mbsahome.asp)


<
그림10-123. Microsoft Baseline Security Analyzer (MBSA) 도구>


서버에서 동작하고 있는 서비스를 모니터링 한다. 관리자가 의도하지 않은 서비스나 프로그램이 동작하고 있어서 서버에서 동작하는 프로세스가 있다면 바이러스나 백도어 해킹프로그램일 확률이 높다.

è  작업관리자, Fport ( http://www.foundstone.com http://www.securityfocus.com )

 

14. 무엇보다 가장 중요한 것은?

당신이 관리하는 서버에 대해 끊임없는 관심만이 상대적으로 안전한 서버를 운영할 수 있는 유일한 방법이라는 생각이 필요하다. 당신이 회사의 서버를 관리하는 동안 한차례도 해킹 등의 사고가 없었다면? 자랑할만한 기분 좋은 일이다.

:
Posted by 새벽예찬