⇒ 보안은 안전을 지키는 일
⇒ 정보 보안
⇒ 보안의 필수 요소
⇒ 정보 보안에서는 3요소 이외에 Authenticity(진정성), Accountability(책입성), Non Repudiation(부인 방지), Reliability(신뢰성) 유지를 정보 보안 활동 중 하나로 정의하기도 한다.
⇒ 조직의 지적 자산을 보호하는 절차(기밀성), 인가된 사용자만 정확하고 완전한 정보(무결성)로 필요할 때 접근할 수 있도록 하는(가용성) 일련의 작업
기존 IT와의 차이점
⇒ 클라우드 자산 관리와 보호에서 한가지 차이는 클라우드 환경의 물리적 자산과 보호에 대해서는 일반적으로 걱정할 필요가 없다.
⇒ 프로비저닝한 클라우드 자산 구축 프로세스에 IT 그룹이 참여
클라우드 자산 유형
⇒ 컴퓨터 자산
가상 머신
클라우드 가상 머신이 온프레미스 가상 머신과는 다른데 클라우드 환경에서는 물리적 시스템을 다른 클라우드 고객과 공유
동일한 물리적 시스템을 사용하는 다른 고객들이 모든 프로세서 시간, 네트워크 대역폭, 스토리지 대역폭을 모두 소진 시킬 수 있다. - 불편한 이웃 문제
공유 문제에서 발생할 수 있는 위험
하이퍼비이저 브레이크아웃
가상 머신 이스케이프로 공격
가상 머신의 공격자가 하이퍼 바이저를 위반하고 물리적 시스템을 완전히 통제
하이퍼바이저는 가상 시스템의 입력을 받지 않도록 설계되었기 떄문에 공격하기가 쉽지 않다.
가상화된 스토리지나 네트워크 인터페이스에서 취약점을 찾아야 한다.
백채널 공격은 가상 머신 뒤의 인프라스트럭쳐를 공격하는 것
사이드 채널 공격
실제 시스템에서 코드를 실행할 때 발생하는 의도적인 부작용을 기반으로 한다.
동일한 하드웨어에서 실행 중일 때 공격자는 프로세서 명령이나 캐시 액세스타이밍을 유심히 관찰해서 가상 머신의 중요한 정보(암호나 암호화 키)를 추론할 수 있다.
(스펙터와 멜트다운이 작동하는 방식)
가상 머신을 관리할 떄 필요한 항목
운영체제 이름과 버전
플랫폼이나 미들웨어 소프트웨어 버전과 이름 : 가상 머신 위에 설치한 소프트웨어를 추적
가상 머신 상의 사용자 지정 애플리케이션 코드
가상 머신 IP 주소와 가상 머신이 속한 프라이빗 클라우드 네트워크
운영체제에 접근이 허용된 사용자, 운영체제와 별도로 플랫폼/미들웨어/애플리케이션에 접근이 허용된 사용
새로운 가상 머신을 생성하려고 복사되는 이미지나 템플릿도 관리
일부 클라우드 제공자들은 베어메탈(가상화를 사용하지 않고 하드웨어에 운영체제를 직접 설치) 시스템도 제공
컨테이너
컨테이너는 자신이 호스팅된 가상의 머신의 커널을 사용하며 운영체제와 함께 재공되는 기타 소프트웨어는 없을 수 있다.
가상 머신을 실행하는 하이퍼바이저는 공격 받는 범위가 적은 반면 모든 컨테이너에서 사용하는 공유 커널은 공격받는 범위가 훤씬 크다.
민감한 데이터가 데이터가 처리되는 컨테이너와 동일한 서버에 인터넷 사용자가 자신의 코드를 실행할 수 있는 컨테이너가 있으면 문제를 발생 시킬 수 있다.
컨테이너 분리는 시간이 지남에 따라 있어서 최근에는 seccomp와 같은 기술을 사용하는 시스템 호출을 점점 더 작게 제한할 수 있는 기술이 등장
기본 컨테이너 모델
컨테이너는 기술 수행에 필요한 최소 운영체제 구성 요소를 보유
각 컨테이너는 단일 기능만 수행해야 한다.
컨테이너는 불변(컨테이너는 일부 다른 구성 요소를 변경할 수 있다. - 스토리지 서비스에 데이터 쓰기, 스토리지는 컨테이너 자체와는 분리되어 운영)
컨테이너는 자신의 코드를 업데이트 하지 않도록 해야 한다. - 컨테이너를 업데이트 하는 것보다 삭제하고 업데이트 된 코드가 새로운 컨테이너를 만들도록 하는게 좋다.
컨테이너 오케스트레이션 시스템
컨테이너를 묶어 더 높은 수준의 기능을 수행하고 이렇게 묶은 것을 여러 개 복사하고 해당 복사본에 로드밸런싱을 수행하고 다른 구성 요소 간 통신을 쉽게 제공해주는 시스템
쿠버네티스 배포에서 주요 자산은 클러스터에 대한 접근을 통제하고 소프트웨어를 최신 상태로 유지하기 위한 것인데 취약점은 쿠버네티스에서 실행 중인 모든 파드를 손상시킬 수 있다.
쿠버네티스 파드는 하나 이상의 컨테이너를 포함하는데 커맨드라인이나 API를 사용해 파드와 파드를 구성하는 컨테이너를 추적 관리할 수 있어야 한다.
컨테이너 이미지를 관리해야 한다.
⇒ 서비스형 애플리케이션 플랫폼
⇒ 서버리스
⇒ 스토리지 자산
영구적 데이터 저장을 위한 자산
블록 스토리지
하드 드라이브의 클라우드 버전
서버에 작은 블록(16KB)으로 데이터를 사용할 수 있게 해준다.
AWS의 Elastic Block Storgae, Azure의 Virtual Disk, Google의 Persistent Disks 등
블록 스토리지에서의 보안 문제는 접근 관리로 블록 스토리지에 직접 접근할 수 있는 공격자는 해당 스토리지를 사용하는 서버가 가진 운영체제 수준의 통제를 우회할 수 있다.
파일 스토리지
데이터를 디렉토리와 파일로 구성
AWS의 Elastic File System, Azure FIles, Google CLoud Storage FUSE 등
접근 관리를 해주어야 하는데 파일 시스템 자체는 파일에 대한 접근 통제 목록(ACL - Access Control List)을 제공하지만 운영체제 자체에서 수행된다.
객체 스토리지
스토리지 측면에서 객체는 객체에 대한 메타데이터가 포함된 바이트 스트림이라는 점에서 Flat File과 유사
Flat FIle과 차이점
파일은 디렉토리 내에 디렉토리가 있을 수 있는 디렉토리에 저장되지만 객체는 버킷 내부에 다른 레벨의 구조 없이 모두 함께 버킷에 던져진다.
객체와 관련된 사용자 지정 메타데이터가 존재할 수 있는데 파일 시스템은 생성자, 생성 시간, 권한과 같은 파일 시스템이 제공하는 메타데이터 유형으로 제한
객체는 생성 후 변경할 수 없는데 업데이트 하려면 객체를 새 객체로 변경해야 한다.
객체 스토리지는 객체 스토리지 시스템에서 자체적으로 객체별 접근 통제를 제공
대부분의 객체 스토리지는 버킷에 대한 높은 수준의 정책과 특정 객체에 대한 개별 ACL과 같은 다양한 접근 통제 계층을 제공
AWS의 S3, Azure의 Blob Storage, Google Cloud Storage가 대표적인 서비스
이미지
이미지에 비밀번호 같은 중요한 정보를 저장하지 않아야 한다.
공격자가 이미지를 들여다보고 자격증명을 꺼내 사용할 수 없도록 이미지에 대한 접근을 통제하는 것이 바람직
클라우드 데이터베이스
데이터베이스 계층에서 접근 통제를 제공할 수 있고 데이터에 대해서 좀 더 세부적으로 통제 가능
Message Queue
소량의 데이터(256KB)를 다른 구성 요소에 전송할 수 있게 해주는 스토리지
publisher(게시)/subscriber(구독) 모델로 서로 전송
개인 식별 가능 정보와 같은 중요한 데이터가 포함 될 수 있기 때문에 메시지 큐에 대한 접근을 보호하는 것은 중요
이벤트 소싱 패턴을 이용하는 경우 메시지에서 지시를 받는 경우 메시지 큐에 쓰기 권한을 가진 공격자가 원치 않는 작업을 수행하게 만들 수 있다.
되도록이면 암호화 키나 암호와 같은 시크릿은 메시지 큐를 이용해서 전송되지 않도록 하는 것이 좋다.
구성 스토리지
많은 경우 클라우드의 배포는 코드와 구성을 통합
동일한 코드는 대개 애플리케이션의 다른 인스턴스 간에 공유되면 인스턴스는 다른 구성을 사용해 다른 영역이나 지역에 배치
구성 스토리지를 사용하면 이 구성 정보를 코드와는 별개로 보관할 수 있다.
HashiCorp Consul이나 AWS 시스템 관리 파라미터 스토어가 있다.
시크릿 구성 스토리지
다른 시스템에 접근하는데 사용할 수 있는 시크릿 데이터를 보관하도록 특별히 설계된 구성 스토리지의 하위 집합
코드와 구성을 분리하는 것이 좋은 습관인 것 처럼 시크릿에 대한 접근과 다른 구성 데이터를 분리하는 것도 좋은 방법
시크릿은 제한된 사람만이 볼 수 있다.
HashiCorp Vault , Keywhiz, 쿠버네티스 시크릿, AWS 시크릿 매니저 등이 있다.
암호 키 스토리지
암호 키는 데이터 암호화와 복호화에 사용되는 시크릿의 구체적 유형
특수 목적 서비스(마스터 키를 노출하지 않고 랩과 언랩 작업을 수행)에 사용하면 많은 이점이 있다.
인증서 스토리지
사용자의 개인키를 안전하게 저장
사용 중인 인증서 중 하나가 만료될 때 경고를 해줄 수 있다.
소스코드 스토리지와 배포 파이프라인
공격자가 배포 중 소스코드나 일부 아티팩트를 수정하지 못하도록 해야 한다.
네트워크 자산
가상 프라이빗 클라우드와 서브넷
어떤 서버에 대해 누구를 허용할 것인지에 대한 경계를 그리는 가장 높은 수준의 방법
VPC와 서브넷은 목록화 해서 잘 관리해야 한다.
콘텐츠 전송 네트워크
CDN(Content Delivery Network)을 사용하면 로우 레이턴시 이점을 이용해서 글로벌하게 콘텐츠를 배포할 수 있다.
CDN은 원본을 가지고 있다가 외부에서 요청을 가면 가까운 데이터센터에 캐싱을 해두었다가 다음 요청부터는 가까운 곳에서 다운로드 받도록 해주는 서비스
CDN 정보는 자산 내에서 민감하지 않지만 CDN에 접근할 수 있는 공격자는 악성 코드, 비트코인 채굴자 또는 DDoS 공격 코드로 콘텐츠에 해를 가할 수 있다.
DNS 레코드
DNS 레코드와 이를 등록해두는데 사용하는 레지스터를 추적해야 한다.
TLS(Transport Layer Security) 연결은 스푸핑에 대한 보호를 제공하지만 쓰기 때문에 일부 브라우저는 TLS로 기본 설정이 되어있지 않다.
DNS 레코드 스푸핑은 누군가를 정상 사이트가 아닌 공격자의 사이트로 가게 만들고 그 다음 공격자는 공격자 사이트에 접속한 사람들에게서 자격 증명을 훔치고 정상 사이트에 접속하는 사람들의 데이터를 읽을 수 있고 변조도 가능
보안 문제 외에도 DNS 도메인 중 하나를 추적 관리하지 않거나 갱신하는 것을 잊는다면 해당 서비스가 중지 된다.
TLS 인증서
TLS 인증서는 암호화 원칙에 따라 적용되는데 웹 사이트를 스푸핑(공격자가 자신의 신원을 위조해서 시스템이나 사용자를 속이는 행위 - IP 스푸핑, ARP 스푸핑, DNS 스푸핑)하는 공격자에 대한 최고의 방어선
관리해야 하는 이유
특정한 암호 알고리즘이 취약한 것으로 판명되거나 인증기관에서 보안 문제가 있는 경우 전체 등급의 인증서가 재발급 되어야 한다.
인증서 갱신을 하지 않으면 서비스가 중단될 수 있다.
로드밸런서, 역방향 프록시, 웹 애플리케이션 방화벽
트래픽을 목적지에 전송할 수 있도록 DNS 레코드는 목적지 네트워크 자산 중 하나를 가리킨다.
적절한 접근 통제를 위해 이런 자산들을 목록화해서 잘 관리해야 한다.
ID와 접근 관리
⇒ 개요
⇒ ID와 접근에 대한 생명주기
⇒ 클라우드 자격 증명
⇒ Multi Factor Authentication
⇒ 비밀번호와 API 키
⇒ 공유 ID
⇒ 페더레이션 ID : 서로 다른 2개의 시스템에 ID가 존재할 수 있다는 것으로 각 시스템에 별도 계정을 직접 생성할 필요가 없도록 해당 ID를 서로 연결하는 기술
⇒ Single Sign On(SSO)
⇒ SAML과 OIDC
웹 페이지는 SAML 쿠기가 없어서 로그인할 수 없으니 ID 제공자 웹 페이지로 이동해 받아오라고 한다.
제공자 웹 페이지에서 사용자 이름, 비밀번호, 추가 인증 수단을 이용해서 로그인
암호화 서명 된 XML이 포함된 쿠키를 브라우저 전송하고 리다이렉션
다시 요청을 하면 쿠키가 전송되고 이를 바탕으로 인증
OPENID connect는 AUTH 2.0을 기반으로 등장한 새로운 인증 계층
네트워크 보안
⇒ 개요
⇒ 네트워크 보안과 관제 필요성
기본적인 보안 시스템 조차 없는 중소기업들은 공격을 받고 있는 것은 아닌지 공격을 받았다면 어떤 경로를 통해 유입되었는지 등 그 상황 자체도 파악할 수 없는 경우가 많다.
정보 보안 사고를 예방하기 위해서는 보안 시스템을 구축한 이후에도 보안 전담인력이 보안 관제를 하여 사전에 위협을 탐지할 수 있어야 하고 정보 보안 사고를 예방하는 활동과 함께 정보 보안 사고 대응 활동을 통해 같은 유형의 공격에 피해를 입지 않도록 대비할 수 있어야 한다.
보안 관제 현황
국내에서 사이버 보안 대응과 관제를 국가 차원에서 다루게 된 계기는 2003년 1월 25일 인터넷 대란을 겪으면서부터 였는데 국내 최상위 DNS(혜화 전화국 DNS)로 대량의 트래픽을 집중 시켜서 DNS 장애를 유발해서 인터넷 망이 불통된 사건 때문
국내에서 국가정보원 산하에 국가 사이버 안전을 위한 업무를 담당하는 국가 사이버 안전 센터를 설치해서 국가 공공 분야를 담당하고 군 분야는 국군 사이버 사령부 그리고 민간 분야는 KISA(한국 인터넷 진흥원)에서 담당
보안 관제 유형
자체 보안 관제 : 자체적으로 보안 전담 조직을 갖추고 관제 시스템을 구축하여 운영하는 관제 방식으로 국가 기관, 통신사, 대기업 등 보안을 중요시 하는 곳이나 내부 네트워크 망을 구성해서 운영하는 곳에서 주로 실시
원격 보안 관제 : 보안 관제 전문 업체와 계약된 범위 내에서 보안 시스템을 구축하고 원격에서 보안 관제를 위탁해서 운영하는 방식으로 자체적으로 보안 관제를 하기 힘들거나 보안 인력이 없는 일반 기업에서 주로 실시
파견 보안 관제 : 자체적으로 관제 시스템을 구축하였으나 보안 관제를 할 수 있는 전담 조직이나 보안 인력이 없는 경우 보안 관제 전문 업체에서 보안 전문 인력을 파견 받아 보안 관제를 운영하는 관제 방식
기업 기밀 정보 유출 피해
보안 관리와 감독이 허술하거나 임직원의 보안 의식이 부족한 경우가 가장 큰 부분인데 한 번 유출된 정보에 대해서 유출 사실을 입증하기가 쉽지 않다.
주로 퇴직자, 경쟁업체 직원, 협력업체 직원에 의해서 유출되는 경우가 많다.
보안 강화에 꾸준히 투자하고 구성원에게 보안 교육을 실시하며 수시로 모니터링 하는 것이 중요
개인 정보 유출 피해
개인정보 취급 시에도 필요한 범위에서 최소한의 개인정보만 처리하거나 비식별화 처리를 반드시 해야하고 법에 따라 개인 정보가 잘 지켜지고 있는지 확인해보도록 해야 한다.
악성 코드로 인한 피해
보안 취약점으로 인한 피해
분산 서비스 공격(DDoS)으로 인한 공격
⇒ 주요 개념
⇒ 보안 솔루션
볼류메트릭 공격 : 대용량의 트래픽을 사용해서 대역폭을 포화시키는 공격
프로토콜 공격 : 3, 4계층 프로토콜 스택의 취약점을 악용해 대상을 액세스 할 수 없도록 하는 공격
애플리케이션 공격 : 7계층 프로토콜 스택의 취약점을 악용하는 공격, 가장 정교한 공격, 가장 까다로운 공격
클라우드 기반의 DDoS 방어 서비스를 고려해 볼 수 있는데 클라우드 기반 서비스는 DDoS, WAF(Web Application Firewall)과 같은 별도의 보안 장비 없이도 다양한 DDoS 공격을 방어할 수 있는 장점이 있다.