GitHub 보안 강화 및 위협 모니터링

GitHub는 최근 저장소 수가 10억개를 돌파할 정도로 코드 형상관리와 협업에 널리 사용되고 있지만, 코드 저장소가 외부에 존재하는만큼 보안 관리에 매우 주의를 기울여야 합니다. 이 글에서는 조직 차원에서 GitHub를 안전하게 운영하기 위한 보안 설정 강화 방안과 감사 체계 수립 방법을 소개합니다.

2FA 적용

GitHub 계정에 반드시 2단계 인증을 설정하고 가능하다면 FIDO2 기반 하드웨어 키를 사용해야 합니다. GitHub는 2023년말까지 전체 계정에 대해 2FA 설정을 강제하겠다고 공지했지만, 여러가지 이유로 여전히 2FA가 활성화되지 않은 계정들이 존재합니다.

GitHub에서 오른쪽 상단의 계정 사진을 클릭하고 Your organizations 메뉴를 클릭한 후, 조직 목록에서 조직을 선택하고, People 메뉴를 클릭하면 아래와 같이 조직에 속한 계정 목록과 2FA 적용 여부를 확인할 수 있습니다.

GitHub 계정 2FA 상태 확인

아직 2FA가 적용되지 않은 계정이 있다면 반드시 활성화하도록 조치해야 합니다. 엔드포인트가 침해당하는 경우에는 코드 유출을 피하기 어렵지만, 최소한 크리덴셜 유출로 인한 사고는 막을 수 있습니다.

IP 접근 제어

회사 사무실의 공인 IP 주소나 지정된 IP 주소에서만 GitHub 저장소에 접근할 수 있도록 제한해야 합니다. 사고가 발생하더라도 네트워크 방화벽 또는 엔드포인트 보안 솔루션의 트래픽 로그를 통해 침해 또는 유출 경로를 추적하려면 저장소에 접근 가능한 위치를 보안 감사가 수행되는 범위로 제한해야 합니다.

GitHub에서 오른쪽 상단의 계정 사진을 클릭하고 Your organizations 메뉴를 클릭한 후, 조직 목록에서 조직 이름 옆의 Settings 버튼을 클릭하면 설정 메뉴로 이동하게 됩니다. 여기에서 Security 분류의 Authentication security 메뉴를 클릭하면 IP allow list 항목에서 아래와 같이 특정 IP 주소에서만 접근을 허용하도록 설정할 수 있습니다.

GitHub IP 접근 제어 설정

  • 하단 목록에 IP address와 Description을 기입하여 사무실 공인 IP 주소를 추가합니다.
  • Enable IP allow list 체크박스를 클릭하고 Save 버튼을 클릭합니다.

감사 로그 모니터링

Organization의 Settings 대메뉴에서 왼쪽의 Logs 메뉴 그룹을 펼치면, Audit log 메뉴가 표시됩니다. Audit log 메뉴를 클릭하면 아래와 같이 감사 로그를 확인할 수 있습니다.

GitHub 감사 로그 조회

다만 감사 로그에서 가장 중요한 부분이 행위자의 출발지 IP 주소인데, 엔터프라이즈 플랜 사용 여부와 별개로 GitHub 영업 접촉하여 연간 결제를 통해 엔터프라이즈 계정으로 전환해야 아래와 같이 출발지 IP 주소 표시를 활성화할 수 있습니다.

GitHub 감사 로그 출발지 IP 표시 활성화

로그프레소 클라우드 기반 관제

그러나 문제는 SaaS 보안을 이런 식으로 수작업으로 관리하기는 현실적으로 어렵다는 것입니다. 보안 담당자는 수십 종의 보안 장비와 SaaS를 동시에 모니터링해야 합니다.

로그프레소 클라우드를 도입하고 GitHub 앱을 설치하면 아래와 같이 누가 코드 저장소에서 git clone, git fetch 혹은 GitHub 웹사이트에서 ZIP 다운로드를 수행했는지 한 눈에 확인할 수 있습니다.

GitHub 다운로드 대시보드

Dependabot이 활성화된 경우 조직 내 전반적인 공급망 보안 위협 현황을 가시적으로 확인할 수 있습니다.

GitHub 취약점 대시보드

로그프레소 쿼리를 이용하면 GitHub 감사 로그에 대해 다양한 통계 분석을 손쉽게 수행할 수 있습니다.

table duration=12mon GITHUB 
| eval country = valueof(actor_location, "country_code") 
| search actor == "ACME-*" and country == "VN"
| stats count by actor, actor_ip

GitHub 계정별 접근 IP 주소 통계

대시보드 이외에도 실시간 또는 배치 탐지 시나리오를 통해 아래와 같은 다양한 유형의 위협 탐지를 수행할 수 있습니다.

  • 조직 관리자(Owner)가 추가, 삭제된 경우
  • 조직 관리자 권한이 계정에 부여, 회수된 경우
  • 새로운 계정이 조직에 추가된 경우
  • 특정 GitHub 계정의 접근 IP 주소가 변경된 경우
  • 팀 소속 계정 추가, 삭제 등 권한이 변경된 경우
  • API 키나 OAuth 앱이 추가, 삭제된 경우
  • 동일한 API 키로 짧은 시간에 많은 수의 저장소 코드를 다운로드한 경우

아래는 계정 및 PAT 토큰별 접근한 저장소 통계를 산출하는 쿼리의 예시입니다.

table duration=12mon GITHUB 
| eval country = valueof(actor_location, "country_code") 
| search programmatic_access_type == "Personal access token (classic)" and isnotnull(token_id)
| stats dc(repo) as repo_count, values(country) as country, values(repo) as repos, min(_time) as first_seen, max(_time) as last_seen by actor, token_id 
| sort -repo_count
| eval country = strjoin(", ", country), repos = strjoin(", ", repos)

GitHub 개인 액세스 토큰을 이용한 저장소 접근 통계

GitHub 보안은 선택이 아닌 필수

GitHub는 개발 생산성과 협업을 극대화하는 플랫폼인 만큼, 보안을 저해하지 않으면서도 지속 가능한 보호 체계를 설계해야 합니다. 보안은 일회성 점검이 아니라, 주기적인 리뷰, 사용자 교육, 자동화된 통제 및 가시화 체계가 동반되어야만 실효성을 가질 수 있습니다.

특히 SaaS 기반의 GitHub 환경에서는 엔드포인트 보안, 사용자 인증, 접근 제어, 감사 로그 분석 등 다양한 보안 요소를 통합적으로 관리하는 것이 중요합니다. 이를 위해서는 조직의 보안 정책에 맞는 도구와 프로세스를 도입하고, 지속적으로 개선해 나가는 노력이 필요합니다.

GitHub 보안을 강화하기 위한 추가적인 리소스나 가이드가 필요하시면 언제든지 문의해 주세요.

둘러보기

더보기

[칼럼] 제로 트러스트 시대, 벤더 간 담장을 낮춰라

챗GPT와 딥시크 등 오픈소스 AI 모델의 성능이 빠르게 향상되면서, 앞으로 1~2년 내 사람의 개입 없이 AI 에이전트가 위협 탐지부터 대응까지 수행하는 시대가 현실화할 것이며, 이에 대응하기 위해 벤더 간 협력은 필수다.

2025-04-09

로그프레소 CTI 리포트_Vol.11

제11호에서는 지난 1분기에 발생한 위협 분석과 함께 ASM을 활용한 통합 보안 전략에 대해 다루었습니다.

2025-04-17