Hardening - Application Recommendations

일반적인 강화 지침은 메인 강화 문서를 참조하십시오.

GitLab 인스턴스의 강화 권장 사항을 웹 인터페이스를 통해 제어할 수 있습니다.

시스템 후크

  1. 왼쪽 사이드바에서 아래쪽으로 이동하여 관리자를 선택합니다.
  2. 시스템 후크를 선택합니다.

일반적으로 강화된 환경에서는 내부 정보가 시스템 외부로 전송되거나 저장되지 않습니다. 오프라인 환경 시스템에는 이러한 의미가 내포됩니다. 시스템 후크는 환경 내의 로컬 이벤트가 트리거에 기반하여 환경 외부로 정보를 전달하는 방법을 제공합니다.

이 기능에는 환경을 통해 시스템을 모니터링하는 경우와 같이 사용 사례가 지원됩니다. 그러나 시스템 후크를 배포할 때 극도의 주의를 기울여야 합니다. 강화된 시스템의 경우 오프라인 환경이라면 서로 통신할 수 있는 신뢰도 있는 시스템 경계를 적용해야 합니다. 따라서 어떤 후크(시스템, 웹 또는 파일)도 해당 신뢰도 있는 시스템과만 통신하도록 설정해야 합니다. 시스템 후크를 통한 통신에는 꼭 TLS를 사용하는 것이 강력히 권장됩니다.

푸시 규칙

  1. 왼쪽 사이드바에서 아래쪽으로 이동하여 관리자를 선택합니다.
  2. 푸시 규칙을 선택합니다.

다음 항목이 선택되어 있는지 확인하십시오:

  • 확인되지 않은 사용자 거부
  • git push로 Git 태그 제거 허용 안 함
  • 커밋 작성자가 GitLab 사용자인지 확인
  • 비밀 파일 푸시 방지

이러한 조정은 이미 인가받은 사용자에게 푸시를 제한하는 데 도움이 됩니다.

배포 키

  1. 왼쪽 사이드바에서 아래쪽으로 이동하여 관리자를 선택합니다.
  2. 배포 키를 선택합니다.

공개 배포 키는 인스턴스의 모든 프로젝트에 대한 읽기 또는 읽기/쓰기 액세스를 제공하는 데 사용되며, 원격 자동화를 위한 것입니다. 강화된 환경에서는 공개 배포 키를 사용해서는 안 됩니다. 배포 키를 사용해야 한다면 프로젝트 배포 키를 대신 사용하십시오. 자세한 내용은 배포 키프로젝트 배포 키 문서를 참조하십시오.

일반

  1. 왼쪽 사이드바에서 아래쪽으로 이동하여 관리자를 선택합니다.
  2. 설정 > 일반을 선택합니다.

4개 섹션에서 강화 조정을 수행할 수 있습니다.

가시성 및 액세스 제어

다음 설정의 기본값은 비공개입니다:

  • 기본 프로젝트 가시성
  • 기본 스니펫 가시성
  • 기본 그룹 가시성

프로젝트, 스니펫 또는 그룹에 특정 액세스 권한이 부여된 사용자만 해당 리소스에 액세스할 수 있습니다. 필요에 따라 이를 나중에 조정하거나 생성 시에 조정할 수 있습니다. 이렇게 함으로써 정보가 우연하게 또는 악의적으로 누설되는 것을 방지할 수 있습니다.

보안 정책과 자세에 따라 Restricted visibility level공개로 설정할 수 있습니다. 이로써 인증되지 않은 사용자가 사용자 프로필을 볼 수 없도록 합니다.

가져오기 소스에서 필요한 소스만 선택하십시오.

일반 배포에서는 Git 액세스 프로토콜 활성화SSH 및 HTTP(S)로 설정되어 있지만, 사용자가 사용하지 않는 경우 Git 프로토콜 중 하나를 해당 사용자에 맞게 Only SSH 또는 Only HTTP(S)로 설정하십시오. 이렇게 하면 공격 표면을 줄일 수 있습니다.

SSH 키 유형은 다음과 같이 선호됩니다: ED25519 (및 ED25519-SK), RSA, ECDSA 순서대로. ED25519RSA와 동일한 수준의 보안을 제공하지만 키 크기가 더 작고 알고리즘이 훨씬 빠릅니다.

ED25519-SKECDSA-SK는 둘 다 “-SK”로 끝나는데, 이는 “보안 키”를 의미합니다. “-SK” 유형은 하드웨어 토큰(예: YubiKey)을 사용한 FIDO/U2F 표준과 호환됩니다.

DSA는 “금지됨”으로 설정해야 합니다. DSA에는 알려진 결함이 있을 뿐 아니라 많은 암호학자들이 의심을 표하며 ECDSA 사용을 지지하지 않습니다.

GitLab이 FIPS 모드인 경우 다음을 사용하십시오:

  • FIPS 모드에서 실행 중인 경우:
    • RSA를 사용하고 최소 2048비트 이상으로 설정합니다.
    • ECDSA (및 ECDSA-SK)를 사용하고 최소 256비트 이상으로 설정합니다.
    • 다른 모든 키 유형을 금지됨으로 설정합니다. RSAECDSA는 모두 FIPS 사용을 승인받은 키 유형입니다.
  • FIPS 모드에서 실행 중이 아닌 경우 ED25519을 사용해야하고 RSA도 사용할 수 있습니다:
    • ED25519 (및 ED25519-SK)를 최소 256비트 이상으로 설정합니다.
    • 만약 RSA를 사용 중이라면 최소 2048비트 이상으로 설정합니다.
    • 다른 모든 키 유형을 금지됨으로 설정합니다.
  • 새로운 사용자 그룹을 위한 인스턴스를 설정하는 경우 추가 보안을 위해 사용자 SSH 키 정책을 최대 비트 설정으로 정의하십시오.

강화된 환경에서는 일반적으로 RSS 피드가 필요하지 않으며 피드 토큰에서 비활성화된 피드 토큰을 선택하십시오.

모든 사용자가 특정 IP 주소에서 오는 경우 글로벌 허용 IP 범위를 사용하여 해당 주소만 특별히 허용하십시오.

가시성 및 액세스 제어에 대한 자세한 내용은 가시성 및 액세스 제어를 참조하십시오. SSH 설정에 대한 자세한 내용은 SSH keys restrictions를 참조하십시오.

계정 및 제한

강화 목적으로 Gravatar 활성화됨 옆의 확인란이 선택되지 않았는지 확인하십시오. 모든 부수적인 통신은 줄여야 하며 일부 환경에서는 제한될 수 있습니다. 계정 아바타는 사용자가 직접 업로드할 수 있습니다.

이 섹션의 설정은 사용자의 특정 표준을 집행하는 데 도움을 주기 위한 것입니다. 다양한 시나리오가 너무 많고 다양하기 때문에 자신의 정책을 집행하기 위한 변경 사항을 검토하고 적용해야 합니다. 자세한 내용은 계정 및 제한 설정 문서를 검토하고 자신의 정책을 집행하기 위한 변경 사항을 적용하십시오.

가입 제한

강화된 인스턴스에서 오픈 가입이 비활성화되어 있는지 확인하십시오. 가입 가능 확인란이 선택되지 않았는지 확인하십시오.

이메일 확인 설정에서 Hard를 선택하십시오. 사용자가 이메일 주소를 확인하도록 강제하기 위해선 지금으로써 강제화됩니다.

최소 암호 길이(문자 수)의 기본 설정은 12이며, 추가 인증 기술이 사용된다면 이 설정이 적절합니다. 암호는 복잡해야 합니다. 따라서 다음 4가지 확인란을 활성화할 수 있도록 하십시오:

  • 숫자 필요
  • 대문자 필요
  • 소문자 필요
  • 기호 필요

모든 사용자가 동일한 도메인 이메일 주소를 사용하는 특정 조직에 속한다면 가입할 수 있는 도메인 허용에 그 도메인을 목록에 추가하십시오. 이렇게 함으로써 다른 도메인 이메일 주소를 가진 사용자가 가입하는 것을 방지할 수 있습니다.

자세한 정보는 가입 제한을 참조하십시오. SSH 설정에 대한 정보는 SSH keys restrictions을 참조하십시오.

로그인 제한

모든 사용자에 대해 이중 인증(2FA)을 활성화해야합니다. 이중 인증(2FA) 옆의 확인란이 선택되었는지 확인하세요.

이중 인증 유효기간(Two-factor grace period)의 기본 설정은 48시간입니다. 이를 8시간과 같은 훨씬 낮은 값으로 조정해야 합니다.

관리자 모드 활성화 옆의 확인란이 선택되어 관리자 모드가 활성화되도록 확인하세요. 이는 관리자 액세스 권한을 가진 사용자들이 관리 작업을 수행하기 위해 추가 인증을 사용해야 하도록 하며, 사용자에 의한 추가 2FA 적용을 강제합니다.

알 수 없는 위치에서의 로그인 이메일 알림에서 이메일 알림 활성화가 선택되어 있는지 확인하세요. 이는 알 수 없는 위치에서의 로그인이 발생할 때 사용자에게 이메일을 보냅니다.

더 자세한 정보는 로그인 제한을 참조하세요.

통합(Integrations)

  1. 왼쪽 사이드바에서 맨 아래에서 관리자(Admin)를 선택합니다.
  2. 설정 > 통합(Integrations)을 선택합니다.

일반적으로, 통합은 관리자가 제어하고 사용량을 모니터링하는 한, 견고한 환경에서 괜찮습니다. 외부 시스템에서 작업을 트리거하고 일반적으로 로컬 프로세스나 인증된 사용자가 수행하는 작업의 수준을 제한하거나 감사할 수 있는 통합에 주의해야 합니다.

지표 및 프로파일링(Metrics and profiling)

  1. 왼쪽 사이드바에서 맨 아래에서 관리자(Admin)를 선택합니다.
  2. 설정 > 지표 및 프로파일링(Metrics and profiling)을 선택합니다.

견고화의 주요 초점은 사용 통계입니다:

  • 버전 확인 활성화가 선택되어 있는지 확인해야 합니다. 이를 통해 GitLab의 최신 버전을 실행 중인지 확인하며 새로운 기능 및 보안 패치가 자주 나오므로 이를 통해 최신 상태를 유지할 수 있습니다.

  • 환경이 격리되어 있거나 조직 요구 사항이 데이터 수집 및 통계 보고를 소프트웨어 공급 업체로 제한한다면 서비스 핑 활성화 기능을 비활성화해야 할 수 있습니다. 어떤 데이터가 수집되는지 알아보고 정보에 근거하여 결정을 내리기 위해 서비스 핑을 참조하세요.

네트워크

  1. 왼쪽 사이드바에서 맨 아래에서 관리자(Admin)를 선택합니다.
  2. 설정 > 네트워크(Network)를 선택합니다.

속도 제한을 활성화하는 설정의 경우, 선택되어 있는지 확인하세요. 기본값은 적절합니다. 또한 모든 접근을 가능하게 하는 다양한 설정이 있으며, 이러한 설정은 모두 지워져야 합니다.

이러한 조정을 한 후에는 성능 및 사용자 요구를 충족시키기 위해 시스템을 더 정교하게 조정해야 할 수 있으며, 이는 속도 제한 비활성화 및 조정 또는 액세스 활성화가 필요할 수 있습니다. 아래의 중요한 사항을 몇 가지 염두에 두세요:

  • 아웃바운드 요청에서, 특정 시스템에 대한 액세스를 허용해야 하는 경우, IP 주소 또는 호스트 이름을 지정하여 해당 시스템에 대한 액세스를 제한할 수 있습니다. 또한, 이 섹션에서 아무런 액세스를 허용하지 않는 한, DNS 재결합 공격 보호 강화가 선택되어 있는지 확인하세요.

  • 노트 속도 제한사용자 API 속도 제한에서 필요한 경우 특정 사용자를 해당 제한에서 제외할 수 있습니다.