서비스 보안 총론

보안의 범주

  • 시스템에 대한 권한, 데이터 등을 탈취하거나 마비 등 비정상적인 상황을 유발할 수 있는 잠재적 요소를 모두 포함 한다.

논의 대상

엔드 포인트 보안 : 네트워크상 모든 전송은 암호화 되어 전송되어야 한다.

💡
외부망으로 접속 가능한 모든 시스템 엔드포인트 대상

배경

  1. 초기 네트워크 설계는 보안 개념이 없었음. 따라서 평문 전송을 표준으로 삼아 http, telnet 등의 프로토콜이 설계
  2. 네트워크상 패킷(데이터가 이동하는 단위)는 경로가 사전에 정해져 있는 것이 아니라 여러 장비를 타고 다니면서 최적의 경로를 그때 그때 판단함
    1. 따라서 우리가 A -> B로 통신 할 때 C, D, E등 다양한 장비를 통하는 것이 일반적.
    2. 전송이 평문인 경우
      1. 누구든 해당 내용을 확인해 볼 수 있고
      2. 손쉽게 변조가 가능함

문제사항

  • 2010년대 이후 모든 브라우저는 HTTP 평문 전송에 대한 경고를 강화하고 속도상 불이익도 크게 주고 있음.
    • 대규모 파일을 다운받아야 하는 경우 핸디캡이 큼
    • 경고를 계속 무시하고 진행 시킴에 따라 보안 불감증 유발
  • HTTP로 사용자 ID/Password를 전송하는 것은 여러가지 문제가 있음
    • 사용자 계정 보안에서 후술
  • 표준 포트 (HTTPS:443)을 사용하지 않고 커스텀 포트를 사용 하는 것은 사용자에게 불편함과 오해를 유발할 수 있음

제안(강제사항 권고)

  • 모든 외부 통신은 "HTTPS" 및 "WSS" 등 Security가 포함된 프로토콜만 사용하고, 최신 암호화 로직(Chiper)를 사용해야 한다.
  • HTTPS의 경우 커스텀 포트를 지양하고 443 포트를 사용한다.
    • 포트포워딩을 통해 오픈하고 있음. 커스텀 포트로 오픈하는 경우
      • 사용자 입장에서 주소 뒤 숫자까지 외워야 하는 불편함
      • 패킷 이동에 대한 관제가 어려움
      • 무엇보다 외부 공격의 '접촉 면적이 넓어짐' 아래 예시와 같이 포트 스캔으로 매우 쉽게 공격 포인트 및 프로토콜을 확인할 수 있음
  • DNS record 중 보안과 관련된 값들을 설정한다
    • DNSKEY, DS 등

해결책

  • 프록시를 이용해서 엔드 포인트를 단일화 하고, 접속한 url을 기준으로 분기하는 L7 스위치로 동작시킨다.
    • gsim.hanmaceng.co.kr -> gsim 서비스로 연결projectmaster.hanmaceng.co.kr -> 프로젝트 마스터 서비스로 연결
    • 변경 전 (현상태)
  • 변경 후
  • 프록시 운영 방법
    • CISCO 장비[^CISCO] : IOS의 설정
    • Nginx Proxy Manager 등 프록시 서비스 이용

네트워크(인프라) 보안: 사내망의 모든 트래픽은 통제 가능해야 한다

문제 사항

  • 엔터프라이즈 네트워크의 기본 조건 : Full Managed 및 관제(Audit)
  • 예상 보안위헙 시나리오 대응 미미
    • 특정 사내 IP로부터 외부로 대량의 데이터 전송 감지
    • 특정 url (abc.example.com)으로 대규모 트레픽 요청(ddos공격) 감지
  • 대응 가능한 장애 대응
    • Hairpin(loopback)에 의한 네트워크 성능 저하 및 순단 인지 및 조치.
      • 미인가 공유기 사용 등을 인지할 필요.

제안(강제사항 권고)

  • 네트워크 통제권을 사내에 두고, 인하우스 엔지니어가 통제할 수 있어야 함
    • 포트포워딩 오픈 같은 단순 작업이 하청업체 담당자 부재 이슈로 2박 3일 이상 걸리는 것은 비정상
  • VPN은 SSH Tunneling 기반으로 구성. 엔드 포인트 모니터링 통합으로 리소스 절감

해결책

  • 네트워크 인프라 재설계
    • 현재 네트워크 구성도 ( Topology)가 있어야 대책 마련이 가능
    • Router / Switch (L3, L4, L7) 의 모델 및 처리량 검토 필요
  • 사내 관리자가 관리 프로그램을 운영할 수 있는 여건 마련 필요
  • 원격근무 혹은 현장에서 사내 인프라에 접근할 수 있는 표준 VPN 운영 안 필요.

사용자 인증(Auth) 시스템: 사용자 계정은 하나의 시스템에서 전담하며, 추가/삭제/세부권한 부여가 자유로워야 한다.

문제사항

  • ERP의 사용자 계정이 다양한 시스템의 로그인으로 활용되고 있으나 Auth의 분리가 이루어 져있지 않고, 가족사 외의 사용처에 대해서는 수동작업이 빈번하게 필요함
  • Object 별 권한 및 그룹 상속 권한을 일원화 해 설계할 필요
  • 비표준 설계로 평문으로 ID/Password 전송 중
  • 단방향 암호로 저장되어야 하는 사용자 계정 비밀번호 암호

해결책

  • Open ID Connection (이하 OIDC)에 따른 Auth 구조 설계
    • Core Auth로 Authentik (오픈소스) 활용 검토
    • LDAP, Keberose 등 레거시 인증 시스템 제거 시나리오 검토
  • 퇴사시 1개의 시스템에서만 삭제하면 모두 적용 될 수 있도록 설계
  • 평문으로 ID/Password 전송 금지(https와 별개)
    • JWT등 암호화 전송 강제화
  • 사용자 암호는 Argon2로 모두 마이그레이션 후 기존 암호 파기

테넌트 설계: 다양한 조직/그룹/개별사용자로 데이터는 구분하되, 동일 리소스에서 활용하고, 데이터 혼입을 방지하는 시스템 설계를 해야한다.

배경

  • B2B 서비스에서 A고객사와 B고객사의 데이터가 혼입혼출되는 사태가 발생시 소송 및 고객 이탈로 기업 파산까지도 가능
  • 가장 손쉬운 해결책은 싱글 테넌트 - 고객사가 하나 늘어날 때마다 물리 장비를 추가로 사서 해당 고객 전용으로 배정하는 방법 - 유지이나 자원이 매우 비효율적으로 활용되고, 하드웨어의 통제도 어려움
  • 이를 해결하기 위해 멀티 테넌트를 고려해 서비스들이 설계 되었는지 아키텍쳐 차원의 재검토가 필요함.
    • 오브젝트 단위로 Path의 Hash화. DB구조 설계 등이 그 대상

데이터 백업 : 추후 논의

데이터 복구 : 추후 논의