강화를 위한 애플리케이션 권장 사항

일반적인 강화 가이드라인은 주 문서를 참조하세요.

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

시스템 후크

  1. 왼쪽 사이드바 하단에서 Admin을 선택합니다.
  2. System hooks를 선택합니다.

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

이 기능의 사용 사례는 지원되며, 특히 원격 시스템을 통한 시스템 모니터링에 유용합니다.

그러나 시스템 후크를 배포할 때는 극도로 주의해야 합니다. 강화된 시스템의 경우 오프라인 환경으로 의도된 경우 서로 통신할 수 있는 신뢰할 수 있는 시스템의 경계를 강화해야 하며, 모든 후크(시스템, 웹 또는 파일)는 이러한 신뢰할 수 있는 시스템과만 통신해야 합니다. 시스템 후크를 통한 통신에는 TLS를 강력히 권장합니다.

푸시 규칙

  1. 왼쪽 사이드바 하단에서 Admin을 선택합니다.
  2. Push rules를 선택합니다.

다음 항목이 선택되었는지 확인합니다:

  • Reject unverified users
  • Do not allow users to remove Git tags with git push
  • Check whether the commit author is a GitLab user
  • Prevent pushing secret files

이 조정은 인증된 사용자의 푸시를 제한하는 데 도움이 됩니다.

배포 키

  1. 왼쪽 사이드바 하단에서 Admin을 선택합니다.
  2. Deploy keys를 선택합니다.

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

일반 설정

  1. 왼쪽 사이드바 하단에서 Admin을 선택합니다.
  2. Settings > General을 선택합니다.

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

가시성 및 접근 제어

다음 설정의 기본값은 Private입니다:

  • Default project visibility
  • Default snippet visibility
  • Default group visibility

특정 프로젝트, 스니펫 또는 그룹에 대한 액세스 권한이 부여된 사용자만 이러한 리소스에 접근할 수 있습니다. 이는 필요에 따라 나중에 조정할 수 있으며, 생성 시점에도 설정할 수 있습니다. 이는 정보의 우발적 또는 악의적 노출을 방지하는 데 도움이 됩니다.

보안 정책 및 태세에 따라 Restricted visibility levelPublic으로 설정할 수도 있습니다. 이는 비인증된 사용자가 사용자 프로필을 볼 수 없도록 합니다.

Import sources에서는 실제로 필요한 소스만 선택하세요.

일반적인 배포에서는 Enabled Git access protocolsBoth SSH and HTTP(S)로 설정되어 있지만, 사용자가 Git 프로토콜 중 하나를 사용하지 않는 경우 그에 따라 Only SSH 또는 Only HTTP(S)로 설정하세요. 이는 공격 표면을 줄이는 데 도움이 됩니다.

SSH 키 유형으로는 다음과 같은 것이 선호됩니다: ED25519 (및 ED25519-SK), RSA, ECDSA (및 ECDSA-SK) 순서입니다. ED25519RSA가 2048비트 이상으로 설정된 경우 RSA와 동일하게 안전한 것으로 간주되지만, ED25519 키는 더 작고 알고리즘이 훨씬 빠릅니다.

ED25519-SKECDSA-SK는 둘 다 -SK로 끝나며 “Security Key”를 의미합니다. -SK 유형은 FIDO/U2F 표준과 호환되며, 예를 들어 YubiKeys와 같은 하드웨어 토큰과의 사용에 관련됩니다.

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

GitLab이 FIPS 모드에서 실행 중인 경우 다음을 사용합니다:

  • FIPS 모드에서 실행 중인 경우:
    • RSA를 사용하고 Must be at least 2048 bits로 설정합니다.
    • ECDSA (및 ECDSA-SK)를 사용하고 Must be at least 256 bits로 설정합니다.
    • 모든 다른 키 유형은 Are forbidden으로 설정합니다. RSAECDSA는 모두 FIPS 사용이 승인되었습니다.
  • FIPS 모드에서 실행되지 않는 경우, ED25519를 사용해야 하며 RSA도 사용할 수 있습니다:
    • ED25519 (및 ED25519-SK)를 Must be at least 256 bits로 설정합니다.
    • RSA를 사용하는 경우 Must be at least 2048 bits로 설정합니다.
    • 모든 다른 키 유형은 Are forbidden으로 설정합니다.
  • 새로운 사용자 그룹을 위한 인스턴스를 설정하는 경우, 추가 보안을 위해 최대 비트 설정을 사용한 사용자 SSH 키 정책을 정의하세요.

강화된 환경에서는 일반적으로 RSS 피드가 필요하지 않으며, Feed token에서 Disabled feed token 체크박스를 선택합니다.

모든 사용자가 특정 IP 주소에서 오는 경우, Global-allowed IP ranges를 사용하여 해당 주소만 특별히 허용하세요.

가시성 및 접근 제어에 대한 더 자세한 내용은 가시성 및 접근 제어 문서를 참조하세요. SSH 설정에 대한 정보는 SSH 키 제한을 확인하세요.

계정 및 제한

강화 목적으로 Gravatar enabled 옆의 체크박스가 선택되지 않았는지 확인하세요.

여분의 커뮤니케이션은 축소되어야 하며, 일부 환경에서는 제한될 수 있습니다. 계정 아바타는 사용자가 수동으로 업로드할 수 있습니다.

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

가입 제한

하드닝된 인스턴스에서 오픈 가입이 비활성화되어 있는지 확인하세요. Sign-up enabled 체크박스가 선택되지 않았는지 확인하세요.

Email confirmation settings에서 Hard가 선택되어 있는지 확인하세요. 이제 이메일 주소에 대한 사용자 확인이 시행되어 접근이 허용됩니다.

Minimum password length (number of characters) 기본 설정은 12로, 추가 인증 기술이 사용되는 한 적합합니다. 비밀번호는 복잡해야 하므로, 다음 네 개의 체크박스가 선택되었는지 확인하세요:

  • Require numbers
  • Require uppercase letters
  • Require lowercase letters
  • Require symbols

모든 사용자가 특정 도메인을 사용하는 동일한 조직에 속하는 경우 Allowed domains for sign-ups에 해당 도메인을 나열하세요. 이렇게 하면 다른 도메인의 이메일 주소를 가진 사용자가 가입하지 못하게 됩니다.

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

로그인 제한

모든 사용자에게 2단계 인증 (2FA)을 활성화해야 합니다. Two-factor authentication (2FA) 옆의 체크박스가 선택되었는지 확인하세요.

Two-factor grace period의 기본 설정은 48시간입니다. 이는 8시간과 같은 더 낮은 값으로 조정해야 합니다.

Enable Admin Mode 옆의 체크박스가 선택되어 Admin Mode가 활성화되도록 해야 합니다. 이를 통해 Admin 접근 권한이 있는 사용자들은 관리 작업을 수행하기 위해 추가 인증을 사용해야 하며, 사용자의 추가 2FA를 시행하게 됩니다.

Email notification for unknown sign-ins에서 Enable email notification이 선택되어 있는지 확인하세요. 이는 인식되지 않은 위치에서 로그인 발생 시 사용자에게 이메일을 전송합니다.

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

통합

  1. 왼쪽 사이드바에서 하단에 있는 Admin을 선택합니다.
  2. Settings > Integrations를 선택합니다.

일반적으로 관리자가 사용을 제어하고 모니터링하는 한, 하드닝된 환경에서도 통합은 괜찮습니다. 외부 시스템에서의 조치를 허용하는 통합에는 주의해야 하며, 일반적으로 로컬 프로세스나 인증된 사용자가 수행할 때 제한하거나 감사할 수준의 접근이 필요합니다.

메트릭 및 프로파일링

  1. 왼쪽 사이드바에서 하단에 있는 Admin을 선택합니다.
  2. Settings > Metrics and profiling을 선택합니다.

하드닝의 주요 초점은 Usage statistics입니다:

  • Enable version check가 선택되었는지 확인하세요. 이는 GitLab의 최신 버전을 실행하고 있는지 확인하며, 새로운 기능과 보안 패치가 포함된 새로운 버전이 자주 출시되므로, 최신 상태를 유지하는 데 도움이 됩니다.

  • 환경이 격리되었거나 조직의 요구 사항이 소프트웨어 공급자에게 데이터 수집 및 통계 보고를 제한하는 경우, Enable service ping 기능을 비활성화해야 할 수 있습니다. 수집되는 데이터에 대한 정보를 바탕으로 정보에 입각한 결정을 내리기 위해 자세한 내용은 service ping을 참조하세요.

네트워크

  1. 왼쪽 사이드바에서 맨 아래에 있는 관리자를 선택합니다.

  2. 설정 > 네트워크를 선택합니다.

비율 제한을 활성화하는 모든 설정은 반드시 선택되어 있어야 합니다. 기본값은 괜찮습니다. 또한 접근을 활성화하는 설정이 많이 있으며, 이 모든 설정은 해제되어야 합니다.

이러한 조정을 마친 후, 성능 및 사용자 요구 사항을 충족하도록 시스템을 세부 조정할 수 있으며, 이에 따라 비율 제한을 비활성화하거나 조정하거나 액세스를 활성화해야 할 수도 있습니다. 아래의 몇 가지 주목할 점을 기억하세요:

  • 아웃바운드 요청에서 제한된 수의 시스템에 대한 액세스를 열어야 하는 경우, IP 주소나 호스트명을 지정하여 해당 시스템으로만 액세스를 제한할 수 있습니다. 또한 이 섹션에서 모든 액세스를 허용하는 경우에는 DNS 재결합 공격 방지 강제 적용을 선택했는지 확인하세요.

  • 노트 비율 제한사용자 API 비율 제한에서 필요에 따라 특정 사용자를 이러한 제한에서 제외할 수 있습니다.