12421 단어
62 분
보안 시스템 아키텍처 - 다관점 엔지니어링 논문

내부 살펴보기#

이 책을 현대 소프트웨어 시스템과 네트워크를 처음부터 구축하고 방어하기 위한 실용적인 실무 가이드라고 생각하세요.

이 가이드가 다른 점은 우리의 접근 방식입니다. 저는 물리적 네트워크 케이블부터 애플리케이션 코드까지 전체 기술 스택을 매일 이 분야에 살고 숨쉬는 네 사람의 눈을 통해 살펴보겠습니다.

  • 기반을 구축하는 네트워크 엔지니어입니다.
  • 이를 보호해야 하는 사이버 보안 수호자입니다.
  • 그것을 깨려고 하는 공격적인 해커.
  • 실행되는 코드를 작성하는 소프트웨어 엔지니어입니다.

무미건조하고 학술적인 허식 없이 필수 보안 주제를 전체적으로 둘러볼 수 있습니다. 다음과 같은 내용을 다루겠습니다.

  • 처음부터 공격하기 어려운 네트워크를 설계합니다.
  • 한 번의 실패가 재앙이 되지 않도록 방어를 계층화합니다(심층 방어).
  • Cyber ​​Kill Chain을 따라 공격자처럼 생각합니다.
  • 첫날부터 보안 코드를 작성합니다(보안 SDLC).

1부: 기반 - 보안 네트워킹의 기초#

1장: 보안 렌즈를 통해 다시 살펴보는 네트워크 모델#

보안 아키텍처로의 여정은 모든 데이터 통신이 시작되는 곳인 네트워크에서 시작됩니다. OSI 또는 TCP/IP 모델에 대한 피상적인 이해가 부족합니다.[1]. 보안 전문가는 기능뿐만 아니라 공격 표면에 대해서도 각 계층을 이해해야 합니다.

1.1 계층 1 - 물리적 계층: 유형의 위협#

  • 네트워크 엔지니어의 관점: 이 계층은 케이블, 광섬유, 스위치 및 허브의 세계입니다. 주요 관심사는 물리적 연결, 신호 무결성 및 하드웨어 프로비저닝입니다. 모든 것이 세워지는 기초입니다.
  • 해커의 관점: 물리적 계층은 접근 가능한 경우 궁극적인 공격 벡터입니다. 공격은 종종 뻔뻔하지만 매우 효과적입니다.
  • 도청: 네트워크 케이블에 직접 연결하여 암호화되지 않은 트래픽을 가로채는 행위[2].
  • 하드웨어 임플란트: 방화벽 뒤, 보안 네트워크 내부에 악성 장치(예: Raspberry Pi)를 배치하여 지속적인 C2(명령 및 제어) 채널을 설정합니다.
  • 포트 액세스: 회의실이나 로비에 있는 보안되지 않은 활성 네트워크 잭에 노트북을 연결하기만 하면 됩니다.
  • 방어자의 관점: 물리적 보안은 네트워크 보안입니다. 방어는 절차적, 물리적입니다. 서버실 잠김, 사용하지 않는 벽면 포트 비활성화, 엄격한 액세스 제어 정책, 하드웨어 변조 방지 봉인 등이 있습니다. 기술적인 관점에서 보면 **IEEE 802.1X NAC(Network Access Control)**를 구현하여 네트워크에 물리적으로 연결되는 모든 장치의 인증을 요구할 수 있습니다.[3].

1.2 계층 2 - 데이터 링크 계층: 로컬 네트워크 전장#

  • 네트워크 엔지니어의 관점: 이는 MAC 주소, 스위치 및 근거리 통신망(LAN)의 영역입니다. 기본 프로토콜은 이더넷과 IP 주소(계층 3)를 MAC 주소(계층 2)에 매핑하는 **ARP(주소 확인 프로토콜)**입니다.[4]. 이 계층은 동일 로컬 네트워크 세그먼트에 있는 올바른 장치로 프레임을 가져오는 역할을 담당합니다.
  • 해커의 관점: 레이어 2는 암시적 신뢰 모델로 설계되었기 때문에 공격에 적합한 환경입니다.
  • ARP 스푸핑/중독: 공격자는 위조된 ARP 메시지를 LAN으로 보냅니다. 그들은 공격자의 MAC 주소가 피해자의 IP에 속한다는 것을 네트워크 게이트웨이에 알릴 수 있고, 공격자의 MAC 주소가 게이트웨이의 IP에 속한다는 것을 피해자에게 알릴 수 있습니다. 이렇게 하면 공격자가 대화 중간에 놓이게 되어(Man-in-the-Middle, MitM) 피해자의 모든 트래픽을 가로채거나 수정할 수 있습니다.[5].
  • MAC 플러딩: 네트워크 스위치에 대한 공격입니다. 공격자는 서로 다른 소스 MAC 주소를 사용하여 대량의 이더넷 프레임을 전송하여 스위치의 CAM(Content Addressable Memory) 테이블을 채웁니다. 테이블이 가득 차면 스위치는 더 이상 프레임을 특정 포트로 지능적으로 전달할 수 없으며 허브처럼 작동하여 모든 프레임을 모든 포트에 브로드캐스팅하는 “페일오픈” 모드로 전환됩니다. 이를 통해 공격자는 스위치 네트워크의 모든 트래픽을 스니핑할 수 있습니다.[6].
  • VLAN 호핑: 한 VLAN에 연결된 공격자가 액세스할 수 없는 다른 VLAN의 트래픽에 액세스하는 공격입니다. 이는 잘못 구성된 트렁크 포트를 악용하여 수행되는 경우가 많습니다.[7].
  • 방어자의 관점: 스위치는 이러한 공격에 맞서기 위해 다양한 보안 기능을 제공합니다.
  • 포트 보안: 단일 스위치 포트에서 사용할 수 있는 MAC 주소 수를 제한하고 특정 MAC 주소만 허용하도록 구성할 수 있습니다.[8].
  • DHCP 스누핑: 불량 DHCP 서버가 네트워크에 유입되는 것을 방지합니다.
  • 동적 ARP 검사(DAI): 네트워크의 ARP 패킷을 검증하여 ARP 요청/응답을 DHCP 스누핑 바인딩 테이블과 비교하여 ARP 스푸핑을 방지합니다.

1.3 계층 3 - 네트워크 계층: 라우팅 체스판#

  • 네트워크 엔지니어의 관점: 이는 IP 주소 및 라우팅 계층입니다. 서로 다른 네트워크 간에 패킷을 이동하는 것에 관한 것입니다. 라우터는 이 계층에서 작동하며 대상 IP 주소를 기반으로 결정을 내려 패킷을 최종 대상으로 전달합니다. ICMP(ping 및 경로 추적용) 및 IGMP와 같은 프로토콜이 여기에 존재합니다.[9].
  • 해커의 관점: 레이어 3 공격은 라우팅 방해 및 신원 스푸핑에 중점을 둡니다.
  • IP 스푸핑: 공격자는 위조된 소스 IP 주소로 IP 패킷을 생성합니다. 이는 서비스 거부(DoS) 공격에 사용되는 기본 기술입니다. 스머프 공격에서 공격자는 다수의 ICMP 에코 요청(핑)을 네트워크의 브로드캐스트 주소로 보내 소스 IP를 피해자의 IP로 스푸핑합니다. 그러면 네트워크의 모든 호스트가 피해자에게 응답하여 이를 압도합니다.[10].
  • 경로 하이재킹(BGP 하이재킹): 공격자가 인터넷 라우팅 테이블, 특히 **BGP(Border Gateway Protocol)**에서 관리하는 라우팅 테이블을 손상시켜 IP 주소 그룹을 불법적으로 제어하는 ​​정교한 공격입니다. 이는 트래픽을 리디렉션하는 데 사용될 수 있으므로 간첩 활동이나 대규모 MitM 공격을 위한 강력한 도구가 됩니다.[11].
  • 방어자의 관점: 이 계층의 방어는 필터링과 검증에 관한 것입니다.
  • 수신/송신 필터링: 내부 네트워크 내에서 소스 IP 주소가 있는 인터넷에서 들어오는 패킷을 삭제하도록 방화벽을 구성해야 합니다(수신 필터링). 또한 내부 네트워크 내에서 소스 IP가 없는 나가는 패킷을 삭제하도록 구성해야 합니다(송신 필터링). 이는 BCP 38/RFC 2827에 설명된 대로 IP 스푸핑을 방지하는 데 도움이 됩니다.[12].
  • 액세스 제어 목록(ACL): 라우터와 방화벽은 ACL을 사용하여 소스/대상 IP, 포트 및 프로토콜을 기반으로 트래픽을 허용하거나 거부합니다. 이는 네트워크 액세스 제어의 기본 구성 요소입니다.

1.4 계층 4 - 전송 계층: 연결 계약#

  • 네트워크 엔지니어의 관점: 이 계층은 호스트 간 통신 서비스를 제공합니다. 가장 중요한 두 가지 프로토콜은 TCP(전송 제어 프로토콜) 및 **UDP(사용자 데이터그램 프로토콜)**입니다.[13].
  • TCP: 연결 지향적이고 안정적이며 순서대로 전달됩니다. **3방향 핸드셰이크(SYN, SYN-ACK, ACK)**를 통해 연결을 설정하고 모든 데이터가 올바르게 도착하도록 보장합니다. HTTP, FTP, SMTP에 사용됩니다.
  • UDP: 연결이 없고, 신뢰할 수 없으며, 순서가 없습니다. 이는 훨씬 빠르지만 전달을 보장하지 않는 “fire-and-forget” 프로토콜입니다. DNS, VoIP, 온라인 게임에 사용됩니다.
  • 해커의 관점: 이 계층의 공격은 리소스 고갈과 정찰에 중점을 두는 경우가 많습니다.
  • TCP SYN Flood: 전형적인 DoS 공격입니다. 공격자는 소스 IP 주소를 스푸핑하여 대량의 TCP SYN 패킷을 피해자 서버에 보냅니다. 서버는 SYN-ACK로 응답하고 새 연결을 위한 리소스를 할당하며 결코 도착하지 않는 최종 ACK를 기다립니다(소스 IP가 가짜이기 때문에). 이로 인해 반쯤 열린 연결이 많이 남아 서버의 연결 테이블이 소진되고 합법적인 사용자가 연결하는 것을 방지합니다.[14].
  • 포트 스캐닝: 공격자는 nmap과 같은 도구를 사용하여 대상 호스트의 다양한 포트에 프로브를 보내 실행 중인 서비스를 검색합니다. “열린” 포트는 잠재적인 악용 대상이 될 수 있는 수신 서비스를 나타냅니다.[15].
  • 방어자의 관점: 방어는 상태 관리 및 검색 감지에 중점을 둡니다.
  • 상태 저장 방화벽: 이 방화벽은 TCP 연결 상태를 추적합니다. 해당 SYN 패킷을 본 경우에만 SYN-ACK 패킷을 허용하고, SYN-ACK를 본 경우에만 ACK를 허용합니다. 이는 상태 비저장 패킷 필터보다 훨씬 더 안전합니다.
  • SYN 쿠키: SYN 플러드를 완화하는 기술입니다. 서버는 SYN을 수신하여 리소스를 할당하는 대신 연결에 대한 정보를 SYN-ACK 패킷의 시퀀스 번호에 인코딩하여 다시 보냅니다. 클라이언트가 “쿠키”가 포함된 최종 ACK를 보낼 때만 리소스를 할당하여 해당 ACK가 합법적인 소스임을 증명합니다.[16].
  • 침입 탐지 시스템(IDS): 포트 스캐닝 활동을 탐지하고 경고하도록 IDS를 구성하여 방어자에게 잠재적 공격에 대해 조기 경고를 제공할 수 있습니다.

2장: 방어 가능한 네트워크 아키텍처 설계#

모든 장치가 다른 모든 장치와 통신할 수 있는 평면 네트워크는 해커의 천국입니다. 단일의 낮은 가치 호스트(프린터나 워크스테이션 등)를 손상시킨 후에는 도메인 컨트롤러나 데이터베이스와 같은 높은 가치의 대상으로 쉽게 측면 이동할 수 있습니다. 방어 가능한 아키텍처는 분할된 아키텍처입니다.[17].

2.1 분할의 원리: 내부 벽 구축#

  • 네트워크 엔지니어의 관점: 분할은 네트워크를 더 작고 격리된 하위 네트워크로 분할하는 방식입니다. 이는 다음을 사용하여 달성됩니다.
  • 서브네팅: 큰 IP 주소 블록을 더 작은 블록으로 나누는 것입니다. 서브넷 간에 트래픽을 이동하려면 라우터가 필요합니다.
  • VLAN(가상 LAN): 동일한 물리적 스위칭 인프라에서 논리적으로 별도의 네트워크를 생성하는 방법입니다. VLAN 10의 포트가 서로 다른 물리적 스위치에 있더라도 VLAN 10의 다른 포트하고만 통신할 수 있도록 스위치를 구성할 수 있습니다.[18].
  • 계층형 아키텍처: 애플리케이션 기능에 따라 네트워크를 분리하고 종종 인터넷 연결 서비스를 위한 **DMZ(비무장지대)**를 생성하는 고전적인 설계 패턴입니다.[19].
  • 웹 계층(DMZ): 인터넷에서 액세스할 수 있는 가장 바깥쪽 계층입니다. 웹 서버와 역방향 프록시를 포함합니다.
  • 애플리케이션 계층: 웹 계층에서만 액세스할 수 있는 중간 계층입니다. 애플리케이션 서버와 비즈니스 로직을 포함합니다.
  • 데이터 계층: 가장 안쪽에 있고 가장 보호되는 계층으로, 애플리케이션 계층에서만 액세스할 수 있습니다. 데이터베이스를 포함합니다.
  • 방어자의 관점: 세분화는 심층 방어의 초석입니다. 네트워크 수준에서 최소 권한 원칙을 직접 지원합니다. 웹 서버는 도메인 컨트롤러와 직접 통신할 필요가 없으므로 방화벽 규칙은 해당 통신 경로를 차단해야 합니다. 웹 서버가 손상되면 공격자의 측면 이동 능력이 심각하게 제한됩니다. 목표는 DMZ에서 앱 계층까지, 앱 계층에서 데이터 계층까지 공격자의 모든 단계를 어렵고 엄격하게 모니터링되는 초크 포인트로 만드는 것입니다.

2.2 마이크로세그먼테이션 및 제로 트러스트#

  • 네트워크 엔지니어의 견해: 마이크로 세분화는 세분화가 더욱 세부적으로 발전한 것입니다. 대규모 영역(VLAN)으로 분할하는 대신 개별 워크로드 또는 애플리케이션 주위에 보안 경계를 만들 수 있습니다. 가상화 또는 클라우드 환경에서는 소프트웨어 정의 네트워킹(SDN) 및 가상 방화벽을 통해 구현되는 경우가 많습니다.
  • 사이버 보안 전문가의 견해: 마이크로 세분화는 제로 트러스트 네트워크 아키텍처의 궁극적인 표현입니다. 제로 트러스트의 핵심 원칙은 “절대 신뢰하지 말고 항상 확인하라”입니다. 공격자가 이미 네트워크 내부에 있다고 가정합니다.[20]. 따라서 두 가상 머신 간의 통신은 동일한 서브넷에 있더라도 암시적으로 신뢰되지 않습니다. 보안 정책에서 명시적으로 허용해야 합니다. 이는 공격자의 측면 이동을 극도로 어렵게 만듭니다.
  • 소프트웨어 엔지니어의 견해: 이는 개발자에게 영향을 미칩니다. 네트워크 연결이 보장되지 않는다는 가정하에 애플리케이션을 설계해야 합니다. 연결 실패에 대한 복원력을 갖추고 올바른 서비스 검색 메커니즘으로 구성되어야 합니다. Kubernetes 네트워크 정책은 개발자가 코드(YAML)에서 마이크로 세분화 규칙을 정의하여 어떤 Pod가 다른 Pod와 통신할 수 있는지 지정하는 대표적인 예입니다.[21].

3장: 핵심 네트워크 보안 제어 세부사항#

3.1 방화벽: 네트워크 게이트키퍼#

  • 상태 비저장 대 상태 저장: 1장에서 설명한 것처럼 상태 저장 방화벽은 연결의 컨텍스트를 이해하므로 훨씬 우수합니다.
  • 차세대 방화벽(NGFW): NGFW는 단순한 포트/프로토콜 검사를 넘어서는 “심층 패킷 검사” 방화벽입니다. 여기에는 다음과 같은 기능이 포함됩니다.
  • 애플리케이션 인식: 포트 번호뿐만 아니라(많은 애플리케이션이 포트 443을 통해 실행되기 때문에) 애플리케이션을 기반으로 트래픽을 식별하고 제어할 수 있습니다(예: Facebook은 차단하지만 Salesforce는 허용).[22].
  • 통합 침입 방지(IPS): 알려진 공격 서명과 일치하는 트래픽을 적극적으로 차단할 수 있습니다.
  • 위협 인텔리전스 피드: 클라우드 기반 위협 인텔리전스 서비스와 통합하여 알려진 악성 IP 주소 또는 도메인의 트래픽을 차단할 수 있습니다.
  • 웹 애플리케이션 방화벽(WAF): WAF는 레이어 7(애플리케이션 레이어)에서 작동하는 특수 방화벽입니다. OWASP Top 10에 나열된 공격과 같은 일반적인 웹 기반 공격으로부터 웹 애플리케이션을 보호하도록 설계되었습니다.[23].
  • 개발자의 관점: WAF는 중요한 방어 계층이지만 보안 코딩을 대체할 수는 없습니다. 안전망입니다. WAF는 다음과 같은 기본적인 SQL 주입 공격을 차단할 수 있습니다.OR 1=1그러나 숙련된 공격자는 인코딩, 난독화 또는 더 복잡한 쿼리를 사용하여 WAF 규칙을 우회하는 방법을 찾을 수 있는 경우가 많습니다. 기본 방어는 코드 자체에 있어야 합니다(매개변수화된 쿼리 사용).
  • 해커의 견해: WAF 회피는 잘 정립된 규율입니다. 공격자는 도구를 사용하여 WAF를 조사하고 공급업체 및 규칙 세트를 식별하며 구문적으로는 유효하지만 WAF의 서명을 트리거하지 않는 페이로드를 제작합니다.[24].

3.2 IDS/IPS: 네트워크 감시탑#

  • 침입 감지 시스템(IDS): 수동 모니터링 장치입니다. 네트워크 트래픽 사본을 분석하고 의심스러운 활동이 감지되면 경고를 보냅니다. 트래픽을 차단하지 않습니다.
  • 침입 방지 시스템(IPS): 활성 인라인 장치입니다. 트래픽을 분석하고 악성 서명과 일치하는 패킷이 대상에 도달하기 전에 적극적으로 차단하거나 삭제할 수 있습니다.
  • 탐지 방법:
  • 서명 기반: 바이러스 백신 소프트웨어처럼 작동합니다. 알려진 공격 패턴(“서명”)에 대한 데이터베이스가 있습니다. 이는 알려진 위협에 대해 매우 효과적이지만 새로운 “제로 데이” 공격을 탐지할 수는 없습니다.
  • 이상 기반: 시스템은 먼저 “정상적인” 네트워크 트래픽의 형태에 대한 기준을 구축합니다. 그런 다음 이 기준에서 크게 벗어나는 모든 활동에 대해 경고합니다. 이를 통해 새로운 공격을 탐지할 수 있지만 오탐률이 높은 경향이 있는 경우가 많습니다.[25].
  • 해커의 관점: 회피 기술에는 패킷 조각화, 암호화 사용(IDS/IPS는 계산 비용이 많이 드는 SSL/TLS 암호 해독을 수행하지 않으면 암호화된 트래픽을 검사할 수 없음), 알려진 서명과 일치하지 않도록 공격 페이로드 수정 등이 포함됩니다.


2부: 방어자의 성채 - 전체적인 방어 전략#

4장: 심층 방어 철학#

심층 방어는 현대 사이버 보안의 핵심 철학입니다. 단일 보안 제어는 실패할 수 있고 실패할 것이라는 인식입니다. 목표는 공격자를 탐지하고 속도를 늦추며 저지할 수 있는 다양한 기회를 제공하는 계층화된 중복 방어를 만드는 것입니다.[26].

4.1 성채의 층#

중세 성은 완벽한 비유를 제공합니다.

  1. 해자(경계 보안): 이것이 첫 번째 방어선입니다. 경계 라우터 및 경계 방화벽에 해당합니다. 그 임무는 정교하지 않고 기회주의적인 공격자를 차단하는 것입니다.
  2. 외벽(네트워크 보안): 더욱 강력한 장벽입니다. 이는 내부 분할, IDS/IPS 및 강력한 액세스 제어 목록에 해당합니다. 경계를 통과하는 위협을 포함하도록 설계되었습니다.
  3. 벽 위의 궁수(모니터링 및 탐지): 이들은 파수꾼입니다. SOC(Security Operations Center), SIEM 시스템, 로그 분석에 해당합니다. 그들은 공격의 징후를 적극적으로 찾고 있습니다.
  4. 내부 성채(호스트 및 엔드포인트 보안): 강력하게 요새화된 요새입니다. 이는 서버 및 워크스테이션 자체의 보안 제어인 EDR(엔드포인트 탐지 및 응답), 호스트 기반 방화벽, 바이러스 백신 및 파일 무결성 모니터링에 해당합니다.
  5. 왕관의 보석(애플리케이션 및 데이터 보안): 가장 강력한 통제로 보호되는 최고의 상입니다. 이는 안전한 애플리케이션 코드, 강력한 인증 및 권한 부여, 저장 및 전송 중인 데이터 암호화에 해당합니다.
  6. 경비원(사람, 프로세스 및 정책): 인간 요소. 여기에는 보안 인식 교육, 사고 대응 계획, 강력한 운영 보안 절차가 포함됩니다.
  • 해커의 관점: 공격자는 이러한 계층을 극복해야 할 일련의 장애물로 간주합니다. 그들의 목표는 각 계층에서 가장 약한 링크를 찾는 것입니다. 직원이 피싱 링크를 클릭하는 경우(경계 및 네트워크 계층 우회) 강력한 방화벽은 쓸모가 없습니다. 호스트 계층에서 손상될 수 있는 패치가 적용되지 않은 서버에서 실행되는 경우 보안 애플리케이션은 쓸모가 없습니다.

5장: 위협 모델링 - 공격자처럼 생각하기#

위협 모델링은 시스템이 구축되기 전에 시스템의 잠재적인 위협과 취약점을 식별하기 위한 구조화된 프로세스입니다. 사후 대응이 아닌 사전 예방적인 보안 방식입니다.[27].

5.1 STRIDE 방법론#

Microsoft에서 개발한 STRIDE는 위협을 분류하는 니모닉입니다.[28]:

  • S푸핑: 다른 사용자나 구성 요소의 신원을 불법적으로 가장하는 것입니다.
  • 방어: 강력한 인증(MFA), 디지털 서명.
  • Tampering: 전송 중이거나 저장되지 않은 데이터의 무단 수정입니다.
  • 방어: 해싱, 액세스 제어, 데이터 암호화.
  • R묵인: 사용자가 자신이 수행한 작업을 부인합니다.
  • 방어: 감사 로그, 디지털 서명을 보호합니다.
  • I정보 공개: 승인되지 않은 개인에게 민감한 정보가 노출됩니다.
  • 방어: 암호화, 액세스 제어.
  • **서비스 거부: 합법적인 사용자가 시스템에 접근하는 것을 방지합니다.
  • 방어: 속도 제한, 로드 밸런싱, 탄력적인 아키텍처.
  • **권한 상승: 권한이 없는 권한을 얻는 사용자 또는 구성 요소입니다.
  • 방어: 최소 권한 원칙, 강력한 인증 확인.

5.2 실용적인 위협 모델링 연습#

  • 소프트웨어 엔지니어의 관점: 사용자 프로필 업데이트를 위한 간단한 API 엔드포인트를 상상해 보세요.PUT /api/users/{id}. 개발팀은 보안 전문가와 함께 위협 모델을 수행합니다.
  1. 애플리케이션 분해: 데이터 흐름 다이어그램을 그립니다. 사용자의 브라우저는 API 게이트웨이에 HTTPS 요청을 보내고, API 게이트웨이는 이를 사용자 서비스로 전달한 다음 PostgreSQL 데이터베이스를 업데이트합니다.
  2. STRIDE를 사용하여 위협 식별:
  • (스푸핑): 한 사용자가 다음을 변경하여 다른 사용자의 프로필을 업데이트할 수 있습니까?{id}URL에? (이것은 전형적인 인증 결함입니다).
  • (탬퍼링): MitM 위치에 있는 공격자가 전송 중인 프로필 데이터를 수정할 수 있습니까? (방어: HTTPS/TLS는 이를 방지합니다).
  • (정보 공개): API 응답이 사용자 비밀번호 해시나 기타 PII와 같은 민감한 데이터를 유출합니까?
  • (서비스 거부): 공격자가 서비스나 데이터베이스를 압도하기 위해 이 엔드포인트에 대량의 요청을 넘길 수 있습니까? (방어: 속도 제한).
  • (권한 상승): 공격자가 관리자 권한을 얻을 수 있도록 허용하는 업데이트 로직에 취약점(예: SQL 주입)이 있습니까?

이 프로세스는 보안을 추상적인 개념에서 구체적인 엔지니어링 작업 및 테스트 사례 목록으로 변환합니다.

6장: 보안 운영 센터(SOC) - 가시성 및 대응#

심층 방어가 전략이라면 SOC는 해당 전략이 실행되는 지휘 센터입니다.

6.1 SOC의 핵심: SIEM#

  • SIEM(보안 정보 및 이벤트 관리): SIEM은 SOC의 중추 신경계입니다. 그 임무는 다음과 같습니다.
  1. 로그 집계: 수백 또는 수천 개의 소스(방화벽, 서버, 애플리케이션, 클라우드 서비스 등)에서 로그 데이터를 수집합니다.
  2. 데이터 정규화: 이러한 서로 다른 로그 형식을 공통 스키마로 구문 분석합니다.
  3. 이벤트 상관관계: 이것이 핵심 기능입니다. SIEM은 상관 관계 규칙을 사용하여 다양한 소스에서 발생한 개별적이고 겉으로는 무해해 보이는 이벤트를 의미 있는 보안 사고로 연결합니다.
  4. 경고: 상관 관계 규칙이 트리거되면 SIEM은 보안 분석가가 조사할 수 있도록 충실도 높은 경고를 생성합니다.[29].
  • 개발자의 관점: 애플리케이션의 로그는 SIEM의 중요한 데이터 소스입니다. 좋은 로깅은 보안 기능입니다. 로그는 구조화되어야 하며(예: JSON), 관련 컨텍스트(사용자 ID, 소스 IP, 요청 ID)를 포함하고, 성공 및 실패 보안 관련 이벤트(예: 로그인, 비밀번호 변경, 승인 실패)를 모두 기록해야 합니다.

6.2 사고 대응 수명주기#

경보가 실제 사건으로 확인되면 SOC는 종종 NIST와 같은 프레임워크를 기반으로 하는 구조화된 IR(사고 대응) 계획을 따릅니다.[30]:

  1. 준비: 사고가 발생하기 전에 수행된 작업입니다(계획, 도구 및 훈련된 인력 보유).
  2. 식별: 이벤트가 보안 사고인지 확인합니다.
  3. 봉쇄: 즉각적인 우선순위는 출혈을 멈추는 것입니다. 여기에는 손상된 호스트를 네트워크에서 격리하거나 손상된 사용자 계정을 비활성화하는 작업이 포함될 수 있습니다.
  4. 근절: 환경에서 위협을 제거합니다(예: 맬웨어 제거, 취약점 패치).
  5. 복구: 시스템을 정상 작동 상태로 복원합니다.
  6. 배운 교훈: 사고의 근본 원인을 파악하고 재발을 방지하기 위한 개선 사항을 파악하기 위한 사후 분석입니다.


파트 III: 공격자의 계략 - 공격적인 방법론#

강력한 방어를 구축하려면 공격을 이해해야 합니다. 이 부분에서는 공격자의 사고방식과 방법론을 분석하여 다른 곳에서 논의된 방어 조치에 대한 맥락을 제공합니다.

7장: 사이버 킬 체인 - 공격을 위한 청사진#

Lockheed Martin이 개발한 Cyber Kill Chain은 일반적인 사이버 공격의 단계를 모델링합니다. 방어자는 가능한 한 빨리 체인을 끊는 것을 목표로 각 단계에 컨트롤을 매핑할 수 있습니다.[31].

  1. 정찰: 공격자는 대상에 대한 정보를 수집합니다.
  • 수동적 정찰: 공개적으로 사용 가능한 정보(OSINT - 오픈 소스 인텔리전스)를 사용합니다.
  • 활성 정찰: 대상의 인프라를 직접 조사합니다. 여기에는 포트 검색(nmap), DNS 열거 및 Shodan과 같은 도구를 사용하여 인터넷 연결 장치를 찾는 것이 포함됩니다.
  1. 무기화: 공격자는 표적에 전달할 악성 페이로드를 생성합니다.
  2. 전달: 무기화된 페이로드가 대상으로 전송되는 방법입니다. 일반적인 벡터에는 스피어 피싱 이메일이나 드라이브 바이 다운로드가 포함됩니다.
  3. 악용: 무기화된 페이로드가 트리거되어 대상 시스템의 취약점을 악용합니다.
  4. 설치: 공격자는 공격 기반을 구축하기 위해 피해자의 컴퓨터에 악성 코드나 **원격 액세스 트로이 목마(RAT)**를 설치합니다.
  5. 명령 및 제어(C2): 설치된 악성코드는 공격자가 제어하는 ​​C2 서버로 “콜홈”합니다. 그러면 영구 채널이 생성됩니다.
  6. 목표에 따른 조치: 공격자는 데이터 유출이나 랜섬웨어 배포와 같은 궁극적인 목표를 달성합니다.

8장: 일반적인 악용 벡터에 대한 심층 분석#

8.1 기본을 넘어서는 웹 애플리케이션 취약점#

  • 서버 측 요청 위조(SSRF): 공격자가 서버 측 애플리케이션이 임의의 도메인에 HTTP 요청을 하도록 강제할 수 있는 취약점입니다. 클라우드 환경에서는 클라우드 제공업체의 메타데이터 서비스에 접근하는 데 사용될 수 있으며, 이로 인해 임시 보안 자격 증명이 유출될 수 있습니다.[32].
  • 개발자의 관점: SSRF 취약점은 애플리케이션이 사용자가 제공한 URL을 가져와 적절한 유효성 검사 없이 여기에서 콘텐츠를 가져올 때 발생합니다. 방어 방법은 애플리케이션이 요청할 수 있는 도메인 및 프로토콜의 엄격한 허용 목록을 유지하는 것입니다.
  • 안전하지 않은 역직렬화: 이 취약점은 애플리케이션이 적절한 검증 없이 신뢰할 수 없는 사용자 제공 데이터를 역직렬화할 때 발생합니다. 공격자는 역직렬화 시 원격 코드 실행으로 이어질 수 있는 악의적인 직렬화된 개체를 제작할 수 있습니다.[33].

8.2 인간 요소: 사회 공학#

  • 해커의 견해: 인간은 종종 가장 약한 고리입니다. 사회 공학은 사람들을 조작하여 작업을 수행하거나 기밀 정보를 누설하는 기술입니다.
  • 피싱: 합법적인 소스에서 보낸 것처럼 보이는 사기 이메일을 보내 피해자를 속여 중요한 정보를 공개하거나 악성 코드를 배포하도록 합니다. 스피어 피싱은 특정 개인이나 조직을 대상으로 하는 고도로 표적화된 피싱 형태입니다.[34].
  • 프리텍스팅: 피해자의 신뢰를 얻기 위해 조작된 시나리오(구실)를 만드는 것입니다.
  • 보호자의 견해: 사회 공학에 대한 방어는 다층적입니다.
  • 기술적 통제: 악성 링크 및 첨부 파일을 검사하는 이메일 게이트웨이.
  • 사용자 교육: 가장 중요한 방어입니다. 정기적인 보안 인식 교육.
  • 프로세스: 민감한 작업에는 여러 사람의 승인이 필요합니다.

9장: 착취 후 - 땅에서 벗어나 생활하기#

공격자가 초기 기반을 마련하면 공격은 이제 막 시작된 것입니다. 다음 단계는 MITRE ATT&CK와 같은 프레임워크에 자세히 설명된 프로세스인 탐지되지 않고 액세스를 확장하고 목표를 달성하는 것입니다.[35].

  • 측면 이동: 손상된 호스트에서 동일한 네트워크 내의 다른 호스트로 이동하는 프로세스입니다.
  • 해커의 관점: Windows Active Directory 환경에서 이는 잘 정의된 프로세스입니다. 공격자는 Mimikatz와 같은 도구를 사용하여 첫 번째 컴퓨터의 메모리에서 자격 증명을 덤프합니다.[36]), 도메인 관리자 계정을 찾고 있습니다. 그들은 일반 텍스트 비밀번호 없이도 사용자의 비밀번호 해시를 사용하여 다른 컴퓨터에 인증할 수 있는 Pass-the-Hash와 같은 기술을 사용할 수 있습니다.
  • 지속성: 네트워크에서 장기적인 입지를 구축합니다. 공격자는 초기 취약점이 패치되거나 손상된 시스템이 재부팅되는 경우에도 액세스를 다시 얻을 수 있도록 하는 메커니즘을 만듭니다.
  • Living Off the Land(LotL): 탐지를 회피하기 위한 핵심 기술입니다. 공격자는 자신만의 맞춤형 악성 코드를 가져오는 대신 피해자의 시스템에 이미 존재하는 합법적인 도구를 사용합니다. 예를 들어 스크립팅에 PowerShell을 사용하거나 원격 명령 실행에 PsExec을 사용합니다.[37].
  • 방어자의 관점: LotL 공격을 탐지하는 것은 매우 어렵습니다. EDR(엔드포인트 탐지 및 대응) 솔루션이 중요한 곳이 바로 여기입니다. EDR은 행동 분석을 사용하여 의심스러운 활동(예: PowerShell 프로세스를 생성한 Word 문서)에서 의심스러운 IP 주소에 네트워크 연결을 만드는 등의 의심스러운 활동을 표시합니다.


파트 IV: 건축업자의 책임 - 안전한 설계#

보안은 나중에 생각할 수 없습니다. 보안 시스템을 구축하는 가장 효과적인 방법은 소프트웨어 개발 수명주기의 모든 단계에 보안을 통합하는 것입니다.

10장: 보안 소프트웨어 개발 수명주기(SSDLC)#

**“왼쪽으로 이동”**이라고도 불리는 SSDLC는 보안 방식을 개발 타임라인에서 더 일찍(왼쪽으로) 이동하는 것입니다.[38].

  1. 요구사항 단계: 보안 요구사항은 기능 요구사항과 함께 정의되어야 합니다.
  2. 설계 단계: 위협 모델링(5장)이 이루어지는 단계입니다.
  3. 구현(코딩) 단계:
  • 개발자의 관점: 여기에는 일반적인 취약점을 방지하기 위한 보안 코딩 모범 사례를 따르는 것이 포함됩니다.
  • 정적 애플리케이션 보안 테스트(SAST): SAST 도구는 애플리케이션을 실행하지 않고 애플리케이션의 소스 코드를 분석하여 잠재적인 보안 결함을 찾습니다.[39].
  1. 테스트 단계:
  • 동적 애플리케이션 보안 테스트(DAST): DAST 도구는 실행 중인 애플리케이션의 취약점을 조사하는 “블랙박스” 테스터입니다.
  • 침투 테스트: 윤리적인 해커가 적극적으로 취약점을 악용하려고 시도하는 수동 또는 반자동 프로세스입니다.
  1. 배포 및 유지 관리 단계: 여기에는 프로덕션 환경 보안, 지속적인 모니터링, 취약점 패치 계획 수립이 포함됩니다.

11장: 애플리케이션 보안(AppSec) 심층 분석#

11.1 인증 및 권한 부여 세부정보#

  • 인증(당신은 누구입니까?):
  • 다단계 인증(MFA): 계정 보호를 위한 가장 효과적인 단일 제어입니다. 알고 있는 것(비밀번호), 갖고 있는 것(전화), 본인임을 확인하는 것(생체 인식) 등 다양한 범주의 두 가지 이상의 확인 요소가 필요합니다.[40].
  • 승인(무엇을 할 수 있습니까?):
  • 개발자의 관점: 여기서 심각한 버그가 많이 발생합니다. 일반적인 결함은 **안전하지 않은 직접 개체 참조(IDOR)**라고 합니다. 이는 애플리케이션이 인증 확인을 수행하지 않고 사용자가 제공한 식별자를 사용하여 리소스에 액세스할 때 발생합니다.[41]. 해결 방법은 현재 인증된 사용자에게 요청된 리소스에 액세스할 수 있는 권한이 있는지 항상 확인하는 것입니다.

11.2 개발자를 위한 암호화: 기본 규칙#

  • 규칙 1: 자신의 암호화폐를 절대 굴리지 마세요. 암호화는 제대로 하기가 엄청나게 어렵습니다. 항상 검증된 표준 라이브러리(예: Google의 Tink, Libsodium)를 사용하세요.[42].
  • 규칙 2: 강력한 표준 알고리즘을 사용하세요. 해싱 비밀번호의 경우 Argon2와 같은 현대적이고 느린 알고리즘을 사용하세요.[43]. 대칭 암호화의 경우 AES-256-GCM을 사용합니다. 비대칭 암호화의 경우 RSA-4096 또는 타원 곡선 암호화를 사용합니다.
  • 규칙 3: 키 관리가 전부입니다. 암호화 시스템의 보안은 전적으로 키의 비밀성에 달려 있습니다. 전용 키 관리 시스템(KMS) 또는 하드웨어 보안 모듈(HSM)을 사용하여 암호화 키를 저장하고 관리합니다.[44].

11.3 공급망 보안: 새로운 개척#

  • 소프트웨어 엔지니어의 견해: 최신 애플리케이션은 수백 개의 오픈 소스 종속성으로 구성됩니다. 이러한 종속성 중 하나의 취약점이 애플리케이션의 취약점이 됩니다. 이는 공급망 공격입니다.
  • Log4Shell(예): Log4j 취약점은 치명적인 예입니다. 유비쿼터스 단일 로깅 라이브러리에 심각한 원격 코드 실행 취약점이 있어 수백만 개의 애플리케이션이 즉시 취약해졌습니다.[45].
  • 방어:
  • 소프트웨어 자재 명세서(SBoM): 애플리케이션의 모든 종속성에 대한 완전한 인벤토리를 유지합니다.[46].
  • 취약성 검색: Snyk, dependencyabot 또는 Trivy와 같은 도구를 사용하여 알려진 취약성에 대한 종속성을 지속적으로 검색합니다.

12장: 최신 클라우드 네이티브 스택 보호#

12.1 컨테이너 보안#

  • 보안 기본 이미지: 최소한의 신뢰할 수 있는 기본 이미지(예:distroless또는alpine) 공격 표면을 줄이기 위해[47].
  • 루트로 실행하지 마세요: 기본적으로 컨테이너는 루트로 실행됩니다.root사용자. 사용USERDockerfile에 권한이 없는 사용자로 애플리케이션을 실행하라는 지시가 있습니다.
  • 이미지 스캐닝: Trivy 또는 Clair와 같은 도구를 CI/CD 파이프라인에 통합하여 컨테이너 이미지가 레지스트리에 푸시되기 전에 알려진 취약점을 스캔합니다.

12.2 쿠버네티스 보안#

Kubernetes는 공격 표면이 넓은 강력하지만 복잡한 시스템입니다.

  • RBAC(역할 기반 액세스 제어): RBAC를 사용하여 클러스터 내의 사용자와 서비스 계정 모두에 대해 최소 권한 원칙을 적용합니다.[48].
  • 네트워크 정책: 기본적으로 클러스터의 모든 포드는 다른 모든 포드와 통신할 수 있습니다. You must implementNetworkPolicy”기본적으로 거부” 입장을 기반으로 통신을 제한하는 리소스입니다.
  • 비밀 관리: ConfigMaps에 비밀을 일반 텍스트로 저장하지 마세요. 내장된 Kubernetes Secrets 개체를 사용하되 보안을 강화하려면 HashiCorp Vault와 같은 외부 비밀 관리자와 통합하세요.[49].
  • 포드 보안 표준: 포드 보안 표준을 사용하여 루트로 실행하거나 호스트 네트워크에 액세스하는 등 위험한 구성으로 포드가 실행되는 것을 방지합니다.[50].

12.3 코드형 인프라(IaC) 보안#

  • 개발자의 관점: Terraform과 같은 IaC 도구를 사용하면 코드로 인프라를 정의할 수 있습니다. 이 코드는 배포되기 전에 잘못된 구성이 있는지 검사할 수 있습니다.
  • IaC에 대한 정적 분석: CI/CD 파이프라인에서 Checkov 또는 tfsec와 같은 도구를 사용하여 공개적으로 액세스 가능한 S3 버킷 생성 또는 전체 인터넷에서 SSH를 허용하는 보안 그룹 생성과 같은 일반적인 보안 문제에 대해 Terraform 코드를 스캔합니다(0.0.0.0/0)[51].

결론: 학문의 종합#

3권으로 구성된 이 여행은 백엔드 개발의 기본부터 분산 시스템의 복잡성, 그리고 마지막으로 보안 아키텍처의 모든 것을 포괄하는 분야까지 안내했습니다. 궁극적인 교훈은 이것이 별도의 분야가 아니라는 것입니다. 네트워킹과 보안을 이해하지 못하는 소프트웨어 엔지니어는 취약하고 취약한 애플리케이션을 구축하게 됩니다. 네트워크에서 실행되는 애플리케이션을 이해하지 못하는 네트워크 엔지니어는 이를 효과적으로 보호할 수 없습니다. 개발과 운영을 이해하지 못하는 보안 전문가는 효과적인 지침을 제공할 수 없습니다. 현대의 시스템 엔지니어는 진정한 의미에서 박식한 사람이어야 합니다. 네트워크 패킷에서 애플리케이션 로직, 방화벽 규칙에서 컨테이너 구성에 이르기까지 모든 추상화 계층에서 시스템에 대해 추론할 수 있어야 합니다. 그들은 건설자, 방어자, 파괴자처럼 동시에 생각해야 합니다. 보안은 제품이나 기능이 아닙니다. 이는 잘 설계된 시스템의 속성입니다. 이는 끊임없이 진화하는 위협 환경에 직면하여 지속적인 설계, 방어 및 적응 프로세스입니다. 이 작업에 자세히 설명된 원칙에 입각한 전체적인 접근 방식은 단순한 방법론이 아닙니다. 이는 디지털 세계의 기반이 되는 탄력 있고 신뢰할 수 있는 시스템을 구축하기 위한 기본 요구 사항입니다.



참고자료#

  1. 클라우드플레어. (n.d.). OSI 모델이란 무엇입니까? <에서 검색함https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/>
  2. 크렙스, B. (2012). 작고 조용한 네트워크 탭으로 인한 위협 증가. 보안에 관한 크렙스. <에서 검색됨https://krebsonsecurity.com/2012/03/the-growing-threat-from-tiny-silent-network-taps/>
  3. 시스코. (n.d.). 802.1X란 무엇입니까? <에서 검색됨https://www.cisco.com/c/en/us/products/security/what-is-802-1x.html>
  4. 마이크로소프트. (2021). 주소 확인 프로토콜. 마이크로소프트 런. <에서 검색됨https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/network-subsystem/address-resolution-protocol>
  5. OWASP. (n.d.). 주소 확인 프로토콜 스푸핑. <에서 검색됨https://owasp.org/www-community/attacks/ARP_Spoofing>
  6. 임퍼바. (n.d.). MAC 플러딩. <에서 검색됨https://www.imperva.com/learn/application-security/mac-flooding/>
  7. 시스코. (n.d.). VLAN 호핑 공격. <에서 검색됨https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst4500/12-2/15-02SG/configuration/guide/config/dhcp.html#wp1102555>
  8. 괴짜를 위한 괴짜. (2023). 컴퓨터 네트워크의 포트 보안. <에서 검색됨https://www.geeksforgeeks.org/port-security-in-computer-networks/>
  9. 클라우드플레어. (n.d.). 인터넷 프로토콜이란 무엇입니까? <에서 검색됨https://www.cloudflare.com/learning/network-layer/internet-protocol/>
  10. 클라우드플레어. (n.d.). 스머프 DDoS 공격. <에서 검색됨https://www.cloudflare.com/learning/ddos/smurf-ddos-attack/>
  11. 클라우드플레어. (n.d.). BGP 하이재킹이란 무엇입니까? <에서 검색됨https://www.cloudflare.com/learning/security/glossary/bgp-hijacking/>
  12. IETF. (2000). RFC 2827: 네트워크 수신 필터링: IP 소스 주소 스푸핑을 사용하는 서비스 거부 공격 차단. <에서 검색됨https://datatracker.ietf.org/doc/html/rfc2827>
  13. IETF. (1981). RFC 793: 전송 제어 프로토콜. <에서 검색됨https://datatracker.ietf.org/doc/html/rfc793>
  14. 클라우드플레어. (n.d.). SYN 플러드 공격. <에서 검색됨https://www.cloudflare.com/learning/ddos/syn-flood-ddos-attack/>
  15. 엔맵. (n.d.). 공식 Nmap 프로젝트 사이트. <에서 검색됨https://nmap.org/>
  16. 위키피디아. (n.d.). SYN 쿠키. <에서 검색됨https://en.wikipedia.org/wiki/SYN_cookies>
  17. SANS 연구소. (2016). 네트워크 분할 구현. <에서 검색됨https://www.sans.org/white-papers/37232/>
  18. IETF. (2003). RFC 3069: 효율적인 주소 할당을 위한 VLAN 집합. <에서 검색됨https://datatracker.ietf.org/doc/html/rfc3069>
  19. 팔로알토 네트웍스. (n.d.). DMZ란 무엇입니까? <에서 검색됨https://www.paloaltonetworks.com/cyberpedia/what-is-a-dmz>
  20. NIST. (2020). SP 800-207: 제로 트러스트 아키텍처. <에서 검색됨https://csrc.nist.gov/publications/detail/sp/800-207/final>
  21. 쿠버네티스. (n.d.). 네트워크 정책. <에서 검색됨https://kubernetes.io/docs/concepts/services-networking/network-policies/>
  22. 팔로알토 네트웍스. (n.d.). NGFW(차세대 방화벽)란 무엇입니까? <에서 검색https://www.paloaltonetworks.com/cyberpedia/what-is-a-next-generation-firewall-ngfw>
  23. OWASP. (n.d.). OWASP 상위 10개. <에서 검색됨https://owasp.org/www-project-top-ten/>
  24. OWASP. (n.d.). WAF 회피 기법. <에서 검색됨https://owasp.org/www-community/attacks/WAF_Evasion_Techniques>
  25. SANS 연구소. (2001). 침입 탐지 시스템 이해. <에서 검색됨https://www.sans.org/white-papers/27/>
  26. 국가안보국(NSA). (2021). 심층 방어. <에서 검색됨https://www.nsa.gov/portals/75/documents/what-we-do/cybersecurity/professional-resources/csg-defense-in-depth-20210225.pdf>
  27. OWASP. (n.d.). 위협 모델링. <에서 검색됨https://owasp.org/www-community/Threat_Modeling>
  28. 마이크로소프트. (2022). STRIDE 위협 모델. 마이크로소프트 런. <에서 검색됨https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats>
  29. 스플렁크. (n.d.). SIEM이란 무엇입니까?. <에서 검색됨https://www.splunk.com/en_us/data-insider/what-is-siem.html>
  30. NIST. (2012). SP 800-61 개정 2: 컴퓨터 보안 사고 처리 가이드. <에서 검색됨https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final>
  31. 록히드 마틴. (n.d.). 사이버 킬 체인. <에서 검색됨https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html>
  32. OWASP. (n.d.). 서버측 요청 위조. <에서 검색됨https://owasp.org/www-community/attacks/Server_Side_Request_Forgery>
  33. OWASP. (n.d.). A08:2021 – 소프트웨어 및 데이터 무결성 오류(안전하지 않은 역직렬화 관련). <에서 검색됨https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/>
  34. CISA. (n.d.). 사회 공학 및 피싱 공격 방지. <에서 검색됨https://www.cisa.gov/uscert/ncas/tips/ST04-014>
  35. 마이트레. (n.d.). ATT&CK 프레임워크. <에서 검색됨https://attack.mitre.org/>
  36. Depy, B. (n.d.). 미미카츠. GitHub. <에서 검색됨https://github.com/gentilkiwi/mimikatz>
  37. 마이크로소프트. (2022). 땅에서 생활. Microsoft 보안 블로그. <에서 검색됨https://www.microsoft.com/en-us/security/blog/2022/05/26/living-off-the-land-a-technical-and-strategic-overview-of-lolbins/>
  38. OWASP. (n.d.). 왼쪽으로 이동. <에서 검색됨https://owasp.org/www-community/Shift_Left>
  39. OWASP. (n.d.). 정적 애플리케이션 보안 테스트(SAST). <에서 검색됨https://owasp.org/www-community/Static_Application_Security_Testing_(SAST)>
  40. NIST. (2017). SP 800-63B: 디지털 신원 지침: 인증 및 수명주기 관리. <에서 검색됨https://pages.nist.gov/800-63-3/sp800-63b.html>
  41. OWASP. (n.d.). A01:2021 – 손상된 액세스 제어(IDOR 관련). <에서 검색됨https://owasp.org/Top10/A01_2021-Broken_Access_Control/>
  42. 구글. (n.d.). Tink 암호화 라이브러리. <에서 검색됨https://developers.google.com/tink>
  43. Argon2 비밀번호 해싱 기능. (n.d.). 공식 Argon2 사이트. <에서 검색됨https://www.password-hashing.net/>
  44. AWS. (n.d.). 키 관리 서비스란 무엇입니까? <에서 검색https://aws.amazon.com/kms/what-is-kms/>
  45. CISA. (n.d.). Apache Log4j 취약점 지침. <에서 검색됨https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance>
  46. NTIA. (n.d.). 소프트웨어 자재 명세서(SBOM). <에서 검색됨https://www.ntia.gov/SBOM>
  47. 구글클라우드플랫폼. (n.d.). distroless Docker 이미지. GitHub. <에서 검색됨https://github.com/GoogleCloudPlatform/distroless>
  48. 쿠버네티스. (n.d.). RBAC 인증 사용. <에서 검색됨https://kubernetes.io/docs/reference/access-authn-authz/rbac/>
  49. 하시코프(HashiCorp) (n.d.). 둥근 천장. <에서 검색됨https://www.vaultproject.io/>
  50. 쿠버네티스. (n.d.). 포드 보안 표준. <에서 검색됨https://kubernetes.io/docs/concepts/security/pod-security-standards/>
  51. 브리지크루. (n.d.). 체크코프. <에서 검색됨https://www.checkov.io/>
보안 시스템 아키텍처 - 다관점 엔지니어링 논문
https://banije.vercel.app/ko/posts/secure_systems_architecture/
저자
ibra-kdbra
게시일
2025-09-11
라이선스
CC BY-NC-SA 4.0