OS : Windows 2003 Std 작성일 : 2009년 2월 작성자 : http://www.100dedi.net 문서 버전 : Ver 1.2 윈도우 보안 지침 부 서 명 : 기술지원팀 작 성 자 : 박 성 우 검 수 자 : 전 선 표 작 성 일 자 : 2009년 02월
목 차 [1] 보안 체크리스트...4 [2] 계정 관리...4 1. 기본 계정명 변경...4 2. Guest 계정 비 활성화...6 3. 사용하지 않는 계정 제거...7 4. 기본 익명계정을 사용자 정의 계정으로 대체...7 5. 익명 로그온 비활성화 ( null session )...7 [3] 패스워드 관리...8 1. 암호정책...8 2. 계정 잠금정책...8 [4] 시스템 실행 명령어 권한설정...8 [5] 레지스트리 보호...8 [6] 공유...9 [7] 파일 시스템 관리...9 1. Fcheck...9 2. MBSA...9 [8] 보안패치 및 서비스팩 설치...9 [9] 패킷 필터링...10 1. TCP/IP 필터링...10 2. Windows 방화벽...11 3. IPSEC...12 3-1) IP 보안정책 만들기...12 3-2) 필터동작 관리중 거부항목 추가...13 3-3) IP 필터목록 만들기...15 3-4) 보안정책에 IP 보안규칙 등록...17 3-5) 정책 적용...19 [10] 감사관리...20 1. 로그인 실패 기록로그...20 2. 개체 접근실패 로그기록...21 3. IIS 로그파일 위치 변경 및 NTFS 권한 적용...23 [11] IIS 보안...23 1. IIS 버전 비교...23 2. IIS 보안 점검항목...23 3. 불필요한 매핑 제거...23 4. 상위경로 접근 제거...24 5. 컨텐츠 디렉토리 권한...25 6. #exec 명령쉘 호출금지...25 7. WebDAV 비활성화...25 8. FTP 익명접속 거부...25 [12] 윈도우 보안도구...26 1. MBSA...26 2. Windows 용 공개 웹방화벽 (Webknight)...26 [13] 네트워크 보안...26 1. NetBIOS 비활성화...26 2. SMB 비활성화...27 [14] 홈페이지 보안관리...27 1. 관리지 페이지 접근통제 취약점...27 2. 디렉토리 리스팅 취약점...28 3. 파일 다운로드 취약점...28 4. 크로스 사이트 스크립트 취약점...28
5. 파일 업로드 취약점...28 6. SQL Injection 취약점...29 [15] 터미널 서비스 포트 변경하기...29 1. 포트번호 변경...29 2. 클라이언트에서 서버 접속하기...29 [16] 후기...29
[1] 보안 체크리스트 1. 파일 시스템은 NTFS 타입으로 포맷 되었는가? 2. OS 부분과 데이터( Web, DB ) 파티션이 분리 되어 있는가? 3. 서비스에 필요한 필수 구성요소만을 설치하고, 불필요한 서비스는 정지 하였는가? 4. Administrator 계정 그룹에 대한 계정명 변경 및 강력한 패스워드 정책을 적용하였는가? 5. 불필요한 계정(Guest)은 사용하지 않는가? 6. 계정 잠금 정책이 있는가? 7. 파일 및 디렉토리 보호정책이 있는가? 8. 익명 접속으로부터 Registry 보호가 되는가? 9. LSA 정보에 대한 접근이 보호되는가? 10. 공유 폴더를 사용하고 있지는 않는가? 11. 서비스팩 및 최신 보안패치를 설치하였는가? 12. 자동 업데이트 실행 설정을 하였는가? 13. IPSec 필터링 설정을 하였는가? 14. 바이러스 방역제품을 설치 및 설정 하였는가? 15. 에러에 대한 이벤트로그 설정을 하였는가? 16. 모니터링 솔루션을 설치 및 설정하였는가? 17. 백업 설정을 하였는가? 18. IIS 서비스 설치 및 설정 18-1) IIS 서비스에 필요한 구성요소만을 설치하였는가? 18-2) 웹서비스확장은 필수적인 것만 enable 하였는가? 18-3) 컨텐츠를 독립적인 파티션에 저장하고 있는가? 18-4) NTFS 퍼미션을 적용하였는가? 18-5) IIS 웹사이트 퍼미션을 설정하였는가? 18-6) 기본 서비스 익명계정을 사용자기정 계정으로 변경 하였는가? 18-7) IIS 로깅 설정을 하였는가? [2] 계정관리 1. 기본 계정명 변경 시스템 설치시 기본적으로 생성되는 두 기본계정의 이름을 변경한다. 1-1) Administrator 계정 이름 변경 : 계정명을 바꾸면 반드시 설명도 변경을 해야 한다. Administrator : [시작] [설정] [제어판] [관리도구] [로컬보안설정] [로컬정책] [보안옵션] [계정:Administrator 계정 이름바꾸기] [속성] 에서 이름변경
1-2) Guest 계정 이름 변경 Guest : [시작] [설정] [제어판] [관리도구] [로컬보안설정] [로컬정책] [보안옵션] [계정:Guest 계정 이름바꾸기] [속성] 에서 이름변경
변경된 정보 확인 : [시작] [제어판] [관리도구] [컴퓨터관리] [로컬사용자 및 그룹] [사용자] 탭에서 변경된 정보 확인 2. Guest 계정 비활성화 Guest 계정은 컴퓨터에 익명 접속을 연결할 때 사용되는데 이를 비활성화하여 익명 연결을 제한한다. [시작] [설정] [제어판] [관리도구] [로컬보안설정] [로컬정책] [보안옵션] [계정 : Guest 계정 상태] [속성] 에서 사용안함 으로 변경
3. 사용하지 않는 계정 제거 서버에서 사용되지 않는 계정들은 공격자가 이 게정을 이용해서 접근할 수 있으므로 제거한다. 또한 단순하거나 유추하기 쉬운 패스워드는 무차별 대입공격(Brute Force Attack) 이나 사전대입공격 (Dictionary Attack)에 취약하므로 복잡한 패스워드를 사용한다. 계정관리는 최소한의 계정과 최소한의 권한만을 부여한다. 4. 기본 익명 계정 (IUSR_Machine) 대신 사용자 정의한 계정 사용 인터넷으로 익명 접근하는 사용자들은 IIS 설치시 기본적으로 생성되는 IUSR_Machine (서버의 NetBIOS 명) 계정으로 접근하게 된다. 예를 들어 smile 이라는 이름의 서버에는 IUSR_SMILE 이라는 계정이 생성된다. 이 계정을 비 활성화 하고 웹 서버의 익명 접속에 사용할 계정을 직접 재정의한다. 웹 애플리케이션의 기능을 제공하는데 필요한 최소한의 권한을 가지는 계정을 만들고, 인터넷 정보 서비스 관리에서 웹 Application별로 직접 정의한 계정을 지정하면 서버상에 여러개의 웹 사이트를 운영하는 경우 로그 분석에도 용이하다. [시작] [실행] inetmgr 입력 [인터넷정보서비스관리] [해당사이트의 속성] [디렉토리보안] [인증 및 액세스] [편집] [익명사용자 계정변경] * 해당 사이트의 익명 사용자계정을 변경하고나면 해당 사이트 홈디렉토리에 변경된 계정의 권한을 부여하여햐 한다. 5. 익명 로그온( null session ) 비활성화 널 세션 접속은 인증을 받지 않은 상태에서 해당 컴퓨터에 접근하는 것을 의미하며, 해커들은 이를 이용하여 원격 컴퓨터의 정보를 제공 받을 수 있고, 특정 권한으로 승격하거나 DoS 공격을 수행 할 수도 있다. 널 세션 접속을 허용하지 않으려면 레지스트리 편집기 ( 시작 - 실행 -regedit )를 이용 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 키의 restrictanonymous 값을 1 로 설정한다.
[3] 패스워드 관리 계정 암호에 대한 무차별 대입 공격이나 사전 공격을 막기위해 암호의 최소 길이나 특수문자의 사용여부 등을 지정하여 보다 강화된 정책을 사용한다. 패스워드는 C:\WINDOWS\system32\config\SAM 파일에 저장되며 운영체제가 동작중에는 시스템계정 외에는 접근이 금지된다. 1. 암호정책 [시작] [제어판] [관리도구] [로컬보안설정] [계정정책] [암호정책] # 아래 표와같은 암호 정책이 기본적으로 권장되는 내용이다. 암 호 정 책 기 본 설 정 최 소 권 장 설 정 암호 복잡성 만족 사용 안함 사용 최근 암호기억 0 개 24 개 최대 암호 사용기간 42 일 42 일 최소 암호 길이 0 문자 8 문자 최소 암호 사용기간 0 일 2 일 해독 가능한 암호화를 사용하여 암호저장 사용 안함 사용 안함 # 패스워드 생성규칙 : 최소 8자 이상, 영문(대소)+숫자+기호 혼용, 이전 암호와 다른 암호 사용, 자신의 정보와 관련된 내용 사용금지, 사전단어 사용금지 2. 계정 잠금 정책 [시작] [제어판] [관리도구] [로컬보안설정] [계정정책] [계정잠금정책] # 아래 표와같은 암호 정책이 기본적으로 권장되는 내용이다. 계 정 잠 금 정 책 기 본 설 정 최 소 권 장 설 정 계정 잠금 기간 적용할 수 없음 30분 계정 잠금 임계값 0 번의 잘못된 로그온 시도 5 번의 잘못된 로그온 시도 다음 시간후 계정 잠금수를 원래대로 설정 적용할 수 없음 30 분 [4] 시스템 실행 명령어 권한 설정 C:\WINDOWS 디렉토리에 explorer.exe 와 링크파일인 explorer의 속성을 선책한 뒤 [보안] 탭에서 Administrator를 제외한 나머지 계정은 삭제한다. 특히 바이러스의 경우 해당 explorer.exe를 변경시키거나 복제를 시켜 윈도우 사용에 지장을 초래하거나 사용자가 모르는 불법적인 코드가 explorer.exe 에 첨부될 수가 있으니 권한 재조정을 통해 바이러스 감염 및 침입자의 이용으로부터 막도록 한다. C:\WINDOWS\system32\cmd.exe 등의 시스템 명령어도 Administrator 계정외에는 접근을 제한한다. 실제적으로 서버 관리자를 제외하고는 대부분의 사용자들은 위의 파일을 실행시킬 필요성이 없다. 각종 웜바이러스 및 코드 레드의 경우 cmd.exe 파일을 복제하여 권한을 획득하는 경우가 다반사이기 때문에 근본적으로 접근자를 제외한 나머지는 권한을 제거해 주어야 한다. ex) %systemroot%\system32\cmd.exe [속성] [보안] administrator 이외의 계정 제거 [5] 레지스트리 보호 레지스트리의 원격 액세스 권한은 관리자에게만 부여되어 있는지 확인 한다. HKEY_LOCAL-MACHINE\System\CurrentcontrolSet\Control\SecurePipeServers\winreg 의 키값이 생성되었는지, 사용원한은 Administrator 외의 사용자나 그룹이 등록되어 있지는 않는지 확인한다.
[6] 공유 서버에서 사용되지 않는 공유를 제거하고 사용중인 공유 자원에 대해서는 NTFS 권한을 부여하여 자원을 보호한다. 특히 기본적으로 공유가 생성될 때 모든 사용자들에게 모든 권한이 부여되므로 NTFS 권한을 적용해서 필요한 사용자에게만 접근을 허용하도록 관리해야 한다. 또한 관리목적에서 사용되는 C$, ADMIN$와 같은 관리 공유를 사용하지 않는다면 제거하는 것이 권장된다. 관리공유를 사용하지 않으려면 레지스트리 편집기를 이용해서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters 키에 AutoShareServer와 AutoShareWks 값을 REG_DWORD로 만들고 '0'으로 설정한다. [제어판] [관리도구] [컴퓨터관리] [공유폴더] [공유] 공유목록선택후 공유중지 [7] 파일 시스템 관리 1. Fcheck 시스템의 중요 파일 및 디렉토리 내용의 변화 여부를 확인하는 파일 무결성 검사를 실시한다. Perl 이 설치된 시스템에서 사용가능하다. Fcheck: http://www.geocities.com/fcheck2000/download.html 2. MBSA Microsoft Baseline Security Analyzer 명칭에서 알 수 있듯 정품 OS 를 사용하는 client에 제공되는 무결성 검사툴로서 간단하고 보기쉽게 구성되어 있다. http://www.1000dedi.net/hosting/gnuboard4/bbs/board.php?bo_table=serverlecture&wr_id=701&page=2 [8] 보안패치 및 서비스팩 설치 시스템 관리자라면 당연히 백업과 보안패치는 하는 것이다. 이것이 기본이다. http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=ko
[9] 패킷 필터링 1. TCP/IP 필터링 TCP/IP Filtering은 InBound 되는 패킷만 제어가 가능하며, HTTP, FTP 와 같은 특정 포트만을 open 하여 서비스하는 시스템에 적합하다. [내네트워크환경] [속성] [로컬영역연결] [속성] [일반]탭 [인터넷프로토콜(TCP/IP)] [속성] [고급] [옵션] [TCP/IP 필터링] [속성] TCP/IP 필터링 사용 C:\WINDOWS\system32\drivers\etc\protocol C:\WINDOWS\system32\drivers\etc\services 위의 두 문서를 참조하여 해당 프로토콜에 대한 포트만을 허용하는 설정을 한다. ex) TCP 포트 : 터미널서비스 (3389), 웹 (80), FTP (21), DNS (53), 메일 (25) UDP 포트 : DNS (53) 변경된 설정 내용을 적용하기 위해서는 리부팅이 필요하다. # Tip 오해받고 있는 Windows 의 프로세스 1. lsass.exe : Local Security Authority Subsystem Service => MS 운영체제가 시스템에 보안 정책에 대한 작업을 시행할때 작동되는 프로세스로 사용자 로긴, 비밀번호 변경, 보안 로그와 관련된 프로세스 2. csrss.exe : Win32 Client/Server Runtime Subsystem => 콘솔창 및 스레딩을 담당하는 프로세스로 이 프로세스를 강제 종료하면 곧바로 블루 스크린! 3. Winlogon.exe => MS Windows Logon Process => 사용자 프로필에 따라 login /out 을 처리하는 프로세스
2. Windows 방화벽 Windows XP, Windows 2003 에서 사용할 수 있는 자체 방화벽으로 외부로 나가는 트래픽은 필터링이 되지않고, InBound 트래픽만 필터링이 가능하다. 참고문서 : http://www.microsoft.com/korea/technet/prodtechnol/winxppro/plan/icf.mspx [내네트워크환경] [속성] [로컬영역연결] [속성] [고급] [설정] [고급] [예외] [일반] 고급탭에서는 서비스를 허용할 항목을 설정하는 네트워크 연결설정 부분과 보안로깅, ICMP, 기본값 복원 설정으로 구성되어 있다. 고급탭의 네트워크 연결설정에서 원격 데스크톱, 웹서버, FTP 서버등 서비스하려는 항목에 체크한다. 들어오는 패킷에 대한 기본정책이 차단하는 것이므로 원격에서 설정시 예외탭에 있는 원격데스크톱에 반드시 체크해 두는것을 잊지 않도록 한다.
3. IPSEC IPSEC(인터넷 프로토콜 보안)을 이용한 필터링은 InBound와 OutBound 되는 패킷 모두에 대해서 제어가 가능하므로, 서버관리자도 모르는 사이에 자신의 서버가 다른 서버를 공격하는데 이용되는 것을 방지할 수 있다. 액티브 디렉토리로 바꾼 사용자는 로컬 보안 정책(secpol.msc)및 도메인 보안정책(dompol.msc), 도메인 컨트롤러 보안정책 이 2가지가 추가로 생기게 되는데 특히 로컬 보안 정책보다 도메인 보안 정책이 우선 순위가 있어 액티브 디렉토리 사용자는 도메인 보안 정책에서 IPSec를 구성한다. IPSEC 설정 : [시작] [제어판] [관리도구] [로컬보안설정] [IP 보안정책] IPSEC 정책은 IP 필터, 필터의 동작, 이 필터들을 작동시킬 IP 보안정책 이 세가지로 요소로로 구성이 된다. 구성순서는 관계가 없으나 IP 보안 정책부터 만들고 그 정책안에 필터을 만들고 필터의 동작을 정의하는 방법이 효율성이 있다. # 스마일서브에서 배포하는 중국IP 차단 스크립트를 이용하는것도 많은 도움이 된다. 스마일서브 중국 IP 차단 스크립트 http://www.1000dedi.net/hosting/gnuboard4/bbs/board.php?bo_table=serverlecture&wr_id=720 ## 예제 : 웹서버만을 운영하는 경우의 IPSEC 설정 1. 웹서비스포트 80번은 어디에서나 접근 가능하게 한다. 2. 외부 DNS서버 UDP 53번 포트에 Client로서 접근 가능하게 한다. 3. 사무실 IP대역 (220.10.10.0/24)에서만 모든 접근 가능하게 한다. 4. 위의 1,2,3을 제외한 모든 접근을 차단한다. 설정 순서는 각 항목에 대한 보안정책을 만들고, 적용할 IP 필터 목록을 작성한 다음, 해당 필터를 보안정책의 보안규칙에 등록한다. 3-1) IP 보안정책 만들기 => 새 보안정책 (이름 : 서버보안 ) 을 만든다. [동작] [IP보안정책만들기] [IP보안정책마법사 시작] [다음] [IP보안정책이름 :서버보안] [기본응답규칙활성화] 체크 해제 [다음] [마침]
3-2) 필터동작 관리중 거부항목 추가하기 [동작] [IP 필터목록및필터동작관리창] [필터동작관리] [추가] [IP보안필터동작 마법사] [다음] [필터동작이름] [거부] [다음] [필터동작일반옵션:거부] [다음] [마침]
3-3) IP 필터목록 만들기 # 웹서버 [Ip필터목록및필터링동작관리창] [Ip필터목록관리] [추가] [이름:TCP-80S] [추가] [IP 필터 마법사시작] [다음] [설명 : 웹서버] [다음] [원본주소(목적지): 내 Ip주소] [다음] [대상주소(송신자): 모든IP주소] [다음] [프로토콜 종류선택:TCP] [다음] [Ip프로토콜포트설정] [이포트에서:80],[아무포트로] [다음] [마침] [확인]
# 외부의 리눅스 DNS 서버: UDP-53C [IP 필터목록관리] [추가] [이름:UDP-53C] [추가] [IP필터마법사 시작] [다음] [설명:외부DNS서버 UDP접근] [다음] [IP프로토콜 포트설정] [아무포트에서],[이포트로:53] [다음] [마침] [확인] # 사무실 IP대역 : 사무실 [IP필터목록 관리] [추가] [이름:사무실] [추가] [IP 필터마법사 시작] [다음] [설명:사무실IP대역] [다음] [원본주소:내IP주소] [다음] [대상주소:특정IP서브넷] [Ip주소:222.122.xxx.xxx 서브넷마스크:255.255.255.0] [프로토콜종류 : 모두] [다음] [마침] [확인]
# 모든 곳 : 모든 곳 [Ip필터목록관리] [추가] [이름:모든곳] [추가] [Ip필터마법사시작] [다음] [설명:모든곳] [다음] [원본주소: 내IP주소] [다음] [대상주소:모든 Ip주소] [다음] [프로토콜 종류선택: 모두] [다음] [마침] [확인] [닫기] => 위와같이 추가한 3개의 목록이 확인된다. 3-4) 보안정책에 IP 보안규칙 등록 [서버보안 정책] [속성] [IP 보안 규칙] [추가] [이 규칙에는 터널지정안함] [모든 네트워크 연결] [IP 필터목록]탭 [TCP-80S] 선택 [필터동작]탭 [허용] 선택 [확인] [IP 보안 규칙] [추가] [이 규칙에는 터널지정안함] [모든 네트워크 연결] [IP 필터목록]탭 [UDP-53C] 선택 [필터동작]탭 [허용] 선택 [확인] [IP 보안 규칙] [추가] [이 규칙에는 터널지정안함] [모든 네트워크 연결] [IP 필터목록]탭 [사무실] 선택 [필터동작]탭 [허용] 선택 [확인] [IP 보안 규칙] [추가] [이 규칙에는 터널지정안함] [모든 네트워크 연결] [IP 필터목록]탭 [모든곳] 선택 [필터동작]탭 [거부] 선택 [확인]
3-5) 정책 적용 만들어진 정책을 적용하려면, 새로 만들어진 [서버보안] 정책항목에 마우스 오른쪽 버튼 클릭 [할당] 클릭 위의 설정내용은 사무실에서만 FTP, 터미널서비스, PING 등의 접근이 허용되며, 웹 서비스를 제외한 나머지 접근은 모두 거부된다. 또한, 서버내에서도 사무실로의 네트워킹을 제외하고는 외부로의 모든 접근이 차단된다. 예를들어 서버에서 웹브라우저로 윈도우 업데이트를 위해 microsoft.com 에 접근하려면 위의 # 항목처럼 클라이언트로 사용하기 위한 설정을 해야 한다. ## 추가 예제 : 서버에서 웹서핑을 하고자 한다.(외부 웹서버 80번 포트로의 접근 허용) ## 1) 필터 등록 [IP 필터목록및필터동작관리창] [IP 필터목록관리]탭 [IP 필터 목록] [추가] [이름 : 웹서핑] [추가] [IP 필터마법사 시작] [다음] [설명 : 서버에서 웹서핑] [다음] [원본주소 : 내 IP 주소] [다음] [대상주소 : 모든 IP 주소] [다음] [프로토콜 종류선택 : TCP] [다음] [IP 프로토콜 포트설정] [아무 포트에서],[이 포트로 : 80] [다음] [마침] [확인] [닫기] 2) 정책에 필터 추가 등록 [서버보안 정책] [속성] [IP 보안 규칙] [추가] [IP 필터목록]탭 [서버에서웹서핑] 선택 [필터동작]탭 [허용] 선택 [확인] [적용] [확인] ## 또 하나의 예제 : 특정한 IP (220.11.11.11) 에서만 서버의 터미널서비스 접속을 하고자 한다면? ## 1) 필터 등록 [IP 필터목록및필터동작관리창] [IP 필터목록관리]탭 [IP 필터 목록] [추가] [이름 : 우리집] [추가] [IP 필터마법사 시작] [다음] [설명 : 우리집 IP] [다음] [원본주소 : 내 IP 주소] [다음] [대상주소 : 특정 IP 주소 : 220.11.11.11] [다음] [프로토콜 종류선택 : TCP] [다음] [IP 프로토콜포트 설정] [이 포트에서 : 3389],[아무 포트로] [다음] [마침] [확인] [닫기] 2) 정책에 필터 추가 등록 [서버보안 정책] [속성] [IP 보안 규칙] [추가] [IP 필터목록]탭 [우리집 IP] 선택 [필터동작]탭 [허용] 선택 [확인] [적용] [확인] ## 위의 3가지 필터링 방법중 IPSEC을 이용한 필터링을 적극 권장한다.
# 기본 서비스 포트 서 비 스 명 사 용 포 트 프 로 토 콜 SMTP 25 TCP DNS 53 TCP DNS 53 UDP WEB SERVICE 80 TCP POP3 110 TCP NET-BIOS SESSION 139 TCP IMAP 143 TCP HTTPS 443 TCP HTTPS 443 UDP MSSQL 1433 TCP MSSQL 1433 UDP TERMINAL SERVICE 3389 TCP [10] 감사관리 감사는 시스템 공격을 막지는 못하지만 진행중인 공격이나 침입자를 인식하고 공격의 흔적을 추적하는데 많은 도움을 준다. 웹서버의 감사정책 수준을 높이고 NTFS 권한으로 로그 파일을 보호함으로써 공격자가 로그파일을 지우거나 변조하는 것을 방지하는 것도 필요하다. 1. 로그인 실패 기록로그 시스템에 로그인하는데 실패한 이벤트에 대해서는 반드시 로그를 기록해야 한다. 로그를 통해서 암호에 대한 무차별 대입 공격이나 사전 공격의 흔적을 찾을 수 있으며 공격자가 어떠한 계정으로 접근을 시도했는지도 알 수 있다. [관리도구] [로컬 보안설정] [로컬 정책] [감사 정책] [계정 로그온 이벤트 감사] [속성] [실패] 체크
# 이후 발생하는 로그인 실패 이벤트에 대한 내역을 [관리도구] [이벤트 뷰어] [보안]로그 목록 에서 확인한다. 2. 개체 접근실패 로그기록 파일이나 폴더 등의 개체에 대한 악의적인 접근 시도에 대하여 감사기록을 한다. 개체 액세스에 대한 감사기능은 해당 디스크 볼륨이 NTFS 파티션일 경우에만 사용할 수 있다. NTFS 파일 시스템은 FAT과 비교했을때 파일 및 폴더 단위의 권한 부여 및 관리가 용이하므로 웹서버 자원이 저장되는 파티션은 NTFS를 사용하는것이 좋다. # [관리도구] [로컬 보안설정] [로컬정책] [감사정책] [개체 액세스감사] [속성] [실패] 항목에 체크
# 감사하려는 대상 폴더나 파일을 탐색기에서 선택 [속성] [보안]탭 [고급] [감사] [추가] Everyone 그룹에 대한 모든 실패 이벤트를 기록하도록 감사 항목을 설정
3. IIS 로그파일 위치 변경 및 NTFS 권한 적용 기본적으로 IIS 로그파일은 %systemroot%\system32\logfiles 에 사이트별로 저장되는데 이를 다른폴더에 저장하거나 이름을 변경함으로써 공격자가 로그 파일을 변경하거나 삭제하는 것을 어느정도 막을 수 있다. 가능하면 이 로그파일이 저장되는 디렉토리를 웹 사이트가 위치한 디스크와 다른 볼륨으로 설정하고, NTFS 권한을 Administrator(모든권한), System(모든권한)로 지정하여 다른 계정에서 로그파일에 접근하는 것을 막는것이 좋다. [인터넷정보서비스관리] 각각의 웹사이트 [속성] [웹사이트] 탭 로깅사용 [속성] 로그파일 디렉토리 변경 [11] IIS 보안 1. IIS 버전비교 구분 IIS 5.0 IIS 6.0 Platform Windows 2000 Windows Server 2003 Architecture 32 bit 32 bit and 64 bit Security Windows인증, SSL, Kervberos Windows 인증, SSL, Kerberos Security Wizard, Passport Support 원격관리 HTMLA, Terminal Services HTMLA, Remote Desktop Cluster support IIS clustering Windows support 메일 지원 SMTP SMTP & POP3 Metabase configuration Binary XML IPv6 지원 IPv4 IPv4 & IPv6 # IIS 6.0 설치시 기본 구성요소인 WWW 서비스만 설치되므로, ASP, SMTP, FTP 등은 추가 선택하여 설치하여야 한다.
2. IIS 보안 점검항목 # 주기적인 IIS 설정 백업 # 로깅 사용 # IIS 로그파일에 대한 ACL 설정 # 사용하지 않는 예제 프로그램 삭제 # 가상 디렉토리 삭제 # 사용하지 않는 스크립트 매핑 삭제 # 홈디렉토리 불필요한 권한 제거 # 불필요한 확장 금지 # CGI (.exe,.dll,.cmd,.pl), 스크립트파일(.asp,.aspx), Include 파일 (.ind,.shm,.shtml) 등의 파일에는 Everyone 에게 권한을 주지 않는다. 일반파일 (.txt,.gif,.jpg,.html) 에는 Everyone 에게 읽기 권한을 부여한다. 파일종류에 따른 파일 권한을 설정할 수 있도록 각각 종류에 디렉토리를 생성하여 관리한다. 3. 불필요한 매핑 제거 전체 웹사이트에 적용시 : [인터넷정보서비스관리[ [웹사이트] [속성] [홈디렉토리]탭 [구성] [매핑]탭 개별 적용시에는 각 사이트의 매핑탭에서 설정한다. 매핑탭을 보면 많은 수의 파일매핑이 되어 있는데 실제로 웹서버에서 사용하는.asp,.asa를 제외하고는 모두 제거하는 것이 좋다. 적용 대상서버가 웹서버가 아닌 파일 서버 및 DB 전용의 서버라면 모든 매핑파일 자체가 필요가 없다. * 제거 권고 매핑 # 웹기반 암호 재설정 :.htr # IIS 커넥터 :.idc # Server Side Includes :.stm,.shtm,.shtml # 인쇄 :.printer # 인덱스 서버 :.htw,.ida,.idq
4. 상위경로 접근 제거 시스템 파일 및 명령어를 삽입하기 위해../../../ 등의 패턴 입력을 제한한다. [인터넷정보 서비스관리] [웹사이트] [속성] [홈디렉토리탭] [구성] [옵션]탭 [부모경로 사용] 체크해제 5. 컨텐츠 디렉토리 권한 [인터넷정보 서비스관리] [웹사이트] [속성] [홈디렉토리]탭 => 읽기, 방문기록, 이 리소스 색인화 외에는 체크하지 않는다. ( 읽기 정도의 권한만 할당 ) 6. #exec 명령쉘 호출금지 명령어가 웹서버에서 임의의 명령을 호출하도록 사용될 수도 있다. IIS 는 Default로 이것이 중지되어 있으며, 이를 가능하게 하는 레지스트리 키가 0 로 셋팅되어 있는지 확인한다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\SSIEnableCmdDirective 0 7. WebDAV 비활성화 WebDAV ( Web Distributed and Versioning)는 웹서버상에 존재하는 파일들을 공동으로 편집,관리하기 위한 도구로서 HTTP 와 같은 웹 운영프로토콜의 확장된 형태이며, 버퍼 오버플로우 취약점이 있다. 또한 IIS 설치시 기본으로 설치되며, 설치후 계속 사용가능하도록 설정되어 있고, WebDAV 라이브러리 파일의 속성 및 홈페이지 디렉토리에 쓰기 권한이 모두 허용되어 있는경우 해커가 WebDAV 도구를 사용하여 원격에서 홈페이지 디렉토리에 임의의 파일을 삽입하여 웹페이지를 변조할 수 있다. ( 이미 WebDAV 버퍼 오버플로우 소스는 공개된 상태이다. ) # DACL로 액세스 제어 WebDAV는 NTFS 파일 시스템의 사용 권한 제어 및 DACL(임의 액세스 제어 목록)을 비롯하여 플랫폼과 웹 서버에서 제공하는 보안 기능을 활용합니다. NTFS 파일 시스템 드라이브에 WebDAV 게시 디렉터리 를 설정할 때는 Everyone 그룹에 읽기 권한만 부여해야 합니다. 그런 다음 특정 개인이나 그룹에게 쓰기 권한을 부여합니다. # 자세한 내용은 다음 페이지 참조 http://technet.microsoft.com/ko-kr/library/cc779784.aspx
8. FTP 익명 접속 거부 FTP 서비스에 익명 접속을 허용하지 않도록 설정한다. [인터넷정보 서비스관리] [해당 FTP 사이트] [속성] [보안계정] [익명연결허용]체크해제 [적용] [확인] [12] 윈도우 보안도구 운영체제의 서비스 팩과 보안 패치를 최신 버전으로 유지하는 것은 보안 사고를 예방하기 위한 기본적인 과제이다. 과거 큰 피해를 입었던 보안 사고들은 주기적인 보안 패치를 통해서 미연에 막을 수 있는 것이 대부분이었다. 이러한 권장 패치에 대한 알림과 자동 업데이트 기능이 운영체제 차원에서 제공되므로 이를 적극 이용한다. 또한, 마이크로소프트에서 제공하고 있는 보안도구의 활용도 필요하다. 1. MBSA MBSA(Microsoft Baseline Security Analyzer)라는 툴을 이용하면 중요한 보안 패치의 적용 여부 뿐만 아니라 운영체제나 인터넷 익스플로어, SQL 서버, MDAC 등의 구성요소를 분석하여 보안상 취약한 부분을 손쉽게 확인할 수 있다. # MBSA 다운로드 : http://www.microsoft.com/technet/security/tools/mbsahome.mspx # 설치지원 가이드 http://www.1000dedi.net/hosting/gnuboard4/bbs/board.php?bo_table=serverlecture&wr_id=701&page=2 2. Windows 용 공개 웹방화벽 ( WebKnight ) 날로 증가하는 웹 소스상의 취약점을 이용한 웹공격으로 인해 손놓고 방관한다면 서비스의 지속적인 제공이 더이상 불가능한 상황이다. 개발단계에서의 원천적인 보안이 힘든 상황이라면 최소한 공개 웹 방화벽 만이라도 설치하여 피해를 최소화 해야 할 것이다. # 가이드 및 프로그램 다운로드 : http://www.krcert.or.kr/firewall2/index2.jsp
[13] 네트워크 보안 1. NetBIOS 비활성화 NetBIOS는 별개의 컴퓨터 상에 있는 애플리케이션들이 근거리통신망 내에서 서로 통신할 수 있게 해주는 프로토콜로서 Windows에 의해 채택되어 있다. 만약 웹 서버에서 네트워크를 통한 다른 컴퓨터 와의 공유가 필요없다면 NetBIOS를 제거함으로써 DDos(Distributed Denial of Service) 공격이나 호스트 열거(host enumeration)에 대한 위험 요소를 줄일 수 있다. # NetBIOS는 다음과 같은 포트를 사용한다 TCP/UDP 137번 (NetBIOS name service) // TCP/UDP 138번 (NetBIOS datagram service) TCP/UDP 139번 (NetBIOS session service) # TCP/IP에서 NetBIOS를 비활성화하는 방법은 다음과 같다. [내 컴퓨터] [속성] [하드웨어]탭 [장치관리자] [보기] 메뉴 [숨김장치표시] [비 플러그 앤 플레이 드라이버] [NetBios over Tcpip] [제거] ## 스마일서브에서는 기본적으로 139, 445 포트 (NetBIOS Session 포트)를 Block 하는 정책을 취한다. ## 이로인해 139, 445 포트를 이용하는 서비스를 사용하는 경우 ELCAP 상에서 Block을 해제해야 한다. 2. SMB 비활성화 SMB ( Session Message Block ) 프로토콜은 Windows 에서 디스크와 프린터를 네트워크 상에서 공유하는데 사용된다. SMB는 다음과 같은 포트를 사용한다. TCP 139 // TCP 445 SMB 를 비활성화 하려면 다음과 같은 방법으로 TCP/IP 에서 SMB를 언바인드 시킨다. [내 네트워크환경] [속성] [로컬영역연결] [속성] [Microsoft 네트워크용 클라이언트]와 [Microsoft 네트워크용 파일 및 프린터 공유] 항목의 체크 해제 [확인]
[14] 홈페이지 보안 관리 1. 관리자페이지 접근통제 취약점 # 문제점 웹서비스의 사용자나 데이터, 컨텐츠를 손쉽게 관리하기 위한 목적으로 다양한 기능과 권한을 갖고 있는 홈페이지의 관리자페이지는 일반적으로 추측하기 쉬운 URL(예: /admin, /manager)을 사용하고 있어 ID/패스워드에 대한 크랙 또는 접근 허가 정책의 부재로 웹관리자의 권한이 노출되어 홈페이지 의 변조뿐만 아니라 웹서버의 권한까지도 노출 위험성이 있다. # 조치방법 관리자로그인페이지는 유추하기 어려운 디렉토리명이나 파일명을 사용한다. 별도의 IP 레벨로 접근권한을 설정. 웹인터페이스는 SSL과 같은 암호화를 적용. 제어판 관리도구 인터넷서비스관리자 해당 관리자 페이지 폴더에 마우스 오른쪽 버튼 등록정보 디렉토리 보안 IP 주소 및 도메인 이름 제한 편집 액세스 거부 선택 추가 관리자 호스트 IP 또는 서브넷을 등록 2. 디렉토리 리스팅 취약점 # 문제점 인터넷 사용자에게 모든 디렉토리 및 파일 목록이 보여지게 됨으로 인한 비공개자료 및 서버 접근 정보 유출 # 조치방법 제어판 관리도구 인터넷서비스관리자 서비스중인 웹사이트의 마우스 오른쪽버튼 클릭 등록정보 홈디렉토리 디렉토리검색(B) 체크 해지 적용 확인 3. 파일 다운로드 취약점 # 문제점 다운로드 대상파일의 위치 지정에 제한 조건을 부여하지 않은 다운로드스크립트의 경우, 웹브라우저 의 주소창에 '../' 등의 문자열을 입력하여 시스템디렉토리에 비공개 자료들이 유출 # 조치방법 게시판 등에 파일 다운로드 기능이 있는지 점검. 파일 다운로드 스크립트 이용 여부 확인. 다운로드 스크립트내에서 다운로드 허용파일명에 '..', '/', '\' 와 같은 문자열이 존해하면 필터링 할 수 있도록 수정하여, 특정 디렉토리하의 파일만 다운로드 받을 수 있도록 함. 4. 크로스 사이트 스크립트 취약점
# 문제점 글쓰기 기능이 있는 게시판 등에서 입력내용에 대해 실행코드인 스크립트의 태그를 적절히 필터링하지 않을 경우, 악의적인 스크립트가 포함된 게시물을 등록할 수 있어 해당 게시물을 열람하는 일반사용자의 PC로부터 개정정보인 쿠키를 유출할 수 있는 등의 피해 초래 # 조치방법 글쓰기가 가능한 게시판에서 사용자들이 올리는 글에 대해서 script를 모두 필터링할 수 있도록관련 웹소스코드를 수정, script 문장에 존재하는 메타캐릭터를 아래의 예와 같이 변환시킨다. < -> < > -> > ( -> ( ) -> ) # -> # & -> & 5. 파일 업로드 취약점 # 문제점 첨부파일 업로드를 허용하는 게시판에서.asp,.pl 등의 확장자를 가진 스크립트 파일의 업로드를 허용할 경우, 해커가 악성 실행 프로그램을 업로드한 후에 웹브라우저를 이용하여 원격에서 서버의 시스템명령어를 실행시킬 수 있다. 보통 백도어 프로세스 실행으로 백도어포트 오픈됨. # 조치방법 업로드되는 파일의 확장자가 실행가능한 확장자명(php, asp, jsp, cgi, pl 등)일 경우 필터링하여 업로드되지 않도록 관련 웹소스코드 수정, 2중 확장자 형태도 필터링 인터넷서비스관리자 업로드폴더에 마우스 오른쪽 버튼 클릭 등록정보 디렉토리 실행권한 없음 선택 적용 확인 6. SQL Injection 취약점 # 문제점 웹브라우저 주소창 또는 사용자 ID 및 패스워드 입력화면 등에서 DB SQL문에 사용되는 문자기호(',") 의 입력을 필터링 하지 않은 경우에 인증절차 없이 DB에 접근하여 자료 유출 및 변조 가능 # 조치방법 DB와 연결하는 웹소스코드에서 ID 및 패스워드 입력란에 특수문자(' " / \ ; : -- + 공백 등)는 필터링 하도록 수정한다. SQL 서버의 에러메세지를 외부에 보여주지 않도록 설정한다. [15] 터미널서비스 포트변경하기 윈도우 서버에 설치된 터미널서비스의 포트번호를 변경하여 사용한다. 변경후엔 IPSEC 등에 변경된 포트정보를 수정한다. 꼭!! 1. 포트 번호 변경 # 시작 -> 실행 -> regedit 입력 -> 확인을 눌러 레지스트리 편집기를 실행한다. # HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp 로 이동 # PortNumber REG_DWORD 0x00000d3d(3389) 수정모드에서 10진수를 선택하고 원하는 포트번호를 입력 # HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDPTcp 로 이동 # PortNumber REG_DWORD 0x00000d3d(3389) 수정모드에서 10진수를 선택하고 원하는 포트번호를 입력 # 편집기 창을 닫고 리부팅한다. 2. 클라이언트에서 서버 접속하기 원격데스크탑 연결창에서 서버주소:변경된포트번호(예: 10.10.10.10:33389)를 입력후 접속한다.
[16] 후기 지금까지의 내용이 다소 부족한 감이 있으나, 위의 항목 하나하나를 따라서 적용해 보길 권장한다. 또한, 후임 시스템관리자를 위해서 보안설정을 적용한 사항들은 반드시 메모해 두길 바란다. 보안설정 내용에서 중요한 것은 다음과 같다. 1. 보안패치를 꼭 한다. 2. IPSEC을 반드시 적용한다. 3. 바이러스 방역 솔루션을 설치한다. 4. 데이타 백업을 철저히 한다. 보안패치를 함으로써 시스템의 보안버그로 인한 시스템의 침해사고를 예방할 수 있으며,IPSEC에서 서비스에 필요한 포트 예를 들어 웹서비스만을 한다면 80 번 포트외에는 외부의 접속을 거부해 둠으로써, 크래킹 시도로 인한 백도어포트가 열리더라도 크래커의 접근을 차단할 수 있다. 웹서비스 80번 포트로 들어오는 웜이나 바이러스의 침투는 바이러스 방역 솔루션으로 차단한다면, 시스템의 침해사고는 거의 발생하지 않을 것이다. 위의 4가지 항목을 준수한다면 안전한 시스템관리에 만전을 기할 수 있으리라 믿는다. 참고문서 : Windows 각종 보안 이슈 http://www.microsoft.com/korea/technet/security/default.asp Windows 관련 MS 제공 보안Tools http://technet.microsoft.com/en-us/sysinternals/25e27bed-b251-4af4-b30a-c2a2a93a80d9.aspx