반응형
/********************************************************************************************
-- Title : [2K] 가장 적절한 보안 검사 목록
-- Reference : cafe.naver.com/secu
-- Key word : 보안 security
********************************************************************************************/

 
관리자 검사 목록

Back to Top

설치 전 환경 설정  
물리적 보안
  • 서버의 물리적 보안을 확인합니다.
방화벽
  • 서버와 인터넷 사이에 방화벽을 배치합니다.
  • 영역 방화벽에서 항상 TCP 포트 1433 및 UDP 포트 1434를 차단합니다. 명명된 인스턴스가 추가 포트를 수신하는 경우 해당 포트도 차단합니다.
  • 다중 계층 환경에서는 여러 개의 방화벽을 사용하여 서브넷을 차단하도록 만듭니다.
서비스 격리
  • 서비스를 격리하면 하나의 서비스가 손상되더라도 다른 서비스를 손상시킬 수 있는 위험성을 줄입니다.
  • 도메인 컨트롤러에 SQL Server를 설치하지 마십시오.
  • 개별 SQL Server 서비스를 개별 Windows 계정으로 실행합니다.
  • 다중 계층 환경에서는 웹 논리와 비즈니스 논리를 서로 분리된 컴퓨터에서 실행합니다.
서비스 계정
  • SQL Server 서비스를 실행하는 최소한의 권한을 가진 Windows 계정을 만듭니다.
파일 시스템
  • NTFS를 사용합니다.
  • 중요한 데이터 파일에는 RAID를 사용합니다.
설치  
최신 버전 및 서비스 팩
  • 항상 최신 서비스 팩과 보안 패치를 설치합니다.
서비스 계정
  • 최소한의 권한으로 SQL Server 서비스를 실행합니다.
  • 엔터프라이즈 관리자를 사용하여 서비스를 Windows 계정에 연결합니다.
인증 모드
  • SQL Server 연결에 Windows 인증이 필요합니다.
강력한 암호
  • sa 계정에 항상 강력한 암호를 할당합니다(Windows 인증을 사용할 경우 포함).
  • 모든 SQL Server 계정에 항상 강력한 암호를 사용합니다.
구성 옵션 및 설치 후 설정  
이전 설정 파일 삭제 또는 보호
  • 설치 후 다음 파일을 삭제하거나 보관합니다. 기본 설치의 경우 :\Program Files\Microsoft SQL Server\MSSQL\Install 폴더, 명명된 인스턴스의 경우 :\Program Files\Microsoft SQL Server\ MSSQL$\Install 폴더에 있는 sqlstp.log, sqlsp.log 및 setup.iss
  • 현재 시스템이 SQL Server 7.0에서 업그레이드된 경우 다음 파일을 삭제합니다. %Windir% 폴더의 setup.iss, Windows Temp 폴더의 sqlsp.log 파일도 확인해야 합니다.
명명된 인스턴스를 위한 고정 포트 선택
  • SQL Server의 명명된 인스턴스에 고정 포트를 할당합니다.
로그인 감사 수준 설정
  • 로그인 감사 수준을 실패 또는 모두로 설정합니다.
보안 감사 활성화
  • Sysadmin 작업, 고정 역할 구성원 자격 변경, 모든 로그인 관련 작업 및 암호 변경의 보안 감사를 활성화합니다.
  • 적절한 감사 옵션을 선택한 후 감사를 스크립트로 작성하여 저장 프로시저에 포함시킨 다음 해당 저장 프로시저를 AutoStart로 표시해야 합니다.
sa 보안(Windows 인증 모드 포함)
  • Windows 인증을 요구하도록 서버를 구성한 경우에도 sa 계정에 강력한 암호를 할당합니다.
예제 데이터베이스 제거
  • 프로덕션 서버에서 예제 데이터베이스를 제거합니다.
보안 작업  
보안 모델
  • SQL Server 보안 모델의 작동 방식에 대해 학습합니다.
백업 정책
  • 정기적으로 모든 데이터를 백업하고 복사본을 회사 외부의 안전한 위치에 보관합니다.
  • 재난 복구 시스템을 테스트합니다.
노출 및 기능 최소화
  • 환경에 필요한 서비스와 기능만 실행하여 공격에 노출되는 시스템 영역을 최소화합니다.
관리자 최소화
  • sysadmin 고정 서버 역할의 구성원을 트러스트된 소수의 개인으로 제한합니다.
강력한 암호
  • 모든 SQL Server 계정에 복잡한 암호를 사용해야 합니다.
데이터베이스 간 소유권 체인
  • 시스템에서 사용하지 않는 경우 데이터베이스 간 소유권 체인을 사용할 수 없도록 설정합니다.
Xp_cmdshell
  • 기본적으로 sysadmin 역할의 구성원만 xp_cmdshell을 실행할 수 있습니다. 이 기본값을 변경해서는 안 됩니다.
  • sysadmin 역할의 구성원이 아닌 사용자에게 xp_cmdshell에 대한 사용 권한을 허가하지 마십시오.
암호화
  • 인증서를 설치하여 SSL 연결을 사용합니다.
  • 인증서에서는 서버의 정규화된 DNS 이름을 사용해야 합니다.
  • SQL Server 서비스 계정을 사용하여 데이터베이스 파일을 EFS로 암호화합니다.
  • 응용 프로그램에 데이터 암호화가 필요한 경우 Protegrity 및 Application Security Inc.와 같은 공급업체의 제품을 사용하는 것을 고려합니다.
역할 및 그룹
  • 사용자를 SQL Server 역할이나 Windows 그룹으로 모아 사용 권한 관리를 단순화합니다.
사용 권한
  • public 데이터베이스 역할에 사용 권한을 허가하지 마십시오.
분산 쿼리
  • 분산 쿼리를 지원하는 환경에 SQL Server를 설치할 경우 원격 서버보다는 연결된 서버를 사용해야 합니다.
  • 연결된 서버 액세스가 필요한 로그인에만 사용 권한을 허가합니다.
  • SQL OLE DB를 제외한 모든 공급자와 sysadmin 고정 서버 역할의 구성원을 제외한 모든 사용자의 임의 데이터 액세스를 금지합니다.
  • 트러스트된 공급자에 대한 임의 데이터 액세스만 허용합니다.
Guest 계정
  • guest 계정을 사용하지 마십시오.
서비스 계정
  • SQL Server 서비스와 연결된 계정을 변경해야 한다면 SQL Server 엔터프라이즈 관리자를 사용합니다.
  • 여러 서비스를 변경해야 한다면 엔터프라이즈 관리자를 사용하여 각 서비스를 개별적으로 변경해야 합니다.
권장하는 주기적 관리 절차  
MBSA(Microsoft Baseline Security Analyzer)
  • 주간 유지 관리 일정에 MBSA를 추가하고MBSA의 모든 보안 권장 사항을 따릅니다.
로그인 스캔
  • NULL 암호를 사용하는 계정을 주기적으로 스캔하여 삭제하거나 강력한 암호를 할당합니다.
  • 사용하지 않는 계정을 삭제합니다.
고정 역할 구성원 자격 확인
  • 고정 서버 역할과 데이터베이스 역할을 주기적으로 스캔하여 구성원 자격이 트러스트된 개인에게만 허가되었는지 확인해야 합니다.
시작 절차
  • AutoStart로 표시된 저장 프로시저의 보안을 확인합니다.
로그인과 사용자 매핑
  • 서버 수준에서 데이터베이스 사용자와 로그인 간의 매핑이 올바른지 확인합니다.
  • 정기적으로 report 옵션으로 sp_change_users_login을 실행하여 매핑이 올바른지 확인합니다.
직접 카탈로그 업데이트
  • 직접 카탈로그 업데이트를 사용하지 마십시오.
데이터베이스 간 소유권 체인
  • sp_dboption을 사용하여 데이터베이스 간 소유권 체인을 사용하는 데이터베이스를 나열하고 유효성을 검증합니다.
가장 적절한 인스턴스 패치 방법  
인스턴스 검색 및 열거
  • 담당하는 SQL Server의 모든 버전, 에디션 및 언어 인벤토리를 관리합니다.
  • 인벤터리에 MSDE 인스턴스를 포함합니다.
  • Microsoft 웹 사이트에서 사용할 수 있는 SQL Scan 및 SQL Check를 사용하여 도메인 내에 있는 SQL Server 인스턴스를 스캔합니다.
Bulletins
  • Microsoft Security Bulletins에 등록합니다.
응용 프로그램 패치
  • 프로덕션 시스템의 구성과 일치하는 테스트 시스템을 유지 관리하여 항상 새 패치를 테스트할 수 있도록 준비합니다.
  • 프로덕션 시스템에 적용하기 전에 신중하게 패치를 테스트합니다.
  • 비교적 테스팅 목적으로 사용하지 않는 개발 시스템으로 패치하십시오.

개발자 점검 목록 Back to Top

모든 항목에 추가로 개발자를 위한 다음 점검 목록을 고려해야 합니다.

일반  
소유권 체인의 효과적인 사용
  • 소유권 체인을 단일 데이터베이스 내에서 사용하여 사용 권한 관리를 단순화합니다.
  • 가능하다면 데이터베이스 간 소유권 체인을 사용하지 마십시오.
  • 데이터베이스 간 소유권 체인을 사용해야 한다면 두 데이터베이스가 항상 단일 관리 단위로 배포되는지 확인합니다.
역할을 사용한 사용 권한 관리 및 소유권 단순화
  • 사용 권한을 사용자에게 직접 할당하는 대신 역할에 할당합니다.
  • 소유자가 삭제되었을 때 응용 프로그램을 변경하지 않으려면 개체를 사용자가 직접 소유하는 대신 역할이 소유하게 해야 합니다.
암호화 사용(SSL 또는 IPSEC)
  • 서버에 암호화된 연결을 사용하고 암호화된 연결만 허용하는 것을 고려합니다.
  • SQL Server 인증을 허용할 경우 IPSec을 사용하여 네트워크 계층을 암호화하거나 SSL을 사용하여 세션을 암호화해야 합니다.
SQL Server 오류를 사용자에게 반환하지 않음
  • 응용 프로그램에서 SQL Server 오류를 최종 사용자에게 반환해서는 안 됩니다. 대신 오류를 로깅하거나 시스템 관리자에게 전달합니다.
SQL 삽입 방지
  • 모든 사용자 입력을 서버에 전달하기 전에 유효성을 검사하여 SQL 삽입을 막습니다.
  • 사용자 입력을 서버에 보내는 계정에 최소한의 권한만 허가하여 손상 가능성을 최소화합니다.
  • SQL Server 자체를 최소한의 필수 권한으로 실행합니다.
다중 계층 옵션  
동일한/트러스트된 도메인(완전한 Windows 인증)

응용 프로그램 서버와 데이터베이스 서버가 동일한 도메인이나 트러스트된 도메인 내에 있는 경우 Windows 인증을 사용하고 SQL Server로 터널링되는 모든 클라이언트 컨텍스트에서 "완전한 규정"을 구성해야 합니다. 이렇게 하면 SQL Server를 액세스하는 모든 사용자를 감사하고 Windows 보안 정책을 강제할 수 있으며 중간 계층에 자격 증명을 저장할 필요가 없습니다. 이 시나리오에서 클라이언트가 응용 프로그램 서버에 연결하고 응용 프로그램 서버가 클라이언트를 가장하여 SQL Server에 연결합니다.

  • 응용 프로그램 서버의 모든 사용자가 데이터베이스 서버에 대한 유효한 Windows 로그인을 가져야 하며 위임을 사용할 수 있어야 합니다.
  • 도메인 컨트롤러를 포함한 이 시나리오에서 상호 작용하는 모든 시스템은 Windows 2000 또는 그 이상의 운영 체제에서 실행해야 합니다.
  • 응용 프로그램을 실행한 계정은 위임에 대해 트러스트되어야 합니다. 즉, 이 계정에 대한 계정이 위임에 트러스트되었습니다 Active Directory 옵션을 사용해야 합니다.· 클라이언트 계정에서 위임을 사용할 수 있어야 합니다. Active Directory 사용자 계정 옵션에서 계정을 트러스트하며 위임할 수 없음 확인란을 선택 해제합니다.
  • 응용 프로그램 서비스는 유효한 서비스 사용자 이름(SPN)을 가져야 합니다.
    참고   보안 계획에서 데이터베이스 서버에 대한 사용자 액세스를 최소화할 필요가 있거나 위임을 금지하는 정책이 있는 엔터프라이즈의 경우 엔터프라이즈 간 또는 인터넷 규모의 설치에 완전한 규정을 사용하는 것은 권장되지 않습니다.
혼합 시나리오(부분적 Windows 인증)

인터넷과 접한 계층에 가능한 모든 사용자에 대한 개별 Windows 도메인 계정이 없는 경우 권장 시나리오는 인증을 여러 단계로 나누는 것입니다. 외부 계층(사용자를 인증하는 계층)에서는 SSL을 사용하여 최소한 자격 증명(전체 세션이 어려운 경우)을 암호화해야 합니다. 그런 다음 Windows 인증을 사용하고 해당 기능을 수행하는 데 필요한 사용 권한만 있는 권한이 낮은 별도의 보안 컨텍스트 하에서 트랜잭션 정보를 전달하여 데이터베이스 서버에 연결해야 합니다. 이렇게 하면 중간 계층을 효과적으로 서버와 인터넷 간의 추가적인 보안 계층으로 사용할 수 있습니다.

참고   중간 계층과 SQL Server 사이에서 SQL Server 인증을 사용하는 것은 자격 증명을 저장해야 하기 때문에 권장되지 않습니다. 중간 계층과 SQL Server 사이에 SQL Server 인증을 사용해야 한다면 다양한 사용자 클래스에 해당하는 서로 다른 권한 수준의 계정을 여러 개 만들어야 합니다. 이 경우 중간 계층에 원하는 권한 수준에 따라 연결을 할당하는 논리를 추가해야 합니다.
트러스트되지 않은 다양한 도메인 또는 비도메인(Windows 인증이 아닌 경우)

경우 로그인 시퀀스의 SSL 암호화를 요구해야 합니다. 또한 전체 세션을 암호화하는 것이 좋습니다.

  • 저장해야 하는 자격 증명을 DPAPI를 사용하여 암호화해야 합니다.
  • 암호화된 자격 증명을 ACL로 보호되는 레지스트리 키에 저장해야 합니다.

소프트웨어 공급업체 검사 목록 Back to Top

위의 모든 항목에 추가로 다음과 같은 보안 개발 방법이 다양한 개발 환경에서 코드의 품질과 보안을 개선하는 데 도움이 된다는 것이 입증되었습니다.

보안 프로세스  
다양한 보안 문제 이해
  • 개발 팀의 구성원이 현재의 보안 위협, 보안 동향, 보안 환경 변화, 공격 시나리오 등과 같은 중요한 보안 문제를 이해하고 있는지 확인합니다.
  • 모든 개발자와 테스터에게 관련 보안 교육을 시행합니다.
  • 사이트 간 스크립트 실행, 버퍼 오퍼플로, SQL 삽입, 위험한 API 등과 같은 문제에 대한 인식을 개선합니다.
  • 예를 들어, 서비스 거부, 권한 획득, 스푸핑, 데이터 가장, 정보 노출 및 거부와 같은 제품에 적용되는 관련 위협을 확인합니다.
  • 제품의 보안 위협을 구성 요소 단위로 분석합니다.
  • 제품을 기준으로 보안 위험 검사 목록을 만듭니다.
  • 제품 개발 주기의 모든 단계(설계에서 테스트)에 보안 검토를 추가합니다.
MSDE 설치

응용 프로그램과 함께 MSDE를 배포한다면 다음 추가 지침이 적용됩니다.

  • 기본적으로 "Windows 보안 모드"를 사용하여 MSDE를 설치합니다.
  • 빈 sa 암호를 설치하지 마십시오.
  • 고객에게 MSDE를 배포할 경우 결합된 모듈 대신 Microsoft가 제공하는 설치 관리자를 사용해야 합니다.
  • 로컬 데이터 저장소 역할만 하는 MSDE 인스턴스를 설치할 경우 Server Net-Libraries를 사용하지 않도록 설정해야 합니다.
  • 제품에 MSDE가 포함된다면 이를 고객에게 알려야 합니다. 그래야 나중에 MSDE 관련 소프트웨어 업데이트를 설치하거나 적용할 수 있습니다.
  • 기본적으로 MSDE는 SQL Server 에이전트를 설치하지만 서비스 시작 유형을 "수동"으로 설정합니다. 응용 프로그램에서 SQL Server 에이전트를 사용하지 않는다면 이 설정을 "사용 안 함"으로 변경해야 합니다. 제품 설명서에 가장 적절한 보안 정보를 포함합니다. 

반응형

+ Recent posts