Hardening - 애플리케이션 권장사항

일반 강화 가이드라인은 주요 강화 문서를 참조하십시오.

GitLab 인스턴스의 강화 권장 내용을 웹 인터페이스로 제어할 수 있습니다.

시스템 후크

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

일반적으로 강화된 환경에서는 내부 정보가 시스템 외부로 전송되거나 저장되지 않습니다. 오프라인 환경 시스템의 경우, 이것이 의미됩니다. 시스템 후크는 환경 내부의 로컬 이벤트가 트리거에 따라 환경 외부로 정보를 통신할 수 있는 방법을 제공합니다.

이 기능에 대한 사용 사례는 지원되며, 특히 원격 시스템을 통해 환경을 모니터링할 때 유용합니다. 그러나 시스템 후크를 배포할 때에는 극도의 주의가 필요합니다. 강화된 시스템의 경우, 오프라인 환경으로 설정되어 있다면 서로 통신할 수 있는 신뢰받는 시스템들의 퍼미터가 강제되어야 하므로, 어떠한 후크 (시스템, 웹, 또는 파일)도 해당 신뢰받는 시스템들과만 통신하도록 설정되어야 합니다. 시스템 후크 통신을 위해 TLS를 강력히 권장합니다.

푸시 규칙

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

다음의 항목이 선택되어 있는지 확인하세요:

  • 검증되지 않은 사용자 거부
  • 사용자가 git push로 Git 태그를 제거하는 것을 허용하지 않음
  • 커밋 작성자가 GitLab 사용자인지 확인
  • 비밀 파일 푸시 방지

이러한 조정은 권한이 부여된 사용자에 의해 제한되는 푸시를 지원합니다.

배포 키

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

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

일반

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

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

가시성 및 액세스 제어

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

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

프로젝트, 스니펫 또는 그룹에 특정 액세스 권한이 부여된 사용자만 이러한 리소스에 액세스할 수 있습니다. 이는 필요에 따라 나중에 조정하거나 생성 시에 할 수 있습니다. 이는 정보의 실수로 또는 악의적인 공개를 방지하는 데 도움이 됩니다.

보안 정책 및 포지션에 따라 제한된 가시성 수준공개로 설정하고 추가적으로, 이로 인해 인증되지 않은 사용자가 사용자 프로필을 볼 수 없게 됩니다.

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

전형적으로 배포는 활성화된 Git 액세스 프로토콜SSH 및 HTTP(S)로 설정되어 있습니다. 그러나 사용자가 사용하지 않는 Git 프로토콜 중 하나라면 해당 프로토콜을 SSH 전용 또는 HTTP(S) 전용으로 설정하십시오. 이는 공격 표면을 줄이는 데 도움이 됩니다.

SSH 키타입의 경우 다음이 우선권을 가집니다: ED25519 (및 ED25519-SK), RSA, 그리고 ECDSA (및 ECDSA-SK). ED25519RSA와 동일한 수준의 안전성으로 간주됩니다. 그러나 RSA가 2048비트 이상으로 설정된 경우에만 해당합니다. 그러나 ED25519 키는 더 작으며 알고리즘이 훨씬 더 빠릅니다.

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

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 키 제한을 참조하십시오.

계정 및 제한

보안을 강화하기 위해 Gravatar 활성화 옆의 확인란이 선택되지 않도록 합니다. 불필요한 통신은 제한되어야 하며, 일부 환경에서는 제한될 수도 있습니다. 계정 아바타는 사용자가 수동으로 업로드할 수 있습니다.

이 섹션의 설정은 사용자에게 고유한 표준을 강제로 시행하는 데 도움을 주도록 의도되었습니다. 여러 시나리오가 너무 많고 다양하기 때문에 사용자에게 시행하도록 변경을 적용하기 전에 계정 및 제한 설정 설명서 을 검토하고 변경사항을 시행해야 합니다.

가입 제한

강화된 인스턴스에서 개방된 가입이 비활성화되었는지 확인하세요. 가입 활성화 확인란이 선택되지 않도록 하세요.

이메일 확인 설정에서 Hard가 선택되었는지 확인하세요. 사용자가 이메일 주소를 확인한 후에만 액세스가 허용됩니다.

최소 비밀번호 길이(문자 수) 기본 설정은 12이며, 추가 인증 기술을 사용하는 경우에는 좋습니다. 비밀번호는 복잡해야 하므로 모든 다음 확인란이 선택되었는지 확인하세요:

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

모든 사용자가 동일한 조직에 속하고 이메일 주소에 특정 도메인을 사용하는 경우 가입 허용 도메인에 해당 도메인을 나열하세요. 이렇게 함으로써 다른 도메인의 이메일 주소를 가입하는 것을 방지할 수 있습니다.

더 자세한 정보는 가입 제한을 참조하세요.

로그인 제한

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

두 요소 유예 기간 기본 설정은 48시간입니다. 이를 8시간과 같이 훨씬 낮은 값으로 조정해야 합니다.

관리자 모드 활성화 옆의 확인란이 선택되어 관리자 모드가 활성화되었는지 확인하세요. 이로써 관리자 권한을 가진 사용자가 관리 작업을 수행하기 위해 추가 인증을 사용해야 하므로 사용자에게 추가 2FA가 강제됩니다.

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

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

통합

  1. 좌측 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
  2. 설정 > 통합을 선택합니다.

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

메트릭스 및 프로파일링

  1. 좌측 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
  2. 설정 > 메트릭스 및 프로파일링을 선택합니다.

강화를 위한 주요 관심사는 사용 통계입니다:

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

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

네트워크

  1. 좌측 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
  2. 설정 > 네트워크를 선택합니다.

속도 제한을 활성화하는 설정이 있는 경우, 해당 옵션을 선택하도록 합니다. 기본값은 적합해야 합니다. 추가적인 액세스를 가능하게 하는 많은 설정이 있으며, 이러한 설정은 모두 해제되어야 합니다.

이러한 조정을 수행한 후 시스템을 성능 및 사용자 요구 사항에 맞게 최적화해야 할 수 있습니다. 이를 위해서는 속도 제한을 비활성화하거나 조정하거나 액세스를 활성화해야 할 수 있습니다. 기억해야 할 몇 가지 중요한 사항은 다음과 같습니다:

  • 아웃바운드 요청에서는 특정 시스템에 대한 액세스를 필요로 하는 경우 IP 주소 또는 호스트 이름을 지정하여 해당 시스템에만 액세스를 제한할 수 있습니다. 또한 이 섹션에서 어떠한 경우에도 DNS 재바인딩 공격 보호 강화가 선택되었는지 확인하세요.

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