<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>yeon.log</title>
        <link>https://velog.io/</link>
        <description>Whatever I want | Interested in DFIR, Security, Infra, Cloud</description>
        <lastBuildDate>Wed, 06 May 2026 08:02:44 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>yeon.log</title>
            <url>https://velog.velcdn.com/images/yeon_ni/profile/4b45912c-3b19-4fbd-9131-54921f0f5432/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. yeon.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/yeon_ni" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[모듈프로젝트 AWS architecture 정리]]></title>
            <link>https://velog.io/@yeon_ni/%EB%AA%A8%EB%93%88%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-AWS-architecture-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@yeon_ni/%EB%AA%A8%EB%93%88%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-AWS-architecture-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Wed, 06 May 2026 08:02:44 GMT</pubDate>
            <description><![CDATA[<p><a href="https://claude.ai/public/artifacts/d3a9a17c-2daa-4621-91c1-fbc4db36c321">https://claude.ai/public/artifacts/d3a9a17c-2daa-4621-91c1-fbc4db36c321</a></p>
<h2 id="전체-트래픽-흐름">전체 트래픽 흐름</h2>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/846f5f41-0d93-4fe4-80c0-a1d7b4d1f2b3/image.png" alt=""></p>
<ul>
<li><strong>Internet → ALB → Web(Apache) → NLB → WAS(Tomcat) → RDS Oracle</strong></li>
</ul>
<h2 id="1-vpc--네트워크-기초-구성">1. VPC &amp; 네트워크 기초 구성</h2>
<h3 id="vpc-virtual-private-cloud">VPC (Virtual Private Cloud)</h3>
<table>
<thead>
<tr>
<th>VPC</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>IPv4 CIDR</td>
<td>10.0.0.0/16</td>
</tr>
<tr>
<td>리전</td>
<td>us-east-2(오하이오)</td>
</tr>
<tr>
<td>역할</td>
<td>모든 AWS 리소스를 논리적으로 격리하는 가상 네트워크.<br>서브넷, 라우팅 테이블, 보안 그룹의 기반 단위</td>
</tr>
</tbody></table>
<h4 id="역할">역할</h4>
<ul>
<li>VPC는 AWS 클라우드 안에 만드는 가상 데이터센터의 역할이다.</li>
<li>물리적 데이터센터에서 네트워크 장비로 망을 분리하듯, VPC는 논리적으로 완전히 격리된 네트워크 공간을 제공한다.</li>
<li>이 안에 서브넷, 라우팅, 보안 그룹 등 모든 네트워크 자원이 배치되며, CIDR 블록(ex. 10.0.0.0/16)으로 사용할 IP 대역을 정의한다.</li>
<li>하나의 VPC는 최대 65,536개의 IP를 수용할 수 있고(/16 기준), 이 범위 안에서 서브넷을 나누어 각 계층(WEB, WAS, DB)을 배치한다.</li>
</ul>
<h4 id="비즈니스-구성-예시">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 스타트업이 하나의 서비스를 운영하는 경우</strong>
신규 쇼핑몰 서비스를 론칭하는 스타트업이 있다고 가정한다. 이 회사는 아직 서비스가 하나뿐이므로 VPC 1개(10.0.0.0/16)를 생성하고, 이 안에 WEB/WAS/DB 서브넷을 배치한다. 개발 환경과 운영 환경을 분리하고 싶다면, 개발용 VPC(10.1.0.0/16)를 별도로 만들어 *VPC Peering으로 연결할 수 있다. 이렇게 하게 되면 개발자가 실수로 운영 DB에 접근하는 사고를 네트워크 레벨에서 차단할 수 있다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: 중견 기업이 여러 서비스를 운영하는 경우</strong>
한 기업이 쇼핑몰, 사내 ERP, 고객 DRM 세 가지 시스템을 운영한다면, 각 시스템별로 별도 VPC를 생성하는 것이 권장된다. 쇼핑몰 VPC(10.0.0.0/16), ERP VPC(10.1.0.0/16), CRM VPC(10.2.0.0/16)로 분리하면 한 시스템에 침해 사고를 당해도 다른 시스템으로의 Lateral Movement를 방지할 수 있다. 시스템 간 통신이 필요하다면 *AWS Transit Gateway를 통해 허용된 트래픽만 선별적으로 통과시킨다.</p>
</blockquote>
<p><code>*VPC Peering</code> : 
<code>*AWS Transit Gateway</code> : </p>
<h3 id="서브넷">서브넷</h3>
<ul>
<li>구성(6개 서브넷 - 3계층 x 2 가용 영역)<h4 id="역할-1">역할</h4>
</li>
<li>서브넷은 VPC의 IP 대역을 잘게 나눈 네트워크 조각이다.</li>
<li>각 서브넷은 반드시 하나의 가용 영역(AZ)에 속하며, 퍼플릭(인터넷 접근 가능) 또는 프라이빗(인터넷 접근 불가)으로 구분된다.</li>
<li>이 이카텍처에서는 WEB(Public 2개), WAS(Private 2개), RDS(Private 2개) 총 6개 서브넷을 사용한다.</li>
<li>각 계층이 2개의 AZ에 걸쳐 있어 하나의 AZ가 장애를 겪더라도 서비스가 중단되지 않는다.</li>
</ul>
<h4 id="비즈니스-구성-예시-1">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 블랙프라이데이 세일 기간의 쇼핑몰</strong>
대규모 할인 이벤트 기간에 한쪽 AZ(us-east-2a)의 데이터센터에 물리적 장애가 발생했다고 가정한다. 2개 AZ에 서브넷이 분산되어 있으므로, us-east-2c의 web-sub-2에 있는 Apache 서버와 was-sub-2의 Tomcat 서버가 즉시 모든 트래픽을 처리한다. 고객은 서비스 중단을 체감하지 못하고 주문을 계속 진행할 수 있다. 만일 단일 AZ에만 배치했다면 그 AZ 장애 시 전체 서비스가 다운된다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: 금융 규제를 받는 핀테크 서비스</strong>
금융 서비스에서는 규제 기관이 &quot;결제 처리 서버는 인터넷에서 직접 접근할 수 없어야 한다&quot;는 요건을 요구한다. 이 경우 WAS를 프라이빗 서브넷(was-sub-1/2)에 배치하고, DB를 별도 프라이빗 서브넷(rds-sub-1/2)에 배치하여 인터넷 라우팅 경로를 완전히 차단한다. 감사(Audit) 시 &quot;WAS가 DB가 프라이빗 서브넷에 있고, 라우팅 테이블에 인터넷 경로가 없음&quot;을 증적으로 제출할 수 있어 규제 준수를 입증할 수 있다.</p>
</blockquote>
<table>
<thead>
<tr>
<th>서브넷 이름</th>
<th>IPv4 CIDR</th>
<th>가용영역</th>
<th>유형</th>
<th>역할</th>
</tr>
</thead>
<tbody><tr>
<td>web-sub-1</td>
<td>10.0.0.0/24</td>
<td>us-east-2a</td>
<td>Public</td>
<td>웹 서버(Apache) 배치, ALB 연결</td>
</tr>
<tr>
<td>web-sub-2</td>
<td>10.0.1.0/24</td>
<td>us-east-2c</td>
<td>Public</td>
<td>웹 서버(Apache) 배치, ALB 연결</td>
</tr>
<tr>
<td>was-sub-1</td>
<td>10.0.4.0/24</td>
<td>us-east-2a</td>
<td>Private</td>
<td>WAS(Tomcat) 배치, NLB 연결</td>
</tr>
<tr>
<td>was-sub-2</td>
<td>10.0.5.0/24</td>
<td>us-east-2c</td>
<td>Private</td>
<td>WAS(Tomcat) 배치, NLB 연결</td>
</tr>
<tr>
<td>rds-sub-1</td>
<td>10.0.8.0/24</td>
<td>us-east-2a</td>
<td>Private</td>
<td>Oracle RDS 배치</td>
</tr>
<tr>
<td>rds-sub-2</td>
<td>10.0.9.0/24</td>
<td>us-east-2c</td>
<td>Private</td>
<td>Oracle RDS 배치</td>
</tr>
</tbody></table>
<blockquote>
<ul>
<li><strong>3-Tier 분리 설계</strong>: WEB(Public) → WAS(Private) → RDS(Private) 구조로 각 계층을 분리하여 보안성을 높임.</li>
</ul>
</blockquote>
<ul>
<li>각 계층을 2개의 가용 영역(AZ)에 분산 배치하여 고가용성(HA) 확보.</li>
</ul>
<h3 id="인터넷-게이트웨이-igw">인터넷 게이트웨이 (IGW)</h3>
<blockquote>
</blockquote>
<p>퍼블릭 서브넷(web-sub-1/2)이 인터넷과 통신할 수 있도록 VPC에 연결하는 관문. VPC당 1개만 연결 가능.</p>
<h4 id="역할-2">역할</h4>
<ul>
<li>IGW는 VPC와 인터넷을 연결하는 관문이다.</li>
<li>VPC당 1개만 연결할 수 있으며, 퍼블릭 서브넷의 라우팅 테이블에 0.0.0.0/0 → IGW 경로를 추가해야 해당 서브넷의 리소스가 인터넷과 통신할 수 있다.</li>
<li>IGW 자체는 고가용성이며 AWS가 관리하므로 대역폭 제한이나 단일 장애점이 되지 않는다.</li>
</ul>
<h4 id="비즈니스-구성-예시-2">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 글로벌 고객을 대상으로 하는 웹 서비스</strong>
전 세계 고객이 접속하는 쇼핑몰에서 IGW는 고객의 브라우저 요청이 VPC 내부의 ALB와 Apache 서버에 도달할 수 있는 유일한 진입점이다. IGW가 없으면 아무리 퍼블릭 IP를 할당해도 인터넷 트래픽이 VPC 안으로 들어올 수 없다. 중요한 점은, 프라이빗 서브넷(WAS, RDS)에는 IGW 경로가 없으므로 외부에서 WAS나 DB에 직접 접근하는 것은 불가능하다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: 내부 전용 시스템에서의 IGW 제거</strong>
사내에서만 사용하는 ERP 시스템이라면 IGW 자체를 VPC에 연결하지 않고, *AWS Direct Connect나 VPN으로만 접근하도록 구성한다. 이렇게 하면 VPC 내 모든 서브넷이 프라이빗이 되어, 인터넷을 통한 공격 벡터를 원천적으로 제거할 수 있다.</p>
</blockquote>
<p><code>*AWS Direct Connect</code>: </p>
<h3 id="라우팅-테이블">라우팅 테이블</h3>
<h4 id="역할-3">역할</h4>
<ul>
<li>라우팅 테이블은 서브넷 안의 트래픽이 어디로 전달될 지 결정하는 신호 체계이다.</li>
<li>퍼블릭 라우팅 테이블(pub-rt)에는 0.0.0.0/0 → IGW 경로를 추가하여 인터넷 통신을 가능하게 하고, 프라이빗 라우팅 테이블(pri-rt)에는 인터넷 경로를 포함하지 않아 외부 접근을 차단한다.</li>
<li>각 서브넷은 정확히 하나의 라우팅 테이블에 연결된다.</li>
</ul>
<h4 id="비즈니스-구성-예시-3">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: WAS 서버에 외부 API 호출이 필요한 경우</strong>
쇼핑몰의 WAS까 결제 대행사(PG) API를 호출해야 한다면, 프라이빗 서브넷의 WAS가 인터넷에 접근해야 한다. 이때 NAT Gateway를 퍼블릭 서브넷에 배치하고, pri-rt에 0.0.0.0/0 → NAT Gateway 경로를 추가한다. WAS는 NAT Gateway를 통해 외부 API를 호출할 수 있지만, 외부에서 WAS로의 직접 접근은 여전히 불가능하다. 현재 아키텍처에서는 NAT Gateway가 없으므로, WAS가 외부 API를 호출해야 하는 비즈니스 요건이 생기면 이를 추가해야 한다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: 잘못된 라우팅으로 인한 보안 사고 방지</strong>
운영자가 실수로 pri-rt에 0.0.0.0/0 → IGW 경로를 추가하면, RDS가 배치된 프라이빗 서브넷이 사실상 퍼블릭 서브넷이 된다. DB가 인터넷에 노출되어 SQLi 등의 공격에 직접적으로 취약해질 수 있다. 이를 방지하기 위해 *AWS Config 규칙을 설정하여 &quot;프라이빗 서브넷의 라우팅 테이블에 IGW 경로가 추가되면 즉시 알림&quot;이 가도록 모니터링하는 것이 실무에서 권장된다.</p>
</blockquote>
<p><code>*AWS Config</code>: </p>
<blockquote>
<h4 id="pub-rt">pub-rt</h4>
</blockquote>
<ul>
<li>퍼블릭 라우팅 테이블. </li>
<li>0.0.0.0/0 → IGW 경로를 추가하여 web-sub-1, web-sub-2에 연결. </li>
<li>인터넷 트래픽을 IGW로 전달.</li>
</ul>
<blockquote>
<h4 id="pri-rt">pri-rt</h4>
</blockquote>
<ul>
<li>프라이빗 라우팅 테이블. </li>
<li>was-sub-1/2, rds-sub-1/2에 연결.</li>
<li>인터넷 경로 없음 → WAS/RDS를 외부 접근으로부터 보호.</li>
</ul>
<h2 id="2-ec2-인스턴스-구성">2. EC2 인스턴스 구성</h2>
<h3 id="web-ec2-웹-서버">web-ec2 (웹 서버)</h3>
<h4 id="역할-4">역할</h4>
<ul>
<li>web-ec2는 Apache2 웹 서버를 운영하는 인스턴스로, 클라이언트(브라우저)의 HTTP/HTTPS 요청을 최초로 수신하는 프레젠테이션 계층이다.</li>
<li>정적 콘텐츠(HTML, CSS, JS, 이미지)를 직접 서빙하거나, 동적 요청은 mod_jk 모듈을 통해 AJP 프로토콜(포트 8009)로 WAS(Tomcat)에 전달한다.</li>
<li>프록시 역할을 수행하며 WAS를 외부에 직접 노출시키지 않는 보안 이점이 있다.</li>
</ul>
<h4 id="비즈니스-구성-예시-4">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 쇼핑몰 메인 페이지 로딩 최적화</strong>
쇼핑몰 메인 페이지에 접속하면, 로고 이미지, CSS 파일, JavaScript 파일 등 정적 리소스가 약 30~50개 요청된다. Apache가 이 정적 파일들을 직접 서빙하고, 상품 목록 조회(동적 데이터)만 Tomcat으로 전달하면 WAS의 부하가 크게 줄어든다. 만약 Apache 없이 Tomcat이 모든 요청을 처리하면, 정적 파일 서빙에도 Java 스레드가 소모되어 동시 사용자 500명만 되어도 응답 지연이 발생할 수 있다. Apahce를 앞에 두면 동일 조건에서 2000명 이상을 처리 가능하다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: Apache를 리버스 프록시로 활용한 보안 강화</strong>
외부 공격자가 Tomcat의 관리 콘솔(/manager)에 직접 접근하려는 시도가 빈번하다. Apache가 앞에 있으면, Apache의 VirtualHost 설정에서 /manager 경로에 대한 접근을 차단(Deny)하거나, mod_jk의 JkMount 설정에서 해당 경로를 프록시하지 않도록 제외할 수 있다. 이렇게 하면 Tomcat 관리 콘솔이 인터넷에서 완전히 은닉되어, Tomcat 취약점을 노린 공격을 사전에 차단한다.</p>
</blockquote>
<table>
<thead>
<tr>
<th>web-ec2</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>AMI</td>
<td>Ubuntu Server 22.04 LTS (HVM)</td>
</tr>
<tr>
<td>인스턴스 유형</td>
<td>t3.micro</td>
</tr>
<tr>
<td>키 페어</td>
<td>web-key (.pem, RSA)</td>
</tr>
<tr>
<td>서브넷</td>
<td>web-sub-1 (10.0.0.0/24)</td>
</tr>
<tr>
<td>보안 그룹</td>
<td>web-sg</td>
</tr>
<tr>
<td>퍼블릭 IP</td>
<td>탄력적 IP 할당 (18.129.123.241)</td>
</tr>
<tr>
<td>역할</td>
<td>Apache2 웹 서버 운영. <br>libapache2-mod-jk를 통해 WAS(Tomcat)에 AJP 프로토콜로 요청 프록시. <br>Oracle Instant Client 설치로 DB 직접 접속 가능.</td>
</tr>
<tr>
<td>설치 소프트웨어</td>
<td>Apache2, libapache2-mod-jk, Oracle Instant Client 19.16, SQL*Plus</td>
</tr>
</tbody></table>
<h3 id="was-ec2-was-서버">was-ec2 (WAS 서버)</h3>
<h4 id="역할-5">역할</h4>
<ul>
<li>was-ec2는 Apache Tomcat 9 위에서 Java EE 웹 애플리케이션(쇼핑몰 비즈니스 로직)을 실행하는 비즈니스 로직 계층이다. </li>
<li>상품 검색, 장바구니, 주문 처리, 회원 관리 등 핵심 로직이 ROOT.war로 배포되어 실행된다. </li>
<li>JDBC를 통해 Oracle RDS에 연결하여 데이터를 읽고 쓴다. </li>
<li>프라이빗 서브넷에 위치하여 인터넷에서 직접 접근이 불가능하다.<h4 id="비즈니스-구성-예시-5">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 쇼핑몰 주문 처리 흐름에서의 WAS 역할</strong>
고객이 &quot;주문하기&quot; 버튼을 클릭하면 다음 흐름이 발생한다. Apache가 HTTP 요청을 수신하고, mod_jk가 AJP로 Tomcat에 전달한다. Tomcat의 서블릿이 주문 정보를 검증(재고 확인, 가격 계산, 쿠폰 적용)하고, JDBC로 Oracle RDS에 INSERT 쿼리를 실행하여 주문 데이터를 저장한 뒤, 결과를 JSP 페이지로 렌더링하여 Apache를 통해 고객에게 반환된다. 이 모든 비즈니스 로직이 WAS에서 처리된다.</p>
</blockquote>
</li>
</ul>
<blockquote>
<p><strong>예시 2: Windows Server를 WAS로 선택한 상황과 고려사항</strong>
이 아키텍처에서는 WAS에 Windows Server 2019를 사용하고 있는데, 이는 Eclipse IDE를 GUI 환경에서 사용하여 개발/배포를 직접 수행하기 위한 선택이다. 실제 운영 환경에서는 Linux(Amazon Linux 2 또는 Ubuntu)를 사용하는 것이 일반적이다. Linux는 라이선스 비용이 없어 t3.medium 기준 Windows 대비 월 약 20~30% 비용이 절감되고, SSH를 통한 자동화(CI/CD 파이프라인, 스크립트 배포)가 훨씬 용이하다. 실무에서는 Jenkins나 CodeDeploy로 WAR 파일을 자동 배포하는 것이 표준이다.</p>
</blockquote>
<table>
<thead>
<tr>
<th>was-ec2</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>AMI</td>
<td>Microsoft Windows Server 2019 Base</td>
</tr>
<tr>
<td>인스턴스 유형</td>
<td>t3.medium (2vCPU, 4GB RAM)</td>
</tr>
<tr>
<td>키 페어</td>
<td>was-key (.pem, RSA)</td>
</tr>
<tr>
<td>서브넷</td>
<td>was-sub-1 (10.0.4.0/24)</td>
</tr>
<tr>
<td>보안 그룹</td>
<td>was-sg</td>
</tr>
<tr>
<td>접속 방법</td>
<td>RDP (Port 3389)</td>
</tr>
<tr>
<td>역할</td>
<td>Apache Tomcat 9.0.12 위에서 Java EE 웹 애플리케이션(쇼핑몰) 운영. <br>Eclipse로 ROOT.war 빌드 후 배포.</td>
</tr>
<tr>
<td>설치 소프트웨어</td>
<td>Apache Tomcat 9.0.12, JRE 1.8.0_202, Eclipse IDE for Enterprise Java, Chrome</td>
</tr>
<tr>
<td>방화벽 개방 포트</td>
<td>8009(AJP), 8080(HTTP), 8443(HTTPS)</td>
</tr>
</tbody></table>
<blockquote>
<h3 id="web-was-연동-구성-apache-mod_jk">WEB-WAS 연동 구성 (Apache mod_jk)</h3>
</blockquote>
<ul>
<li><strong>worker.properties 설정</strong><ul>
<li>worker.ajp13_worker.host=was-ec2 Private IP (→ 후에 NLB DNS로 교체), port=8009</li>
</ul>
</li>
<li><strong>000-default.conf 수정</strong><ul>
<li>JKMount/* ajp13_worker 추가 → 모든 경로를 AJP로 Tomcat에 전달</li>
</ul>
</li>
<li><strong>Auto Scaling 적용 후 NLB DNS로 교체</strong><ul>
<li>worker.ajp13_worker.host=was-as-nlb DNS 이름 → NLB가 WAS 인스턴스로 부하 분산</li>
</ul>
</li>
</ul>
<h2 id="3-rds-relational-database-service">3. RDS (Relational Database Service)</h2>
<h3 id="jm-rds-oracle-db">jm-rds (Oracle DB)</h3>
<h4 id="역할-6">역할</h4>
<ul>
<li>RDS는 AWS가 관리하는 관계형 데이터베이스 서비스이다.</li>
<li>OS 패치, DB 엔진 업데이트, 하드웨어 관리를 AWS가 담당하므로 운영 부담이 줄어든다. </li>
<li>이 아키텍처에서는 Oracle Enterprise Edition 19c를 사용하여 쇼핑몰의 상품, 회원, 주문 데이터를 영구적으로 저장하며, WAS에서 JDBC를 통해 포트 1521로 연결한다. </li>
<li>프라이빗 서브넷에 배치되어 VPC 내부에서만 접근 가능하다.</li>
</ul>
<h4 id="비즈니스-구성-예시-6">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: *Multi-AZ 페일오버 시 서브넷 그룹의 역할</strong>
rds-sub-gp에 rds-sub-1(us-east-2a)과 rds-sub-2(us-east-2c)가 포함되어 있으므로, Multi-AZ를 활성화하면 AWS는 Primary를 us-east-2a에, Standby를 us-east-2c에 자동 배치한다. us-east-2a에 장애가 발생하면 Standby가 Primary로 승격되고, RDS의 엔드포인트(DNS)가 자동으로 us-east-2c의 인스턴스를 가리키도록 변경된다. WAS는 엔드포인트(DNS)로 연결하므로 코드 변경없이 자동으로 새 Primary에 연결된다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: 서브넷 그룹을 잘못 구성한 경우의 문제</strong>
만약 서브넷 그룹에 rds-sub-1(us-east-2a)만 포함하고 rds-sub-2를 빠뜨렸다면, Multi-AZ 활성화 시 AWS가 다른 AZ에서 Standby를 배치할 서브넷을 찾지 못해 생성에 실패한다. 또한, 서브넷 그룹에 퍼블릭 서브넷(web-sub)을 넣고 퍼블릭 액세스를 &quot;예&quot;로 설정하면 DB가 인터넷에 노출되는 심각한 보안 사고가 발생할 수 있다. 반드시 DB 전용 프라이빗 서브넷만 포함시켜야 한다.</p>
</blockquote>
<p><code>*Multi-AZ 페일오버</code>: </p>
<table>
<thead>
<tr>
<th>jm-rds</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>DB 엔진</td>
<td>Oracle Enterprise Edition 19.0.0.0</td>
</tr>
<tr>
<td>버전</td>
<td>Oracle 19.0.0.0.ru-2022-07.r1</td>
</tr>
<tr>
<td>인스턴스 클래스</td>
<td>db.t3.small (2vCPU, 2GB RAM)</td>
</tr>
<tr>
<td>스토리지</td>
<td>마그네틱 20GB</td>
</tr>
<tr>
<td>DB 인스턴스 식별자</td>
<td>jm-rds</td>
</tr>
<tr>
<td>초기 db 이름</td>
<td>chmdb</td>
</tr>
<tr>
<td>마스터 사용자</td>
<td>chmainadmin</td>
</tr>
<tr>
<td>서브넷 그룹</td>
<td>rds-sub-gp (rds-sub-1 + rds-sub-2)</td>
</tr>
<tr>
<td>퍼블릭 엑세스</td>
<td>아니요 (VPC 내부에서만 접근)</td>
</tr>
<tr>
<td>포트</td>
<td>1521 (Oracle 기본 포트)</td>
</tr>
<tr>
<td>자동 백업</td>
<td>비활성화</td>
</tr>
<tr>
<td>암호화</td>
<td>비활성화</td>
</tr>
<tr>
<td>다중 AZ</td>
<td>단일 인스턴스 생성</td>
</tr>
<tr>
<td>역할</td>
<td>쇼핑몰의 상품, 회원, 주문 데이터 영구 저장. <br>WAS(Tomcat)에서 JDBC를 통해 연결.</td>
</tr>
</tbody></table>
<blockquote>
<h3 id="db-서브넷-그룹---rds-sub-gp">DB 서브넷 그룹 - rds-sub-gp</h3>
<table>
<thead>
<tr>
<th>rds-sub-gp</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>포함 서브넷</td>
<td>rds-sub-1 (10.0.8.0/24) + rds-sub-2 (10.0.9.0/24)</td>
</tr>
<tr>
<td>가용 영역</td>
<td>us-east-2a, us-east-2c</td>
</tr>
<tr>
<td>역할</td>
<td>RDS가 배포될 수 있는 서브넷 범위 정의. 다중 AZ 구성 시 자동으로 2개 AZ에 배포 가능.</td>
</tr>
</tbody></table>
</blockquote>
<h2 id="4-auto-scaling--로드-밸런서">4. Auto Scaling &amp; 로드 밸런서</h2>
<h3 id="amiamazon-machine-image">AMI(Amazon Machine Image)</h3>
<h4 id="역할-7">역할</h4>
<ul>
<li>EC2 인스턴스의 OS, 소프트웨어 설치, 설정 파일, 배포된 애플리케이션까지 모든 상태를 스냅샷으로 캡처한 이미지이다.</li>
<li>동일한 환경의 인스턴스를 몇 분 안에 복제할 수 있다.</li>
<li>Auto Scaling의 시작 템플릿(Launch Template)과 결합하여 &quot;불변 인프라(Immutable Infrastructure)&quot; 패턴을 구현한다.</li>
</ul>
<h4 id="비즈니스-구성-예시-7">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 애플리케이션 업데이트 배포 전략</strong>
쇼핑몰에 새로운 결제 기능을 추가한 ROOT.war v2를 배포해야 한다. 기존 was-ec2에 v2를 배포하고 정상 동작을 확인한 후, 이 인스턴스를 중지하고 새로운 AMI(was-ami-v2)를 생성한다. was-as의 시작 템플릿을 was-ami-v2로 업데이트한 후, 인스턴스 새로 고침(Instance Refresh)을 실행하면 기존 인스턴스가 순차적으로 새 AMI 기반 인스턴스로 교체된다. 문제가 발생하면 시작 템플릿을 이전 AMI(was-ami-v1)로 되돌려 롤백할 수 있다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: 재해 복구(DR) 시나리오에서의 AMI 활용</strong>
us-east-2 리전 전체에 장애가 발생하는 극단적 상황에 대비하여, AMI를 다른 리전(ex: us-west-2)으로 복사해둘 수 있다. 재해 발생 시 오레곤 리전에서 복사된 AMI를 사용하여 동일한 web-ec2, was-ec2를 빠르게 재구성하고, RDS 크로스 리전 읽기 복제본을 Primary로 승격시켜 서비스를 복구한다. 전체 복구 시간(RTO)을 수 시간에서 30분 이내로 단축할 수 있다.</p>
</blockquote>
<blockquote>
<h3 id="was-ami-was-ami">was-ami (WAS AMI)</h3>
</blockquote>
<ul>
<li>Tomcat + 애플리케이션(ROOT.war)이 배포된 was-ec2를 중지 후 이미지화. <br>Auto Scaling 그룹이 동일한 환경의 인스턴스를 자동 생성하는 데 사용.</li>
</ul>
<blockquote>
<h3 id="web-ami-web-ami">web-ami (WEB AMI)</h3>
</blockquote>
<ul>
<li>Apache + mod_jk가 설치, 설정된 web-ec2를 이미지화.</li>
<li>web-as Auto Scaling 그룹이 동일하나 웹 서버 인스턴스를 자동 생성하는 데 사용.</li>
</ul>
<h3 id="nlbnetwork-load-balancer">NLB(Network Load Balancer)</h3>
<h4 id="역할-8">역할</h4>
<ul>
<li>NLB는 OSI 4계층에서 동작하는 로드 밸런서로, 초저지연과 초고처리량이 특징이다.</li>
<li>이 아키텍처에서는 Internal(내부용)으로 구성되어 Apache(WEB)에서 AJP(TCP 8009) 요청을 WAS(Tomcat) 인스턴스들에 분산한다.</li>
<li>HTTP 헤더를 파싱하지 않고 TCP 패킷을 그대로 전달하므로 ALB보다 지연이 적고, AJP와 같은 비HTTP 프로토콜을 그대로 처리할 수 있다.</li>
</ul>
<h4 id="비즈니스-구성-예시-8">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: AJP 프로토콜에 NLB를 사용하는 이유</strong>
AJP는 HTTP가 아닌 이진(binary) 프로토콜이므로 ALB(L7)로는 처리할 수 없다. ALB는 HTTP/HTTPS만 이해하기 때문에 AJP 패킷을 수신하면 해석에 실패하고 502 Bad Gateway를 반환한다. NLB는 TCP 레벨에서 패킷을 그대로 전달하므로 AJP, 데이터베이스 프로토콜, 커스텀 TCP 프로토콜 등 어떤 프로토콜이든 처리할 수 있다. 따라서 Apache ↔ Tomcat 간의 AJP 통신에는 NLB가 필수 선택이다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: Internal NLB로 WAS를 외부에서 완전히 은닉</strong>
NLB를 Internal으로 설정했으므로, NLB의 DNS 이름은 VPC 내부의 프라이빗 IP로만 해석된다. 인터넷에서 was-as-nlb의 DNS를 조회해도 접근할 수 없다. Apache의 worker.properties에서 worker.ajp13_worker.host를 NLB DNS로 설정하면, NLB가 was-sub-1과 was-sub-2에 분산된 Tomcat 인스턴스들에 TCP 레벨로 요청을 자동 분배한다. 특정 Tomcat 인스턴스가 다운되면 NLB의 TCP 헬스 체크가 이를 감지하고 해당 인스턴스로의 트래픽을 자동 차단한다.</p>
</blockquote>
<table>
<thead>
<tr>
<th>was-as-nlb</th>
<th>(WAS 내부 로드 밸런서)</th>
</tr>
</thead>
<tbody><tr>
<td>유형</td>
<td>Network Load Balancer (NLB)</td>
</tr>
<tr>
<td>체계</td>
<td>Internal (내부용 - VPC 내에서만 접근)</td>
</tr>
<tr>
<td>가용 영역</td>
<td>was-sub-1, was-sub-2</td>
</tr>
<tr>
<td>리스너 프로토콜/포트</td>
<td>TCP / 8009 (AJP)</td>
</tr>
<tr>
<td>대상 그룹</td>
<td>was-tg (TCP:8009)</td>
</tr>
<tr>
<td>역할</td>
<td>web-ec2(Apache)에서 AJP 요청을 was-as Auto Scaling 인스턴스들에 TCP 레벨에서 부하분산. <br>초저지연, 고처리량 환경에 적합한 L4 로드 밸런서.</td>
</tr>
</tbody></table>
<h3 id="albapplication-load-balancer">ALB(Application Load Balancer)</h3>
<h4 id="역할-9">역할</h4>
<ul>
<li>ALB는 OSI 7계층에서 동작하는 로드 밸런서로, 인터넷에서 들어오는 HTTP/HTTPS 요청을 여러 대의 Apache 웹 서버에 분산한다.</li>
<li>HTTP 헤더, URL 경로, 호스트 이름 등을 기반으로 지능적인 라우팅이 가능하고, 대상 서버의 헬스 체크를 주기적으로 수행하여 비정상 인스턴스에는 트래픽을 보내지 않는다.</li>
</ul>
<h4 id="비즈니스-구성-예시-9">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 경로 기반 라우팅으로 마이크로서비스 분리</strong>
쇼핑몰이 성장하여 &quot;상품 서비스&quot;와 &quot;회원 서비스&quot;를 별도 서버 그룹으로 분리하고 싶다면, ALB의 경로 기반 라우팅을 활용할 수 있다. /products/* 요청은 상품 서버 대상 그룹으로, /members/* 요청은 회원 서버 대상 그룹으로 라우팅하도록 규칙을 설정한다. 하나의 ALB로 여러 서비스를 관리할 수 있어 비용 효율적이며, 각 서비스를 독립적으로 스케일링할 수 있다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: HTTPS 적용과 SSL 오프로딩</strong>
실제 서비스에서는 ALB에 SSL/TLS 인증서(AWS Certificate Manager 무료 인증서)를 적용하여 HTTPS(443)로 리스너를 구성한다. ALB가 SSL 암호화/복호화를 처리(*SSL Offloading)하므로, 뒤쪽의 Apache 서버는 HTTP(80)로만 통신하면 된다. 이렇게 하면 각 Apache 서버에 인증서를 개별 설치할 필요가 없고, 인증서 갱신도 ALB에서 한 번만 하면 된다. HTTP(80)로 들어오는 요청은 ALB 리스너 규칙에서 HTTPS(443)로 301 리다이렉트를 설정하여 모든 통신을 암호화한다.</p>
</blockquote>
<p><code>*SSL Offloading</code>: </p>
<table>
<thead>
<tr>
<th>web-as-alb</th>
<th>(WEB 외부 로드 밸런서)</th>
</tr>
</thead>
<tbody><tr>
<td>유형</td>
<td>Application Load Balancer (ALB)</td>
</tr>
<tr>
<td>체계</td>
<td>Internet-facing (인터넷 연결)</td>
</tr>
<tr>
<td>가용 영역</td>
<td>web-sub-1, web-sub-2</td>
</tr>
<tr>
<td>리스너 프로토콜/포트</td>
<td>HTTP / 80</td>
</tr>
<tr>
<td>대상 그룹</td>
<td>web-tg (HTTP:80)</td>
</tr>
<tr>
<td>보안 그룹</td>
<td>web-alb-sg</td>
</tr>
<tr>
<td>역할</td>
<td>인터넷에서 들어오는 HTTP 요청을 web-as Auto Scaling 인스턴스(Apache)에 HTTP 레벨에서 분산. <br>URL 기반 라우팅, 헬스 체크 등 L7 기능 제공.</td>
</tr>
</tbody></table>
<h3 id="auto-scaling-그룹-asg---was-as--web-as">Auto Scaling 그룹 (ASG) - was-as / web-as</h3>
<h4 id="역할-10">역할</h4>
<ul>
<li>Auto Scaling 그룹은 설정된 조건에 따라 EC2 인스턴스를 자동으로 늘리거나(Scale Out) 줄이는(Scale In) 서비스이다.</li>
<li>AMI(머신 이미지)를 기반으로 동일한 환경의 인스턴스를 신속하게 복제하며, 최소/최대/원하는 인스턴스 수를 지정하여 비용과 성능 사이의 균형을 맞춘다. </li>
<li>헬스 체크를 통해 비정상 인스턴스를 자동 교체(Self-Healing)하는 기능도 제공한다.</li>
</ul>
<h4 id="비즈니스-구성-예시-10">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 쇼핑몰 타임 세일로 트래픽이 급증하는 상황</strong>
평소 동시 접속자가 500명인 쇼핑몰에서 오후 2시에 타임 세일을 진행하여 동시 접속자가 3000명으로 급증한다. web-as와 was-as 그룹의 CPU 사용률이 70%를 넘기면, 대상 추적 스케일링 정책이 트리거되어 새 인스턴스가 자동 생성된다. web-as는 web-ami로부터 Apache가 설치된 인스턴스를, was-as는 was-ami로부터 Tomcat+ROOT.war가 배포된 인스턴스를 약 2-3분 내에 생성하고, ALB/NLB의 대상 그룹에 자동 등록된다. 세일이 끝나고 트래픽이 줄어들면 인스턴스가 축소된다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: 인스턴스 장애 시 자동 복구(Self-Healing)</strong>
새벽 3시에 web-sub-1의 Apache 인스턴스가 *OS 커널 패닉으로 다운되었다고 가정한다. ALB의 헬스 체크가 해당 인스턴스의 비정상을 감지하고, Auto Scaling 그룹이 &quot;현재 인스턴스 수(1개)가 원하는 인스턴스 수(2개)보다 적다&quot;는 것을 인식한다. ASG는 자동으로 새 인스턴스를 web-ami로부터 생성하여 정상 상태로 복구한다. 운영자가 잠든 사이에도 서비스가 자동으로 복구되므로, 새벽 장애에 대한 대응 부담이 크게 줄어든다.</p>
</blockquote>
<p><code>*OS 커널 패닉</code>: </p>
<blockquote>
<h4 id="was-as-was-auto-scaling-그룹">was-as (WAS Auto Scaling 그룹)</h4>
</blockquote>
<ul>
<li>시작 템플릿: was-tmp (was-ami, t3.medium, was-key, was-sg)</li>
<li>서브넷: was-sub-1, was-sub-2</li>
<li>원하는/최소/최대: 2 / 1 / 3</li>
<li>정책: 평균 CPU 70% 초과 시 확장 (대상 추적), 축소 비활성화</li>
</ul>
<blockquote>
<h4 id="web-as-web-auto-scaling-그룹">web-as (WEB Auto Scaling 그룹)</h4>
</blockquote>
<ul>
<li>시작 템플릿: web-tmp (web-ami, t3.micro, web-key, web-sg)</li>
<li>서브넷: web-sub-1, web-sub-2</li>
<li>원하는/최소/최대: 2 / 1 / 3</li>
<li>정책: 평균 CPU 70% 초과 시 확장 (대상 추적), 축소 비활성화</li>
</ul>
<h2 id="5-보안-그룹-security-groups">5. 보안 그룹 (Security Groups)</h2>
<h3 id="보안-그룹security-group">보안 그룹(Security Group)</h3>
<h4 id="역할-11">역할</h4>
<ul>
<li>인스턴스 레벨에서 동작하는 상태 저장(Stateful) 가상 방화벽이다.</li>
<li>인바운드 트래픽이 허용되면 해당 응답 트래픽은 자동으로 허용된다.</li>
<li>허용 규칙만 정의할 수 있고(거부 규칙 X), 기본적으로 모든 인바운드 트래픽은 거부된다.<h4 id="비즈니스-구성-예시-11">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 보안 그룹 체이닝으로 계층 간 접근 통제</strong>
이 아키텍처의 보안 그룹 설계는 *&quot;체이닝(Chaining)&quot; 패턴을 따른다. web-alb-sg는 인터넷(0.0.0.0/0)에서 80/443을 수신하고 WEB 서브넷으로만 전달한다. web-sg는 ALB에서 온 80 트래픽을 수신하고 WAS 서브넷으로 8009만 송신한다. was-sg는 WEB 서브넷에서 8009를 수신하고 RDS 서브넷으로 1521만 송신한다. rds-sg는 WAS 서브넷에서 1521만 수신한다. 이렇게 하면 공격자가 Apache 서버를 장악하더라도 RDS에 직접 접근할 수 없고, 반드시 WAS를 거쳐야만 한다. 공격자의 횡적 이동 경로를 크게 제한하는 효과가 있다.</p>
</blockquote>
</li>
</ul>
<blockquote>
<p><strong>예시 2: SSH 접근 제한 강화</strong>
현재 web-sg의 SSH(22) 인바운드가 0.0.0.0/0(모든 IP)으로 열려 있는데, 이는 실습 편의를 위한 것이다. 실제 비즈니스 환경에서는 회사 사무실의 고정 IP(ex. 203.0.113.10/32)로만 SSH를 허용해야 한다. 더 나은 방법은 SSH 포트를 완전히 닫고, *AWS Systems Manager Session Manager를 사용하여 IAM 인증 기반으로 인스턴스에 접근하는 것이다. 이렇게 하면 SSH Brute Force attack을 원천 차단할 수 있다.</p>
</blockquote>
<ul>
<li><code>*Chaining</code>: </li>
<li><code>*AWS Systems Manager Session Manager</code>: </li>
</ul>
<blockquote>
<ul>
<li><strong>보안 그룹 특징</strong>: 
상태 저장(Stateful) 방화벽. 
인바운드 허용 시 응답 트래픽은 자동 허용. 
허용 규칙만 정의 (거부 규칙 없음).</li>
</ul>
</blockquote>
<blockquote>
<h3 id="web-sg---웹-서버-보안-그룹">web-sg - 웹 서버 보안 그룹</h3>
<table>
<thead>
<tr>
<th>▼ Inbound</th>
<th>-</th>
<th>▲ Outbound</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>SSH 22</td>
<td>0.0.0.0/0</td>
<td>TCP 8009</td>
<td>10.0.4.0/23 (WAS)</td>
</tr>
<tr>
<td>HTTP 80</td>
<td>0.0.0.0/0</td>
<td></td>
<td></td>
</tr>
<tr>
<td>HTTPS 443</td>
<td>0.0.0.0/0</td>
<td></td>
<td></td>
</tr>
</tbody></table>
</blockquote>
<ul>
<li>Apache 웹 서버 및 Auto Scaling으로 생성된 web 인스턴스에 적용.</li>
<li>HTTP.HTTPS 인바운드 허용.</li>
<li>AJP(8009)만 WAS 서브넷으로 아웃바운드.</li>
</ul>
<blockquote>
<h3 id="was-sg---was-서버-보안-그룹">was-sg - WAS 서버 보안 그룹</h3>
<table>
<thead>
<tr>
<th>▼ Inbound</th>
<th>-</th>
<th>▲ Outbound</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>TCP 8009</td>
<td>10.0.4.0/23 (WAS)</td>
<td>Oracle 1521</td>
<td>10.0.8.0/23 (RDS)</td>
</tr>
<tr>
<td>TCP 8009</td>
<td>10.0.0.0/23 (WEB)</td>
<td>TCP 8009</td>
<td>10.0.4.0/23 (WAS)</td>
</tr>
</tbody></table>
</blockquote>
<ul>
<li>Tomcat WAS 인스턴스에 적용.</li>
<li>AJP(8009)는 WEB/WAS 서브넷에서만 수신.</li>
<li>Oracle은 RDS 서브넷으로만 송신.</li>
</ul>
<blockquote>
<h3 id="rds-sg---rds-보안-그룹">rds-sg - RDS 보안 그룹</h3>
<table>
<thead>
<tr>
<th>▼ Inbound</th>
<th>-</th>
<th>▲ Outbound</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>Oracle 1521</td>
<td>10.0.4.0/23 (WAS)</td>
<td>전체 삭제</td>
<td>기본 규칙 제거</td>
</tr>
</tbody></table>
</blockquote>
<ul>
<li>Oracle RDS에 적용.</li>
<li>WAS 서브넷(10.0.4.0/23)에서의 1521 포트 접속만 허용.</li>
<li>아웃바운드 기본 규칙 완전 삭제로 최소 권한 원칙 적용.</li>
</ul>
<blockquote>
<h3 id="was-alb-sg---alb-전용-보안-그룹">was-alb-sg - ALB 전용 보안 그룹</h3>
<table>
<thead>
<tr>
<th>▼ Inbound</th>
<th>-</th>
<th>▲ Outbound</th>
<th>-</th>
</tr>
</thead>
<tbody><tr>
<td>HTTP 80</td>
<td>0.0.0.0/0</td>
<td>HTTP 80</td>
<td>10.0.0.0/23 (WEB)</td>
</tr>
<tr>
<td>HTTPS 443</td>
<td>0.0.0.0/0</td>
<td>HTTPS 443</td>
<td>10.0.0.0/23 (WEB)</td>
</tr>
</tbody></table>
</blockquote>
<ul>
<li>web-as-alb ALB에 전용으로 적용.</li>
<li>인터넷에서 80/443 수신.</li>
<li>WEB 서브넷으로만 포워딩.</li>
</ul>
<h2 id="6-네트워크-acl-network-acl">6. 네트워크 ACL (Network ACL)</h2>
<blockquote>
<ul>
<li><strong>Network ACL 특징</strong>:
상태 비저장(Stateless) 방화벽.
번호 순서대로 규칙 평가.
허용/거부 모두 정의 가능.
응답 트래픽을 위해 임시 포트(1024-65535)를 별도 허용해야 함.</li>
</ul>
</blockquote>
<h3 id="network-acl-nacl">Network ACL (NACL)</h3>
<h4 id="역할-12">역할</h4>
<ul>
<li>NACL은 서브넷 레벨에서 동작하는 상태 비저장(Stateless) 방화벽이다.</li>
<li>보안 그룹과 달리 허용/거부 규칙 모두 정의할 수 있고, 규칙 번호 순서대로 평가된다.</li>
<li>Stateless이므로 인바운드가 허용되어도 아웃바운드에서 응답 트래픽(임시 포트 1024~65535)을 별도로 허용해야 한다.</li>
<li>보안 그룹과 함께 &quot;이중 방화벽&quot; 구조를 형성하여 심층 방어(Defense in Depth)를 구현한다.</li>
</ul>
<h4 id="비즈니스-구성-예시-12">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 특정 IP 대역의 차단(거부 규칙 활용)</strong>
보안 모니터링에서 중국 IP 대역(ex. 123.45.0.0/16)으로부터 대량의 SQL Injection 공격이 탐지되었다고 가정한다. 보안 그룹에는 거부 규칙을 설정할 수 없지만, NACL에서는 가능하다. web-nacl의 인바운드에 규칙 번호 50으로 123.45.0.0/16 → DENY를 추가하면(기존 허용 규칙 번호 100보다 낮은 번호), 해당 IP 대역의 모든 트래픽이 서브넷 진입 전에 차단된다. 이것이 보안 그룹만으로는 불가능하고, NACL이 필요한 대표적인 상황이다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: Stateless 특성으로 인한 임시 포트 설정 필수</strong>
was-nacl에서 인바운드로 AJP(8009)를 허용했지만, 아웃바운드에 임시 포트(1024~65535)를 허용하지 않으면 Tomcat의 응답 패킷이 서브넷을 빠져나가지 못한다. 이는 보안 그룹(Stateful)에서는 자동 처리되지만, NACL(Statelss)에서는 수동으로 설정해야 한다. 실무에서 NACL을 처음 구성할 때 가장 흔히 발생하는 실수가 바로 이 임시 포트 허용을 빠뜨리는 것으로, 모든 것이 정상인데 통신이 안 되는 원인 모를 장애로 이어진다.</p>
</blockquote>
<blockquote>
<h3 id="web-nacl-web-서브넷">web-nacl (WEB 서브넷)</h3>
</blockquote>
<ul>
<li><strong>연결</strong>: web-sub-1, web-sub-2</li>
<li><strong>인바운드</strong>: SSH(22), HTTP(80), HTTPS(443), 임시 TCP(1024-65535) - 0.0.0.0/0 허용</li>
<li><strong>아웃바운드</strong>: HTTP(80), HTTPS(443), AJP(8009→WAS), 임시 TCP 허용</li>
</ul>
<blockquote>
<h3 id="was-nacl-was-서브넷">was-nacl (WAS 서브넷)</h3>
</blockquote>
<ul>
<li><strong>연결</strong>: was-sub-1, was-sub-2</li>
<li><strong>인바운드</strong>: AJP 8009 (WEB서브넷), 임시TCP(RDS, WAS 대역) 허용</li>
<li><strong>아웃바운드</strong>: 임시TCP (WEB 대역), Oracle 1521 (RDS 대역) 허용</li>
</ul>
<blockquote>
<h3 id="rds-nacl-rds-서브넷">rds-nacl (RDS 서브넷)</h3>
</blockquote>
<ul>
<li><strong>연결</strong>: rds-sub-1, rds-sub-2</li>
<li><strong>인바운드</strong>: Oracle 1521 (WAS 서브넷 10.0.4.0/23) 허용</li>
<li><strong>아웃바운드</strong>: 임시TCP 1024-65535 (WAS 서브넷) 허용</li>
</ul>
<h2 id="7-iam-identity-and-access-management">7. IAM (Identity and Access Management)</h2>
<h3 id="iam">IAM</h3>
<h4 id="역할-13">역할</h4>
<ul>
<li>IAM은 AWS 리소스에 대한 접근을 인증(Authentication)하고 인가(Authorization)하는 서비스이다.</li>
<li>&quot;누가(사용자/역할) 어떤 리소스에 어떤 작업을 할 수 있는지&quot;를 정책(Policy)으로 정의한다. </li>
<li>루트 계정 대신 IAM 사용자를 생성하여 사용하면, 최소 권한 원칙에 따라 필요한 서비스에만 접근 권한을 세분화 할 수 있다.</li>
</ul>
<h4 id="비즈니스-구성-예시-13">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: 팀별 권한 분리</strong>
쇼핑몰을 운영하는 팀이 개발팀, 인프라팀, DBA팀으로 나뉘어 있다고 가정한다. 개발팀 IAM 그룹에는 EC2(Read), S3(Read/Write), CloudWatch(Read) 권한만 부여한다. 인프라팀에는 VPC, EC2, ALB, Auto Scaling 등의 Full Access를 부여한다. DBA팀에는 RDS Full Access만 부여한다. 이렇게 하면 개발자가 실수로 VPC 설정을 변경하거나, 인프라 엔지니어가 RDS를 삭제하는 사고를 IAM 레벨에서 방지할 수 있다.</p>
</blockquote>
<blockquote>
<p><strong>예시 2: MFA 적용과 루트 계정 보호</strong>
현재 설정에서는 MFA가 비활성화되어 있는데, 실무에서는 모든 IAM 사용자에게 MFA(Multi-Factor Authentification)를 필수로 적용해야 한다. 특히 루트 계정은 하드웨어 MFA 키(YubiKey 등)로 보호하고, 일상적인 작업에는 절대 사용하지 않는다. 2019년 Capital One 해킹 사건에서 IAM 역할의 과도한 권한이 핵심 원인이었으며, 이후 AWS는 IAM 정책을 최소 권한으로 설정할 것을 강력히 권고하고 있다.</p>
</blockquote>
<h3 id="iam-사용자-계정">IAM 사용자 계정</h3>
<ul>
<li>콘솔 액세스 : MFA 없이 활성화</li>
<li>역할<ul>
<li>루트 계정 대신 실습에 사용되는 IAM 사용자.</li>
<li>최소 권한 원칙에 따라 필요한 서비스에만 접근 권한을 부여</li>
</ul>
</li>
</ul>
<h2 id="8-탄력적-ip-elastic-ip">8. 탄력적 IP (Elastic IP)</h2>
<h3 id="elastic-ip">Elastic IP</h3>
<h4 id="역할-14">역할</h4>
<ul>
<li>탄력적 IP(EIP)는 AWS 계정에 할당되는 고정 공인 IPv4 주소이다.</li>
<li>일반적으로 EC2 인스턴스를 중지/재시작하면 퍼블릭 IP가 변경되지만, EIP를 연결하면 인스턴스 상태와 관계없이 동일한 IP가 유지된다.</li>
<li>이 아키텍처에서는 web-ec2에 EIP를 할당하여 Auto Scaling 구성 전 직접 접속 테스트에 활용했다.</li>
</ul>
<h4 id="비즈니스-구성-예시-14">비즈니스 구성 예시</h4>
<blockquote>
<p><strong>예시 1: DNS 레코드와 EIP 연동</strong>
Auto Scaling 적용 전, 쇼핑몰 도메인의 A 레코드를 web-ec2의 EIP로 설정한다. 서버를 점검을 위해 중지했다가 다시 시작해도 IP가 바뀌지 않으므로, DNS 변경 없이 서비스를 재개할 수 있다. 단, Auto Scaling을 적용한 이후에는 ALB의 DNS 이름으로 CNAME 또는 Route 53 Alias 레코드를 설정하는 것이 올바른 방식이며, 개별 인스턴스의 EIP는 더 이상 필요하지 않다.</p>
</blockquote>
<h3 id="web-ec2-탄력적-ip">web-ec2 탄력적 IP</h3>
<ul>
<li>할당 주소</li>
<li>풀: Amazon IPv4 주소 풀</li>
<li>연결 인스턴스: web-ec2 (Private IP: 10.0.0.103)</li>
<li>역할<ul>
<li>인스턴스가 중지/재시작되어도 공인 IP가 변경되지 않도록 고정.</li>
<li>Auto Scaling 구성 전 직접 접속 테스트 시 활용.</li>
</ul>
</li>
</ul>
<h2 id="9-전체-아키텍쳐-설계-원칙-요약">9. 전체 아키텍쳐 설계 원칙 요약</h2>
<p><strong>1. 3-Tier 아키텍처</strong></p>
<ul>
<li>프레젠테이션(Web) → 비즈니스 로직(WAS) → 데이터(DB) 계층을 완전 분리.</li>
<li>각 계층은 별도 서브넷에 배치되어 독립적인 확장, 보안 정책 적용 가능.</li>
</ul>
<p><strong>2. 고가용성 (HA)</strong></p>
<ul>
<li>모든 계층을 us-east-2a, us-east-2c 두 개의 가용 영역에 분산.</li>
<li>Auto Scaling 그룹으로 장애 시 자동 복구 및 트래픽에 따른 자동 확장</li>
</ul>
<p><strong>3. 심층 보안 (Defenses in Depth)</strong></p>
<ul>
<li>Network ACL (서브넷 레벨)</li>
<li>보안 그룹 (인스턴스 레벨)</li>
<li>프라이빗 서브넷으로 WAS/DB를 인터넷에서 완전 격리.</li>
<li>최소 권한 원칙 적용</li>
</ul>
<p><strong>4. 이중 로드 밸런싱</strong></p>
<ul>
<li>ALB(L7, 인터넷→WEB)와 NLB(L4, WEB→WAS) 두 단계 부하 분산으로 각 계층의 트래픽을 효율적으로 처리.</li>
<li>WAS는 내부(Internal) NLB를 통해 외부 노출 없이 분산.</li>
</ul>
<p><strong>5. AJP 프로토콜 연동</strong></p>
<ul>
<li>Apache(WEB)와 Tomcat(WAS)을 mod_jk + AJP(포트 8009)로 연동</li>
<li>HTTP가 아닌 이진 프로토콜인 AJP로 효율적인 WEB/WAS 통신 구현.</li>
</ul>
<p><strong>6. AMI 기반 불변 인프라</strong></p>
<ul>
<li>설정/배포가 완료된 인스턴스를 AMI로 스냅샷.</li>
<li>시작 템플릿(Launch Template)과 결합하여 Auto Scaling이 동일 환경을 신속하게 복제.</li>
</ul>
<hr>
<blockquote>
<p><del>미완이긴 한데 추후 시간이 된다면 마저 보완해서 수정하겠습니다.</del></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Cloud Security Architect]]></title>
            <link>https://velog.io/@yeon_ni/Cloud-Security-Architect</link>
            <guid>https://velog.io/@yeon_ni/Cloud-Security-Architect</guid>
            <pubDate>Tue, 28 Apr 2026 10:11:07 GMT</pubDate>
            <description><![CDATA[<h2 id="클라우드-보안-아키텍처">클라우드 보안 아키텍처</h2>
<ul>
<li>클라우드 환경에서 데이터, 애플리케이션 및 인프라를 보호하는 방법을 정의하는 청사진. 여기에는 신원관리, 암호화, 네트워크 제어 및 모니터링 시스템이 함께 작동함.</li>
<li>액세스 제어부터 위협 탐지까지 다양한 보안 계층을 구축하는 것과 유사함.</li>
<li>비즈니스 운영을 유지하며 사이버 공격 및 무단 액세스로부터 클라우드 리소스를 보호</li>
</ul>
<h3 id="클라우드-보안-아키텍처의-핵심-계층">클라우드 보안 아키텍처의 핵심 계층</h3>
<p>심층 방어(Defense in Depth) 전략: 다중 레이어 보안 체계</p>
<p><strong>1. 신원 및 접근 권리(IAM: Identify and Access Management)</strong></p>
<ul>
<li>다중 인증(MFA) 및 SSO: Credential Stuffing 등을 방어하기 위한 필수 통제 수단</li>
<li>최소 권한의 원칙(Least Privilege): 사용자 및 서비스(EC2, Lambda)에 업무 수행에 필요한 최소한의 권한만 부여해 피해 범위 축소</li>
<li>Zero Trust 모델: 아무것도 신뢰하지 않고 항상 검증한다. 는 원칙하에 내부망에 접속해 있더라도 철저한 인증과 권한 검증을 거치도록 설계</li>
</ul>
<p><strong>2. 네트워크 보안(Network Security)</strong></p>
<ul>
<li>네트워크 세분화(Segmentation): VPC 및 서브넷(Public/Private)을 논리적으로 분리하여 인터넷에 노출되는 자원과 내부 자원을 엄격히 격리함.</li>
<li>접근 제어(Access Control): 상태 저장(Stateful) 기반의 Security Group(보안 그룹)과 상태 비저장(Stateless) 기반의 NACL을 교차 적용하여 트래픽 인바운드/아웃바운드 제어</li>
<li>경계 방어: 웹 애플리케이션 방화벽을 통해 L7 애플리케이션 공격(SQLi, XSS 등)을 차단하고 DDoS 방어 솔루션을 적용하여 가용성을 확보.</li>
</ul>
<p><strong>3. 데이터 보호 (Data Protection)</strong></p>
<ul>
<li>저장 데이터 암호화 (Data at Rest): KMS(Key Management Service)를 활용하여 디스크 볼륨(EBS), 데이터베이스(RDS), 오브젝트 스토리지(S3)의 데이터를 암호화함.<ul>
<li>전송 데이터 암호화(Data in Transit): 클라이언트와 서버 또는 서버 간 내부 통신 구간에 TLS 1.2 이상의 프로토콜을 적용하여 스니핑을 방지함.</li>
<li>데이터 분류(Data Classification): 민감 데이터(개인정보, 금융정보 등)를 식별하고, 비인가된 접근이나 외부 유출을 방지하는 통제 정책(DLP)을 적용.</li>
</ul>
</li>
</ul>
<p><strong>4. 애플리케이션 및 워크로드 보안(App &amp; Workload Security)</strong></p>
<ul>
<li>인프라 위에 배포되는 코드와 애플리케이션 자체의 취약점을 식별하고 조치함</li>
<li>DevSecOps 통합(Shift-Left): CI/CD 파이프라인에 보안 점검(SAST, DAST, SCA)을 자동화해 서비스 배포 전 코드 레벨의 취약점을 사전 조치</li>
<li>Secure Coding 관행: OWASP Top 10 을 준수하여 로직 상의 취약점을 원천적으로 차단</li>
<li>컨테이너/서버리스 보안: 도커 이미지 취약점 스캐닝, 런타임 행위 모니터링, 쿠버네티스(Kubernetes) 오케스트레이션 보안 설정을 강화</li>
</ul>
<p><strong>5. 모니터링 및 위협 탐지(Monitoring &amp; Threat Detection)</strong></p>
<ul>
<li>통합 로깅(Centralized Logging): API 호출 로그(CloudTrail), 네트워크 플로우 로그(VPC Flow Logs), OS 및 애플리케이션 로그를 변조 불가한 중앙 저장소로 수집</li>
<li>SIEM 및 행위 기반 탐지: 수집된 로그를 바탕으로 비정상적인 행위 패턴을 실시간으로 분석하고 Alert 발생</li>
<li>CSPM(Cloud Security Posture Management): 클라우드 인프라의 설정 오류나 컴플라이언스 위반사항을 지속적으로 자동 진단하고, 발견 시 자동 복구(Auto-Remediation) 파이프라인을 동작시킴.</li>
</ul>
<h3 id="nat-gateway-traffic-flow">NAT Gateway Traffic Flow</h3>
<h5 id="서칭하다가-httpsaws-hyohtistorycom184-해당-링크의-실무자-인터뷰를-보게-되었고-정리하고-가면-좋을-것-같은-내용이라-정리함">서칭하다가 <a href="https://aws-hyoh.tistory.com/184">https://aws-hyoh.tistory.com/184</a> 해당 링크의 실무자 인터뷰를 보게 되었고, 정리하고 가면 좋을 것 같은 내용이라 정리함.</h5>
<blockquote>
<p>EC2 → NAT Gateway → Internet Gateway → Public Internet</p>
</blockquote>
<ul>
<li>NAT G/W: 공인 IP를 갖지 않는 Private Subnet에 속한 EC2 등이 공인 인터넷에 접근 가능하도록 EC2의 사설 IP를 공인 IP로 Source IP NAT하는 역할을 함.</li>
<li>여기서 Source IP NAT가 무엇일까?</li>
<li>NAT G/W 를 사용할 때 사설 IP를 공인 IP로 NAT 해주는 것은 Internet G/W.</li>
<li>Internet G/W: AWS 내부에 실질적으로 공인 IP를 보유하고 이를 일대일 NAT하는 존재</li>
</ul>
<hr>
<p><strong>1. Outbound 패킷 생성 (Private EC2)</strong></p>
<ul>
<li>출발지 IP: EC2의 사설 IP (ex. 10.0.1.5)</li>
<li>목적지 IP: 외부 웹서버의 공인 IP (ex. 8.8.8.8)</li>
</ul>
<p><strong>2. NAT Gateway 통과 (NAPT 기반 1차 SNAT)</strong></p>
<ul>
<li>라우팅 테이블에 따라 패킷이 NAT G/W에 전달되면, NAT G/W는 출발지 IP를 NAT G/W 자신의 사설 IP(ex. 10.0.0.10)로 변환</li>
<li>다수의 EC2가 하나의 NAT G/W를 공유해야 하므로 IP뿐 아니라 Source Port 도 임의의 포트로 변경하여 NAT State Table에 세션 정보를 기록. 이를 NAPT(Network Address Port Translation) 또는 PAT(Port Address Translation)이라고 부름.</li>
</ul>
<p><strong>3. Internet Gateway 통과 (1:1 Static NAT 기반 2차 SNAT)</strong></p>
<ul>
<li>패킷(출발지 IP: NAT G/W 사설 IP)이 IGW로 전달</li>
<li>IGW는 내부적으로 매핑된 테이블을 확인하여 NAT G/W 사설 IP를 NAT G/W에 할당되어 있는 Elastic IP(공인 IP)로 1:1 주소 변환함</li>
<li>최종 출발지 IP: Elastic IP/ 목적지 IP: 8.8.8.8 형태로 Public Internet망을 타게 됨.</li>
</ul>
<p><strong>4. Inbound 응답 패킷 처리 (Stateful 기반 역변환)</strong></p>
<ul>
<li>통신은 양방향이기에 외부 서버에서 응답 패킷이 돌아올 때는 역순의 변환(DNAT) 발생</li>
<li>IGW가 목적지 IP(Elastic IP)를 NAT G/W 사설 IP로 변환하여 내부로 들여보냄</li>
<li>NAT G/W는 기존에 기록해둔 NAT State Table을 참조해, 목적지 IP와 포트를 원래 요청을 보냈던 EC2의 사설 IP와 원본 포트로 다시 변환해 인스턴스에 전달함.</li>
</ul>
<h3 id="서비스-모델에-따른-클라우드-보안-아키텍처"><a href="https://www.sentinelone.com/ko/cybersecurity-101/cloud-security/cloud-security-architecture/">서비스 모델에 따른 클라우드 보안 아키텍처</a></h3>
<ul>
<li><strong>IaaS(Infrastructure as a Service)</strong>
  아파트를 임대하는 것. (구조는 제공되지만, 인테리어는 사용자가 직접 꾸밈)
  저장소, 서버, 네트워크 같은 원자재 제공하지만 자산을 보호하는 것은 사용자의 책임.<ul>
<li>Cloud SA에는 데이터 보호, 접근 제어 관리, 가상 네트워크 보호 등 포함됨</li>
</ul>
</li>
<li><strong>PaaS(Platform as a Service)</strong>
  가구가 갖춰진 아파트. 
  클라우드 공급자는 스택의 많은 부분 관리하며, 사용자는 애플리케이션과 데이터에 집중.<ul>
<li>Cloud SA는 애플리케이션 계층 보안과 사용자 액세스 관리를 포함.</li>
</ul>
</li>
<li><strong>SaaS(Software as a Service)</strong>
  호텔 객실에 머무는 것. 
  클라우드 공급자가 보안의 상당 부분 처리<ul>
<li>Cloud SA는 데이터 보안과 사용자 접근 제어에 집중.</li>
</ul>
</li>
</ul>
<h3 id="클라우드-보안-아키텍처의-원칙">클라우드 보안 아키텍처의 원칙</h3>
<ul>
<li><p><strong>다중 계층 보안</strong></p>
<ul>
<li>심층 방어(defense in depth): 한 계층이 무너지더라도 바로 뒤에 다른 계층이 있어 방어 체계를 유지함. 이는 공격자가 클라우드 방어망을 뚫는 것을 어렵게 함.</li>
<li>방화벽, IDS, 데이터 암호화 프로토콜까지 여러 계층이 함께 작동함.</li>
<li>이런 계층적 접근 방식은 클라우드 내 데이터의 보안을 강화하고, 클라우드 보안 아키텍처의 핵심 부분을 구성함.<blockquote>
<p>ex. 외부에서 웹 서버를 통해 DB로 접근하려는 공격
<strong>해결방안</strong><br>1. L7: AWS WAF를 통해 SQL Injection 및 XSS 공격 페이로드 차단.<br>    2. L3/L4(Network): Public 서브넷의 로드밸런서(ALB)에서 Private 서브넷의 EC2로만 트래픽이 흐르도록 보안 그룹(SG) 설정.<br>3. Data(Storage): RDS에 접근하는 EC2의 IAM Role을 검증하고, 저장된 데이터는 KMS로 암호화. 한 계층(ex. WAF 우회)이 뚫리더라도 SG나 IAM 정책에서 공격이 차단되도록 설계.</p>
</blockquote>
</li>
</ul>
</li>
<li><p><strong>최소 권한 원칙(Least Privilege)</strong></p>
<ul>
<li>내용물에 접근할 특정 필요성이 있는 가장 신뢰할 수 있는 개인만이 열쇠를 가지게끔 할 것.</li>
<li>사용자가 자신의 업무를 수행하는 데 필요한 최소한의 접근 권한만을 부여하도록 권장함.</li>
<li>이를 통해 피해 가능성을 최소화할 수 있게 됨.<blockquote>
<p>ex. 특정 애플리케이션 서버가 S3 버킷에 이미지를 업로드해야 하는 상황</p>
</blockquote>
</li>
<li><em>해결방안**<br> -&gt; EC2 인스턴스에 AWS 액세스 키를 하드코딩하지 않고, IAM Role을 부여하여 임시 자격 증명을 사용하도록 설계. 정책 작성 시 리소스를 `Resource: &quot;</em>&quot;<code>로 두지 않고,</code>Resource: &quot;arn:aws:s3:::specific-image-bucket/*&quot;<code>으로 한정하며</code>s3:PutObject` 액션만 허용하도록 JSON 정책을 엄격하게 튜닝</li>
</ul>
</li>
<li><p><strong>업무 분리(Segregation of Duties)</strong></p>
<ul>
<li>견제와 균형 시스템과 유사하게 작동함.</li>
<li>어떤 개인이나 프로세스도 클라우드 환경의 어느 측면에 대해서도 절대적 통제권을 가지지 않도록 보장함.</li>
<li>ex. 개발자가 그 코드를 검토하거나 승인하는 사람이 되어선 안됨. ⇒ 이런 분리는 잠재적인 오용을 방지하고 객관성을 부여할 수 있게 됨.<blockquote>
<p>ex. 인프라를 코드로 배포(IaC)하는 개발자가 스스로 방화벽 정책까지 마음대로 변경하여 0.0.0.0/0 (Any) 포트를 여는 상황</p>
</blockquote>
</li>
<li><em>해결방안*</em><br> -&gt; AWS Organizations SCP(Service Control Policy)를 적용하여, 개발 계정에서는 인프라 리소스 생성만 가능하게 하고, CloudTrail 로그 비활성화나 GuardDuty 설정 변경 등 핵심 보안 기능에 대한 통제권은 중앙 보안 계정(Security Account)에서만 다루도록 권한을 물리적/논리적으로 분리.</li>
</ul>
</li>
<li><p><strong>책임성 및 추적성</strong></p>
<ul>
<li>클라우드 내 모든 작업은 흔적을 남기고 특정 주체와 연결되어야 함.</li>
<li>철저한 감사, 책임성 강화, 신속성 사고 대응을 할 수 있게 됨.<blockquote>
<p>ex. 랜섬웨어 감염 또는 내부자에 의한 대량의 고객 데이터 삭제(S3 버킷 삭제 등) 발생</p>
</blockquote>
</li>
<li><em>해결방안*</em><br> -&gt; 인프라 설계 단계부터 모든 API 호출 로그(CloudTrail), 네트워크 트래픽 흐름(VPC Flow Logs), 시스템 로그를 중앙 집중형 로그 아카이브(Log Archive) 전용 계정의 S3 버킷으로 실시간 전송. 이 버킷은 Object Lock(Worm) 기능을 활성화하여 루트 관리자라도 로그를 위변조하거나 삭제할 수 없도록 구성하여 포렌식 조사 시 무결성을 보장.</li>
</ul>
</li>
<li><p><strong>설계 단계부터 고려된 보안(Security by Design)</strong></p>
<ul>
<li>보안은 사후 고려 사항이 아닌 시스템 설계 초기 단계부터 필수 요소로 포함.</li>
<li>클라우드 아키텍처에도 보안 조치가 처음부터 내재됨</li>
<li>이를 통해 포괄적이고 견고한 방어 체계를 구축 가능하며, 관리가 용이하고 오류 발생 가능성도 낮아짐.<blockquote>
<p>ex. 런타임 환경에서 504 Gateway Timeout 같은 통신 장애나 보안 그룹 설정 누락이 발생하여 뒤늦게 디버깅하는 비용 낭비</p>
</blockquote>
</li>
<li><em>해결방안*</em><br> -&gt; CI/CD 파이프라인에 보안 통제(DevSecOps) 통합. 예를 들어, Terraform으로 인프라를 배포하기 전, 파이프라인 내에서 정적 분석 도구(Checkov, tfsec 등) 실행. “SSH 포트가 전체 개방되어 있음” 혹은 “DB 암호화가 비활성화됨” 같은 룰 위반이 탐지되면, 배포 프로세스(빌드) 자체를 강제로 중단시켜 안전한 구조만 클라우드에 올라가도록 통제.</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[eDiscovery]]></title>
            <link>https://velog.io/@yeon_ni/eDiscovery</link>
            <guid>https://velog.io/@yeon_ni/eDiscovery</guid>
            <pubDate>Tue, 28 Apr 2026 07:29:35 GMT</pubDate>
            <description><![CDATA[<h2 id="ediscovery">eDiscovery</h2>
<p><strong>먼저 eDiscovery의 개념입니다.</strong> 
eDiscovery, 즉 Electronic Discovery란 소송이나 조사, 규제 대응 과정에서 전자적으로 저장된 정보, 이른바 ESI를 식별하고 보존하여 수집·처리·검토·분석한 뒤 상대방이나 법원에 제출하는 일련의 법적 절차를 말합니다.</p>
<blockquote>
<h3 id="ediscovery-1">eDiscovery</h3>
<p>미국 민사소송절차에는 소송이 제기되면 공판이 이루어지기 전에 당사자들이 소송에 관련된 정보와 증거를 소송 상대방으로부터 요구해서 얻을 수 있도록 하는 증거개시제도(Discovery 제도)가 있다. 이는 공판 전에 당사자들이 서로 소송에 관련된 정보와 증거를 공유함으로써 사건의 쟁점을 명확히 하여 소송의 효율성을 높이고 올바른 판결을 내리고자 하는 것. <br>
지식재산권 분쟁에서 미국의 전자증거개시제도를 활용할 가능성이 대두됨. <br>
최근 체결된 FTA는 지식재산권에 관한 분쟁해결을 위해 영업 비밀을 포함한 정보의 일반적 제공의무를 규정하고 있고, 이는 영미법상의 증거개시 제도에 국내 특성을 반영한 e-Discovery 대응절차 대한 대응과 맞물려 있다. 이 체결의 영향으로 미국과의 지식재산권 분쟁은 증가할 것이고, 이런 지식재산권 분쟁에서 미국의 전자증거개시제도를 활용할 가능성이 대두되고 있다.<br>
우리나라의 많은 기업이 미국과 같은 선진국들과 국제교류를 하고 해외사업을 확장함에 따라 국제적 분쟁에 대한 대비가 필요한 실정이며 이에 대해 체계적으로 대응할 수 있도록 e-Discovery에 대한 준비가 필요함.</p>
</blockquote>
<p><strong>여기서 ESI란</strong>  이메일, 메신저 대화, 서버 파일, 데이터베이스, 클라우드 문서, 모바일 데이터 등 디지털 형태로 존재하는 모든 정보를 포괄합니다. 종이 문서 중심의 전통적 Discovery와 달리, 현대 분쟁에서는 ESI가 핵심 증거의 대부분을 차지합니다.</p>
<p><strong>eDiscovery가 왜 중요한지</strong>로 넘어가게 되면, 우선 법적 의무의 문제입니다.
미국의 FRCP나 EU의 GDPR 등 각국의 규제가 전자증거의 적절한 관리를 의무화하고 있습니다.
이를 제대로 이행하지 못하면 증거인멸 제재, 소송 패소 등 심각한 법적 불이익이 발생합니다.</p>
<p><strong>비용 측면</strong>에서도 전체 소송 비용의 상당 부분이 eDiscovery 단계에서 발생하기 때문에,
eDiscovery를 얼마나 효율적으로 수행하느냐가 곧 기업의 법적 리스크 관리 수준을 결정합니다.</p>
<p>또한 <strong>eDiscovery가 필요한 상황</strong>으로 소송에만 국한되지 않습니다.
기업 부정조사, 내부감사, M&amp;A 실사 등으로 활용 범위가 계속 확대되고 있습니다.</p>
<p><strong>국내</strong>에서도 민사소송법 개정 등으로 전자문서의 증거능력 인정 범위가 넓어지고 있어 국내 기업의 대응 필요성도 높아지고 있습니다.</p>
<h2 id="edrm">EDRM</h2>
<p>eDiscovery를 체계적으로 수행하기 위한 국제 표준 프레임워크가
바로 <strong>EDRM, Electronic Discovery Reference Model</strong>입니다.
<img src="https://velog.velcdn.com/images/yeon_ni/post/4cd85351-3e51-42ed-a3cf-aca5917accb6/image.png" alt=""></p>
<blockquote>
<p>2005년, e-Discovery에 대한 표준과 가이드라인을 제공하기 위해서 EDRM 프로젝트가 착수되었으며, 현재 EDRM은 미국의 다양한 e-Discovery 모델 중 가장 대표적이며 e-Discovery 제품과 서비스를 개발, 선택, 평가하고 사용하기 위해 실행 가능한 프레임워크로 인정받고 있습니다.</p>
</blockquote>
<p>총 9단계로 구성되어 있으며, Information Governance에서 시작하여 Presentation까지 이어지는 흐름입니다.
여기서 가장 중요하게 이해해야 할 점은, 이 모델이 단순한 선형 프로세스가 아니라는 것입니다.
반복적이고 재귀적인 구조로, 프로젝트 상황에 따라 반복되거나 병행될 수 있다는 것입니다.</p>
<p>예를 들어 Collection 단계에서 새로운 Custodian 이 발견되면 Identification 단계로 돌아가야 하고,
Processing 단계에서 데이터 오류가 확인되면 수집을 다시 진행해야 하는 경우도 생깁니다.</p>
<p>이때에 두 가지 핵심 원칙이 전체 절차를 관통합니다.
첫째는 <strong>법적 방어성, Defensibility</strong>입니다.
어떤 방법으로 데이터를 수집하고 보존했느냐가 최종 결과물의 증거 능력을 결정합니다.
둘째는 <strong>비례성, Proportionality</strong>입니다.
수집 범위는 사건의 중요성·분쟁 금액·당사자 자원·발견의 부담과 이익 등을 종합적으로 고려한 비례성 원칙을 충족해야 하며, 과도한 수집은 오히려 비용과 리스크를 높입니다.</p>
<p><strong>1단계 Information Govenance</strong>는  소송이 발생하기 전, 평상시의 데이터 관리 체계를 말합니다.
기업이 어떤 데이터를 어디에 얼마나 보관하고, 언제 폐기할 것인지에 대한 정책입니다.
데이터 보존 정책, 삭제 일정, 데이터 맵을 사전에 갖추고 있어야 eDiscovery가 시작되었을 때 어디서 무엇을 찾아야 하는지 즉시 파악할 수 있습니다.
이 단계가 잘 되어 있으면 나중에 소송이 터졌을 때 대응 시간과 비용이 크게 줄어듭니다.</p>
<p><strong>2단계 Identification</strong>은 소송이나 조사가 시작되면, 관련된 데이터가 어디에 있는지 파악합니다.
누구의 이메일인지, 어떤 서버에 있는지, 기간은 언제부터 언제까지인지.
이 단계에서 Custodian, 즉 데이터 보유자를 특정하고 데이터의 범위를 정합니다.
기업 내부 시스템, 클라우드, 모바일, 제3자 데이터까지 범위를 확정해야 합니다.
보유자 인터뷰와 IT 데이터 맵이 핵심 도구입니다.</p>
<p>3<strong>단계 Preservation</strong>은 소송이 합리적으로 예상되는 시점부터 즉각 발동되어야 합니다.
Legal Hold 통지를 발행하여 관련자들에게 &#39;이 데이터를 절대 삭제하지 마십시오&#39;라고 알립니다.
이를 이행하지 않으면 Spoliation, 즉 증거인멸로 간주되어 법적 제재를 받을 수 있습니다.
Spoliation 제재는 데이터를 고의로 삭제한 경우뿐 아니라 보존 의무를 소홀히 한 해태 및 과실에도 적용되기 때문입니다.</p>
<p><strong>4단계 Collection</strong>은 실제로 데이터를 수집하는 단계입니다.
여기서 디지털 포렌식 기술이 핵심적으로 사용됩니다.
EnCase나 FTK 같은 도구로 디스크 이미지를 떠서 원본과 동일한 사본을 만들고, 해시값을 생성하여 무결성을 증명합니다.
Chain of Custody 문서를 작성하여 증거의 이동 경로를 모두 기록합니다.</p>
<p><strong>5단계 Processing</strong>는 수집된 데이터를 리뷰 가능한 형태로 가공합니다.
구체적으로는 압축 해제, 텍스트 추출, 중복 제거(De-duplication), 메타데이터 인덱싱,
그리고 날짜·키워드·파일 유형 기반 필터링(Culling)을 수행합니다.
이 단계에서는 Nuix라는 프로세싱 도구를 활용합니다.
테라바이트 단위의 데이터도 효율적으로 처리할 수 있습니다.</p>
<p><strong>6단계 Review</strong>는 전체 프로세스 중 가장 시간과 비용이 많이 드는 단계입니다.
리뷰어들이 문서 하나하나를 보면서 관련성이 있는지, 변호사-의뢰인 특권(Privilege)에 해당하는지 판단합니다.
이때에 Relativity 플랫폼을 활용하며,
최근에는 TAR, 즉 Technology Assisted Review를 도입하여 AI가 관련 문서를 자동 분류함으로써 리뷰 속도와 정확도를 동시에 높이고 있습니다.</p>
<p><strong>7단계 Analysis</strong>는 단순 분류를 넘어 커뮤니케이션 패턴, 타임라인, 인물 관계도 등을 분석합니다.
키워드 분석, 이메일 스레드 재구성, 타임라인 작성을 통해 데이터 속에서 사실관계를 도출합니다.
기업 부정조사에서는 커뮤니케이션 패턴과 데이터 흐름에서 은폐 행위를 찾아내는 것이 핵심입니다.
이 단계에서 사건의 전체 그림이 드러나며, 소송 전략 수립에 직접 기여합니다.</p>
<p><strong>8단계 Production</strong>은 최종적으로 상대방이나 법원에 제출할 형식으로 문서를 생산합니다.
TIFF 이미지나 PDF 형태로 변환하고, 베이츠 넘버링을 부여하며,
특권 문서는 제외하고 로그를 작성합니다.</p>
<p><strong>9단계 Presentation</strong>은 법정이나 청문회에서 수집·분석한 증거를 효과적으로 제시하는 단계입니다.
시각화 자료와 타임라인을 활용하여 복잡한 사실관계를 이해하기 쉽게 전달합니다.</p>
<hr>
<p>다음은 eDiscovery 실무에서 활용되는 핵심 도구와 기술을 정리해 보았습니다.</p>
<p><strong>Collection 단계</strong>에서는 EnCase, FTK와 같은 포렌식 이미징 도구가 사용되고, 모바일 기기의 경우 Cellebrite UFED 등이 활용됩니다.
<strong>Proessing 단계</strong>에서는 Nuix Workstation이 대표적입니다. 수백 가지 파일 포맷을 처리하고 인덱싱할 수 있습니다.
<strong>Review, Analysis 단계</strong>에서는 Relativity가 업계 표준입니다. 여기에 TAR/Predictive Coding 기능을 결합하면 수백만 건의 문서도 효율적으로 분류할 수 있습니다.
그리고 이러한 도구들을 보완하기 위해 Python이나 SQL을 활용한 커스텀 데이터 분석, 자동화 스크립트 개발도 실무에서 중요한 역할을 합니다.</p>
<hr>
<p>현재 <strong>글로벌 eDiscovery 시장</strong>은 빠르게 성장하고 있습니다. The Business Research Company의 2026년 3월 보고서에 따르면, 2025년 약 151억 달러에서 2026년 약 167억 달러로 높은 성장률을 기록하고 있으며, 2030년에는 250억 달러를 넘을 것으로 전망됩니다.</p>
<p><strong>2026년의 핵심 트렌드</strong> 세 가지는 다음과 같습니다.</p>
<p><strong>첫째, 생성형 AI와 TAR의 고도화</strong>입니다.
단순히 문서 분류를 넘어, NavigAite를 통해 수백만 건의 데이터를 신속하게 요약하고 핵심 리스크를 식별합니다. </p>
<p><strong>둘째,</strong> 컴플라이언스와 효율성을 동시에 충족하는 <strong>클라우드 기반 하이브리드 아키텍처의 도입</strong>입니다.
eDiscovery 대상인 ESI(전자저장정보)의 볼륨이 페타바이트급으로 폭증하고 있습니다. 이에 따라, 데이터 주권과 엄격한 보안 규제를 적용받는 민감 데이터는 온프레미스에서 안전하게 통제하고, 대규모 텍스트 분석 및 생성형 AI 모델 구동은 클라우드의 탄력적 인프라를 활용해 고속 처리하는 하이브리드 대응 능력이 포렌식 실무자의 핵심 역량으로 자리 잡고 있습니다.</p>
<p><strong>셋째, Cross-border 규제 복잡성 증가</strong>입니다.
GDPR 시행 이후 각국의 데이터 현지화 요구가 강화되면서, 글로벌 네트워크를 갖춘 펌의 경쟁력이 더욱 부각됩니다.</p>
<hr>
<blockquote>
<h4 id="reference">Reference</h4>
</blockquote>
<ul>
<li>The Consilio Guide to eDiscovery_Digital Copy_6-23-25_Compressed.pdf</li>
<li><a href="https://www.lextrado.com/2022/04/13/the-edrm-model-and-why-it-is-important/">https://www.lextrado.com/2022/04/13/the-edrm-model-and-why-it-is-important/</a></li>
<li>그 외 다수 기업의 공식 홈페이지</li>
<li>생성형 AI 등</li>
</ul>
<p><del>취준하면서 공부한 내용을 정리했습니다.</del></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보보안기사 필기 24년 9월]]></title>
            <link>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-24%EB%85%84-9%EC%9B%94</link>
            <guid>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-24%EB%85%84-9%EC%9B%94</guid>
            <pubDate>Sun, 08 Feb 2026 15:38:13 GMT</pubDate>
            <description><![CDATA[<h3 id="시스템-보안">시스템 보안</h3>
<ol>
<li>마이크로 컴퓨터 동작 모드 - 시스템 콜<ol>
<li>유저 모드 : 일반 응용 프로그램 실행</li>
<li>커널 모드:  하드웨어 제어</li>
<li>시스템콜: 유저 모드에서 커널 모드 호출</li>
</ol>
</li>
<li>프로파일 파일 위치 - 리눅스 bash 쉘 설정<ol>
<li><code>/etc/profile</code> : 모든 시스템 사용자 공통 적용</li>
<li><code>~/.bash_profile</code> 또는 <code>~/.profile</code> : 해당 사용자에게만 적용</li>
</ol>
</li>
<li>서버 장악 공격: 웹쉘 공격<ol>
<li>웹쉘: 악성 코드 업로드하여 서버 장악</li>
<li>PHP: 서버사이드 스크립트 언어</li>
<li>커맨드 인젝션: OS 명령어 실행</li>
<li>코드 인젝션: 서버 사이드 스크립트 삽입</li>
</ol>
</li>
<li>리눅스 기본 권한 설정 - umask<ol>
<li>umask 002<ol>
<li>파일: 666-002 = 664</li>
<li>디렉토리: 777 - 002 = 775</li>
</ol>
</li>
<li>디렉토리는 실행 권한 필요</li>
</ol>
</li>
<li>환경 변수 설정 - 세션 타임아웃<ol>
<li>TMOUT: 세션 타임아웃 환경 변수</li>
<li>권고 사항: 10분(600초)</li>
</ol>
</li>
<li>방어 기술 - 버퍼 오버플로우 방어<ol>
<li>ASLR: 메모리 주소 동적 할당</li>
<li>스택 가드: 카나리 가능</li>
<li>SDL: 취약 함수 사용 시 실행 파일 생성 방지</li>
<li>안전한 함수 사용 : strcpy → strncpy</li>
</ol>
</li>
<li>특수 권한 검색 - SetUID 파일 찾기<ol>
<li><code>find /-perm -4000</code> : SetUID</li>
<li><code>find / -perm -2000</code> : SetGID</li>
<li><code>find / -perm -1000</code> : Sticky Bit</li>
</ol>
</li>
<li>엔드포인트 보안 - NAC, EDR<ol>
<li>NAC (Network Access Control)<ol>
<li>에이전트 방식: host 취약점 식별</li>
<li>에이전트리스 방식: 네트워크 취약점 식별</li>
</ol>
</li>
<li>EDR (Endpoint Detection and Response)<ol>
<li>PC 애플리케이션 행위 로그 수집</li>
<li>이상 행위 차단</li>
</ol>
</li>
</ol>
</li>
<li>Wi-Fi 보안 취약점 - 무선 네트워크 공격<ol>
<li>이블 트윈: 가짜 AP로 정보 탈취</li>
<li>KRACK 취약점: WPA2 취약점 → WPA3 권장</li>
<li>피싱: 메일 공격</li>
<li>파밍: DNS 변조</li>
</ol>
</li>
<li>사이버 테러 대응 - ISAC<ol>
<li>ISAC(정보공유분석센터): 사이버 테러 공동 대응</li>
<li>사이버 킬체인: 공격 단계 정의</li>
<li>SIEM: 빅데이터 기반 보안 관제</li>
<li>CTI : 위협 인텔리전스</li>
</ol>
</li>
<li>문서 악성코드 방어 - 매크로 바이러스 &amp; CDR<ol>
<li>매크로 바이러스: 오피스 문서 악성코드<ol>
<li>운영체제 무관, 간단 제작</li>
</ol>
</li>
<li>CDR (Content Disarm and Reconstruction): 콘텐츠 무해화 기술</li>
</ol>
</li>
<li>로그 순환 저장 - logrotate<ol>
<li><code>logroate</code> : 로그 파일 순환 저장</li>
<li>6개월 단위 설정 가능</li>
</ol>
</li>
<li>도구별 용도 - 보안 도구 분류<ol>
<li>IDS : Snort</li>
<li>취약점 분석: Nessus, Nmap</li>
<li>무결성 검사: TripWire</li>
</ol>
</li>
<li>포맷 문자열 취약점 - 포맷 스트링 공격<ol>
<li><code>%d</code>&#39; :정수, <code>%s</code>: 문자열, <code>%x</code> : 16진수, <code>%hn</code> : 정수형 포인터 절반 인식</li>
<li>공격: 메모리 열람, 변조, 셸 코드 삽입</li>
</ol>
</li>
<li>윈도우 보안 설정 - 널 세션 차단<ol>
<li>Null session: ID/PW 없이 특정 포트 호출</li>
<li><code>RestrictAnonymous</code> 레지스트리 키: 1로 설정</li>
</ol>
</li>
<li>사이버 킬체인 단계<ol>
<li>정찰 → 무기화 → 전달→ 익스플로잇→설치→명령 및 제어 → 행동 개시</li>
</ol>
</li>
<li>DNS 공격 - 파밍 공격<ol>
<li>파밍: DNS 공격하여 가짜 사이트 연결</li>
</ol>
</li>
<li>시스템 보안 점검 - 무결성 검사 &amp; FTP 로그<ol>
<li>패스워드 파일, 섀도우 파일 모두 무결성 검사 필요</li>
<li>xferlog: FTP 서버 로그 파일<ol>
<li>날짜, IP주소, 전송 바이트, 파일 종류, 성공 여부 기록</li>
</ol>
</li>
</ol>
</li>
</ol>
<h3 id="네트워크-보안">네트워크 보안</h3>
<ol>
<li>네트워크 접근 제어 - NAC<ol>
<li>NAC : 등록된 단말만 네트워크 사용 허용</li>
<li>엔드포인트 보안 기술</li>
</ol>
</li>
<li>네트워크 진단 - ICMP 프로토콜<ol>
<li>Ping: ICMP 사용</li>
<li>Traceroute (리눅스), Tracert(윈도우): ICMP 사용</li>
</ol>
</li>
<li>IDS 패킷 탐지 - Snort 규칙<ol>
<li><code>depth</code> : 검사할 바이트 수</li>
<li><code>offset</code>: 시작 위치</li>
<li><code>content</code> : 특정 단어</li>
<li><code>uricontent</code> : 웹페이지</li>
</ol>
</li>
<li>스니핑 공격 대응 - 스니핑 탐지 &amp; 방어<ol>
<li>탐지: 허니팟 PC로 목적지 주소 전달</li>
<li>Promiscuous 모드: 모든 패킷 수신<ol>
<li>설정: <code>ifconfig promisc</code></li>
</ol>
</li>
<li>스니핑: 수동적 공격 (정보 획득만)</li>
</ol>
</li>
<li>DDoS 도구 - 공격 프로그램<ol>
<li><code>Trinoo</code> : UDP Flooding</li>
<li>TFN (Tribe Flood Network)</li>
<li><del>TripWire: 무결성 검사 도구</del></li>
</ol>
</li>
<li>OSI 7계층 - ARP 스푸핑<ol>
<li>ARP 프로토콜: 3계층(네트워크 계층) 동작</li>
</ol>
</li>
<li>DDoS 공격 - TCP SYN 플러딩<ol>
<li>SYN Flooding : SYN 패킷 과도하게 전송</li>
</ol>
</li>
<li>슬로우 공격 기법 - HTTP Slow 공격<ol>
<li>HTTP Slow Read DoS: 슬라이딩 윈도우 사이즈 0 설정</li>
<li>HTTP Header DoS: 헤더와 바디 사이 개행 문자 삭제</li>
<li>Slow HTTP POST DoS: Content-Length 크게 설정 후 느리게 전송</li>
</ol>
</li>
<li>SSH 공격 도구 - Hydra 무작위 공격<ol>
<li>Hydra: 무작위 공격 도구</li>
<li><code>-l</code> : 계정 고정, <code>-P</code> : 사전 파일 패스워드</li>
</ol>
</li>
<li>스캔 기법 - Nmap 포트 스캐닝<ol>
<li><code>-sn</code>: 스캐닝 옵션</li>
<li><code>-sS</code> : SYN 스캔</li>
<li><code>-sT</code>: TCP 3-way 핸드셰이크 스캔</li>
<li><code>-Sa</code> : ACK 스캔 (방화벽 탐색)</li>
<li>포트 열림 시 응답 없음: Null scan, FIN scan, Xmas scan, UDP scan</li>
</ol>
</li>
<li>Wi-Fi 암호화 기술 - 무선랜 보안 발전<ol>
<li>WEP: RC4 스트림 - 정적 키 - 취약</li>
<li>WPA: RC4+TKIP - 동적 키 - 개선</li>
<li>WPA2: AES+TKIP - 동적 키 - 강화</li>
</ol>
</li>
<li>스위치 공격 - 스위치 재밍<ol>
<li>Switch jamming: 스위치를 더미 허브처럼 동작시켜 브로드캐스트</li>
</ol>
</li>
<li>네트워크 구조 - 네트워크 토폴로지<ol>
<li>버스형: 하나의 회선에 여러 노드</li>
<li>메시형: 모든 경로 연결</li>
<li>스타형: 중앙 허브에 연결</li>
</ol>
</li>
<li>경로 결정 방식 - 라우팅 알고리즘<ol>
<li>OSPF: Link State Routing (대규모, 라인 비용)</li>
<li>RIP: 거리 벡터 라우팅 (소규모, TTL/홉 수)</li>
</ol>
</li>
<li>변조 공격 - 스푸핑 공격<ol>
<li>ARP Spoofing: MAC 주소 변조</li>
<li>DNS Spoofing: IP 주소 변조</li>
</ol>
</li>
<li>윈도우 네트워크 포트 - NetBIOS 포트<ol>
<li>NetBIOS: 139번 포트</li>
<li>컴퓨터 자원/프린터: 445번 포트 (SMB)</li>
</ol>
</li>
<li>VPN 보안 요소 - IPSecVPN<ol>
<li>Authentication Header: 인증 정보</li>
<li>해시 함수: 무결성 검사</li>
<li>시퀀스 번호/타임스탬프: 재생 공격 방지</li>
<li>MAC(Message Authentication Code): 해시 함수+키</li>
</ol>
</li>
<li>보안 시스템 분류 - 보안솔루션<ol>
<li>NAC : 등록되지 않은 단말 차단</li>
<li>SSO(Single-Sign-On): 한 번 로그인으로 여러 서비스</li>
<li>SIEM : 통합 보안 관제 (로그 수집/모니터링)</li>
</ol>
</li>
</ol>
<h3 id="애플리케이션-보안">애플리케이션 보안</h3>
<ol>
<li>데이터베이스 보안 - 추론 &amp; 다중 인스턴스<ol>
<li>추론: 낮은 등급 정보로 높은 등급 정보 유추</li>
<li>다중 인스턴스: 값을 여러 개 생성하여 추론 방지</li>
</ol>
</li>
<li>DB 암호화 방식<ol>
<li>플러그인 방식: 솔루션 설치 후 자동 암호화</li>
<li>API 방식: 개발자가 직접 호출</li>
<li>커널 기반 방식: 테이블 스페이스 단위 암호화</li>
</ol>
</li>
<li>암호화폐 특징<ol>
<li>전자 화폐: 불특정 은행 접속 없이 사용 가능</li>
<li>핫 월렛: 인터넷 연결</li>
<li>콜드 월렛: 오프라인 매체 저장</li>
</ol>
</li>
<li>도메인 이름 해석 - DNS 이름 풀이 순서<ol>
<li>클라이언트 호스트 파일 → DNS 캐시 테이블 → DNS 서버 질의(순환 쿼리) → 웹 접속</li>
</ol>
</li>
<li>웹 서비스 통합 - UDDI<ol>
<li>UDDI (Universal Description, Discovery, and Integration)</li>
<li>웹서비스 등록/검색</li>
<li>WSDL: 문법 URL 제공</li>
<li>SOAP: 메시지 전달</li>
</ol>
</li>
<li>이메일 보안 - PGP 부인 방지<ol>
<li>PGP 기능: 전자 서명, 암호화, 무결성</li>
<li>송신자 부인 방지 : 가능</li>
<li>수신자 부인 방지 : 불가능</li>
</ol>
</li>
<li>악성코드 종류 <ol>
<li>논리 폭탄: 정해진 조건에서 실행</li>
<li>키로거: 키보드 입력 탈취</li>
<li>백도어: 인증 없는 접근경로</li>
<li>트로이 목마: 자기 복제 안함</li>
<li>웜: 자기 복제 많이 함</li>
</ol>
</li>
<li>보안 취약점 - 버퍼 오버플로우 &amp; 캡챠<ol>
<li>C언어 취약 함수: <code>strcpy</code> , <code>strcat</code></li>
<li>CAPTCHA: 사람과 컴퓨터 구분</li>
</ol>
</li>
<li>DB별 주석 처리 - SQL Injection 주석<ol>
<li>MariaDB: <code>#</code></li>
<li>Oracle: <code>--</code></li>
</ol>
</li>
<li>증거 관리 - 디지털 포렌식 원칙<ol>
<li>Chain of Custody : 수집부터 법정 제출까지 단계 관리</li>
</ol>
</li>
<li>스팸 필터링<ol>
<li>RBL(Real-time Blockhole List): 블랙리스트</li>
<li>SPF(Sender Policy Framework): DNS에 스팸 메일 주소 등록</li>
</ol>
</li>
<li>이메일 시스템 - 메일 전송 과정<ol>
<li>MUA(Mail User Agent): 메일 클라이언트</li>
<li>MTA(Mail Transfer Agent): sendmail</li>
<li>Access 파일: 수신 권한 설정(수락/거부/폐기)</li>
<li><code>makemap hash</code> : Access 파일 등록</li>
</ol>
</li>
<li>웹 취약점 공격<ol>
<li>XSS: 브라우저 공격</li>
<li>CSRF: 인증된 사용자 정보로 서버 공격</li>
<li>SSRF: 웹 서버 뒤 다른 서버 공격</li>
<li>SQL Injection: DB 공격</li>
</ol>
</li>
<li>C&amp;C 서버 차단 - DNS Sinkhole<ol>
<li>DNS Sinkhole: 감염 PC가 C&amp;C 서버 연결 차단</li>
</ol>
</li>
<li>명령어 연결 - 리눅스 특수 문자<ol>
<li><code>|</code>: 이전 명령 결과를 다음 명령으로 전달</li>
<li><code>||</code> : OR 연산자</li>
</ol>
</li>
<li>로그 저장 장치 - WORM 스토리지<ol>
<li>WORM(Write Once Read Many)</li>
<li>한번 기록 후 보존 기간 동안 삭제/변조 불가</li>
</ol>
</li>
<li>메일 전송/수신 - 이메일 프로토콜<ol>
<li>SMTP: 메일 발송</li>
<li>POP3, IMAP: 메일 수신</li>
<li><del>SNMP: 네트워크 모니터링</del></li>
</ol>
</li>
<li>침입 탐지 방식 - IDS 오용 탐지<ol>
<li>오용 탐지: 특정 패턴 일치 시 공격 판단</li>
<li>False Positive(오탐): 낮음</li>
<li>False Negative(미탐): 높음</li>
</ol>
</li>
<li>최신 랜섬웨어 동향<ol>
<li>RaaS(Ransomware as a Service): 서비스 형태 판매</li>
<li>제작 진입 장벽 낮아짐</li>
</ol>
</li>
</ol>
<h3 id="정보보호-일반">정보보호 일반</h3>
<ol>
<li>암호화 수학적 기법 - 암호화 알고리즘 기법<ol>
<li>소인수분해: RSA, Rabin</li>
<li>이산대수: ECC, ElGamal, Diffie-Hellman</li>
</ol>
</li>
<li>인증방법 - 인증 기법 분류<ol>
<li>지식 기반: PIN, 패스워드</li>
<li>소유 기반: 토큰, OTP</li>
<li>생체 인증: 지문, 홍채, 얼굴</li>
</ol>
</li>
<li>해시 함수 입력 - MD5 해시값<ol>
<li>MD5: 128bit</li>
</ol>
</li>
<li>시점별 통제 - 보안 통제 분류<ol>
<li>예방 통제</li>
<li>탐지 통제</li>
<li>교정 통제</li>
<li>복구 통제</li>
</ol>
</li>
<li>공개키 기반 구조 - PKI 구성 요소<ol>
<li>RA (Registry Authority): 등록기관</li>
<li>CA (Certificate Authority): 인증기관</li>
<li>PCA: 인증서 정책 기관</li>
<li><del>LRA: PKI구성요소 아님</del></li>
</ol>
</li>
<li>암호 공격 기법 - 선택 평문 공격<ol>
<li>CPA(Chosen Plaintext Attack): 평문 선택해 암호문 획득</li>
</ol>
</li>
<li>키 관리 - 암호화 키 개수<ol>
<li>대칭키 : n명일 때 n*(n-1)/2 개</li>
<li>비대칭키: 개인키 + 공개키 = 2개 (1인당)</li>
</ol>
</li>
<li>보안 모델 - 접근 통제 모델<ol>
<li>벨-라파둘라(BLP): 기밀성</li>
<li>Biba: 무결성</li>
<li>Clark-Wilson: 무결성(상업용)</li>
<li>MAC :강제적 접근통제, 보안 레벨 기반</li>
<li>DAC: 자율적 접근통제, 사용자 기반</li>
<li>RBAC: 역할 기반 접근통제, 역할 기반</li>
</ol>
</li>
<li>암호화폐 문제점 - 부작용<ol>
<li>익명성, 은닉 서명 → 자금 세탁 가능성</li>
</ol>
</li>
<li>생체 인증 특성 - 생체 인식 지속성<ol>
<li>지속성: 등록된 생체 정보가 계속 유지되어야 함</li>
</ol>
</li>
<li>해시 함수 특성 - 약한 충돌 저항성<ol>
<li>2차 프리이미지 저항성 (Second Preimage Resistance)</li>
<li>H(x) = H(x’)인 다른 x’ 찾기 불가능</li>
</ol>
</li>
<li>하드웨어 보안 - HSM<ol>
<li>HSM(Hardware Security Module): 하드웨어 암호화 장치</li>
</ol>
</li>
<li>한국형 암호화 - 국내 암호 알고리즘<ol>
<li>SEED: Feistel 구조</li>
<li>ARIA: SPN 구조</li>
<li>LEA: 경량화</li>
<li>HIGHT: RFID/USN 센서 데이터</li>
</ol>
</li>
<li>전자상거래 보안 - SET<ol>
<li>SET (Secure Electronic Transaction)</li>
<li>Mastercard, Visa 개발</li>
<li>이중 서명: 가맹점 정보와 카드 소유자 정보 분리</li>
</ol>
</li>
<li>재생 공격 대응 - 리플레이 어택 방지<ol>
<li>시퀀스 번호</li>
<li>타임스탬프</li>
<li>랜덤 넘버</li>
<li><del>MAC - 직접적 방지 아님</del></li>
</ol>
</li>
<li>PGP 사용 알고리즘<ol>
<li>DES, IDEA, RSA, SHA</li>
</ol>
</li>
<li>인증서 관리 - CA 상호 인증 &amp; CRL<ol>
<li>CA 상호 인증 프로토콜: OSPF</li>
<li>인증서 취소 목록: CRL (Certificate Revocation List)</li>
</ol>
</li>
<li>공개키 암호화 - RSA 키 공유<ol>
<li>송신자 A는 평문을 B의 공개키로 암호화해 전송</li>
</ol>
</li>
<li>개인정보 보호 기술 - 가명/익명화 기술<ol>
<li>차분 프라이버시 : 응답값에 잡음 추가</li>
<li>동형 암호화: 암호화 상태로 분석</li>
</ol>
</li>
</ol>
<h3 id="정보보호-관리-및-법규">정보보호 관리 및 법규</h3>
<ol>
<li>법류 소관 부처 - 개인정보 관련 법률<ol>
<li>전자상거래법: 공정거래위원회</li>
<li>위치정보보호법: 방송통신위원회</li>
<li>정보통신망법: 과학기술정보통신부</li>
<li>개인정보보호법: 개인정보보호위원회</li>
</ol>
</li>
<li>ISO 15408 - CC인증<ol>
<li>CC (Common Criteria) 인증</li>
<li>공공 및 주요 정보통신기반 시설: CC인증 또는 보안 기능 확인서 제품 구매</li>
</ol>
</li>
<li>재해복구 계획 - DRP<ol>
<li>DRP (Disaster Recovery Plan)</li>
<li>IT 관련 계획</li>
<li><del>전체 원가 포함 불필요</del></li>
</ol>
</li>
<li>위험 관리 - 위험 대응 전략<ol>
<li>회피: 위험 제거</li>
<li>감소: 보험 가입, 수탁사 전가</li>
<li>수용: 위험 발생 시 대응</li>
</ol>
</li>
<li>위험 분석 기법 - 시나리오법<ol>
<li>알려지지 않은 위협 분석</li>
<li>시나리오 작성 및 테스트</li>
</ol>
</li>
<li>CCTV 열람 제한 - 영상처리기기 열람<ol>
<li>일반적으로 불가</li>
<li>예외: 재산, 생명, 신체 보호 필요 시</li>
<li>경찰: 사고 예방 위해 조작(줌인/아웃) 가능</li>
</ol>
</li>
<li>재해 복구 시스템 - DRS 종류<ol>
<li>미러 사이트: 운영 시스템과 동일, 비용 가장 높음</li>
<li>핫 사이트: 주요 업무만 구성(Active Standby), 비용 높음</li>
<li>웜 사이트: 주요 업무만 DRS 구성, 비용 중간</li>
<li>콜드 사이트: 최소한의 시설, 비용 낮음</li>
</ol>
</li>
<li>보안 용어 -위협의 정의<ol>
<li>잠재적 원인/행위</li>
<li>결함, 오류, 손실 초래 가능성</li>
</ol>
</li>
<li>기반 시설 분류 - 주통기<ol>
<li>전력, 가스, 국방, 원자력</li>
<li><del>해당 X : 포털 및 전자상거래</del></li>
</ol>
</li>
<li>정량적 위험 분석 - 연간 손실액 계산<ol>
<li>ALE (연간 예상 손실액) = SLE x ARO</li>
<li>SLE (단일 손실액) = AV(자산 가치) x EF (노출 꼐수)</li>
<li>ARO (연간 발생 빈도)</li>
</ol>
</li>
<li>CCTV 안내판 설치 - 영상처리기기 안내판<ol>
<li>예외: 군사시설, 보안 시설 등 인가된 사람만 출입하는 곳</li>
</ol>
</li>
<li>한국인터넷진흥원 인증 - ISMS-P 인증<ol>
<li>ISMS-P: 정보보호 및 개인정보보호 관리체계 인증</li>
</ol>
</li>
<li>개인정보 처리 - 가명 처리 적법성<ol>
<li>정보 주체 동의 없이 가명 처리 가능<ol>
<li>통계 작성, 과학적 연구, 공익적 기록물 작성</li>
</ol>
</li>
</ol>
</li>
<li>정보보안 활동 - 개발/운영 환경 분리<ol>
<li>형상 관리 서버에서 소스 관리</li>
<li><del>이전 소스를 운영 서버 보관 - 잘못됨</del></li>
</ol>
</li>
<li>내부 관리 계획 내용 - 개인정보 내부 관리 계획<ol>
<li>수탁사 교육 및 관리 감독 (포함됨)</li>
<li><del>위탁 및 제3자 제공 (포함안됨)</del></li>
</ol>
</li>
<li>로그 보관 의무 - 접속 기록 보관 기관<ol>
<li>정보 주체 5만건 미만 - 보관기관 1년</li>
<li>5만건 이상 or 민감/고유식별 정보 - 보관기관  2년</li>
<li>기간통신 시설 사업자 - 보관기관  2년(무조건)</li>
</ol>
</li>
<li>로그 점검 주기 - 접속 기록 점검<ol>
<li>매월 점검</li>
<li><del>연 1회 (틀림)</del></li>
</ol>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보보안기사 필기 25년 6월]]></title>
            <link>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-25%EB%85%84-6%EC%9B%94</link>
            <guid>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-25%EB%85%84-6%EC%9B%94</guid>
            <pubDate>Sun, 08 Feb 2026 15:37:14 GMT</pubDate>
            <description><![CDATA[<h3 id="시스템-보안">시스템 보안</h3>
<ol>
<li>리눅스 시스템 명령어<ol>
<li><code>lsof</code> : 열려있는 파일 출력 (List Open Files)</li>
<li><code>file</code> : 파일 종류 확인</li>
<li><code>vmstat</code> : CPU 사용률, 메모리 상태 확인</li>
<li><code>ps</code> : 프로세스 확인</li>
</ol>
</li>
<li>좀비 프로세스 개념 및 탐지<ol>
<li>defunct 상태 프로세스</li>
<li>탐지:  <code>ps -ef | grep defunct</code> </li>
<li>특징: 메모리 점유하지만 아무것도 하지 않음</li>
<li>악성코드 아님</li>
</ol>
</li>
<li>침투 테스트 도구<ol>
<li>칼리 리눅스: 데비안</li>
<li>백트랙: 우분투</li>
<li>포함 도구<ol>
<li>메타스플로잇</li>
<li>sqlmap</li>
<li>burp suite</li>
</ol>
</li>
</ol>
</li>
<li>정적/동적 분석 도구<ol>
<li>정적 분석: IDA</li>
<li>동적 분석: OllyDbg</li>
<li>컴파일 과정 : 토큰화 → 파싱 트리 → object 파일 생성 → 최적화</li>
</ol>
</li>
<li>버퍼 오버플로우 방어 기술<ol>
<li>NX bit (No-eXecute bit)</li>
<li>DEP (Data Execution Prevention): 데이터 실행 방지</li>
<li>우회 기법: RTL 공격(Return to libc)</li>
</ol>
</li>
<li>passwd 파일 구조 <ol>
<li>필드 구조: <code>ID:패스워드:UID:GID:설명:홈디렉토리:쉘</code></li>
<li>UID: User ID 숫자</li>
<li>UID 0 = root</li>
</ol>
</li>
<li>파일 속성 표시 - <code>ls -al</code><ul>
<li><code>+</code> : ACL (Access Control List) 설정됨</li>
<li>접근 통제 리스트 존재</li>
</ul>
</li>
<li>리눅스 X 윈도우 보안 <ol>
<li>Xauth: 인증 기반 접근 제어</li>
<li>Xhost: host 기반 접근 제어</li>
<li>설정 파일: <code>.Xauthority</code></li>
</ol>
</li>
<li>개방형 표준 인증 - OAuth<ol>
<li>개방형 표준 인증 프로토콜</li>
<li>OAuth 1.0 vs 2.0:<ol>
<li>2.0에서 토큰 리프레시 추가</li>
</ol>
</li>
</ol>
</li>
<li>웹 트래픽 공격 - man in the browser 공격<ol>
<li>웹 트래픽 가로채기 및 수정</li>
<li>브라우저 내부에서 동작</li>
<li>스니핑과 차이점: 능동적 공격</li>
</ol>
</li>
<li>C언어 안전하지 않은 함수 - 버퍼오버플로우 취약 함수<ol>
<li><code>strcpy()</code> → <code>strncpy()</code> 길이 지정</li>
</ol>
</li>
<li>무결성 검증 도구 및 해시 - 파일 무결성 검사<ol>
<li>도구: TripWire</li>
<li>MDC(Modification Detection Code): 해시 함수</li>
<li>MAC(Message Authentication Code): 메시지 인증</li>
</ol>
</li>
<li>FTP 동작 방식 - FTP 모드 및 포트<ol>
<li>제어 포트: 21번</li>
<li>데이터 포트: 20번 (Active)</li>
<li>Passive 모드: 1024 이상 포트 사용</li>
</ol>
</li>
<li>드론 가용성 공격<ol>
<li>Jamming 공격 : 가용성 저해</li>
<li><del>재전송 공격과는 관련XX</del></li>
</ol>
</li>
<li>리눅스 인증 모듈 - PAM 모듈<ol>
<li>4가지 타입: <code>auth</code> , <code>session</code>, <code>password</code> , <code>account</code></li>
<li>암호 정책 설정<ol>
<li><code>minlen</code> : 최소 길이, <code>lcredit</code>: 소문자, <code>ucredit</code> : 대문자</li>
<li><code>dcredit</code> : 숫자, <code>ocredit</code> : 특수문자</li>
</ol>
</li>
</ol>
</li>
<li>FTP 보안 설정- FTP 익명 계정<ol>
<li>익명(anonymous) 계정: 보안 취약</li>
<li><code>anon_upload_enable=NO</code> : 업로드 차단</li>
</ol>
</li>
<li>시스템 보안 강화 - 리눅스 보안 환경 설정<ol>
<li><code>TMOUT</code>: 타임아웃 설정</li>
<li>SUID/SGID 비트 제거 (불필요한 경우)</li>
<li>passwd 프로그램: SUID 필수 (shadow파일 수정위해)</li>
</ol>
</li>
<li>윈도우 파일 시스템 특징 - NTFS 파일 시스템<ol>
<li>압축 지원, 가변 길이 클러스터, 저널링</li>
<li>EFS 암호화 취약점: 다른 볼륨 복사 시 복호화됨</li>
</ol>
</li>
<li>윈도우 보안 구조 - 인증 서비스<ol>
<li>LSA (Local Security Authority): 인증 서비스</li>
<li>보안 토큰 생성</li>
<li>SAM (Security Account Manager): 패스워드 저장 DB</li>
</ol>
</li>
</ol>
<h3 id="네트워크-보안">네트워크 보안</h3>
<ol>
<li>침입 방지 시스템 - IPS<ol>
<li>IPS(Intrusion Prevention System)</li>
<li>침입 탐지 + 세션 절단(대응 기능)</li>
</ol>
</li>
<li>Promiscuous 모드 확인 - 스니핑 공격 탐지<ol>
<li><code>ifconfig</code> 명령어로 확인</li>
<li>Promiscuous 모드(무차별 모드): 모든 패킷 수신</li>
</ol>
</li>
<li>VPN 프로토콜 분류 - 종류 및 계층<ol>
<li>2계층 - PPTP, L2F, L2TP</li>
<li>2.5계층 - MPLS</li>
<li>7계층 - SSL VPN</li>
</ol>
</li>
<li>공격 기법<ol>
<li>LAND attack : 출발지=목적지 IP 동일</li>
<li>Ping of Death : 과도한 ICMP 패킷</li>
<li>Stuxnet: SCADA 시스템 대상 APT</li>
</ol>
</li>
<li>FTP 보안 설정 - 관리자 계정 차단<ol>
<li><code>/etc/ftpusers</code>  파일에 root추가</li>
<li>root 계정 FTP 접속 차단</li>
</ol>
</li>
<li>DDoS 공격<ol>
<li>PDOS: 펌웨어에 악성코드 심기</li>
<li>ACK Flooding: ACK 패킷 대량 전송</li>
<li>Smurfing: ICMP 브로드캐스트</li>
</ol>
</li>
<li>멀티캐스트 주소 - D클래스 IP&amp; IGMP<ol>
<li>D 클래스: 224.0.0.0 ~ 239.255.255.255</li>
<li>멀티캐스트용</li>
<li>IGMP(Internet Group Management Protocol): 멀티캐스트 그룹 관리</li>
</ol>
</li>
<li>네트워크 존 분리 - DMZ 구성<ol>
<li>DMZ : 외부 접근 가능 서버</li>
<li>DB 서버는 DMZ에 두면 위험</li>
<li>DMZ: 웹서버, 서버 팜: 애플리케이션 서버, DB 존: DB 서버</li>
</ol>
</li>
<li>무선 네트워크 공격 도구 - 무선 해킹 도구<ol>
<li>aircrack: 패스워드 크랙</li>
<li>airmon: 스니핑(모니터 모드)</li>
</ol>
</li>
<li>보안 정보 및 이벤트 관리 - SIEM<ol>
<li>이벤트 저장, 로그 분석, 침입 탐지, 빅데이터 활용</li>
</ol>
</li>
<li>엔드포인트 탐지 및 대응 - EDR<ol>
<li>에이전트 설치, API 모니터링, 행위 기반 탐지</li>
</ol>
</li>
<li>TCP 윈도우 크기 조작 - TCP 흐름 제어<ol>
<li>슬라이딩 윈도우(Sliding Window)</li>
<li>윈도우 사이즈 0 설정 → 서비스 거부</li>
<li>HTTP Flood 공격 유발</li>
</ol>
</li>
<li>UDP 포트 닫힘 응답 - UDP Flooding<ol>
<li>UDP 포트 닫힘: ICMP Destination Unreachable</li>
<li>응답 증폭 → UDP 플러딩 공격</li>
</ol>
</li>
<li>DDoS 방어 기술<ol>
<li>웹 프록시 : 캐싱, 필터링</li>
<li>Backlog Queue: 연결 대기열 증가</li>
<li>SYN Cookie: SYN 플러딩 방어</li>
</ol>
</li>
<li>IP 버전 차이점 - IPv4, IPv6<ol>
<li>주소 길이: 32비트 → 128비트</li>
<li>브로드캐스트 → 애니캐스트(Anycast)</li>
<li>표기점: <code>.</code> → <code>:</code></li>
</ol>
</li>
<li>침입 탐지 시스템 분류 - IDS 종류<ol>
<li>NIDS(Network-based IDS) : 네트워크 기반</li>
<li>HIDS(Host-based IDS): 호스트 기반</li>
</ol>
</li>
<li>Wi-Fi 암호화 발전 - 무선 보안 표준</li>
</ol>
<pre><code>| 표준 | 암호화 | EAP 지원 |
| --- | --- | --- |
| WEP  | RC4 | X |
| WPA | TKIP | O |
| WPA2 | AES-CCMP | O |</code></pre><ol start="18">
<li>오픈소스 IDS - OSSEC<ol>
<li>OSSEC: host 기반 침입탐지 시스템</li>
<li>오픈소스, 로그 분석, 무결성 검사</li>
</ol>
</li>
<li>네트워크 주소 위조 - 스푸핑 공격<ol>
<li>ARP Spoofing: 가짜 MAC 주소</li>
<li>DNS Spoofing: 가짜 IP주소</li>
<li>네트워크 흐름 변조 공격</li>
</ol>
</li>
<li>파일 공유 프로토콜 - SMB<ol>
<li>SMB (Server Message Block): 파일/프린터 공유</li>
<li>Samba: 리눅스용 SMB</li>
<li>NetBIOS: 이름 해석 서비스</li>
<li>취약점: null session</li>
</ol>
</li>
<li>주소 변환 기술 - NAT &amp; PAT<ol>
<li>NAT (Network Address Translation): IP 주소 매핑</li>
<li>PAT (Port Address Translation): 포트 기반 매핑</li>
<li>사설 IP ↔ 공인 IP 변환</li>
</ol>
</li>
</ol>
<h3 id="정보보안-일반">정보보안 일반</h3>
<ol>
<li>동적 분석 도구 - 디포 도구<ol>
<li>Autoruns: 자동 실행 프로그램 확인</li>
<li>윈도우 레지스트리 정보 확인</li>
</ol>
</li>
<li>실행 파일 분석 - PE 분석 도구<ol>
<li>PEView: 윈도우 실행 파일(PE) 구조 분석</li>
<li>Volatility: 메모리 덤프 분석</li>
</ol>
</li>
<li>소스 코드 분석 - 정적 분석 도구<ol>
<li>FindBugs: 소스 코드 정적 분석 도구</li>
<li>SonarQube: 개발 보안 진단 도구</li>
</ol>
</li>
<li>네트워크 연결 상태 확인 - netstat 명령어<ol>
<li>netstat 옵션<ol>
<li><code>-s</code> : 통계 statistics</li>
<li><code>-t</code> : TCP</li>
<li><code>-r</code> : 라우팅 테이블</li>
</ol>
</li>
</ol>
</li>
<li>악성코드 분류<ol>
<li>논리 폭탄: 특정 조건에서 발동</li>
<li>트로이 목마: 정상 프로그램 위장</li>
<li>웜: 독립 실행 및 자기 복제</li>
<li>매크로 바이러스 : 문서 파일 감염</li>
</ol>
</li>
<li>DNS 조회 명령어 - 정보 확인<ol>
<li><code>nslookup</code> : DNS 조회</li>
<li><code>dig</code> : 상세 DNS 정보</li>
<li>레코드 타입 ANY: 모든 레코드</li>
</ol>
</li>
<li>트래픽 모니터링 도구 - MRTG 설치<ol>
<li>MRTG (Multi Router Traffic Grapher)</li>
<li>필요 프로그램: GCC(컴파일러), SNMP, Perl, <del>MySQL(불필요)</del></li>
</ol>
</li>
<li>OS 확인 방법<ol>
<li>TTL 값으로 OS 식별<ol>
<li>Windows: 128</li>
<li>Linux: 64</li>
<li>Cisco: 255</li>
</ol>
</li>
</ol>
</li>
<li>코드 삽입 공격 - 인젝션 공격<ol>
<li>SQL Injection: DB 공격</li>
<li>코드 인젝션: 악성 코드 삽입</li>
<li>커맨드 인젝션 : 시스템 명령어 실행</li>
</ol>
</li>
<li>네트워크 통신 방식 - NetBIOS 동작<ol>
<li>브로드캐스트 방식</li>
<li>포트: 137-139</li>
</ol>
</li>
<li>PAM 모듈 기능 - 패스워드 관리<ol>
<li><code>pam_unix.so</code>: 패스워드 실패 수 관리</li>
<li><code>deny</code> : 실패 허용 횟수</li>
</ol>
</li>
<li>간단한 파일 전송 프로토콜 - TFTP<ol>
<li>UDP 69번 포트</li>
<li>인증 없고 빠름</li>
</ol>
</li>
<li>멀웨어 탐지 도구 - YARA<ol>
<li>특정 문자열 패턴 정의</li>
<li>멀웨어 시그니처 생성</li>
</ol>
</li>
<li>IDS 룰 설정 -Snort 규칙<ol>
<li>offset: 검색 시작 위치</li>
<li>depth: 검색 범위</li>
<li>Land attack 탐지 규칙 예시</li>
</ol>
</li>
<li>APT 공격 기법 - 표적 공격<ol>
<li>스피어 피싱 : 특정 대상 이메일 공격</li>
<li>워터링 홀: 자주 방문하는 사이트 감염</li>
<li>drive by download: 방문만으로 감염</li>
<li>APT(Advanced Persistent Threat): 지능형 지속 공격</li>
</ol>
</li>
<li>공격 기법 분류 - 웹공격 vs. 비웹 공격<ol>
<li>웹기반: XSS, CSRF, SSRF</li>
<li>웹기반아님: API 후킹</li>
</ol>
</li>
<li>DNS 서버 종류<ol>
<li>dnscache: 소규모 네트워크용</li>
<li>BIND: 일반적으로 사용되는 DNS 서버</li>
</ol>
</li>
<li>OSI 7계층 - IP 프로토콜 계층<ol>
<li>IP프로토콜: 3계층 (네트워크)</li>
</ol>
</li>
<li>개발 보안 - 경로 조작 취약점<ol>
<li>외부 입력값 검증 부재</li>
<li>경로 조작 취약점 (Path Traversal) - <code>..</code> 문자 사용</li>
</ol>
</li>
<li>DNS 프로토콜 악용 - DNS 터널링<ol>
<li>DNS 프로토콜을 이용한 데이터 유출</li>
<li>보안 시스템 우회</li>
</ol>
</li>
<li>공격 특성 - 스푸핑 공통점<ol>
<li>ARP Spoofing, DNS Spoofing 공통점: 변조 공격</li>
</ol>
</li>
</ol>
<h3 id="정보보호-관리-및-법규">정보보호 관리 및 법규</h3>
<ol>
<li>스팸 메일 필터링 기술<ol>
<li>SPF(Sender Policy Framework): 발신자 검증</li>
<li>RBL (Realtime Blackhole List): 블랙리스트</li>
<li>스팸어새신(SpamAssassin): 스팸필터</li>
<li>인플렉스???</li>
</ol>
</li>
<li>이메일 프로토콜 - 메일전송 과정<ol>
<li>MUA (Mail User Agent): 메일 작성</li>
<li>MTA(Mail Transfer Agent): 메일 전송(SMTP)</li>
<li>MDA(Mail Delivery Agent): 메일 배달</li>
<li>POP3/IMAP: 메일 수신</li>
</ol>
</li>
<li>해시 알고리즘 출력 크기 - 비트 수<ol>
<li>SHA-1: 160bit</li>
<li>MD5: 128bit</li>
<li>160bit관련: SHA-1, ECC, 생일자 공격</li>
</ol>
</li>
<li>메시지 인증 코드 - MAC&amp;HMAC<ol>
<li>MAC(Message Authentication Code)</li>
<li>HMAC(Hash-based MAC): 해시 함수 기반</li>
</ol>
</li>
<li>서명 생성 키 - 전자서명<ol>
<li>전자서명 생성 - 개인키 사용</li>
<li>서명 검증 - 공개키 사용</li>
</ol>
</li>
<li>암호화 방식 - 스트림 암호화<ol>
<li>비트 단위 암호화</li>
<li>빠른 속도, 키스트림 관리 어려움</li>
</ol>
</li>
<li>충돌 내성 - 해시 함수 특성<ol>
<li>충돌 내성 (Collision Resistance)</li>
<li>원웨이 함수 (One-way Function)</li>
<li>두번째 역상 저항성(Second PReimage Resistance)</li>
</ol>
</li>
<li>소비자 기만 디자인 - 다크 패턴<ol>
<li>소비자의 착각, 부주의 이용</li>
<li>의도하지 않은 지출 유도</li>
</ol>
</li>
<li>암호화 모드 - 블록 암호 운영 모드<ol>
<li>ECB: 블록별 독립 암호화</li>
<li>CBC: 이전 블록과 XOR</li>
<li>패딩: 블록 크기 맞춤</li>
<li>IV: 초기화 벡터</li>
</ol>
</li>
<li>키 교환 프로토콜 - Diffi-Helman 키 교환<ol>
<li>중간자 공격 취약</li>
<li>난수 기반 대칭 키 생성</li>
<li>이산 대수 기반</li>
</ol>
</li>
<li>보안 모델 - 접근통제 모델<ol>
<li>클락 윌슨 (Clark-Wilson): 무결성</li>
<li>비바(Biba): 무결성</li>
<li>벨-라파둘라(BLP): 기밀성</li>
</ol>
</li>
<li>이메일 암호화 - PGP 암호화 과정<ol>
<li>압축 - 세션 키 생성 - 메시지 암호화(대칭키) - 전자 서명 - 세션 키 암호화(공개키) - 전송</li>
</ol>
</li>
<li>하이브리드 암호화 - PGP 세션 키 암호화<ol>
<li>세션 키 암호화 : RSA(공개키 알고리즘)</li>
<li>메시지 암호화 : 대칭키 알고리즘</li>
</ol>
</li>
<li>타원곡선 암호화 - ECC<ol>
<li>ECC(Elliptic Curve Cryptography)</li>
<li>공개키 암호 알고리즘</li>
<li>X.509 인증서에 공개키 포함</li>
</ol>
</li>
<li>취약한 알고리즘 - 안전하지 않은 암호<ol>
<li>SHA-1: 안전X</li>
<li>SHA-256 이상 사용 권고</li>
</ol>
</li>
<li>암호화 알고리즘 라운드 - AES 라운드 수</li>
</ol>
<pre><code>| 알고리즘 | 키 길이 | 라운드 수 |
| --- | --- | --- |
| AES-128 | 128bit | 10리운드 |
| AES-192 | 192bit | 12라운드 |
| AES-256 | 256bit | 14라운드 |
| DES | 56bit | 16라운드 |
| 3DES | 168bit | 48라운드 |
| SEED | 128bit | 16라운드 |</code></pre><ol start="17">
<li>서명 생성 - 전자서명 키<ol>
<li>전자 서명: 개인키 사용</li>
</ol>
</li>
<li>보안 서비스 - 부인방지 vs MAC<ol>
<li>부인 방지 : 전자 서명</li>
<li>MAC은 부인방지 제공 안함</li>
</ol>
</li>
<li>정보보안 제품 인증 - CC 인증<ol>
<li>CC (Common Criteria)</li>
<li>유효기간: 5년</li>
</ol>
</li>
<li>취약점 점검 의무 - 주통기 시설<ol>
<li>점검 주기 : 매년 1회 이상</li>
<li>대상: 안전보장, 행정, 국방, 치안, 금융, 운송, 에너지</li>
</ol>
</li>
<li>위험 평가 방법 - 델파이 기법<ol>
<li>전문가 감정, 익명성 보장, 중재자 필요, 반복성</li>
</ol>
</li>
<li>CSAP 인증 - 클라우드 보안 인증<ol>
<li>유효기간: 과거 3년 → 현재 5년</li>
</ol>
</li>
<li>HTTP 기반 보안 - 전자 서명 프로토콜<ol>
<li>HTTP 기반 : SSL, TLS</li>
<li>VPN 기술: PPTP, SSTP</li>
</ol>
</li>
<li>해시 함수 공격 - 생일자 공격<ol>
<li>약한 충돌 내성 공격</li>
<li>생일자 공격</li>
<li>레인보우 테이블 공격</li>
</ol>
</li>
<li>필수 고지 사항 - 개인정보 수집 고지<ol>
<li>필수 고지<ol>
<li>수집 목적, 수집 항목, 보유/이용 기간, 동의 거부 시 불이익</li>
</ol>
</li>
<li>제3자 제공: 필수 아님</li>
</ol>
</li>
<li>국가 보안 인증 - 보안 기능 확인서<ol>
<li>주체: 국정원</li>
<li>검증 기관: 국가보안기술연구소</li>
</ol>
</li>
<li>IoT 보안 권고사항 - 스마트 월패드 보안<ol>
<li>256비트 사용 권고</li>
<li><del>128비트암호화</del>는 부족함</li>
</ol>
</li>
<li>KISA 가이드라인 - 위험 평가 방법<ol>
<li>기준선법</li>
<li>상세 위험 분석</li>
<li>복합적 접근법</li>
<li>비정형 접근법</li>
</ol>
</li>
<li>위험 대응 - 위험 관리 전략 <ol>
<li>회피(Aviodance)</li>
<li>전가 (Transfer)</li>
<li>감소(Mitigation)</li>
<li>수용(Acceptance)</li>
</ol>
</li>
<li>법률 용어 - 개인정보 손해 보험<ol>
<li>정보 주체 - 개인정보보호법</li>
<li><del>이용자-정보통신망법</del></li>
</ol>
</li>
<li>소프트웨어 개발 생명주기 - SDLC<ol>
<li>요구사항 분석 단계 산출물:<ol>
<li>요구사항 정의서</li>
<li>유즈케이스 다이어그램</li>
<li>기능 명세서</li>
</ol>
</li>
</ol>
</li>
<li>CC 인증 요소 - 인증 구성<ol>
<li>PP (Protection Profile): 보호 프로파일</li>
<li>ST (Security Target): 보안 목표 명세서</li>
<li>TOE(Target of Evaluation): 평가 대상</li>
</ol>
</li>
<li>데이터베이스 보안 - 추론 방지<ol>
<li>다중 인스턴스 기법</li>
<li>낮은 보안 등급 사용자가 높은 보안 정보 유추 방지</li>
</ol>
</li>
<li>안정성 확보 조치 - 개인정보 암호화 대상<ol>
<li>암호화 대상<ol>
<li>고유식별자</li>
<li>계좌번호</li>
<li>신용카드</li>
<li>생체 인식 정보</li>
<li>패스워드</li>
</ol>
</li>
<li><del>생년월일: 해당없음</del></li>
</ol>
</li>
<li>RSA 패딩 기법 - RSA OAEP<ol>
<li>OAEP (Optimal Asymmetri Encryption Padding)</li>
<li>선택 암호문 공격 방어</li>
<li>동일 메시지 입력 시 매번 다른 암호문 생성</li>
</ol>
</li>
<li>암호화 알고리즘 - RC2라운드 수<ol>
<li>RC2: 8라운드</li>
</ol>
</li>
<li>인적 보안 - ISMS 인증 항목<ol>
<li>인적 보안: 직원 관리</li>
<li>외부자 보안: 외부자 현황, 계약 보안</li>
</ol>
</li>
<li>통지 의무 대상 - 개인정보 이용 내역 통지<ol>
<li>대상 기업<ol>
<li>정보 주체 100만 건 이상 또는 민감/고유식별정보 5만 건 이상</li>
</ol>
</li>
<li><del>처리 위탁: 통지 대상 아님</del></li>
</ol>
</li>
<li>위탁 관련 사항 - 개인정보 처리 위탁<ol>
<li>이용 내역 통지에 위탁사항 포함 안됨.</li>
</ol>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보보안기사 필기 25년 3월]]></title>
            <link>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-25%EB%85%84-3</link>
            <guid>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-25%EB%85%84-3</guid>
            <pubDate>Sun, 08 Feb 2026 15:36:17 GMT</pubDate>
            <description><![CDATA[<h3 id="시스템-보안">시스템 보안</h3>
<ol>
<li>칼리 리눅스의 특징<ol>
<li>침투 테스트 도구, metasploit, Hping, 존더리퍼, 해시캣, 와이어샤크</li>
<li>우분투 계열 침투 테스트 도구: 백트랙</li>
</ol>
</li>
<li>윈도우 자동 로그인 설정<ol>
<li>AutoLogonOn</li>
<li>윈도우 레지스트리에 ID와 PW 저장</li>
</ol>
</li>
<li>UMASK 리눅스 기본 권한 설정<ol>
<li>파일: 666 - UMASK값 022 → 644</li>
<li>디렉토리: 777 - UMASK값 022 → 755</li>
</ol>
</li>
<li>루트킷의 정의 및 관련 도구<ol>
<li>악성 코드 은닉</li>
<li>권한 상승</li>
<li>악성 행위 지속을 위한 도구 묶음</li>
<li>관련 도구: 다탄(루트킷), CP(패스워드 크랙), nikto(웹서버 취약점)</li>
</ol>
</li>
<li>SetUID/SetGID 파일 찾기<ol>
<li><code>find / -type f -perm -4000</code> # SetUID</li>
<li><code>find / -type f -perm -2000</code> # SetGID</li>
</ol>
</li>
<li>last 명령어가 참조하는 로그 파일 - WTMP 로그 파일<ol>
<li><code>last</code> 명령어 → <code>/var/log/wtmp</code> 파일 참조</li>
<li>바이너리 파일</li>
<li>로그인 및 리부팅 정보 기록</li>
</ol>
</li>
<li>passwd 파일 구조 및 루트 계정<ol>
<li>구조 : <code>사용자ID:패스워드:UID:GID:설명:홈디렉토리:쉘</code></li>
<li>UID 0 = 루트 계정</li>
<li>루트 계정은 하나만 존재해야 함</li>
</ol>
</li>
<li>RDP 공격 - 원격 데스크톱 연결 공격 기법<ol>
<li>RDP (Remote Desktop Protocol)</li>
<li>필요 기법: 터널링</li>
<li>방화벽 우회하여 특정 IP 접속</li>
</ol>
</li>
<li>Android HAL - 안드로이드 하드웨어 추상화 계층<ol>
<li>HAL (Hardware Abstraction Layer)</li>
<li>API가 하드웨어에 접근할 수 있도록 함</li>
<li>개발자가 기계에 의존하지 않고 개발 가능</li>
</ol>
</li>
<li>라우터 세션 타임아웃 - 라우터 보안 설정<ol>
<li>10분동안 활동 없으면 세션 타임아웃으로 종료</li>
</ol>
</li>
<li>안드로이드 앱 코드 난독화<ol>
<li>소스 코드를 분석 불가능하게 변환</li>
<li>Android 앱 : 릴리즈 타입에 <code>minifyEnabled true</code> 설정</li>
</ol>
</li>
<li>무작위 공격 도구 옵션 - Hydra 공격<ol>
<li>SMB 서버 패스워드 취약점 공격</li>
<li><code>-l</code> : 고정 ID</li>
<li><code>-P</code> : 사전 파일</li>
<li><code>hydra -l admin -P wordlist.txt smb://target</code></li>
</ol>
</li>
<li><code>/etc/services</code> - 서비스 파일 보안<ol>
<li>제대로 설정되지 않으면<ol>
<li>비인가자가 포트 변경 가능</li>
<li>악의적 서비스 실행 가능</li>
</ol>
</li>
</ol>
</li>
<li>syslog 레벨 설정<ol>
<li>security authorization message </li>
</ol>
</li>
<li>악성코드 활성화 조건 - 페이로드 트리거<ol>
<li>바이러스나 악성 코드가 활성화되거나 페이로드될 수 있는 상태</li>
</ol>
</li>
<li>리눅스 커널 취약점 - 더티 카우 취약점<ol>
<li>읽기 전용 메모리에서 경쟁 조건(race condition) 유발</li>
<li>쓰기 권한 획득</li>
<li>로컬 권한 상승 취약점</li>
</ol>
</li>
<li>계정 보안 설정 - 윈도우 계정 관리<ol>
<li>admin 계정 이름 변경 → 우선순위 낮음</li>
<li>복잡한 패스워드 설정</li>
<li>권한 최소화</li>
<li>익명 SID 허용 금지</li>
</ol>
</li>
<li>리눅스 PAM 모듈 구성<ol>
<li>account : 계정 관리</li>
<li>auth : 인증</li>
<li>session : 세션 관리</li>
<li>password : 패스워드 관리</li>
<li>잠금시간 설정 등 가능</li>
</ol>
</li>
</ol>
<h3 id="네트워크-보안">네트워크 보안</h3>
<ol>
<li>DMZ 구간을 둔 방화벽 종류 : 방화벽 구조 - 듀얼 홈드<ol>
<li>외부 네트워크(인터넷)와 내부 네트워크 사이에 DMZ 구간</li>
<li>Dual-Homed 방화벽</li>
</ol>
</li>
<li>라우터 동작 계층 - Screened Router<ol>
<li>OSI 7계층의 3계층-네트워크 계층 동작</li>
<li>IP 주소 기반 경로 설정</li>
</ol>
</li>
<li>네트워크 도구별 용도<ol>
<li>연결상태 확인: <code>netstat</code></li>
<li>스니핑: <code>와이어샤크</code>, <code>tcpdump</code></li>
<li>포트 스캐닝: <code>nmap</code></li>
</ol>
</li>
<li>사이버 킬체인 단계<ol>
<li>정찰(Reconnaissance)</li>
<li>무기화 및 전달 (Weaponization &amp; Delivery)</li>
<li>익스플로잇 (Exploitation)</li>
<li>명령 및 제어 (Command &amp; Control)</li>
<li>목표 달성 (Actions on Objectives)</li>
</ol>
</li>
<li>DNS/ARP 스푸핑 차이<ol>
<li>DNS spoofing: 가짜 IP 주소 제공</li>
<li>ARP spoofing: 가짜 MAC 주소 제공</li>
<li>네트워크 흐름 변경 공격</li>
</ol>
</li>
<li>FTP 특징 및 보안<ol>
<li>응용 계층 프로토콜</li>
<li>파일 업로드/다운로드, 평문 전송</li>
<li>암호화 필요 시 SFTP 사용</li>
</ol>
</li>
<li>은닉 포트 스캔 - Nmap stealth scanning<ol>
<li>로그를 기록하지 않는 포트 스캐닝 방법</li>
<li>SYN 스캔 (Half-open scan)</li>
</ol>
</li>
<li>포트 닫힘 시 응답 - TCP/UDP 포트 스캐닝 응답<ol>
<li>TCP 포트 닫힘: <code>RST+ACK</code> 응답</li>
<li>UDP 포트 닫힘: <code>ICMP Unreachable</code> 응답</li>
</ol>
</li>
<li>VPN 프로토콜별 계층<ol>
<li>2계층(DL) : PPTP, L2TP, L2F</li>
<li>3계층(NL): IP VPN</li>
</ol>
</li>
<li>경로 추적 프로토콜 - traceroute<ol>
<li>ICMP 패킷 사용</li>
<li>경로상의 라우터 확인</li>
</ol>
</li>
<li>상태 관리 방식 - stateless vs. stateful<ol>
<li>Stateless: 연결 유지 안 함</li>
<li>Stateful: 연결 유지</li>
</ol>
</li>
<li>스니핑 관련 개념<ol>
<li><del>process explorer는 스니핑 도구 아님</del></li>
<li>Promiscuous Mode: 목적지 MAC 주소가 자신이 아니어도 패킷 수신</li>
</ol>
</li>
<li>데이터링크 계층 장비<ol>
<li>2계층 동작, MAC 주소 기반 ⇒ Switch</li>
</ol>
</li>
<li>802.11 표준 - 무선 LAN 표준<ol>
<li>802.11p: 자동차 관련</li>
<li>802.11n: 24GHz+5GHz 동시 사용</li>
</ol>
</li>
<li>리눅스 경로 표기 : <code>.</code> 현재 디렉토리 <code>..</code> 상위 디렉토리</li>
<li>WPA2 암호화 방식<ol>
<li>AES 알고리즘</li>
<li>CCMP (Counter Mode with CBC-MAC Protocol)</li>
<li>EAP 상호 인증</li>
</ol>
</li>
<li>무선 공개키 인프라 - WPKI<ol>
<li>무선 네트워크 환경에서 공인 인증서 사용</li>
<li>숏 라이브 인증서 - 하루만 유효</li>
<li>인증서 전달의 어려움 해결</li>
</ol>
</li>
<li>IP 위조 공격 - IP spoofing<ol>
<li>신뢰된 관계에서 공격자가 자신의 IP 변경</li>
<li>인증 우회 공격</li>
</ol>
</li>
<li>각 공격의 특징<ol>
<li>crack : 패스워드 공격</li>
<li>세션 하이재킹: TCP 연결 정보 탈취</li>
<li>스니핑: 수동적 정보 획득</li>
</ol>
</li>
<li>라우터 SNMP 보안 설정<ol>
<li>커뮤니티 문자열: 패스워드 역할</li>
<li>읽기 전용(read-only)설정 필수</li>
</ol>
</li>
</ol>
<h3 id="애플리케이션-보안">애플리케이션 보안</h3>
<ol>
<li>httpd.conf 보안 설정 - 아파치 웹 서버 설정<ol>
<li>설정 파일: <code>httpd.conf</code> </li>
<li><code>Options Indexes</code> → 디렉토리 리스팅 취약점 발생</li>
<li>보안: <code>Options - Indexes</code> 설정</li>
</ol>
</li>
<li>Directory Traversal - 경로 조작 취약점<ol>
<li><code>..</code> 문자 사용해 상위 디렉토리 접근</li>
<li>경로 조작 취약점 - Path Traversal</li>
</ol>
</li>
<li>웹 서버 메소드 확인 - HTTP OPTIONS 메소드<ol>
<li><code>OPTIONS</code> 메소드</li>
<li>웹서버가 허용하는 요청 메소드 목록 확인</li>
</ol>
</li>
<li>SQL Injection<ol>
<li>Mass Injection : 대용량 데이터 변조</li>
<li>Union 인젝션</li>
<li>Blind 인젝션</li>
<li>Time-based 인젝션</li>
</ol>
</li>
<li>요청/응답 헤더 구분  - HTTP 헤더<ol>
<li><del>XX <code>Set-Cookie</code> : 응답 헤더</del></li>
<li>요청 헤더 : User-Agent, Cookie, Referer 등</li>
</ol>
</li>
<li>PGP 부인 방지 기능 - PGP 이메일 보안<ol>
<li>송신자 부인 방지: 가능</li>
<li>수신자 부인 방지: 불가능</li>
</ol>
</li>
<li>메일 에이전트 역할 - 이메일 전송 구조<ol>
<li>MTA (Mail Transfer Agent): 메일 서버</li>
<li>MUA (Mail User Agent): 메일 유저 에이전트</li>
<li>MDA (Mail Delivery Agent): 메일 딜리버리 에이전트</li>
</ol>
</li>
<li>Log4Shell 취약점<ol>
<li>JNDI 인터페이스를 통해 발생</li>
<li>CVE-2021-44228</li>
</ol>
</li>
<li>DB 암호화 기법 <ol>
<li>애플리케이션 수정 없음</li>
<li>DBMS 부하 발생</li>
<li>정답: 플러그인 방식</li>
</ol>
</li>
<li>Supply Chain Attack  - 공급망 공격<ol>
<li>소프트웨어 개발사에 침입</li>
<li>소스 코드에 악성 코드 삽입</li>
<li>XZ Utils 백도어</li>
</ol>
</li>
<li>사회공학적 랜섬웨어 - locky 랜섬웨어<ol>
<li>가짜 송장이나 급여 명세서</li>
<li>파일 실행 유도</li>
<li>사회공학적 기법</li>
</ol>
</li>
<li>악성코드 대응 기법 - DNS 싱크홀<ol>
<li>감염된 PC가 공격자의 원격 명령 차단</li>
<li>DNS 쿼리를 다른 곳으로 우회</li>
</ol>
</li>
<li>안드로이드 디버깅 - ADB 도구<ol>
<li>ADB (Android Debug Bridge)</li>
<li>다양한 기기와 통신하는 다목적 명령어 도구</li>
</ol>
</li>
<li>DB 보안 요소<ol>
<li>감사 기능, 인증, 무결성</li>
<li><del>추론 방지 → 정답아님</del></li>
</ol>
</li>
<li>도메인 네임 구조 - FQDN<ol>
<li>FQDN (Fully Qualified Domain Name)</li>
<li>네임스페이스상 최종 호스트명 (ex. <a href="http://www.naver.com">www.naver.com</a>)</li>
</ol>
</li>
<li>APK 디컴파일 도구 - 안드로이드 디컴파일<ol>
<li><del>next jar: 디컴파일 도구 (난독화 도구 아님)</del></li>
</ol>
</li>
<li>증거 추적 체계 - 디포 증거 관리<ol>
<li>증거 수집부터 배포까지 추적</li>
<li>Chain of Custody</li>
</ol>
</li>
<li>파일 업로드 메소드 -HTTP PUT 메소드<ol>
<li>악성코드 업로드 가능</li>
<li>PUT 메소드</li>
</ol>
</li>
<li>봇 방지 기술 - CAPTCHA<ol>
<li>자동화된 공격 방지</li>
<li>컴퓨터와 사람 구분 - 봇, 스팸 차단</li>
</ol>
</li>
<li>프록시 서버 동작 - 포워드 프록시<ol>
<li>클라이언트와 인터넷 사이 설치</li>
<li>클라이언트 익명서 보장</li>
<li>캐싱 기능 - 동일 데이터 요청 시 캐시 사용</li>
</ol>
</li>
<li>클라우드 보안 설정 - AWS 보안 설정<ol>
<li>네트워크 서브넷 존 분리</li>
<li>S3 퍼블릭 접근 차단</li>
<li>IAM 계정 MFA 적용</li>
<li>RDS 백업 설정</li>
<li><del>시큐리티 그룹 아웃바운드 정책 → 별도 설정 필요</del></li>
</ol>
</li>
<li>웹 애플리케이션 취약점 - XML/SSRF 취약점<ol>
<li>XQuery, XPath : XML 삽입 공격</li>
<li>SSRF(Server-Side Request Forgery): 서버 간 요청 공격</li>
</ol>
</li>
</ol>
<h3 id="정보보호-일반">정보보호 일반</h3>
<ol>
<li>인증서 구조 - X.509 인증서<ol>
<li>버전 3 사용</li>
<li>필수 항목: 공개키 포함</li>
<li><del>서명 식별자 알고리즘은 확장 영역 아님</del></li>
</ol>
</li>
<li>DES vs. AES - 암호화 알고리즘 구분<ol>
<li>DES: 64bit 블록, 56bit 키</li>
<li>AES: 라운드 수가 키 길이에 따라 달라짐(10/12/14라운드)</li>
</ol>
</li>
<li>타원곡선 암호화 - ECC<ol>
<li>RSA의 문제점 해결</li>
<li>ECC(Elliptic Curve Cryptography)</li>
<li>짧은 키로 높은 보안성</li>
</ol>
</li>
<li>블록 암호화 운영 모드 - CBC 모드<ol>
<li>CBC (Cipher Block Chaining)</li>
<li>이전 블록의 암호화 결과를 다음 블록에 XOR</li>
<li>IV(초기화 벡터) 필요</li>
</ol>
</li>
<li>인증서 유효성 검사 - OCSP<ol>
<li>CRL의 단점 보완</li>
<li>OCSP (Online Certificate Status Protocol)</li>
<li>인증서 유효성 실시간 검사</li>
</ol>
</li>
<li>인증 시스템 - Kerberos 4.0<ol>
<li>대칭키만 사용</li>
<li>통합 인증 시스템</li>
<li><del>공개키 알고리즘 사용 안함</del></li>
</ol>
</li>
<li>Kerberos 인증 순서 - 커버러스 인증 절차<ol>
<li>인증 요청 → 티켓 발급 → 서비스 요청 → 티켓 서비스 제공</li>
</ol>
</li>
<li>전자화폐 거래 프로토콜 <ol>
<li>상점과 은행 사이 거래  : 예치 프로토콜(Deposit Protocol)</li>
</ol>
</li>
<li>전자화폐 익명성 - 은닉 서명<ol>
<li>은닉 서명 가능: e-cash</li>
</ol>
</li>
<li>암호화 알고리즘 분류 - 블루피시<ol>
<li>Blowfish: 대칭키 암호화 알고리즘</li>
<li><del>해시함수 아님</del></li>
</ol>
</li>
<li>패스워드 크랙 기법 - 레인보우 테이블<ol>
<li>평문과 암호문을 미리 계산하여 저장</li>
<li>패스워드 탈취 공격에 사용</li>
<li>대응: salt 사용</li>
</ol>
</li>
<li>이산대수 기반 알고리즘<ol>
<li>Diffie-Hellman 키 교환</li>
<li>ElGamal 전자 서명</li>
<li>Schnorr 서명</li>
</ol>
</li>
<li>암호화 방식 구분 - RSA vs. 대칭키<ol>
<li>대칭키 : DES, AES, SEED 등</li>
<li><del>RSA는 공개키 암호 알고리즘</del></li>
</ol>
</li>
<li>해시 함수 특징 - SHA-1<ol>
<li>160bit 해시값 생성</li>
<li>생일자 공격(birthday attack) 취약</li>
<li>현재 사용 권장 안함</li>
</ol>
</li>
<li>웹 크롤링 차단 - robots.txt<ol>
<li>웹사이트 노출 차단</li>
<li>Allow, Disallow, User-agent 설정</li>
</ol>
</li>
<li>Feistel vs. SPN - 암호화 구조<ol>
<li>파이스텔 구조: 암호화=복호화 방법 동일<ol>
<li>DES, 3DES, SEED</li>
</ol>
</li>
<li>SPN 구조: 암호화 ≠ 복호화<ol>
<li>AES, ARIA</li>
</ol>
</li>
</ol>
</li>
<li>NetBIOS 서비스 포트<ol>
<li>NetBIOS 네임 서비스: UDP 137</li>
<li>NetBIOS 데이터그램: UDP 138</li>
<li>NetBIOS 세션: TCP 139</li>
</ol>
</li>
<li>RSA 암호 계산 문제<ol>
<li>주어진 공식에 대입하여 계산</li>
<li>$C=M^d mod n$ (암호화)</li>
<li>$M=C^d mod n$ (복호화)</li>
</ol>
</li>
</ol>
<h3 id="정보보호-관리-및-법규">정보보호 관리 및 법규</h3>
<ol>
<li>ISMS 구성 요소<ol>
<li>관리체계 수립 및 운영</li>
<li>보호대책 요구사항</li>
<li>개인정보 처리 단계별 요구사항(ISMS-P)</li>
</ol>
</li>
<li>외부자 관리 항목 - ISMS 외부자 보안<ol>
<li>외부자 계약 시 보안</li>
<li>현황 관리, 이행 관리</li>
<li><del>외부자 보안 서약(별도 항목 아님)</del></li>
</ol>
</li>
<li>Privacy by Design <ol>
<li>기획부터 개발, 운영 모든 단계에서 개인정보 고려</li>
</ol>
</li>
<li>위험 분석 개념 - 위험 관리 용어<ol>
<li>자산: 조직이 소유한 가치</li>
<li>취약점: 자산에 대한 약점</li>
<li>위협: 취약점을 이용한 공격 가능성</li>
</ol>
</li>
<li>침해사고 대응 절차 - 침해사고 신고<ol>
<li>컴퓨터 바이러스 등 공격 → 침해사고</li>
<li>24시간 내 신고</li>
<li>신고처: 과기정통부 장관 또는 KISA</li>
<li>신고 시점: 침해 사고 인지 시점</li>
</ol>
</li>
<li>개인정보 유출 대응 - 신고<ol>
<li>72시간 내 신고</li>
<li>인지 시점부터 계산</li>
</ol>
</li>
<li>가명 처리 정의 <ol>
<li>추가 정보 없이는 특정 개인 알아볼 수 없도록 처리</li>
<li>삭제/대체된 개인정보</li>
</ol>
</li>
<li>위험 평가 후 처리 - 잔여 위험<ol>
<li>위험 평가 후 남은 위험</li>
<li><del>별도의 위험 평가로 제거 (정답아님)</del></li>
<li>수용 또는 추가 통제</li>
</ol>
</li>
<li>위험 분석 기법 - 정량적 위험 분석<ol>
<li>과거 자료 이용</li>
<li>정량적 위험 분석</li>
<li>ALE, SLE 계산</li>
</ol>
</li>
<li>주요 정보통신 기반 시설 - 정보 통신 기반 보호법<ol>
<li>안전 보장, 행정, 국방, 치안</li>
<li>금융, 운송, 에너지</li>
</ol>
</li>
<li>ISMS 인증 심사 종류<ol>
<li>최초 심사</li>
<li>사후 심사 (3년)</li>
<li>갱신 심사</li>
</ol>
</li>
<li>민감 정보 분류<ol>
<li>정치적 견해, 건강, 유전자 정보</li>
<li>수집 시 별도 동의 필요</li>
</ol>
</li>
<li>ISMS 인증 대상 기관- 의무 인증 대상<ol>
<li><del>1500억 이상 종합 병원</del> → 상급 종합 병원</li>
</ol>
</li>
<li>개인정보 열람 거절 사유<ol>
<li>법령상 금지, 타인 권리 침해 등</li>
<li><del>중소기업법에 따라 담당자 지정 어려움 → 부적절</del></li>
</ol>
</li>
<li>개인정보 수집 시 별도 동의 - 별도 동의 예외<ol>
<li>별도 동의 불필요<ol>
<li>법령에 특별한 규정</li>
<li>법령상 의무 준수</li>
</ol>
</li>
</ol>
</li>
<li>PIA 고려사항 - 개인정보 영향 평가<ol>
<li>개인정보 수</li>
<li>권리 침해 가능성</li>
<li>제3자 제공 여부</li>
<li>민감정보 및 고유식별정보</li>
</ol>
</li>
<li>로그 기록 항목 - 접속 기록<ol>
<li>출발지 IP, 일시, 계정, 수행 업무, 정보 주체 정보</li>
<li><del>서버의 IP는 불필요</del></li>
</ol>
</li>
<li>학교의 CPO (개인정보보호 책임자)<ol>
<li>행정 사무를 총괄하는 자</li>
</ol>
</li>
<li>개인정보 수집 동의 - 부가 서비스 수집<ol>
<li>고객 부가 서비스 위해 주소/연락처 수집</li>
<li>동의 필요</li>
</ol>
</li>
<li>법률 용어 구분 - 정보 주체 vs. 이용자<ol>
<li>정보 주체: 개인정보보호법</li>
<li>이용자: 정보통신망법</li>
</ol>
</li>
<li>개인정보 수집 출처 통지 의무 - 수집 출처 통지<ol>
<li>특정 규모 이상<ol>
<li>100만 건 이상 OR 민감/고유식별 정보 5만건 이상</li>
</ol>
</li>
<li><del>모든 개인정보 처리자 (틀림)</del></li>
</ol>
</li>
<li>안정성 확보 조치 - 개인정보 처리 시스템<ol>
<li>개인정보처리시스템<ol>
<li>데이터베이스</li>
<li>웹서버(연동되어 개인정보 처리 관여)</li>
</ol>
</li>
</ol>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보보안기사 필기 22년 3월]]></title>
            <link>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-22%EB%85%84-3%EC%9B%94</link>
            <guid>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-22%EB%85%84-3%EC%9B%94</guid>
            <pubDate>Sun, 08 Feb 2026 10:17:32 GMT</pubDate>
            <description><![CDATA[<h2 id="시스템-보안">시스템 보안</h2>
<h3 id="1-취약점-점검-도구에-대한-설명">1. 취약점 점검 도구에 대한 설명</h3>
<ul>
<li><strong>COPS (Computer Oracle and Password System)</strong><ul>
<li>컴퓨터 시스템의 접근 제어 및 보안 정책 관리</li>
</ul>
</li>
<li><strong>COPE (Computer Oracle and Password Encryption)</strong><ul>
<li>COPS와 유사하나, 비밀번호 및 접근 제어 정보 암호화해 저장하는 접근 방식</li>
</ul>
</li>
<li><strong>Nessus</strong><ul>
<li>취약점 스캐닝 및 보안 평가에 특화된 상용 도구</li>
</ul>
</li>
<li><strong>Nmap</strong> <ul>
<li>네트워크 디스커버리와 포트 스캐닝에 중점</li>
</ul>
</li>
<li><strong>SAINT</strong><ul>
<li>종합적인 취약점 평가 및 보안 관리를 위한 상용 도구</li>
</ul>
</li>
</ul>
<h3 id="3-버퍼오버플로우-공격을-완화할-수-있는-방법으로-스택과-힙-영역에-쉘코드-등을-실행하지-못하도록-하는-메모리-보호기법에-해당하는-것은">3. 버퍼오버플로우 공격을 완화할 수 있는 방법으로 스택과 힙 영역에 쉘코드 등을 실행하지 못하도록 하는 메모리 보호기법에 해당하는 것은?</h3>
<blockquote>
<p><strong>DEP/NX bit</strong></p>
</blockquote>
<ul>
<li>DEP (Data Execution Prevention)<ul>
<li>악의적인 코드가 실행되는 것을 방지하기 위해 메모리를 추가 확인하는 하드웨어/소프트웨어 기술</li>
<li><strong>하드웨어 DEP</strong> : 메모리에 명시적으로 실행코드가 포함되어 있는 경우를 제외하고 프로세스의 모든 메모리 위치에서 실행할 수 없도록 표시</li>
<li><strong>소프트웨어 DEP</strong>: CPU가 하드웨어 DEP를 지원하지 않는 경우 사용</li>
</ul>
</li>
<li>NX-Bit (NX bit, Never eXecute bit)<ul>
<li>프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU 기술</li>
<li>NX 특성으로 지정된 모든 메모리 구역은 데이터 저장을 위해서면 사용되며, 프로세스 명령어가 그곳에 상주하지 않음으로 실행되지 않게 만듦.</li>
</ul>
</li>
</ul>
<h4 id="버퍼-오버플로우-공격을-완화하는-방법">버퍼 오버플로우 공격을 완화하는 방법</h4>
<ul>
<li>정적분석 도구: Coverity, Fortify Static Code Analyzer, Checkmarx</li>
<li>동적분석 도구: Valgrind, AddressSanitizer(ASan), GDB(GNU Debugger)</li>
</ul>
<h4 id="보안-감사-및-모니터링">보안 감사 및 모니터링</h4>
<ul>
<li>SIEM (Security Information and Event Management)<ul>
<li>Splunk, IBM QRadar, LogRhythm, ArcSight</li>
</ul>
</li>
<li>IDS/IPS (Intrusion Detection System/Intrusion Prevention System)<ul>
<li>Snort, Suricata, Cisco Firepower</li>
</ul>
</li>
<li>네트워크 모니터링 도구: Wireshark, tcpdump, SolarWinds</li>
<li>취약점 스캐너: Nessus, OpenVAS, Qualys</li>
<li>로그 관리 도구: ELK Stack, Splunk, Gray log</li>
<li>악성 코드 탐지 및 방어 도구: AlienVault, Symantec Endpoint Protection, McAfree Endpoint Security</li>
</ul>
<h4 id="스택-보호-기술-사용">스택 보호 기술 사용</h4>
<ul>
<li>스택 보호 기술을 활성화해 스택 기반 버퍼 오버플로우 방지<ul>
<li>Stack Guard, Stack Guard Canary, ASLR(Address Space Layout Randomization), SSP(Stack-Smashing Protector), Microsoft Visual Studio에서 /GS (Buffer Security Check) 옵션</li>
</ul>
</li>
<li>ASLR (Address Space Layout Randomization)<ul>
<li>메모리 주소 무작위화를 통해 공격자의 공격대상 주소 예측을 어렵게 함.</li>
</ul>
</li>
</ul>
<h3 id="4-도구의-기능과-도구명">4. 도구의 기능과 도구명</h3>
<ul>
<li>운영체제별 로그 변조 탐지도구 - Chklastlog<ul>
<li>lastlog 파일 변조 여부 점검 도구</li>
</ul>
</li>
<li>부트 및 파일 영역 감염 바이러스명 - Natas</li>
<li>취약점 진단도구 - SATAN(Security Admnistrator Tool for Analyzing Networks)<ul>
<li>원격에서 네트워크 취약점을 자동으로 스캔하고 보고서를 생성하는 초기 취약점 진단 도구</li>
</ul>
</li>
<li>접근통제관련 로깅 도구 - Syslogd<ul>
<li>시스템의 표준 로깅 데몬, 접근 제어 관련 로그인 성공/실패 로그 관리 도구</li>
</ul>
</li>
</ul>
<h3 id="5-다음-윈도우의-administrators-그룹에-대한-설명">5. 다음 윈도우의 Administrators 그룹에 대한 설명</h3>
<ul>
<li><strong>모든 권한 보유</strong>: OS 커널 접근을 제외한 모든 설정, 서비스 제어, 보안 정책 수립 가능</li>
<li><strong>계정 관리 권한</strong>: 로컬 사용자 및 그룹 관리 도구(lusrmgr.msc)를 통해 새 사용자 계정 생성, 삭제, 수정하거나 비번 강제 초기화 가능</li>
<li><strong>자원 권한 설정</strong>: 파일 시스템(NTFS/ReFS)의 ACL(Access Control List) 수정 권한 존재</li>
<li><strong>네트워크 권한</strong>: Administrators는 로컬 그룹. 해당 컴퓨터의 SAM(Security Accounts Manager) DB 내에서만 유효함.</li>
</ul>
<h3 id="6-사용자-pc가-언제-부팅되었는지-확인하기-위해-입력해야-하는-명령어">6. 사용자 PC가 언제 부팅되었는지 확인하기 위해 입력해야 하는 명령어</h3>
<blockquote>
<p><strong>net statics workstation</strong></p>
</blockquote>
<ul>
<li><code>net statics workstation</code> : 워크스테이션 서비스의 통계 정보 출력</li>
<li><code>net computer</code> : 도메인 DB에 컴퓨터를 추가/삭제 시 사용</li>
<li><code>net time</code> : 다른 컴퓨터나 서버와 시간 동기화 시 사용</li>
</ul>
<h3 id="7-----리눅스-proc-파일-시스템에서-aslraddress-space-layout-randomization-설정값을-확인할-수-있는-파일은-무엇인가">7.     리눅스 proc 파일 시스템에서 ASLR(Address Space Layout Randomization) 설정값을 확인할 수 있는 파일은 무엇인가?</h3>
<blockquote>
<p><strong><code>/proc/sys/kernel/randomize_va_space</code></strong></p>
</blockquote>
<ul>
<li><p>ASLR : 리눅스 커널은 메모리 손상 취약점 공격 방어하기 위해 사용</p>
</li>
<li><p>이를 제어하는 가상 파일 시스템 경로: <code>/proc/sys/kernel/randomize_va_space</code></p>
<ul>
<li>0: ASLR 비활성화. (Disabled)</li>
<li>1: ASLR 활성화. (Enabled)</li>
<li>2: ASLR이 라이브러리, 스택, mmap(2)의 실행 파일의 영역에만 적용 (Partially Enabled)</li>
</ul>
</li>
<li><p><code>/proc/sys/kernel/watchdog</code>: 시스템이 멈추는 하드 락업이나 소프트 락업을 탐지하기 위한 커널 와치독 서비스 관련 설정 파일</p>
</li>
<li><p><code>/proc/sys/kernel/panic</code>: 커널 패닉 발생 시 시스템을 자동으로 재부팅하기까지의 대기 시간을 설정하는 파일</p>
</li>
<li><p><code>/proc/sys/kernel/random</code>: 파일이 아닌 디렉토리 형태로 존재하는 경우 많음. 시스템 엔트로피 풀 크기나 UUID 생성 등 난수 발생 관련 설정 포함</p>
</li>
</ul>
<h3 id="8----다음-중-무결성integrity-검사를-위한-도구">8.    다음 중 무결성(Integrity) 검사를 위한 도구</h3>
<ul>
<li>Tripwire<ul>
<li>가장 대표적인 HIDS/FIM(File Integrity Monitoring) 도구.</li>
<li>무결성 검사</li>
</ul>
</li>
<li>Fcheck<ul>
<li>Perl로 작성된 파일 무결성 점검 도구</li>
</ul>
</li>
<li>Samhain<ul>
<li>중앙 집중식 관리가 가능한 오픈소스 무결성 검사 도구</li>
</ul>
</li>
<li><del>prstat</del><ul>
<li>Solaris OS에서 프로세스 통계 실시간으로 모니터링 하는 도구. 리눅스의 <code>top</code>명령어와 유사</li>
<li>성능/프로세스 모니터링</li>
</ul>
</li>
</ul>
<h3 id="10-프로세스-스케쥴링">10. 프로세스 스케쥴링</h3>
<ul>
<li><strong><del>페이징(Paging)</del></strong>: 메모리 관리<ul>
<li>가상 메모리를 고정된 크기로 나눠 물리 메모리(Frame)에 매핑하는 기법</li>
<li>스케쥴링보다는 주소 변환(Address Translation)과 밀접</li>
</ul>
</li>
<li><strong>스와핑(Swapping)</strong>: 프로세스/메모리 관리<ul>
<li>프로세스 전체를 메모리에서 보조기억장치로 내보내거나 드시 들여오는 작업</li>
</ul>
</li>
<li><strong>레이스 컨디션(Race condition)</strong>: 프로세스 관리<ul>
<li>두 개 이상의 프로세스가 공유 자원에 동시 접근할 때, 스케줄링 순서에 따라 결곽밧이 달라지는 현상</li>
</ul>
</li>
<li><strong>환형 대기(Circular Wait)</strong>: 프로세스 관리<ul>
<li>데드락 발생의 4가지 필요요건 중 하나. 프로세스들이 상대방의 자원을 점유한 채 대기하는 상태</li>
<li>프로세스 상태 관리 및 스케쥴링에 직접적 영향</li>
</ul>
</li>
</ul>
<h3 id="18-은폐형-바이러스에-대한-설명">18. 은폐형 바이러스에 대한 설명</h3>
<blockquote>
<ul>
<li>운영체제의 시스템 호출을 후킹. 파일 크기나 내용에 변화가 없는 것처럼 속이는 바이러스.</li>
</ul>
</blockquote>
<ul>
<li><p>작동 방식: 백신이나 사용자가 파일 정보를 요청하면, 바이러스 코드가 포함되지 않은 감염 전의 가짜 정보를 반환해 탐지를 피함</p>
</li>
<li><p>기법: 파일 크기 변조, 파일 읽기 요청 시 원본 데이터 출력</p>
</li>
<li><p>갑옷형 바이러스: 디버깅이나 리버싱 못하게 방해 기법 적용한 바이러스</p>
</li>
<li><p>암호화 바이러스: 바이러스 코드의 특징이 드러나지 않게 코드 전체나 일부를 암호화한 바이러스</p>
</li>
</ul>
<h3 id="20-다음-문장에서-리눅스-시스템에-침해-흔적을-조사하기-위해-루트-권한을-가진-setuid를-찾는-명령어로-괄호안에-들어갈-적합한-것은">20. 다음 문장에서 리눅스 시스템에 침해 흔적을 조사하기 위해 루트 권한을 가진 setuid를 찾는 명령어로 괄호안에 들어갈 적합한 것은?</h3>
<blockquote>
<p><code>find / -user root -type f \( ) -exec ls -al { } \;</code></p>
</blockquote>
<ul>
<li><p><strong><code>-perm –06000 \</code></strong></p>
</li>
<li><p><code>-perm –06000 \</code> : 특수 권한인 SetUID(4000)와 SetGID(2000)가 설정된 파일 찾는 옵션</p>
</li>
<li><p>SetUID : 일반 사용자가 실행할 때 파일 소유자의 권한으로 실행되므로, 공격자가 백도어 만들 때 가장 많이 악용함</p>
</li>
<li><p>명령어 설명</p>
<ul>
<li><code>find /</code> 루트부터 탐색</li>
<li><code>-user root</code> 소유자가 root인</li>
<li><code>-type f</code> 일반 파일 중</li>
<li><code>-perm -06000</code> SetUID나 SetGID가 설정된 것을 찾아서</li>
</ul>
</li>
<li><p><code>-exec ls -al</code> 상세 정보 출력</p>
</li>
<li><p><code>perm -00400</code>: 소유자의 읽기 권한만 체크</p>
</li>
<li><p><code>perm - 00200</code>: 소유자의 쓰기 권한만 체크</p>
</li>
<li><p><code>perm -00100</code>: 소유자의 실행 권한만 체크</p>
</li>
</ul>
<h2 id="네트워크-보안">네트워크 보안</h2>
<h3 id="21-vpn에-대한-설명">21. VPN에 대한 설명</h3>
<ul>
<li><strong>SSL VPN</strong>: 브라우저 사용 - 별도 소프트웨어 설치 없이 HTTPS 통해 접속하므로 Clientless 방식이 가능</li>
<li><strong>IPsec VPN</strong><ul>
<li>계층 - 네트워크 계층(3L) 동작, IP 패킷 자체를 암호화해 종단 간 보안 제공</li>
<li>운영 방식 - 트랜스포트 모드(데이터만 암호화)와 터널 모드(패킷 전체 암호화+새 헤더 추가) 모두 지원</li>
</ul>
</li>
<li>보안성 비교<ul>
<li>SSL VPN과 IPsec VPN 모두 AES 등 현대적 암호 알고리즘 사용해 기밀성/무결성 수준 대등</li>
<li>구현 위치(L3 vs L7)의 차이임</li>
</ul>
</li>
</ul>
<h3 id="23-windows-계열의-시스템에-대한-포트-스캐닝-가능-여부">23. Windows 계열의 시스템에 대한 포트 스캐닝 가능 여부</h3>
<ul>
<li><strong>TCP SYN Scan</strong><ul>
<li>Half-open 방식: SYN 보내고 SYN+ACK가 오면 열림. RST가 오면 닫힘으로 판단.</li>
</ul>
</li>
<li><strong>TCP FIN Scan</strong><ul>
<li>비정상 패킷 스캔. </li>
<li>포트가 열려있어도 무조건 RST를 보냄 -&gt; 개폐 여부 확인 불가</li>
</ul>
</li>
<li><strong>TCP Connect Scan</strong><ul>
<li>Full Handshake 방식: <code>connect()</code> 시스템 콜을 사용해 3-way handshake 완료함. </li>
</ul>
</li>
<li><strong>UDP Scan</strong><ul>
<li>UDP 패킷 보낸 후, 응답 없으면 열림.</li>
<li>ICMP Port Unreachable이 오면 닫힘으로 판단.</li>
</ul>
</li>
</ul>
<h3 id="24-iot-서비스-지향-아키텍처soa-모델의-구성-요소">24. IoT 서비스 지향 아키텍처(SoA) 모델의 구성 요소</h3>
<ul>
<li><strong>센싱(감지) 계층</strong>: 센서 및 액추에이터를 통해 물리적 정보 수집하고 식별하는 최하위 계층</li>
<li><strong>네트워크 계층</strong>: 유무선 통신 기술을 이용해 수집된 데이터를 전송하는 통로 역할</li>
<li><strong>서비스 계층</strong>: 기기 인증, 데이터 처리, 서비스 제어 등 핵심 비즈니스 로직과 보안 요구사항을 처리하는 중간 계층</li>
<li><strong>응용(인터페이스) 계층</strong>: 최종 사용자에게 인터페이스와 실제 서비스를 제공하는 최상위 계층</li>
<li><del>트랜스포트 계층</del>: SoA 모델에서는 네트워크 계층이나 서비스 계층에 이 기능이 포함됨.</li>
</ul>
<h3 id="25-산업제어시스템ics-관련-용어">25. 산업제어시스템(ICS) 관련 용어</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/665cd124-869d-49e1-be61-6be3f7e35fa7/image.gif" alt="">
<strong>SCADA</strong></p>
</blockquote>
<ul>
<li>SCADA (Supervisory Control and Data Acquisition)<ul>
<li>원거리 설비들을 중앙에서 감시하고 제어하며 데이터 수집하는 시스템</li>
</ul>
</li>
<li>PLC: 설비 직접 제어하는 하드웨어 장치</li>
<li>Stuxnet: SCADA/PLC를 공격하기 위해 제작된 악성코드 이름</li>
<li>Modbus: 제어 기기 간 통신에 사용되는 프로토콜</li>
</ul>
<h3 id="26-fragmentation-offset을-위조하여-중복하게-하거나-공간을-두어-재조합을-방해하는-공격은-osi-7계층-중-어느-계층에서-발생하는-것인가">26. Fragmentation Offset을 위조하여 중복하게 하거나 공간을 두어 재조합을 방해하는 공격은 OSI 7계층 중 어느 계층에서 발생하는 것인가?</h3>
<blockquote>
<p>OSI 3계층</p>
</blockquote>
<ul>
<li>데이터가 MTU(최대 전송 단위)보다 클 때 쪼개지는 단편화와 이를 다시 합치는 재조합 과정은 네트워크 계층의 역할</li>
<li>공격 메커니즘: IP 헤더의 Fragment Offset 값을 조작해 <em>수신 측이 재조합할 때 오버플로우를 일으키거나 시스템 다운</em></li>
<li>OSI 3계층 대표 공격: <ul>
<li><strong>Teardrop Attack</strong><ul>
<li>IP Fragmentation 오프셋 조작</li>
</ul>
</li>
<li><strong>Ping of Death</strong><ul>
<li>규격 이상의 거대 패킷 전송(ICMP 패킷)</li>
</ul>
</li>
<li><strong>Smurf Attack</strong><ul>
<li>ICMP 증폭 및 반사 - 출발지 IP를 희생자의 IP로 위조한 후, 네트워크의 브로드캐스트 주소로 ICMP Echo Request 보냄</li>
</ul>
</li>
<li><strong>Land Attack</strong> -&gt; L4(Transport)<ul>
<li>출발지/목적지 IP 동일 설정해 무한 루프에 빠짐</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="34-n-ids-패킷-분석">34. N-IDS 패킷 분석</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/82b7ad11-f64d-4d83-af13-7c5a50845db1/image.gif" alt="">
<strong>S1 시스템이 D1 시스템에 대해 TCP SYN 스캔을 시도하였다.</strong></p>
</blockquote>
<ul>
<li>패킷 흐름<ul>
<li>S1 -&gt; D1 (SYN) : 연결 요청</li>
<li>D1 -&gt; S1 (SYN, ACK) : 포트가 열려 있음을 응답</li>
<li>S1 -&gt; D1 (RST) : 연결을 완료하지 않고 즉시 강제 종료 (RST)</li>
</ul>
</li>
<li>3-way handshake를 완성(ACK)하지 않고 RST를 보내는 것은 Half-open 스캔인 TCP SYN Scan의 전형적인 특징</li>
<li><strong>SYN Flooding</strong>: RST를 보내지 않고 SYN만 보내 자원을 고갈시키는 공격</li>
<li><strong>TCP Connect Scan</strong>: RST 대신 ACK를 보내 연결을 완전히 수립한 후 종료</li>
<li><strong>Stealth Scan</strong>: SYN 스캔도 스텔스 스캔의 일종이지만 선지에 더 구체적인 SYN Scan 이 있다면 이게 우선.</li>
</ul>
<h3 id="38-클라우드-컴퓨팅-보안">38. 클라우드 컴퓨팅 보안</h3>
<ul>
<li><strong>가상화 취약점 상속</strong>: 클라우드는 하이퍼바이저를 기반으로 하므로, 가상화 엔진 자체의 결함이 전체 가상머신에 영향을 줄 수 있음</li>
<li><strong>정보 유출 가능성</strong>: 외부 업체(CSP)에 데이터를 위탁하므로, 관리 소홀이나 내부자 위협에 의한 정보 유출 위험이 존재</li>
<li><strong>보안 적용</strong> <del>용이</del>: 집중화가 관리 효율을 높일 수는 있으나, 멀티테넌시 환경에서의 자원 격리, 공유 책임 모델 등으로 보안 설계는 훨씬 복잡함</li>
<li><strong>서비스 장애 발생</strong>: 자원이 집중되어 있어 클라우드 사업자의 장애가 해당 자원을 사용하는 모든 서비스의 중단으로 이어짐.</li>
</ul>
<h3 id="39-네트워크-계층-장비-설명">39. 네트워크 계층 장비 설명</h3>
<ul>
<li><strong>리피터 - 1계층</strong> : 감쇄된 신호 증폭해 전송 거리 연장</li>
<li><strong>더미 허브 - 1계층</strong> : 들어온 신호를 연결된 모든 포트로 flooding</li>
<li><strong>브릿지 - 2계층</strong> : MAC 주소 기반으로 두 LAN 세그먼트 연결</li>
<li><em><strong>라우터 - 3계층</strong> : IP 주소를 기반으로 경로 결정 및 다른 프로토콜 네트워크 연결</em></li>
</ul>
<h2 id="애플리케이션-보안">애플리케이션 보안</h2>
<h3 id="43-리버스-도메인-reverse-dns">43. 리버스 도메인 (Reverse DNS)</h3>
<ul>
<li>도메인 -&gt; IP 변환<ul>
<li>정방향 조회(Forward DNS)에 대한 설명</li>
</ul>
</li>
<li>IP -&gt; 도메인 변환<ul>
<li>리버스 도메인의 목적</li>
<li>특정 IP 주소가 어떤 도메인에 할당되었는지 확인</li>
</ul>
</li>
<li>역질의 (Reverse Query)<ul>
<li>IP 주소를 가지고 이름을 묻는 방식</li>
</ul>
</li>
<li>ip-addr.arpa 구성<ul>
<li>IPv4의 경우 주소를 역순으로 배열한 뒤 <code>.in-addr.arpa</code>를 붙여 PTR 레코드로 관리</li>
</ul>
</li>
</ul>
<h3 id="46-spam-assagin-필터링-기준">46. Spam Assagin 필터링 기준</h3>
<ul>
<li>Spam Assagin : 스코어링 방식의 스팸 필터링 도구</li>
<li>헤더 검사(1), 본문 키워드 분석(2), 발신 IP의 블랙리스트(RBL) 대조(3) 등 기준을 결합해 점수 매김.</li>
<li>메일의 거의 모든 요소 분석</li>
</ul>
<h3 id="49-웹-서비스-공격-유형-분석">49. 웹 서비스 공격 유형 분석</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/a604b67b-61f2-4410-9bca-083fe1d2c14b/image.gif" alt="">
<strong>HTTP Smuggling</strong></p>
</blockquote>
<ul>
<li>이미지 내 HTTP 요청 패킷을 보면 <code>Content-Length: 20</code>과 <code>Transfer-Encoding: chunked</code>가 동시에 사용됨.</li>
<li>프론트와 백엔드 서버가 요청의 끝을 해석하는 방식의 차이를 악용해, 하나의 요청 안에 또 다른 요청(<code>GET /home ...</code>)을 숨겨(Smuggled) 보내는 공격</li>
</ul>
<h3 id="54-전자-입찰-시-필요한-보안-요구사항">54. 전자 입찰 시 필요한 보안 요구사항</h3>
<ul>
<li><strong>비밀성</strong>: 개찰 전까지 누구도 알 수 없어야 함.</li>
<li><strong>공평성</strong>: 모든 입찰자에게 동일한 정보와 기회가 제공되어야 함.</li>
<li><strong>무결성</strong>: 제출된 입찰서가 변조되지 않아야 함.</li>
<li><strong>부인방지</strong>: 입찰 사실을 나중에 부인할 수 없어야 함.</li>
</ul>
<h3 id="56-ftp-bounce-attack-설명">56. FTP Bounce Attack 설명</h3>
<ul>
<li><blockquote>
<p>접근이 FTP 의 PORT command를 악용해 외부에서 직접 접근 불가능한 내부망 컴퓨터 상의 포트에 FTP 서버를 통해 접근할 수 있음</p>
</blockquote>
</li>
<li>FTP Bounce Attack<ul>
<li>FTP 프로토콜의 PORT 명령 악용</li>
<li>공격자가 FTP 서버에 <code>PORT</code> 명령을 보내 데이터 전송 대상을 공격 타겟으로 지정해, 외부에서 직접 접근할 수 없는 시스템에 연결을 시도하거나 포트 스캐닝을 수행하는 기법.</li>
</ul>
</li>
<li>Timing Ataack : login id 입력 후 다음 응답 코드를 줄 때까지의 반응 속도 차이를 이용해 실제 계정이 존재하는지 여부를 추측할 수 있음.</li>
</ul>
<h3 id="57-스팸메일-대응-방안">57. 스팸메일 대응 방안</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/3616537a-0907-4e2e-882e-3698c24a74e2/image.gif" alt="">
<strong>Sender Policy Framework (SPF)</strong></p>
</blockquote>
<ul>
<li><strong>SPF</strong><ul>
<li>메일 헤더의 발송 정보와 실제 발송 서버 비교, 발송자의 서버를 DNS에 미리 등록해야 함.</li>
<li>수신 측 네임서버가 송신 측 DNS에 등록된 SPF 레코드(IP 정보 등)를 조회하여 실제 메일을 보낸 IP와 일치하는지 확인해 스팸 여부 판별</li>
</ul>
</li>
<li><strong>procmail</strong><ul>
<li>메일 필터링 도구, 메일을 분류하고 자동 ㅊ처리</li>
</ul>
</li>
<li><strong>Sanitizer</strong><ul>
<li>메일 내용 검사 및 악성코드 제거하는 도구</li>
</ul>
</li>
<li><strong>Spam Assassin</strong><ul>
<li>스팸 메일 필터링 소프트웨어, 다양한 방법 사용해 스팸 메일 탐지하고 차단</li>
</ul>
</li>
</ul>
<h3 id="60-시큐어-코딩-취약점-분석">60. 시큐어 코딩 취약점 분석</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/a49c5223-463b-4b34-9eb5-04fb763d2475/image.gif" alt="">
<strong>XSS(Cross Site Scripting)</strong></p>
</blockquote>
<ul>
<li>이미지의 JSP 코드는 JSTL의 <code>&lt;c:out:&gt;</code> 태그를 사용하고 있음</li>
<li><code>&lt;c:out:&gt;</code> 태그는 기본적으로 <code>escapeXml=&quot;true&quot;</code> 속성이 적용되어 있는데, <code>${m.content}</code>에 포함될 수 있는 HTML 특수 문자를 <code>&amp;lt;</code>, <code>&amp;gt;</code> 등으로 치환해 브라우저가 이를 스크립트로 실행하지 못하게 차단함.</li>
</ul>
<p><del>-&gt; ㄹㅈㄷ 억까문제 같음;;</del></p>
<h2 id="정보-보안-일반">정보 보안 일반</h2>
<h3 id="61-메시지-인증과-해시-함수">61. 메시지 인증과 해시 함수</h3>
<ul>
<li>메시지 인증(Message Authentication)은 송신자의 신원 확인과 메시지 무결성을 목적으로 함.</li>
<li><strong>키 공유 해시함수 사용</strong><ul>
<li>HMAC(Hash-based MAC) 방식으로, 송신자가 공유한 비밀키를 해시 함수에 입력</li>
</ul>
</li>
<li><strong>암호화된 해시함수 사용</strong><ul>
<li>해시값을 대칭키로 암호화해 전달</li>
</ul>
</li>
<li><strong>공개키 암호체계에서 송신자 개인키 해시함수 사용</strong><ul>
<li>전자서명의 기본 원리</li>
<li>해시값을 송신자의 개인키로 암호화해 인증 제공</li>
</ul>
</li>
<li><strong><del>공개키 암호화된 해시함수 사용</del></strong><ul>
<li>해시값을 수신자의 공개키로 암호화하는 것은 기밀성을 위한 것이지, 누구라도 보낼 수 있는 공개키 특성상 송신자를 확인하는 인증 기법으로는 부적절함.</li>
</ul>
</li>
</ul>
<h3 id="63-kdc-key-distribution-center-키-분배">63. KDC (Key Distribution Center) 키 분배</h3>
<ul>
<li><strong>KDC(ex. Kerberos)</strong>: 기본적으로 대칭키 암호 체계 기반</li>
<li>KDC는 _일회용 세션키 생성_한 후</li>
<li><em>각 사용자와 사전에 공유하고 있는 대칭키</em>(Master Key)로 암호화해 전송</li>
<li><em>공개키로 암호화하는 방식은 PKI</em>(Public Key Infrastructure)의 영역</li>
</ul>
<h3 id="64-해시함수의-조건">64. 해시함수의 조건</h3>
<ul>
<li><strong>압축(Compression)</strong>: 임의 길이의 입력을 고정된 짧은 길이로 변환</li>
<li><strong>일방향성 (One-way)</strong>: 해시값으로 원문을 찾는 것이 계산적으로 불가능해야 함.</li>
<li><strong>충돌 회피 (Collision Resistance)</strong>: 서로 다른 두 입력이 같은 해시값을 갖지 않아야 함.</li>
<li><strong>빠른 계산(Efficiency):</strong> 해시값 계산이 빠르게 이뤄져야 함.</li>
<li><strong>결정론적 특성 (Deterministic)</strong>: 동일한 입력은 항상 동일한 해시값을 반환해야 함.</li>
<li><strong>제2 역상 저항성(2nd Preimage Resistance)</strong>: 동일한 해시 값을 가지는 다른 입력을 찾기 어려워야 함.</li>
<li><strong>균등한 분포 (Uniform Distribution)</strong>: 해시 값이 고르게 분포되어야 함.</li>
<li><strong>난수성 (Randomness)</strong>: 작은 입력 변화에도 해시값이 크게 변해야 함.</li>
<li><blockquote>
<p>생일 공격: 해시 함수의 충돌 회피성을 깨기 위한 공격 기법의 이름.</p>
</blockquote>
</li>
</ul>
<h3 id="65-전자상거래-이중서명-dual-signature">65. 전자상거래 이중서명 (Dual Signature)</h3>
<ul>
<li><strong>이중서명</strong>: SET(Secure Electronic Transaction) 프로토콜의 핵심 기술</li>
<li>판매자에게는 계좌 정보를, 은행(PG)에게는 구매 목록을 숨기는 효과</li>
<li>서명을 통해 주문 정보와 결제 정보가 연결되므로 위변조 방지</li>
<li>판매자는 주문 정보에 대한 서명을 검증해 고객의 정당성을 확인</li>
<li><strong>디지털 서명(이중서명 포함)</strong> : _사용자 인증, 무결성, 부인 방지_의 기능 모두 포함함.</li>
</ul>
<h3 id="67-접근-통제-모델의-분류">67. 접근 통제 모델의 분류</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/007c79a8-1af7-43ed-8d5b-1e9c5a7c3549/image.gif" alt="">
<strong>㉠ MAC, ㉡ DAC, ㉢ RBAC</strong></p>
</blockquote>
<ul>
<li>MAC(Mandatory Access Control)<ul>
<li>관리자가 설정한 주체와 객체의 보안 등급을 비교해, 접근 권한 부여</li>
<li>중앙 집중적, 강제적</li>
</ul>
</li>
<li>DAC(Discretionary Access Control)<ul>
<li>객체의 소유자가 자신의 판단에 따라 다른 주체에게 접근 권한을 부여</li>
<li>주로 ACL을 사용해 구현</li>
</ul>
</li>
<li>RBAC(Role-Based Access Control)<ul>
<li>주체의 신분이 아닌 조직 내에서의 역할(Role)에 기반해 권한 부여</li>
<li>관리 효율성 높아 대규모 조직에 적합</li>
</ul>
</li>
</ul>
<h3 id="68-aclaccess-control-list의-특징">68. ACL(Access Control List)의 특징</h3>
<ul>
<li>ACL<ul>
<li>객체(Object) 중심의 목록</li>
<li>특정 객체에 대해 어떤 사용자가 접근 가능한지 파악하기는 쉬우나, <em>사용자가 다수일 경우 목록이 매우 길어지고 관리가 복잡해짐.</em></li>
</ul>
</li>
<li>접근 행렬(Access Matrix)에서 행은 자격 목록(C-List), 열(Column)은 ACL에 해당</li>
<li>특정 객체에 대한 권한 회수(Revocation)는 해당 객체의 목록만 수정하면 되므로 상대적으로 용이</li>
</ul>
<h3 id="73-aes-ccm-운영-모드">73. AES-CCM 운영 모드</h3>
<ul>
<li><strong>GCM(Galois/Counter Mode)</strong><ul>
<li>메시지 인증을 위해 GHASH를 사용하는 모드</li>
</ul>
</li>
<li><strong>CCM(Counter with CBC-MAC)</strong><ul>
<li>CBC-MAC 기술을 사용해 인증 수행</li>
<li>AES 기본 블록 크기 : 128bit</li>
<li>CTR(Counter) 모드를 기반으로 하므로 블록 크기에 맞추는 패딩 필요 없음</li>
<li>기밀성과 인증을 동시에 제공하는 인증 암호화(AEAD) 모드</li>
</ul>
</li>
</ul>
<h3 id="75-접근-통제-원칙">75. 접근 통제 원칙</h3>
<ul>
<li>보안 기본 원칙은 <strong>최소 권한의 원칙.</strong><ul>
<li>업무 수행에 필요한 최소한의 권한만 부여해야함.</li>
</ul>
</li>
<li><strong>직무 분리(SoD)</strong>: 경영자나 관리자 한 사람이 업무의 발생, 승인, 변경, 확인, 배포 등을 처음부터 끝까지 처리할 수 없도록 해야 함.</li>
<li><strong>암시적 거부(Implicit Deny) 원칙</strong>: 보안정책에 따른 접근 허용된 주체와 주체의 접근 가능한 접근통제 규칙을 설정하고, 접근규칙에 해당하지 않는 모든 접근에 대해서는 위반으로 간주함.</li>
</ul>
<h3 id="77-무선-네트워크-인증-기법">77. 무선 네트워크 인증 기법</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/7a4dbc57-b377-40f1-a0eb-9db643be4a3d/image.gif" alt="">
<strong>IEEE 802.1x</strong></p>
</blockquote>
<ul>
<li><strong>IEEE 802.1x</strong> : 포트 기반 접근 제어(PNAC), EAP 프로토콜 사용, RADIUS 서버와의 연동<ul>
<li>유/무선 네트워크에서 인증되지 않은 사용자가 포트를 통해 내부망에 접속하는 것을 차단하는 표준 규격</li>
</ul>
</li>
</ul>
<h3 id="kerberos-v5의-특징-및-개선점">Kerberos V5의 특징 및 개선점</h3>
<ul>
<li>Kerberos V5<ul>
<li>티켓과 세션키를 전송할 때 암호화된 내용 포함</li>
<li>패스워드 공격에 대한 방어는 사전 인증(Pre-authentication) 도입 등을 통해 오프라인 사전 공격의 위험</li>
<li>장점<ul>
<li>다양한 암호 알고리즘 지원</li>
<li>IP 외 주소 체계 지원</li>
<li>유연한 티켓 유효기간 설정</li>
</ul>
</li>
</ul>
</li>
<li>Kerberos V4<ul>
<li>DES 암호화 사용 -&gt; 보안취약</li>
<li>티켓유효시간 1280분</li>
<li>패스워드 추측공격 가능</li>
</ul>
</li>
<li>Kerberos V5<ul>
<li>다른 종류의 안전한 암호화 알고리즘 사용 가능</li>
<li>시작 시간과 끝 시간 표시(유효시간) -&gt; 관리자가 필요에 따라 유효 기간을 설정할 수 있도록 변경됨.</li>
<li>사전인증기능으로 패스워드 추측공격이 더 어려워짐</li>
</ul>
</li>
</ul>
<h3 id="79-전자서명-표준">79. 전자서명 표준</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/f63549bb-c9bb-4ac8-8850-44cb03633969/image.gif" alt="">
<strong>DSS</strong></p>
</blockquote>
<ul>
<li><strong>DSS</strong><ul>
<li>1994년 NIST에서 발표한 표준으로 DSA(Digital Signature Algorithm) 사용, ElGamal 방식 개량</li>
</ul>
</li>
<li><strong>타원 곡선 전자 서명 (ECDSA)</strong><ul>
<li>타원 곡선 암호(ECC) 이론 바탕으로 한 전자서명 알고리즘</li>
<li>RSA에 비해 짧은 키 길이로 동일한 보안 수준 제공</li>
<li>연산 속도가 빠르고 메모리 소모가 적음, 블록체인에서 표준으로 사용됨.</li>
</ul>
</li>
<li><strong>RSA</strong><ul>
<li>소인수 분해의 어려움에 기반 둔 공개키 암호 알고리즘</li>
<li>암호화와 전자서명 기능 동시 제공</li>
<li>구조가 직관적이고 구현 쉬움</li>
<li>보안성 유지 위해 2048 비트 이상 권장함.</li>
</ul>
</li>
<li><strong>KCDSA (Korean Certificate-based Digital Signature Algorithm)</strong><ul>
<li>ETRI, 우리나라 고유 전자서명 알고리즘</li>
<li>이산대수 문제, 국내 공공기관+금융권</li>
<li>이의 타원곡선 버전인 EC-KCDSA 존재</li>
</ul>
</li>
</ul>
<h2 id="정보보안-관리-및-법규">정보보안 관리 및 법규</h2>
<h3 id="81-가명·익명처리-기술">81. 가명·익명처리 기술</h3>
<ul>
<li><strong>상하단코딩(Top and bottom coding)</strong><ul>
<li>수치 데이터 중 너무 작거나 큰 이상치를 범주화해 대체하는 기술</li>
<li>ex) 90세 이상은 모두 &#39;90세 이상&#39;으로 표기</li>
</ul>
</li>
<li><strong>제어 라운딩(Controlled rounding)</strong><ul>
<li>행과 열의 합계를 유지하면서 반올림/내림을 수행하는 정밀 기술</li>
</ul>
</li>
<li><strong>랜덤 라운딩(Random rounding)</strong><ul>
<li>미리 정해진 확률에 따라 무작위로 올림 또는 내림을 결정</li>
</ul>
</li>
<li><strong>일반 라운딩(Rounding)</strong><ul>
<li>우리가 흔히 아는 반올림, 내림, 올림 기법</li>
</ul>
</li>
</ul>
<h3 id="82-isms정보보호-관리체계-의무-대상자">82. ISMS(정보보호 관리체계) 의무 대상자</h3>
<ul>
<li><strong>직접정보통신시설 사업자</strong><ul>
<li>IDC 센터 등을 운영하는 사업자로 당연 대상</li>
</ul>
</li>
<li>정보통신서비스 부문 <strong>3개월간 일일평균 이용자수 100만명 이상인 사업자</strong><ul>
<li>전년도 말 기준 직전 3개월간 이용자 수 기준</li>
</ul>
</li>
<li>정보통신서비스 부문 <strong>100억원 이상인 사업자</strong><ul>
<li>서비스 부문 매출 기준</li>
</ul>
</li>
<li><strong>연간 매출액 또는 세입 등이</strong> <del>1,000억원 이상인</del> 사업자<ul>
<li>법적 기준은 <strong>1500억 원 이상인</strong> 상급 종합병원, 대학 등</li>
</ul>
</li>
</ul>
<h3 id="83-정보보호-교육">83. 정보보호 교육</h3>
<ul>
<li>외부용역 인력 제외<ul>
<li>보안 사고는 외부용역 인력도 반드시 포함되어야 함.</li>
</ul>
</li>
<li>직무별 교육: 일반 임직원과 IT 담당자 등 대상에 맞는 전문 교육 필요</li>
<li>연 1회 이상: 법적 최소 요건이며, 중대 변경 시 수시 교육 수행해야 함.</li>
<li>단계별 구성: 인식 제고부터 고급 기술까지 수준별 교육 체계 수립해야 함.</li>
</ul>
<h3 id="84-클라우드-saas-보안인증csap-등급">84. 클라우드 SaaS 보안인증(CSAP) 등급</h3>
<ul>
<li><strong>클라우드 보안인증 표준등급</strong><ul>
<li>클라우드 서비스의 보안성을 평가하여 등급을 부여하는 제도</li>
<li><strong>전자결재 서비스</strong></li>
<li><strong>개인정보 유통 보안 서비스</strong></li>
<li><strong>소프트웨어 개발환경</strong> 이 필수 인증 대상</li>
</ul>
</li>
<li>이메일/메신저 서비스: 선택 인증 대상</li>
</ul>
<h3 id="87-정보보호-조직의-역할과-책임">87. 정보보호 조직의 역할과 책임</h3>
<ul>
<li><strong>최고 경영자</strong>: 자원 할당 및 정책 최종 승인 등 총괄 책임자</li>
<li><strong>데이터 관리자</strong>: 해당 데이터의 비즈니스 소유자(Owner)로, 중요도를 분류하고 접근 권한을 정의함.</li>
<li>프로세스 관리자: 비즈니스 공정의 원활한 운영 책임짐</li>
<li><strong>시스템 관리자</strong>: 정보 시스템에 대한 조직의 정보보호 정책에 따라 적절한 보안을 보증할 책임이 있음</li>
<li><strong>사용자</strong>: 부여된 권한 내에서 절차를 준수하고 사고 발생 시 보고할 의무가 있음.</li>
</ul>
<h3 id="91-개인정보-열람-제한-및-거절-사유">91. 개인정보 열람 제한 및 거절 사유</h3>
<ul>
<li><strong>열람 거절 가능</strong><ul>
<li>법률에 따라 열람이 금지되거나 제한되는 경우</li>
<li>타인의 생명/재산권 침해 우려가 있다면 거절 가능</li>
<li>업무 수행 지장<ul>
<li>시험 채용, 자격 심사 등은 공개 시 공정성을 해칠 수 있어 거절 가능</li>
</ul>
</li>
</ul>
</li>
<li><strong>업무 수행 불가</strong><ul>
<li>개인정보를 &#39;처리&#39;할 수 있는 사유</li>
<li>정보주체의 &#39;열람 권리&#39;를 거부할 수 있는 사유가 아님.</li>
</ul>
</li>
</ul>
<h3 id="93-재해복구-시스템dr과-rtorecovery-time-objective">93. 재해복구 시스템(DR)과 RTO(Recovery Time Objective)</h3>
<ul>
<li><strong>미러 사이트</strong>: 주 센터와 동일하게 실시간 복제<ul>
<li>RTO(복구 목표 시간) : 즉시</li>
</ul>
</li>
<li><strong>핫 사이트</strong>: 장비와 데이터가 준비된 상태<ul>
<li>RTO: 수 시간 이내</li>
</ul>
</li>
<li><strong>웜 사이트</strong>: 중요 장비만 있고 데이터는 백업본 활용<ul>
<li>RTO: 수 일(24~72시간)</li>
</ul>
</li>
<li><strong>콜드 사이트</strong>: 장소와 인프라만 준비, 장비 도입 필요<ul>
<li>RTO: 수 주 ~ 수 개월</li>
</ul>
</li>
</ul>
<h3 id="94-관련-법령-및-소관-부처">94. 관련 법령 및 소관 부처</h3>
<ul>
<li><strong>개인정보 보호법</strong>: <strong>개인정보보호위원회</strong> 소관</li>
<li><strong>위치정보법</strong>: <strong>방송통신위원회</strong> 소관</li>
<li><strong>지방공기업법</strong>: <strong>행정안전부</strong> 소관</li>
<li><strong>전자서명법</strong>: <strong>과학기술정보통신부</strong> 소관</li>
</ul>
<h3 id="95-정보통신기반시설-보호-기구">95. 정보통신기반시설 보호 기구</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/2c8d73e3-56c4-4dae-b697-32b8070eb9b3/image.gif" alt="">
<strong>정보공유·분석센터</strong></p>
</blockquote>
<ul>
<li><strong>정보공유·분석센터 (ISAC)</strong>: 금융, 통신 등 분야별로 침해사고 대응 및 취약점 정보 공유하기 위해 설립된 기구</li>
<li><strong>한국인터넷진흥원(KISA)</strong>: 국가 전체의 인터넷 침해사고 대응 및 개인정보 보호 등을 총괄하는 공공기관</li>
<li><strong>관리기관</strong>: 해당 주통기시설을 관리 및 운영하는 기관</li>
<li><strong>지식정보보안 컨설팅업체</strong>: 기반시설의 취약점 분석 및 평가 업무를 지원하도록 지정된 민간 전문 업체</li>
</ul>
<h3 id="96-정량적-위험분석-방법론">96. 정량적 위험분석 방법론</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/0751984a-06ed-4122-b0fc-66e3ea592b56/image.gif" alt="">
<strong>수학공식 접근법</strong></p>
</blockquote>
<ul>
<li><strong>연간예상손실법 (ALE)</strong>: 단일예상손실액(SLE)에 연간발생률(ARO)을 곱하여 연간 손실을 계산하는 가장 일반적인 정량화 방법</li>
<li><strong>과거자료 분석법</strong>: 과거에 발생했던 실제 사고 데이터를 바탕으로 위험 발생 가능성을 에측하는 방법</li>
<li><strong>수학공식 접근법</strong>: 과거 자료가 부족할 때 위협 발생 빈도를 수식으로 계산하여 위험을 간결하게 수치화하는 방식</li>
<li><strong>확률 분포법</strong>: 미지의 사건을 확률 편차를 이용해 최저, 보통, 최고의 손실액을 통계적으로 추정하는 방법</li>
</ul>
<h3 id="100-위험-처리-방안">100. 위험 처리 방안</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/0026120b-3990-4303-a3d9-a12421e40bf1/image.gif" alt="">
<strong>위험 회피</strong></p>
</blockquote>
<ul>
<li><strong>위험 수용(Acceptance)</strong>: 위험 수준이 낮거나 대책 비용이 너무 비쌀 때, 발생하는 손실을 그대로 감수하는 방안</li>
<li><strong>위험 제거(Reduction/Mitigation)</strong>: 보안 장비를 도입하거나 절차를 개선하여 위험 수준을 낮추는 가장 일반적 방법</li>
<li><strong>위험 전이(Transference)</strong>: 보험 가입이나 외주(Outsourcing)를 통해 위험에 대한 책임을 제3자에게 넘기는 방안</li>
<li><strong>위험 회피(Avoidence)</strong>: 위험이 너무 커서 감당할 수 없을 때, 해당 자산을 제거하거나 업무를 중단하여 위험 가능성을 아예 없애는 것</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보보안기사 필기 21년 9월]]></title>
            <link>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-21%EB%85%84-9%EC%9B%94</link>
            <guid>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-21%EB%85%84-9%EC%9B%94</guid>
            <pubDate>Sat, 07 Feb 2026 14:11:14 GMT</pubDate>
            <description><![CDATA[<h2 id="시스템-보안">시스템 보안</h2>
<h3 id="3----리눅스에서-새로-생성되는-사용자-계정의-홈-디렉터리는-bashrc-등과-같이-모든-사용자가-필요로-하는-파일들을-만들어줄-필요가-있다-이러한-공통-파일들을-미리-만들어-특정-디렉터리에-넣어두면-사용자-계정-생성-시-자동복사-되도록-설정할-수-있는데-이러한-용도의-디렉터리는-무엇인가">3.    리눅스에서 새로 생성되는 사용자 계정의 홈 디렉터리는 .bashrc 등과 같이 모든 사용자가 필요로 하는 파일들을 만들어줄 필요가 있다. 이러한 공통 파일들을 미리 만들어 특정 디렉터리에 넣어두면 사용자 계정 생성 시 자동복사 되도록 설정할 수 있는데, 이러한 용도의 디렉터리는 무엇인가?</h3>
<blockquote>
<p><strong>/etc/skel</strong></p>
</blockquote>
<ul>
<li><code>/etc/skel</code> : 새로운 사용자가 로그인할 떄 생성되는 파일과 디렉토리 포함.</li>
</ul>
<h3 id="4----2016년에-처음-발견되었으며-ip-카메라나-가정용-라우터와-같은-iot-장치를-주요-공격-대상으로-삼는-ddos-공격용-봇넷-악성코드는-무엇인가">4.    2016년에 처음 발견되었으며 IP 카메라나 가정용 라우터와 같은 IoT 장치를 주요 공격 대상으로 삼는 DDoS 공격용 봇넷 악성코드는 무엇인가?</h3>
<blockquote>
<p><strong>미라이</strong></p>
</blockquote>
<ul>
<li>미라이 봇넷: ARC 프로세서에서 실행되는 IoT 장치를 주요 공격대상으로 삼는 DDoS 공격용 봇넷 악성코드</li>
<li>님다 바이러스 : 윈도우 계열의 서버를 공격대상으로 파일 통해 서버를 감염시킴. </li>
<li>스턱스넷: 악성컴퓨터 웜 바이러스. 산업시설을 감시하고 파괴</li>
<li>SQL 슬래머: MS SQL서버의 버퍼 오버플로우 버그를 이용해 공격하는 웜 바이러스</li>
</ul>
<h3 id="5-다음-지문에서-설명하는-내용은-스푸핑-공격-중-어떤-공격에-해당하는가">5. 다음 지문에서 설명하는 내용은 스푸핑 공격 중 어떤 공격에 해당하는가?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/c544aa59-c692-4e89-9e8a-e76c1d9c7085/image.gif" alt="">
<strong>ARP 스푸핑</strong></p>
</blockquote>
<ul>
<li>ARP 스푸핑: MAC주소 위조해 네트워크 트래픽을 가로채거나 조작</li>
<li>DNS 스푸핑: DNS서버의 응답을 위조하여 악성 웹사이트로 리다이렉션</li>
<li>IP 스푸핑: 공격자가 IP주소를 위조해 상대방을 속임</li>
<li>이메일 스푸핑: 이메일 헤더를 위조</li>
<li>웹사이트 스푸핑: 웹사이트의 도메인 이름을 위조</li>
</ul>
<h3 id="6----디지털저장매체-중-하드디스크-구조에서-물리적으로는-할당된-공간이지만-논리적으로는-사용할-수-없는-공간을-무엇이라고-하는가">6.    디지털저장매체 중 하드디스크 구조에서 물리적으로는 할당된 공간이지만 논리적으로는 사용할 수 없는 공간을 무엇이라고 하는가?</h3>
<blockquote>
<p><strong>슬랙</strong></p>
</blockquote>
<ul>
<li>슬랙<ul>
<li>파일: 비어 있거나 사용되지 않는 공간</li>
<li>할당되지 않은 공간</li>
<li>데이터: 불필요한 공간</li>
</ul>
</li>
<li>CHS (Cylinder, Head, Sector)<ul>
<li>디스크: 물리적인 기하학적 구성</li>
<li>헤드: 디스크의 표면 위의 리더/라이터 헤드</li>
<li>실린더: 디스크의 같은 반경에 있는 트랙들의 집합</li>
<li>섹터: 디스크의 표면에 있는 데이터 저장 단위</li>
</ul>
</li>
<li>클러스터 (Cluster)<ul>
<li>파일 시스템: 논리적 데이터 저장 단위</li>
<li>디스크: 연속된 데이터 저장 공간</li>
<li>파일: 클러스터에 할당됨</li>
<li>공간 절약: 작은 파일들을 하나의 클러스터에 저장</li>
</ul>
</li>
</ul>
<h3 id="7----윈도우-레지스트리-키-중에서-파일의-각-확장자에-대한-정보와-프로그램의-맵핑-정보가-저장된-키로-옳은-것은">7.    윈도우 레지스트리 키 중에서 파일의 각 확장자에 대한 정보와 프로그램의 맵핑 정보가 저장된 키로 옳은 것은?</h3>
<blockquote>
<p><strong>HKEY_CLASSES_ROOT</strong></p>
</blockquote>
<ul>
<li>HKEY_CLASSES_ROOT<ul>
<li>파일 형식과 관련된 정보</li>
<li>프로그램 연결 및 파일 탐색 정보</li>
<li>레지스트리의 시작점</li>
</ul>
</li>
<li>HKEY_CURRENT_USER<ul>
<li>현재 사용자와 관련된 설정 및 프로필 정보</li>
<li>로그인한 사용자의 레지스트리 설정</li>
</ul>
</li>
<li>HKEY_LOCAL_MACHINE<ul>
<li>컴퓨터의 전체적인 구성 정보</li>
<li>하드웨어, 소프트웨어, 운영 체제 등의 정보</li>
<li>모든 사용자에 대한 레지스트리 설정</li>
</ul>
</li>
</ul>
<h3 id="11-기존-파일-시스템에-새로운-파일-시스템을-하위-디렉터리로-연결하기-위해-사용하는-명령어는-무엇인가">11. 기존 파일 시스템에 새로운 파일 시스템을 하위 디렉터리로 연결하기 위해 사용하는 명령어는 무엇인가?</h3>
<blockquote>
<p><strong>mount</strong></p>
</blockquote>
<ul>
<li>mkfs: 새로운 파일 시스템을 생성</li>
<li>mount: 파일 시스템을 특정 디렉토리에 연결</li>
<li>fsck: 파일 시스템의 무결성 검사 및 복구</li>
<li>mknod: 특수 파일(디바이스 파일)을 생성</li>
</ul>
<h3 id="14-로그파일은">14. 로그파일은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/22f88754-98c1-46c2-8020-39a5122eadbd/image.gif" alt="">
<strong>messages</strong></p>
</blockquote>
<ul>
<li><code>/var/log/secure</code> : 사용자의 원격 로그인 정보 저장</li>
<li><code>/var/log/dmesg</code> : 시스템 부팅 관련 시스템 메시지 저장</li>
<li><code>/var/log/lastlog</code> : 사용자가 로그인한 마지막 로그</li>
<li><code>/var/log/wtmp</code> : 최근의 접속사항이 기록. 성공한 로그인/로그아웃 정보를 담음</li>
<li><code>/var/log/sulog</code> : 사용자의 루트 접속 기록 저장 로그</li>
<li><code>/var/log/messages</code> : syslog.conf에서 지정된 내용 제외하고 모든 항목이 기록.</li>
<li><code>/var/log/btmp</code> : 실패한 로그인 정보</li>
<li><code>/var/log/utmp</code> : 현재 로그인한 사용자 정보</li>
</ul>
<h3 id="16-서버의-파일-시스템에-대한-시간-속성">16. 서버의 파일 시스템에 대한 시간 속성</h3>
<blockquote>
</blockquote>
<ul>
<li>mtime: 파일 생성 및 내용 수정 시간</li>
<li>atime: 파일의 접근 시간</li>
<li>ctime: 파일 변경 시간</li>
<li>rtime: 파일의 읽기 시간 (특정 application에서 사용될 때)</li>
</ul>
<h3 id="17-다음에서-설명하고-있는-것은-무엇인가">17. 다음에서 설명하고 있는 것은 무엇인가?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/0c38e270-6c3e-49ec-81dd-cde5d338566b/image.gif" alt="">
<strong>PAM</strong></p>
</blockquote>
<ul>
<li>PAM(Pluggable Authentication Modules): 다양한 인증 방법을 쉽게 추가하고 변경할 수 있게 해주는 모듈형 인증 시스템</li>
<li>Batch file: 윈도우 OS에서 명령어를 순차적으로 실행하기 위해 사용하는 스크립트 파일</li>
<li>Shell script: 리눅스나 유닉스 운영체제에서 명령어를 순차적으로 실행하기 위해 사용하는 스크립트 파일</li>
</ul>
<h2 id="네트워크-보안">네트워크 보안</h2>
<h3 id="21-다음에서-설명하고-있는-것은-무엇인가">21. 다음에서 설명하고 있는 것은 무엇인가?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/dc5d0f6f-dc26-482c-8c50-000b4b30ecdd/image.gif" alt="">
<strong>Promiscuous Mode</strong></p>
</blockquote>
<ul>
<li>Promiscuouse Mode: 네트워크 카드(NIC)가 네트워크 상의 모든 패킷을 수신하도록 설정된 모드</li>
</ul>
<h3 id="22-다음-지문에서-설명하는-공격-대응-방법은-무엇인가">22. 다음 지문에서 설명하는 공격 대응 방법은 무엇인가?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/f78396fb-43f5-4f5e-bdb8-682a3fad7767/image.gif" alt="">
<strong>DNS 싱크홀</strong></p>
</blockquote>
<ul>
<li>DNS Spoofing / cache poisoning<ul>
<li>DNS 서버의 캐시에 잘못된 정보를 삽입해 사용자가 의도치 않은 IP 주소로 접속하게 만드는 공격 기법</li>
</ul>
</li>
<li>DNS 웜홀<ul>
<li>방화벽이 DNS 포트를 차단하지 않는 점을 악용해 DNS 쿼리 내부에 데이터를 숨겨 내부망에서 외부로 데이터를 빼돌리는 행위를 의미</li>
</ul>
</li>
<li>DNS 싱크홀<ul>
<li>보안 관리자가 악성 도메인에 대한 접근을 차단하고 트래픽을 제어하기 위해 사용</li>
</ul>
</li>
</ul>
<h3 id="26-서비스의-가용성과-성능뿐만-아니라-ddos-공격-대응에도-효과적이서-최근-anycast-dns가-많이-도입되어-있다-다음-중-이-기술에-대해-잘못-설명한-것은">26. 서비스의 가용성과 성능뿐만 아니라 DDoS 공격 대응에도 효과적이서 최근 Anycast DNS가 많이 도입되어 있다. 다음 중 이 기술에 대해 잘못 설명한 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>사용자가 접속에 사용하는 IP 주소의 패킷은 해당 주소를 갖는 가장 가까운 호스트로 라우팅된다.<br></li>
<li><del>주요 라우팅 프로토콜로 OSPF가 사용된다.</del> <br></li>
<li>IPv4/IPv6 anycast 모두 적용 가능하다.</li>
<li>1.1.1.1이나 8.8.8.8 등의 Public DNS뿐만 아니라 kr root DNS 등이 대표적인 예이다.</li>
</ol>
<ul>
<li>Anycast는 BGP(Border Gateway Protocol) 주로 사용. 여러 네트워크 간의 경로를 설정하고 최적 경로를 찾음.</li>
</ul>
<h3 id="28-㉠-㉡-㉢-㉣에-들어갈-내용으로-적절한-것은">28. ㉠, ㉡, ㉢, ㉣에 들어갈 내용으로 적절한 것은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/fefe9f2e-545b-4b06-b819-74f0be1ae337/image.gif" alt="">
<strong>㉠ SYN Flooding ㉡ LAND ㉢ Smurf ㉣ DoS</strong></p>
</blockquote>
<ul>
<li><strong>SYN Flooding</strong>: 공격자가 TCP 연결을 수립할 때 SYN 패킷을 반복적으로 보내며, 대상 서버의 자원을 고갈시켜 서비스 거부 상태를 만듦</li>
<li><strong>LAND</strong>: 공격자가 동일한 IP 주소와 포트를 출발지와 목적지로 설정해, 대상 시스템이 자신에게 응답하도록 유도해 시스템을 마비시키는 공격</li>
<li><strong>Smurf</strong>: 공격자가 네트워크 브로드캐스트 주소를 타겟으로 ICMP 에코 요청을 보내고, 여러 응답을 동일한 대상에 몰아넣어 서비스를 마비시키는 공격</li>
<li><strong>DoS (Denial of Service)</strong>: 시스템이나 네트워크 자원을 고갈시켜 정상적인 서비스가 이뤄지지 않게 만드는 서비스 거부 공격</li>
</ul>
<h3 id="29-애플리케이션-계층-취약점을-이용하는-공격유형과-거리가-먼-것은">29. 애플리케이션 계층 취약점을 이용하는 공격유형과 거리가 먼 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>Heartbleed</li>
<li><del>Memcached DDoS</del></li>
<li>Meltdown, Spectre</li>
<li>Shell Shock</li>
</ol>
<ul>
<li><strong>Heartbleed</strong>: OpenSSL 라이브러리의 취약성 이용해 SSL/TLS 통신에서 개인 정보 유출할 수 있는 공격</li>
<li><strong>Meltdown, Spectre</strong>: CPU 칩에 존재하는 설계 결함을 악용하여 메모리 정보를 탈취할 수 있는 공격. 하드웨어와 관련된 취약점.</li>
<li><strong>Shell Shock</strong>: Bash 쉘에 있는 취약점을 이용하여 RCE 실행 등 공격 수행</li>
<li><strong>Memcached DDoS</strong>: 네트워크 프로토콜과 관련된 DDoS 공격 유형. -&gt; 전송 계층</li>
</ul>
<h3 id="30-스푸핑-공격에-따른-침해사고-발생-시-네트워크-기반-증거의-출처-장비-중-물리적인-포트와-mac-주소-간의-매핑을-저장하는-cam-테이블을-포함하고-있으며-조사관이-트래픽을-캡처하거나-저장할-수-있는-플랫폼을-갖는-장비는-무엇인가">30. 스푸핑 공격에 따른 침해사고 발생 시 네트워크 기반 증거의 출처 장비 중 물리적인 포트와 MAC 주소 간의 매핑을 저장하는 CAM 테이블을 포함하고 있으며, 조사관이 트래픽을 캡처하거나 저장할 수 있는 플랫폼을 갖는 장비는 무엇인가?</h3>
<blockquote>
<p><strong>스위치</strong></p>
</blockquote>
<ul>
<li><strong>스위치</strong>: CAM(Content Addressable Memory)을 포함하고 있는데 이는 MAC 주소와 포트의 매핑 정보를 저장해, 네트워크 트래픽이 적절한 포트를 통해 전달되도록 함.</li>
</ul>
<h3 id="31-다음-지문에서-설명하는-icmp-메시지-타입은">31. 다음 지문에서 설명하는 ICMP 메시지 타입은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/a5e15daf-5575-4f3d-ae49-b2c78b00d72b/image.gif" alt="">
<strong>Source Quench</strong></p>
</blockquote>
<ul>
<li><strong>Source Quench</strong>: 네트워크 혼잡으로 인해 데이터그램이 유실될 때 송신자에게 통신량을 줄이라는 메시지를 보냄</li>
<li><strong>Destination Unreachable</strong>: 목적지에 도달할 수 없을 떄 송신자에게 알려주는 메시지</li>
<li><strong>Time Exceeded</strong>: 데이터그램의 TTL이 초과되어 폐기될 때 송신자에게 알려주는 메시지</li>
<li><strong>Parameter Problem</strong>: IP 헤더의 필드에 잘못된 값이 있을 때 송신자에게 알려주는 메시지</li>
</ul>
<h3 id="32-다음-중-파일을-안전하게-전송하기-위하여-sshsecure-shell를-사용하는-프로토콜은">32. 다음 중 파일을 안전하게 전송하기 위하여 SSH(Secure Shell)를 사용하는 프로토콜은?</h3>
<blockquote>
<p><strong>SFTP(Secure FTP)</strong></p>
</blockquote>
<ul>
<li><strong>SFTP</strong>: SSH 프로토콜의 subsystem<ul>
<li>SSH 연결 먼저 수립 후, 그 안에서 파일 전송 수행</li>
</ul>
</li>
<li><strong>FTPS(FTP-SSL)</strong>: 표준 FTP에 SSL/TLS 암호화 계층을 추가한 형태</li>
<li><strong>TFTP(Trivial FTP)</strong>: 인증이나 암호화 기능이 전혀 없는 단순 파일 전송 프로토콜</li>
<li><strong>HTTPS</strong>: HTTP 프로토콜에 SSL/TLS를 적용한 웹 보안 프로토콜</li>
</ul>
<h3 id="33-무선-네트워크-보안-프로토콜에-관한-다음-설명-중-틀린-것은">33. 무선 네트워크 보안 프로토콜에 관한 다음 설명 중 틀린 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>WEP, WPA, WPA2 모두 통신 기기들에 대한 인증과 메시지 암호화 기능을 제공한다.</li>
<li><del>WEP에서는 암호 강도가 높지 않은 RC4를 암호화 알고리즘으로 사용하였으며, AES 기반의 강력한 암호화 방식을 의무화한 것은 WPA에서부터이다.</del></li>
<li>WEP에서는 인증이나 암호화에 사전 공유키를 사용할 수 있지만, WPA나 WPA2에서처럼 동적으로 암호키를 변경하는 기능을 제공하지는 않는다.</li>
<li>WPA, WPA2 등에서는 WEP에는 없는 엔터프라이즈 모드를 제공하며, 엔터프라이즈 모드에서는 인증 및 키 관리 기능을 수행하는 중앙 서버를 이용할 수 있다.</li>
</ol>
<ul>
<li>WPA(Wi-Fi Protected Access): 암호화 알고리즘, RC4 기반의 TKIP(Tempororal Key Integrity Protocol) 사용. </li>
<li>WPA2 (IEEE 802.11i): 강력한 AES 기반의 CCMP 암호화 방식을 의무화한 프로토콜</li>
<li>WEP가 RC4를 사용한 것은 맞으나, AES 기반 암호화는 WPA2부터 사용</li>
</ul>
<h3 id="34-네트워크-방화벽의-주요-기능과-거리가-먼-것은">34. 네트워크 방화벽의 주요 기능과 거리가 먼 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>접근 제어</li>
<li>로깅과 감사 추적</li>
<li>인증</li>
<li><del>개인정보 마스킹</del></li>
</ol>
<ul>
<li>접근 제어 (Access Control)<ul>
<li>기술 요소: ACL(Access Control List), 화이트리스트/블랙리스트 관리.</li>
</ul>
</li>
<li>로깅과 감사 추적 (Logging &amp; Audit Trail)<ul>
<li>통과하거나 차단된 모든 트래픽에 대한 기록</li>
</ul>
</li>
<li>인증 (Authentication)<ul>
<li>VPN 접속 시 사용자 ID/PW 확인, 특정 사용자 그룹별로 차별화된 네트워크 접근 권한 부여</li>
</ul>
</li>
</ul>
<h3 id="35-smurf-공격은-보통-라우터가-패킷을-받아서-다른-포트로-forwarding할-때-목적지-ip-주소의-네트워크-부분만-참조하고-라우팅-테이블을-검색하여-패킷을-전달하는-점을-이용한-공격-방법이다-source-ip-주소를-자신의-ip-주소가-아닌-공격대상-시스템의-ip-주소로-변조한-후-subnet의-broadcast-주소로-icmp-echo-request를-보내면-이-패킷은-라우터를-거쳐서-특정-네트워크에-도착하여-모든-시스템이-받게-된다-그러면-네트워크의-모든-시스템은-위조된-ip-주소로-icmp-echo-reply-패킷을-전송하게-된다-결과적으로-시스템은-congestion-상태에-빠지게-되어-심각한-서비스-장애를-일으킨다-이러한-공격-방법을-방지하기-위한-설명-중-내용이-적절하지-못한-것은">35. Smurf 공격은 보통 라우터가 패킷을 받아서 다른 포트로 forwarding할 때 목적지 IP 주소의 네트워크 부분만 참조하고 라우팅 테이블을 검색하여 패킷을 전달하는 점을 이용한 공격 방법이다. Source IP 주소를 자신의 IP 주소가 아닌 공격대상 시스템의 IP 주소로 변조한 후 subnet의 broadcast 주소로 ICMP Echo Request를 보내면 이 패킷은 라우터를 거쳐서 특정 네트워크에 도착하여 모든 시스템이 받게 된다. 그러면 네트워크의 모든 시스템은 위조된 IP 주소로 ICMP Echo Reply 패킷을 전송하게 된다. 결과적으로 시스템은 Congestion 상태에 빠지게 되어 심각한 서비스 장애를 일으킨다. 이러한 공격 방법을 방지하기 위한 설명 중 내용이 적절하지 못한 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>라우터에서 Direct Broadcast를 Disable시킨다.</li>
<li>IP Broadcast 주소로 도착한 ICMP 패킷에 대한 Reply를 금지시킨다.</li>
<li>라우터의 Ingress Filtering을 이용하여 Spoof된 패킷을 막는다.</li>
<li><del>65,535byte보다 큰 ICMP Echo 패킷을 IP Fragmentation을 이용하여 전송한다.</del></li>
</ol>
<ul>
<li>Smurf 공격: ICMP Echo Request의 브로드캐스트와 스푸핑된 소스 IP 이용하는 공격</li>
</ul>
<h3 id="36-vpn을-구현하는-프로토콜과-해당-프로토콜이-속하는-계층이-바르게-연결된-것은">36. VPN을 구현하는 프로토콜과 해당 프로토콜이 속하는 계층이 바르게 연결된 것은?</h3>
<blockquote>
<p><strong>L2TP – Data Link Layer</strong></p>
</blockquote>
<ul>
<li><strong>L2TP</strong>: Data Link Layer</li>
<li><strong>SSH</strong>: Application Layer</li>
<li><strong>IPSec</strong>: Network Layer</li>
<li><strong>SSL</strong>: Btw Transport &amp; Application Layer. </li>
</ul>
<h3 id="37-파일에-숨겨진-악성코드만-골라-막는-콘텐츠-보안-솔루션으로-파일을-분해해-악성파일-혹은-불필요한-파일을-제거하고-콘텐츠는-원본과-동일하게-새로운-파일을-만드는-솔루션은">37. 파일에 숨겨진 악성코드만 골라 막는 콘텐츠 보안 솔루션으로 파일을 분해해 악성파일 혹은 불필요한 파일을 제거하고 콘텐츠는 원본과 동일하게 새로운 파일을 만드는 솔루션은?</h3>
<blockquote>
<p><strong>CDR(Content Disarm &amp; Reconstruction)</strong></p>
</blockquote>
<ul>
<li><strong>CDR</strong> 작동 매커니즘<ul>
<li>파일 분해(Decomposition): 유입된 파일을 구성 요소별 분해</li>
<li>무해화(Disarm): 악성 스크립트, 매크로, 하이퍼링크, 임베디드 객체 등 실행 가능한 코드를 잠재적 위협으로 간주</li>
<li>재구성(Reconstruction): 검증된 안전한 콘텐츠만을 추출하여 원본과 동일 포맷의 새 파일로 다시 조립</li>
</ul>
</li>
<li>WAF (Web Application Firewall)<ul>
<li>웹 서버로 들어오는 HTTP/HTTPS 트래픽 분석해 sqli, XSS 등의 웹 공격 차단</li>
</ul>
</li>
<li>DLP (Data Loss Prevention): 내부의 중요 정보가 외부로 유출되는 것 감시하고 차단하는 솔루션</li>
<li>스팸 필터 솔루션: 메일 발신자 평판, 제목/본문의 키워드 등을 분석해 광고성 또는 유해 메일을 걸러내는 장치</li>
</ul>
<h3 id="39-올바르지-않은-것은">39. 올바르지 않은 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>TCP SYN 플러딩 공격은 서버의 시스템 자원에 대한 공격이며, 일반 사용자들이 서버로 접속을 못하도록 하는 공격으로 서버 측의 대기 큐의 크기를 늘리는 방법이 대응 방안이 될 수 있다.</li>
<li><del>스머프 공격은 UDP 플러딩 공격으로 IP 주소의 브로드캐스트 주소대역을 이용한다.</del></li>
<li>Teardrop 공격은 IP 단편들이 서로 중첩되도록 IP 패킷 헤더를 조작해서 수신 측의 IP 패킷의 재조합 과정에서 오류를 발생시키도록 하는 공격이나, 최신 운영체제로의 업데이트로 문제를 해결할 수 있다.</li>
<li>HTTP GET 플러딩 공격은 공격자가 에이전트 다수에게 원격에서 명령을 보내어 동시에 특정 웹 페이지를 요청하는 형태로 공격이 이루어질 수 있으며, DDoS 공격 대응 장비에서 임계치 기반 방어 기법을 사용하면 해결에 도움이 된다.</li>
</ol>
<ul>
<li><strong>Smurf 공격</strong>: ICMP 에코 요청을 이용한 공격<blockquote>
<p>예시: 
<img src="https://velog.velcdn.com/images/yeon_ni/post/7dba0496-51a1-49d9-9651-4b10e4412f8f/image.gif" alt=""></p>
</blockquote>
</li>
<li><blockquote>
<p>한번 ping을 보냈는데 여러 개의 장비로부터 응답이 옴.
=&gt; 브로드캐스트 주소로 보낸 ICMP Echo Request에 대해 네트워크 내의 모든 호스트가 응답하고 있음.</p>
</blockquote>
</li>
</ul>
<h2 id="애플리케이션-보안">애플리케이션 보안</h2>
<h3 id="41-다음-지문에서-설명하고-있는-api는">41. 다음 지문에서 설명하고 있는 API는?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/df662285-5c31-4746-bc45-8546e4c312cd/image.gif" alt="">
<strong>WebCrypto API</strong></p>
</blockquote>
<ul>
<li>WebCrypto API: 웹 application에서 암호화 작업을 수행할 수 있도록 지원하는 JavaScript API</li>
<li>REST API: HTTP를 통해 데이터 교환을 위한 간단하고 유연한 아키텍쳐 스타일의 API</li>
<li>SOAP API: XML 기반의 메시지를 사용하여 데이터 전송을 처리하는 엄격한 규격의 API</li>
<li>Indexing API: 웹사이트의 URL을 검색 엔진에 빠르게 제출해 인덱싱을 촉진하는 구글 API</li>
</ul>
<h3 id="42-다음-중-db-암호화-유형-중-애플리케이션의-수정-없이-사용될-수-있는-유형으로-올바르게-짝지어진-것은">42. 다음 중 DB 암호화 유형 중 애플리케이션의 수정 없이 사용될 수 있는 유형으로 올바르게 짝지어진 것은?</h3>
<blockquote>
<p><strong>TDE 방식 – 파일 암호화</strong></p>
</blockquote>
<p><strong>애플리케이션 수정이 필요한 유형</strong></p>
<ul>
<li><strong>API 유형</strong><ul>
<li>메커니즘: 애플리케이션 서버에서 암호화 라이브러리를 직접 호출해 데이터를 암호화한 뒤 DB에 저장.</li>
<li>특징: 애플리케이션 소스 코드에서 암복호화 함수를 호출하도록 직접적인 코드 수정이 반드시 필요.</li>
</ul>
</li>
</ul>
<p><strong>애플리케이션 수정이 거의 없거나 불필요한 유형</strong></p>
<ul>
<li><strong>TDE(Transparent Data Encryption) 방식</strong><ul>
<li>메커니즘: DBMS 커널 수준에서 데이터 파일이 디스크에 쓰일 때 암호화하고, 읽을 때 복호화</li>
<li>특징: DBMS 내부에서 자동으로 처리되므로 애플리케이션 수정이 전혀 필요 없음.</li>
</ul>
</li>
<li><strong>파일 암호화 (OS 레벨) 방식</strong><ul>
<li>메커니즘: OS 계층에서 DB 데이터 파일 자체를 암호화</li>
<li>특징: DBMS나 애플리케이션은 암호화 여부를 알 필요가 없기에 수정이 불필요.</li>
</ul>
</li>
</ul>
<h3 id="44-xml-기반의-보안기술에-대한-설명-중-옳지-않은-것은">44. XML 기반의 보안기술에 대한 설명 중 옳지 않은 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>XML Signature – 무결성 및 부인방지 기능</li>
<li>XKMS – PKI 서비스 기능</li>
<li><del>SAML – 가용성 보장 기능</del></li>
<li>XACML – 접근제어 기능</li>
</ol>
<ul>
<li>XML Signature<ul>
<li>XML 문서의 인증과 무결성을 보장하기 위한 표준 기술</li>
</ul>
</li>
<li>XKMS(XML Key Management Specification)<ul>
<li>XML 기반의 키 관리 및 인증 서비스를 제공하기 위한 표준</li>
</ul>
</li>
<li>SAML (Security Assertion Markup Language)<ul>
<li>인증 및 권한 부여를 위한 XML 기반의 보안 표준</li>
</ul>
</li>
<li>XACML (eXtensible Access Control Markup Language)<ul>
<li>XML 기반의 접근 제어 규칙 및 정책을 정의하기 위한 표준 권한 부여 및 접근 제어를 효율적으로 관리</li>
</ul>
</li>
</ul>
<h3 id="48-다음은-http-프로토콜-중-header-옵션에-대한-설명이다-가장-알맞은-것은">48. 다음은 HTTP 프로토콜 중 Header 옵션에 대한 설명이다. 가장 알맞은 것은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/6b9b2b60-708e-472d-a138-73de263cb9fc/image.gif" alt="">
<strong>Cache-Control</strong></p>
</blockquote>
<ul>
<li><strong>Cache-Control</strong><ul>
<li>캐싱 제어 기능: 웹브라우저나 중간 프록시 서버(CDN 등)가 웹 리소스를 저장하고 재사용하는 방식 결정<ul>
<li><code>no-cache</code>: 캐시를 사용하기 전에 원본 서버에 유효성 검사 강제</li>
<li><code>no-store</code>: 어떤 경우에도 해당 리소스를 로컬 스토리지에 저장하지 않도록 함.</li>
</ul>
</li>
<li>서버 부하 공격(HTTP CC Attack)<ul>
<li>요청 헤더에 <code>Cache-Control: no-cache</code> 또는 <code>max-age=0</code> 포함해 다량의 요청 보낼 경우, 중간 캐시 서버를 무시하고 모든 요청이 원본 서버로 직접 전달됨.</li>
</ul>
</li>
</ul>
</li>
</ul>
<table>
<thead>
<tr>
<th>옵션</th>
<th>주요 역할</th>
<th>특징</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Cookie</strong></td>
<td>상태 유지(State Management)</td>
<td>세션 ID, 사용자 설정 등 클라이언트 측에 저장된 정보를 서버로 전송할 때 사용.</td>
</tr>
<tr>
<td><strong>User-Agent</strong></td>
<td>클라이언트 정보 식별</td>
<td>브라우저 종류, 버전, OS 정보 등을 포함하여 서버가 단말기에 최적화된 콘텐츠를 제공하도록 도움.</td>
</tr>
<tr>
<td><strong>Content-Length</strong></td>
<td>데이터 크기 명시</td>
<td>응답 또는 요청 본문(Entity Body)의 크기를 바이트(Byte) 단위로 나타내며, 전송 완료 시점을 파악하는 데 사용</td>
</tr>
</tbody></table>
<h3 id="49-ftp-passive-모드에-대한-설명으로-옳지-않은-것은">49. FTP Passive 모드에 대한 설명으로 옳지 않은 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li><del>데이터 전송을 위해 1024번 이전 포트를 사용한다.</del></li>
<li>서버에서 클라이언트를 접속해야 하는 모순을 해결하기 위해 고안된 방식이다.</li>
<li>보안을 위해서는 서버에서 Passive 모드로 사용할 포트를 제한한다.</li>
<li>제어 전송을 위해 서버에서는 21번 포트를 사용한다.</li>
</ol>
<ul>
<li>FTP <strong>Active</strong> mode<ul>
<li><strong>데이터: 20번</strong> port</li>
<li><strong>명령어: 21번</strong> port</li>
</ul>
</li>
<li>FTP <strong>Passive</strong> mode<ul>
<li><strong>명령어: 21번</strong> port</li>
<li><strong>데이터: 1024번 이후</strong> port </li>
</ul>
</li>
</ul>
<h3 id="52-메일-수신-서버-또는-웹-메일-서버로부터-전자우편-메시지를-자신의-컴퓨터-단말-장치로-전송받는-데-사용되는-프로토콜이-아닌-것은">52. 메일 수신 서버 또는 웹 메일 서버로부터 전자우편 메시지를 자신의 컴퓨터 단말 장치로 전송받는 데 사용되는 프로토콜이 아닌 것은?</h3>
<blockquote>
<p><strong>RTP(Realtime Transport Protocol)</strong></p>
</blockquote>
<ul>
<li>RTP : 실시간으로 오디오 및 비디오 스트리밍과 같은 멀티미디어 데이터를 전송하기 위한 프로토콜</li>
</ul>
<h3 id="53-㉠-㉡에-들어갈-용어로-올바르게-짝지어진-것은">53. ㉠, ㉡에 들어갈 용어로 올바르게 짝지어진 것은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/1c1b46fb-3b33-4809-a1f9-957c89df4084/image.gif" alt="">
<strong>㉠ 작업증명 ㉡ 채굴</strong></p>
</blockquote>
<ul>
<li>작업증명: 네트워크 트랜잭션의 유효성을 검증하고, 블록을 추가하는 과정에서 사용되는 알고리즘</li>
<li>채굴: 비트코인 네트워크에서 작업증명을 수행하는 과정</li>
</ul>
<h3 id="55-다음-중-sso에-대한-설명으로-적절하지-못한-것은">55. 다음 중 SSO에 대한 설명으로 적절하지 못한 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>하나의 아이디로 여러 사이트를 이용할 수 있는 시스템이다.</li>
<li>싱글사인온(SSO)을 사용하면 응용서비스 로그인 시간을 줄여준다.</li>
<li><del>SSO를 이용하면 개별 애플리케이션 단위로 동일한 암호를 설정하게 되므로 편리하기는 하지만 보안의 입장에서는 권장하지 않는다.</del></li>
<li>SSO 솔루션을 통해 직원이 어디서 어떤 응용서비스에 접속하여 무엇을 하는지에 대한 로그정보 저장이 가능하다.</li>
</ol>
<ul>
<li><strong>SSO</strong>: 하나의 안전한 인증 메커니즘으로 여러 애플리케이션에 접근하므로 보안 향상.</li>
</ul>
<h3 id="60-다음-지문에서-설명하는-보안-기술은-무엇인가">60. 다음 지문에서 설명하는 보안 기술은 무엇인가?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/0030b259-cdf7-472e-95f2-5cf7e5b71b60/image.gif" alt="">
<strong>SOAR(Security Orchestration Automation and Response)</strong></p>
</blockquote>
<ul>
<li>SOAP(Security Orchestration Automation Platform)<ul>
<li>보안 작업을 자동화하는 플랫폼</li>
</ul>
</li>
<li>SOAR(Security Orchestration Automation and Response)<ul>
<li>SOAP + 응답 관리 기능 -&gt; 통합 플랫폼</li>
</ul>
</li>
<li>SIEM(Security Information and Events Management)<ul>
<li>보안 정보와 이벤트 관리를 위한 시스템</li>
</ul>
</li>
<li>UEBA(User and Entity Behavior Analytics)<ul>
<li>사용자 및 entity의 행동 분석을 통해 보안 위협 탐지하는 분석 기술</li>
</ul>
</li>
</ul>
<h2 id="정보-보안-일반">정보 보안 일반</h2>
<h3 id="61-다음-지문이-설명하고-있는-암호-공격방식은">61. 다음 지문이 설명하고 있는 암호 공격방식은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/e70f8bed-fca2-4142-b9b7-8d8f4524281c/image.gif" alt="">
<strong>선택 평문 공격</strong></p>
</blockquote>
<ul>
<li>암호문 단독 공격(Ciphertext only)<ul>
<li>상대방에 대한 정보가 전혀 없는 상태에서 암호문만으로 평문과 암호화키를 알아내는 공격</li>
</ul>
</li>
<li>알려진 평문 공격 (know plaintext)<ul>
<li>평문에 대한 암호문을 일부 알고 있을 때 평문을 알아내는 공격</li>
</ul>
</li>
<li>선택 평문 공격 (chosen plaintext)<ul>
<li>공격자가 적의 암호기에 접근할 수 있어 공격자가 선택한 평문을 암호기에 입력했을 떄 나온 암호문을 알고서 전체 암호문을 해독하는 공격</li>
</ul>
</li>
<li>선택 암호문 공격 (chosen ciphertext)<ul>
<li>공격자가 선택한 암호문들에 대한 평문이 주어진다는 가정하에 복호화 키를 찾는 공격</li>
</ul>
</li>
</ul>
<h3 id="63-블록-암호-알고리즘을-사용하여-메시지-인증-코드mac를-생성할-때-가장-적합한-블록-암호-모드는-무엇인가">63. 블록 암호 알고리즘을 사용하여 메시지 인증 코드(MAC)를 생성할 때 가장 적합한 블록 암호 모드는 무엇인가?</h3>
<blockquote>
<p>** CBC 모드**</p>
</blockquote>
<ul>
<li>CBC(Cipher Block Chaining) 모드<ul>
<li>이전 블록의 암호 결과를 다음 블록에 연쇄적으로 적용해 보안성을 높이는 방식. 메시지의 무결성 검사, 변조 쉽게 탐지 가능. MAC 생성에 적합.</li>
</ul>
</li>
<li>ECB(Electronic Codebook) 모드<ul>
<li>각 블록을 독립적으로 암호화해 같은 입력은 같은 출력을 가지며 보안에 취약.</li>
</ul>
</li>
<li>OFB(Output Feedback) 모드<ul>
<li>초기 벡터를 반복적으로 암호화해 키 스트림을 생성하는 방식.</li>
</ul>
</li>
<li>CTR (Counter) 모드<ul>
<li>증가하는 카운터 값을 암호화 해 키 스트림을 생성하는 방식. 병렬 처리에 유리.</li>
</ul>
</li>
</ul>
<h3 id="66-다음-중-인증서-폐지-목록의-기본-영역에-포함되지-않는-것은">66. 다음 중 인증서 폐지 목록의 기본 영역에 포함되지 않는 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>서명 알고리즘</li>
<li>발급자</li>
<li>버전</li>
<li><del>유효 기간</del></li>
</ol>
<h4 id="crl-기본-영역">CRL 기본 영역</h4>
<ul>
<li>서명 알고리즘: CRL에 서명한 서명 알고리즘 ID 및 관련 데이터</li>
<li>CRL 발급자: 발급자 CA의 X.509 이름</li>
<li>최근 발급 일자: 최근 수정 일자</li>
<li>다음 발급 일자: 다음 수정 일자</li>
<li>취소 인증서 목록: 취소된 인증서 목록들</li>
<li>CRL 확장자: CRL 확장자 유무 및 내용</li>
<li>발급자 서명: 발급자의 서명<h4 id="crl-확장-영역">CRL 확장 영역</h4>
</li>
<li>CA 키 고유 번호: CRL에 서명한 키 번호</li>
<li>발급자 대체 이름: CRL 발급자의 대체 이름</li>
<li>CRL 발급자 번호: CRL에 대한 일련 번호</li>
<li>발급 분배점: CRL 분배점 이름</li>
<li>델타 CRL지시자: 최근에 취소된 목록만을 저장한 델타 CRL 지시자<h4 id="인증서-효력정지-및-폐지목록-기본필드">인증서 효력정지 및 폐지목록 기본필드</h4>
</li>
<li>버전</li>
<li>서명 알고리즘</li>
<li>발급자</li>
<li>발급일자</li>
<li>다음 발급일자</li>
<li>효력정지 및 폐지 목록<h4 id="인증서-효력정지-및-폐지-목록-확장-필드">인증서 효력정지 및 폐지 목록 확장 필드</h4>
</li>
<li>발급자 공개키 식별자</li>
<li>발급자 대체명칭</li>
<li>인증서 효력정지 및 폐지 목록 번호</li>
<li>인증서 효력정지 및 폐지 목록 발급 분배점</li>
</ul>
<h3 id="67-다음은-접근통제가-이루어지는-과정을-설명한-것이다-빈칸-㉠에-공통적으로-들어갈-용어는">67. 다음은 접근통제가 이루어지는 과정을 설명한 것이다. 빈칸 ㉠에 공통적으로 들어갈 용어는?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/62c38755-2ef9-47ae-a175-8a330682e4bf/image.gif" alt="">
<strong>보안 커널</strong></p>
</blockquote>
<ul>
<li><strong>상주엔진</strong>: 시스템에서 지속적으로 실행되며 보안 관련 작업을 수행하는 소프트웨어 컴포넌트, 보안 정책을 적용하고 모니터링함. 다양한 보안 기능을 실시간으로 제공</li>
<li><strong>접근통제 API</strong>: 시스템 자원에 대한 접근 권한을 제어하는 프로그래밍 인터페이스, 소프트웨어가 보안 규칙에 따라 리소스 접근을 요청하고 제어</li>
<li><strong>시스템호출</strong>: 운영체제에서 애플리케이션이 시스템 자원에 접근하거나 특정 작업을 요청할 떄 사용하는 인터페이스. 하드웨어나 운영체제의 기능 호출</li>
<li><strong>보안커널</strong>: 시스템 자원에 대한 접근을 제어하고, 정의된 규칙에 따라 접근 권한을 허가하거나 거부하는 핵심 모듈, 모든 접근 요청은 추적 및 분석을 위해 기록됨</li>
</ul>
<h3 id="70-다음-중-해시함수가-적용되는-분야를-모두-고른-것은">70. 다음 중 해시함수가 적용되는 분야를 모두 고른 것은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/c30b37f8-3846-452c-916d-a70ef7c303a0/image.gif" alt="">
<strong>가, 나, 라</strong></p>
</blockquote>
<ul>
<li>전자서명(Digital Signature)<ul>
<li>무결성, 부인방지 보장.</li>
<li>메시지의 해시값(digest)을 생성하고 자신의 개인키로 암호화해 서명 생성</li>
</ul>
</li>
<li>메시지인증 (Message Authentication)<ul>
<li>데이터 무결성 보장. 신원 검증</li>
<li>메시지와 공유 비밀키를 조합해 해시값을 생성하는 HMAC(Hash-based MAC) 등</li>
</ul>
</li>
<li>패스워드 기반 암호화(Password-based Encryption)<ul>
<li>사용자의 패스워드를 그대로 DB에 저장하지 않고, salt를 추가해 해시 처리(PBKDF2, bcrypt, scrypt등)한 후 저장.</li>
</ul>
</li>
<li>데이터 압축<ul>
<li>데이터 압축 분야(ZIP, RAR, JPEG 등)은 압축된 데이터를 다시 원본으로 복원 가능해야 함. 해시함수는 단방향성을 가지므로, 원본 복원이 필요한 데이터 압축 솔루션의 적용 분야가 될 수 없음.</li>
</ul>
</li>
</ul>
<h3 id="71-다음은-메시지-인증-절차를-설명한-것이다-괄호-안에-들어-갈-단어가-순서대로-나열된-것은">71. 다음은 메시지 인증 절차를 설명한 것이다. 괄호 안에 들어 갈 단어가 순서대로 나열된 것은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/97ecafed-8598-4147-ac24-120f157967e2/image.gif" alt="">
<strong>a 송신자 - b 개인키 - c 송신자 - d 공개키</strong></p>
</blockquote>
<table>
<thead>
<tr>
<th>단계</th>
<th>수행 주체</th>
<th>작업 내용</th>
<th>목표</th>
</tr>
</thead>
<tbody><tr>
<td>서명 생성</td>
<td>송신자</td>
<td>메시지를 해시 돌려 해시값 얻고, 자신의 개인키로 암호화</td>
<td>인증, 무결성 확보</td>
</tr>
<tr>
<td>데이터 전송</td>
<td>네트워크</td>
<td>원본 메시지 + 전자서명 결합</td>
<td>-</td>
</tr>
<tr>
<td>서명 복호화</td>
<td>수신자</td>
<td>전송받은 전자서명을 송신자의 공개키로 복호화해, 송신자가 원래 보낸 원래 해시값 추출</td>
<td>송신자 신원 확인</td>
</tr>
<tr>
<td>검증 및 인증</td>
<td>수신자</td>
<td>수신한 메시지를 동일한 해시함수로 계산해 나온 값과 복호화된 해시값 비교</td>
<td>변조 여부 확인</td>
</tr>
</tbody></table>
<h3 id="76-mac에-대한-설명-중-잘못된-것은">76. MAC에 대한 설명 중 잘못된 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>메시지 인증은 메시지 송수신자 사이에 문서의 위⋅변조공격에 대한 대응 방안으로 활용한다.</li>
<li>MAC 생성에 키를 사용하는 해시함수가 널리 사용된다.</li>
<li>MAC 자체만으로는 재전송 공격에 취약하다.</li>
<li><del>메시지 인증은 송신자와 수신자의 안전하고 훼손되지 않는 Key 관리가 목표이다.</del></li>
</ol>
<ul>
<li>MAC의 핵심 목적: 무결성, 인증<ul>
<li>특정 메시지에 대해 유효값임을 증명할 뿐, 해당 메시지가 언제 보낸 것인지는 판단X</li>
<li><blockquote>
<p>타임스탬프, Sequence number, Nonce 메시지에 포함</p>
</blockquote>
</li>
</ul>
</li>
<li>HMAC(Hash Message Authentication Code)<ul>
<li>단순 해시와 달리 비밀키를 결합해 해시값을 생성해 키를 모르는 공격자가 올바른 MAC을 생성하지 못하게 함.</li>
</ul>
</li>
<li>Key Management 시스템/PKI(Public Key Infrastructure)<ul>
<li>목표: 송신자와 수신자의 안전하고 훼손되지 않는 Key 관리</li>
</ul>
</li>
</ul>
<h3 id="77-다음-중-정보자원에-접근하기-위한-3단계-절차에-해당하지-않는-보안-요구사항은-무엇인가">77. 다음 중 정보자원에 접근하기 위한 3단계 절차에 해당하지 않는 보안 요구사항은 무엇인가?</h3>
<blockquote>
</blockquote>
<ol>
<li>식별(Identification)</li>
<li>인증(Authentication)</li>
<li>인가(Authorization)</li>
<li><del>책임추적성(Accountability)</del></li>
</ol>
<ul>
<li>정보자원에 접근하기 위한 3단계 절차<ul>
<li>식별(Identication): 사용자가 누구인지 신원</li>
<li>인증(Authentication): 사용자의 신원이 진짜인가</li>
<li>인가(Authorization): 인증된 사용자에게 허용된 자원만 접근하도록 권한 부여</li>
</ul>
</li>
</ul>
<h3 id="80-다음-지문에서-설명하는-용어는-무엇인가">80. 다음 지문에서 설명하는 용어는 무엇인가?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/adfd329a-7909-418b-8a7d-6594c8f8b391/image.gif" alt="">
<strong>확산</strong></p>
</blockquote>
<ul>
<li>혼돈(Confusion): 평문과 암호문 사이의 상관관계를 숨김</li>
<li>확산(Diffusion): 평문의 통계적 성격을 암호문 전반에 확산시켜 숨김</li>
</ul>
<h2 id="정보보안-관리-및-법규">정보보안 관리 및 법규</h2>
<h3 id="82-다음-중-주요정보통신기반시설-관리기관이-취약점-분석⋅평가를-의뢰할-수-없는-기관은">82. 다음 중 주요정보통신기반시설 관리기관이 취약점 분석⋅평가를 의뢰할 수 없는 기관은?</h3>
<blockquote>
</blockquote>
<ol>
<li><del>「국가정보화기본법」 에 의한 한국정보화진흥원</del></li>
<li>「정보통신기반보호법」 에 의한 정보공유⋅분석센터</li>
<li>「정보보호산업의 진흥에 관한 법률」 에 따라 지정된 정보보호 전문서비스 기업</li>
<li>「정부출연연구기관 등의 설립⋅운영 및 육성에 관한 법률」 에 의한 한국전자통신연구원</li>
</ol>
<ul>
<li>국정원, 한국정보화진흥원(NIA) 나오면 오답</li>
<li>전문기관<ul>
<li>한국인터넷진흥원</li>
<li>정보공유 분석센터</li>
<li>한국전자통신연구원</li>
<li>지식정보보안 컨설팅전문업체 등</li>
</ul>
</li>
</ul>
<h3 id="83-이것은-영국표준협회bsi에서-만든-정보보호관리체계에-대한-표준으로-최상의-정보보호관리를-위한-포괄적인-일련의-관리-방법에-대하여-요건-별로-해석해-놓은-규격으로-기업이-고객-정보의-기밀성-무결성-가용성을-보장한다는-것을-공개적으로-확인하는-것이-목적이다-이것은-현재-국제표준기구인-iso에-의해-iso-27000-시리즈로-발전하였다-이것은-무엇인가">83. 이것은 영국표준협회(BSI)에서 만든 정보보호관리체계에 대한 표준으로, 최상의 정보보호관리를 위한 포괄적인 일련의 관리 방법에 대하여 요건 별로 해석해 놓은 규격으로, 기업이 고객 정보의 기밀성, 무결성, 가용성을 보장한다는 것을 공개적으로 확인하는 것이 목적이다. 이것은 현재 국제표준기구인 ISO에 의해 ISO 27000 시리즈로 발전하였다. 이것은 무엇인가?</h3>
<blockquote>
<p><strong>BS7799(British Standard 7799)</strong></p>
</blockquote>
<ul>
<li>ITSEC(Information Technology Security Evalutaion Creteria)<ul>
<li>유럽</li>
<li>기밀성 외에 무결성, 가용성 포함하며 효율성 강조</li>
<li>L1~L7 등급</li>
</ul>
</li>
<li>TCSEC(Trusted Computer System Evalutation Criteria)<ul>
<li>미국 국방부</li>
<li>기밀성 위주의 평가 수행(D, C1, C2, B1, B2, B3, A1 등급)</li>
</ul>
</li>
<li>CC(Common Criteria)<ul>
<li>국제 표준(ISO/IEC 15408)</li>
<li>국가별 상이한 평가 기준을 통합한 국제 공통 평가 기준</li>
</ul>
</li>
</ul>
<h3 id="86-위험분석-방법론으로-적절히-짝지은-것은">86. 위험분석 방법론으로 적절히 짝지은 것은?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/1b0e7317-ae50-41b0-993e-b86a8961fadd/image.gif" alt="">
<strong>㉠ 시나리오법 ㉡ 델파이법</strong></p>
</blockquote>
<ul>
<li>확률분포법: 다양한 가능한 결과의 확률을 고려해 최적의 결정을 내리는 방법</li>
<li>순위결정법: 여러 대안 중 우선순위를 매기고, 가장 적합한 대안을 선택하는 방법</li>
<li>시나리오법: 미래의 다양한 상황을 예측하여 각 상황에 맞는 전략을 수립하는 방법</li>
<li>델파이법: 전문가들의 의견을 수차례 묻고 그 의견을 종합해 최종 결정을 내리는 예측</li>
</ul>
<h3 id="87-개인정보의-가명정보-처리에-대한-설명으로-틀린-것은">87. 개인정보의 가명정보 처리에 대한 설명으로 틀린 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>개인정보처리자는 통계작성, 과학적 연구, 공익적 기록보존 등을 위하여 정보주체의 동의 없이 가명정보를 처리할 수 있다.</li>
<li>누구든지 특정 개인을 알아보기 위한 목적으로 가명정보를 처리해서는 아니 된다.</li>
<li><del>가명정보 및 가명정보를 원래의 상태로 복원하기 위한 추가 정보에 대하여 안전성 확보 조치는 개인정보처리자가 임의로 처리하여야 한다.</del></li>
<li>개인정보처리자는 가명정보를 처리하는 과정에서 특정 개인을 알아볼 수 있는 정보가 생성된 경우에는 즉시 해당 정보의 처리를 중지하고 지체 없이 회수⋅파기하여야 한다.</li>
</ol>
<ul>
<li>개인정보 보호법 제28조의4(가명정보에 대한 안전성 확보 조치 등)에 따르면, 가명정보의 안전성 확보 조치는 개인정보처리자의 선택 사항이 아닌 <strong>법적 의무 사항</strong>임.</li>
</ul>
<h3 id="93-다음-중-조직의-정보보호-조직체계와-역할-및-책임에-대한-사항으로-가장-부적절한-것은">93. 다음 중 조직의 정보보호 조직체계와 역할 및 책임에 대한 사항으로 가장 부적절한 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li>정보보호 최고책임자 및 개인정보 보호책임자는 예산, 인력 등 자원을 할당할 수 있는 임원급으로 지정하고 관련 법령에 따른 자격요건을 충족하여야 한다.</li>
<li><del>모든 정보통신서비스제공자는 정보보호 최고책임자를 지정 및 신고하여야 한다.</del></li>
<li>조직 전반에 걸쳐 중요한 정보보호 및 개인정보 보호 관련사항에 대한 검토, 승인 및 의사결정(위험평가 결과, 내부감사 결과 등)을 할 수 있는 위원회를 구성하여 운영하여야 한다.</li>
<li>주요 직무를 수행하는 임직원 및 외부자를 주요 직무자로 지정하고, 주요 직무자를 최소한으로 지정하여 그 목록을 최신으로 관리하여야 한다.</li>
</ol>
<ul>
<li>보안 기사나 ISMS-P 인증 심사원 시험에서 &#39;모든&#39;, &#39;반드시&#39;, <strong>&#39;무조건&#39;</strong> 과 같은 극단적인 표현이 포함된 지문은 오답일 확률이 매우 높다고 합니다..</li>
<li>모든 서비스 제공자가 신고 대상인 것은 아니고, 기업의 자산 규모와 이용자 수에 따라 의무가 달라짐.</li>
</ul>
<h3 id="94-위험관리-절차를-순서대로-배열한-것을-고르면">94. 위험관리 절차를 순서대로 배열한 것을 고르면?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/7a3e0b0b-b615-43bf-93f3-854ef0a95eb6/image.gif" alt="">
<strong>㉠ - ㉣ - ㉢ - ㉡ - ㉤</strong></p>
</blockquote>
<ul>
<li>위험 관리 전략 및 계획 수립 (Context Establishment)<ul>
<li>조직의 목적과 부합하는 위험관리의 범위, 방법론, 수용 가능한 위험 수준(DoA, Degree of Acceptance) 결정</li>
</ul>
</li>
<li>위험 식별 (Risk Identification)<ul>
<li>보호해야 할 자산 식별, 해당 자산에 영향을 줄 수 있는 위협과 취약점 찾아냄</li>
</ul>
</li>
<li>위험 분석 (Risk Analysis)<ul>
<li>식별된 위협이 발생할 가능성과 발생 시 조직에 미치는 영향을 산정하여 위험 크기 계산</li>
</ul>
</li>
<li>위험 평가 (Risk Evaluation)<ul>
<li>분석된 위험 수치를 사전 설정된 위험 수용 수준(DoA)과 비교하여 즉시 대응이 필요한 우선순위 결정</li>
</ul>
</li>
<li>위험 대책 수립 및 이행 == 위험 처리 (Risk Treatment)<ul>
<li>평가 결과에 따라 위험에 처리하는 4가지 방안(회피, 전가, 완화, 수용) 중 적절한 대책 선정 후 정보보호 대책 설계</li>
</ul>
</li>
<li>위험 모니터링 및 검토 (Monitoring &amp; Review)<ul>
<li>구현된 대책이 효과적인지 주기적인지 점검하고, 새로운 위협이나 환경 변화에 따라 위험 관리 과정 반복</li>
</ul>
</li>
</ul>
<h4 id="위험-처리-4가지-유형">위험 처리 4가지 유형</h4>
<ul>
<li>위험 완화<ul>
<li>보안 솔루션 도입 등 통제 항목 구현</li>
<li>방화벽 설치, 암호화 적용</li>
</ul>
</li>
<li>위험 전가<ul>
<li>잠재적 손실의 책임을 제3자에 넘김</li>
<li>보안 보험 가입, 보안 관제 아웃소싱</li>
</ul>
</li>
<li>위험 회피<ul>
<li>위험이 존재하는 프로세스나 자산 자체를 제거함</li>
<li>특정 위험 서비스 중단, 개인정보 수집 중단</li>
</ul>
</li>
<li>위험 수용<ul>
<li>현재 위험 수준이 낮거나 대책 비용이 너무 커서 감수</li>
<li>CEO 승인 하에 잔류 위험으로 관리</li>
</ul>
</li>
</ul>
<h3 id="95-다음은-업무연속성-5단계-방법론-중-특정-단계를-설명한-것이다-어떤-단계를-설명한-것인가">95. 다음은 업무연속성 5단계 방법론 중 특정 단계를 설명한 것이다. 어떤 단계를 설명한 것인가?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/f1237902-afbb-41be-8a64-62469f4d2fce/image.gif" alt="">
<strong>사업영향평가</strong></p>
</blockquote>
<ul>
<li>프로젝트 계획<ul>
<li>BCP 목표, 범위, 자원, 일정 등 정의해 체계적인 계획 수립의 기반 마련</li>
</ul>
</li>
<li>사업 영향 분석 (BIA)<ul>
<li>업무 중단이 조직에 미치는 영향 분석하고 핵심 업무 및 복구 우선순위</li>
<li>RTO/RPO 도출</li>
</ul>
</li>
<li>복구 전략 개발<ul>
<li>식별된 핵심 업무 빠르게 복구하거나 지속가능하게 실현 가능한 전략 수립</li>
</ul>
</li>
<li>복구 계획 수립<ul>
<li>복구 전략 기반으로 실제 업무연속성 계획 문서화하고 조직 내 실행 체계 마련</li>
</ul>
</li>
<li>테스트 및 유지관리<ul>
<li>계획을 정기적으로 점검, 테스트하고 조직 변화에 맞춰 지속적으로 갱신, 보완함</li>
</ul>
</li>
</ul>
<h3 id="96-조직이-수행하는-모든-정보보호-활동의-근거가-되는-최상위-수준의-정보보호-정책-수립-시-포함하여야-할-사항과-가장-거리가-먼-것은">96. 조직이 수행하는 모든 정보보호 활동의 근거가 되는 최상위 수준의 정보보호 정책 수립 시, 포함하여야 할 사항과 가장 거리가 먼 것은?</h3>
<blockquote>
</blockquote>
<ol>
<li><del>조직의 정보보호 활동을 실행하기 위한 절차, 주기, 수행주체 등에 관한 사항</del></li>
<li>조직의 정보보호에 대한 최고경영자 등 경영진의 의지 및 방향</li>
<li>조직의 정보보호를 위한 역할과 책임, 대상과 범위에 관한 사항</li>
<li>조직이 수행하는 관리적, 기술적, 물리적 정보보호 활동의 근거</li>
</ol>
<ul>
<li>1번의 절차, 주기, 수행주체는 실무적인 이행 단계를 설명한 내용임</li>
</ul>
<h3 id="98-인증제도는">98. 인증제도는?</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/04647803-6da4-4716-959d-c644c7afb969/image.gif" alt="">
** CC**</p>
</blockquote>
<ul>
<li><strong>CC</strong><ul>
<li>제품의 보안 기능만이 아니라 개발 과정 및 문서화의 신뢰성을 종합적으로 평가함</li>
<li>PP (Protection Profile): 특정 제품군에 대해 공통적으로 요구되는 보안 기능 및 보증 요구사항을 정의한 문서</li>
<li>ST (Security Target): 특정 제품 자체의 보안 기능을 상세히 기술한 문서로 평가의 대상</li>
<li>EAL (Evaluation Assurance Level): 평가의 깊이와 엄격함을 7단계로 구분한 등급. 숫자 높을수록 정밀한 검증 거침.</li>
</ul>
</li>
<li><strong>ISO 27001</strong><ul>
<li>정보보호 관리체계 인증</li>
<li>조직의 보안 관리 프로세스를 평가하는 ISMS 국제 표준</li>
</ul>
</li>
<li><strong>ITSEC</strong><ul>
<li>유럽 보안 평가 기준</li>
<li>유럽 국가들이 공동으로 사용하던 기준으로, CC로 통합됨</li>
</ul>
</li>
<li><strong>TCSEC</strong><ul>
<li>미국 보안 평가 기준</li>
<li>미국 국방부의 평가 기준</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보보안기사 필기 21년 3월]]></title>
            <link>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-21%EB%85%84-3%EC%9B%94</link>
            <guid>https://velog.io/@yeon_ni/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC-21%EB%85%84-3%EC%9B%94</guid>
            <pubDate>Mon, 02 Feb 2026 14:24:26 GMT</pubDate>
            <description><![CDATA[<h2 id="시스템-보안">시스템 보안</h2>
<h3 id="1-다음-중-windows에서-사용하는-일반사용자-그룹인-users-그룹에-대한-설명-중-적합하지-않은-것은">1 다음 중 Windows에서 사용하는 일반사용자 그룹인 Users 그룹에 대한 설명 중 적합하지 않은 것은?</h3>
<blockquote>
<p>① User는 시스템 크기의 레지스트리 설정, 운영체제 파일 또는 프로그램 파일을 수정할 수 없다.
② User는 워크스테이션을 종료할 수는 있지만 서버는 종료할 수 없다.
③ Users가 로컬 그룹을 만들 수는 있지만 자신이 만든 로컬 그룹만 관리할 수 있다.
<strong>④ Users 그룹의 구성원은 다른 Users 그룹에서 실행할 수 있는 프로그램을 설치할 수 있다.</strong></p>
</blockquote>
<p>Users 그룹은 일반 사용자를 위한 그룹으로, 시스템 관리 권한이 없음. 따라서 다른 Users 그룹에서 실행할 수 있는 프로그램을 설치할 수 없음.</p>
<h3 id="2-주체가-주도적으로-자신이-소유한-객체파일-등에-대한-접근권한read-write-execution-append-등을-다른-주체사용자에게-양도하는-등의-행위가-가능한-접근통제-정책은">2 주체가 주도적으로 자신이 소유한 객체(파일 등)에 대한 접근권한(Read, Write, Execution, Append 등)을 다른 주체(사용자)에게 양도하는 등의 행위가 가능한 접근통제 정책은?</h3>
<blockquote>
<p>① MAC
② RBAC
③ CBAC
<strong>④ DAC</strong></p>
</blockquote>
<ul>
<li>MAC: Mandatory Access Control, 강제적 접근통제 정책.<ul>
<li>객체에 대한 접근권한을 시스템 관리자가 일방적으로 부여함.</li>
</ul>
</li>
<li>RBAC: Role-Based Access Control, 역할 기반 접근통제 정책<ul>
<li>사용자에게 역할 부여, 역할에 대한 접근권한 부여.</li>
</ul>
</li>
<li>CBAC: Context-Based Access Control, 컨텍스트 기반 접근통제 정책.<ul>
<li>접근 시점의 상황에 따라 접근권한 부여</li>
</ul>
</li>
<li>DAC: Discretionary Access Control, 임의적 접근통제 정책<ul>
<li>주체가 자신이 소유한 객체에 대한 접근권한을 자유롭게 부여하거나 제거할 수 있음.</li>
</ul>
</li>
</ul>
<h3 id="3-다음-지문이-설명하는-파일-시스템은">3 다음 지문이 설명하는 파일 시스템은?</h3>
<blockquote>
<p>MS사가 윈도우 CE 6.0 장치와 데스크롭 OS인 윈도우 비스타 및 윈도우 7 그리고 윈도우 서버 2008에 도입하기 위해 만들었다. 자료구조의 오버헤드 문제난 파일 크기/디렉터리 제약 문제에 효과적이다.</p>
</blockquote>
<ul>
<li>exFAT (Extended File Allocation Table)</li>
</ul>
<h3 id="4-윈도우-부팅-순서">4 윈도우 부팅 순서</h3>
<blockquote>
<p><strong>POST</strong> - 하드웨어 자체가 시스템에 문제가 없는지 기본적인 사항을 체크하는 과정
<strong>CMOS</strong> - 사용자가 설정한 기본 사항을 읽어 시스템에 적용한다.
<strong>MBR</strong> - 부팅 매체에 대한 기본적인 파일시스템 정보가 들어 있는 MBR 정보를 읽는다
<strong>NTLDR</strong> - 하드디스크의 부팅 파티션에 있는 프로그램으로 윈도우가 부팅될 수 있도록 간단한 파일시스템을 실행하며 boot.ini 파일의 내용을 읽는다.
<strong>NTDETECT.com</strong> - 설치된 하드웨어를 검사한다.
<strong>ntoskrnl.exe</strong> - HAL.dll을 로드한다.</p>
</blockquote>
<h3 id="5-루트-사용자-소유로-suid-권한을-부여한-경우-이러한-파일로-의심되는-파일을-검색하는-명령어로-알맞은-것은">5 루트 사용자 소유로 SUID 권한을 부여한 경우, 이러한 파일로 의심되는 파일을 검색하는 명령어로 알맞은 것은?</h3>
<blockquote>
<p><strong>④ find / -user –perm –4000 -print</strong></p>
</blockquote>
<ul>
<li>SUID 권한 : 파일을 실행하는 사용자에게 파일의 소유자 권한을 부여하는 권한. </li>
<li><strong>perm -4000</strong> : 파일에 SUID 권한이 부여된 것.</li>
<li>find / -user –perm –1000 -print: 파일에 SUID 권한과 SGID 권한이 모두 부여된 것</li>
<li>find / -user –perm –2000 -print: 파일에 SGID 권한만 부여된 것</li>
<li>find / -user –perm –3000 -print: 파일에 Sticky bit 권한만 부여된 것</li>
</ul>
<h3 id="6-하드웨어-및-소프트웨어를-탑재한-시스템-요소를-의미하는-것은">6 하드웨어 및 소프트웨어를 탑재한 시스템 요소를 의미하는 것은?</h3>
<blockquote>
<p><strong>① TCB</strong>
② EGID
③ PCB
④ CC</p>
</blockquote>
<ul>
<li>TCB: Trusted Computing Base, 보안성을 보장하기 위해 설계된 하드웨어 및 소프트웨어</li>
<li>EGID: Effective Group ID, 프로세스가 실행될 때 부여되는 그룹 ID</li>
<li>PCB: Process Control Block, 프로세스의 상태와 정보를 저장하는 블록</li>
<li>CC: Control Flow, 프로세스의 제어 흐름</li>
</ul>
<h3 id="7-다음-지문에서-설명하고-있는-공격은-무엇인가">7 다음 지문에서 설명하고 있는 공격은 무엇인가?</h3>
<blockquote>
<p>인텔, AMD, ARM의 CPU 제품에서 발견된 보안 취약점 중 하나이다. 인텔 CPU에서 사용하는 비순차 명령 실행 검사 우회 버그를 악용하여 해킹 프로그램이 CPU의 캐시 메모리에 접근하고, 데이터를 유출할 수 있게 되는 취약점.</p>
</blockquote>
<h3 id="8--파일-공유와-관련된-서비스-포트에-대한-내용으로-적절하지-않은-것은">8  파일 공유와 관련된 서비스 포트에 대한 내용으로 적절하지 않은 것은?</h3>
<blockquote>
<p>① 445(TCP/UDP, Direct Host)
② 139(TCP, NetBIOS Session)
③ 137(UDP, NetBIOS Name)
*<em>④ 335(UDP, NetBIOS Datagram) *</em></p>
</blockquote>
<ul>
<li>137: UDP, NetBIOS Name</li>
<li>138: UDP, NetBIOS Datagram</li>
<li>139: TCP, NetBIOS Session</li>
<li>445: TCP/UDP, Direct Host</li>
</ul>
<h3 id="9-접근권한을-확인하였더니-rwsr---r---이었다-권한-내의-대문자-s에-대한-설명으로-옳은-것은">9 접근권한을 확인하였더니 &#39;rwSr- -r- -&#39;이었다. 권한 내의 대문자 S에 대한 설명으로 옳은 것은?</h3>
<blockquote>
<p>① SetUID를 실행 권한이 없는 파일에 설정할 경우 대문자 S로 표기된다.</p>
</blockquote>
<ul>
<li>SetUID 권한: 파일을 실행하는 사용자에게 파일의 소유자 권한을 부여하는 권한.</li>
<li><code>rwSr--r--</code>: SetUID 권한이 설정됨.</li>
<li>디렉토리에 Sticky bit가 설정된 경우: 다른 사용자의 쓰기 권한 부분에 대문자 T가 표기됨.</li>
</ul>
<h2 id="네트워크-보안">네트워크 보안</h2>
<h3 id="10-다음은-wep에-대한-설명이다-빈칸-㉠에-들어갈-내용으로-적절한-것은">10 다음은 WEP에 대한 설명이다. 빈칸 ㉠에 들어갈 내용으로 적절한 것은?</h3>
<blockquote>
<p>WEP(Wired Equivalent Privacy)는 무선랜 통신을 위한 암호화 기술 중 가장 기본적인 방법이다. 암호화 알고리즘으로는 RC4를 사용하고, 암호화키 길이는 64비트 또는 128비트이다. 무선 단말에서 무선 AP와 통신을 위해 인증 요청을 보내고, 요청을 받은 무선 AP에서는 중간에 키를 계속 가로챌 경우 키 생성 순서를 예측하는 것을 방지하기 위해 랜덤하게 ㉠를 생성하여 무선 단말기에 보낸다.</p>
</blockquote>
<p><strong>Initial Vector</strong></p>
<h3 id="11-무선랜의-전송-패킷에-덧붙여지는-32bytes-길이의-고유-식별자로서-무선장치들이-bssbasic-service-set에-접속할-때-패스워드같이-사용되는-코드는-무엇인가">11 무선랜의 전송 패킷에 덧붙여지는 32bytes 길이의 고유 식별자로서, 무선장치들이 BSS(Basic Service Set)에 접속할 때 패스워드같이 사용되는 코드는 무엇인가?</h3>
<blockquote>
<p><strong>① 무선 네트워크 아이디(SSID)</strong></p>
</blockquote>
<ul>
<li>SSID: 무선랜의 이름, 알파벳, 숫자, 특수문자 사용 가능.</li>
<li>WEP(Wired Equivalent Privacy): 무선랜의 보안 프로토콜. WEP은 SSID를 기반으로 데이터 암호화해 보안 제공함.</li>
<li>MAC: 데이터의 무결성 보장을 위해 사용되는 메시지 인증 코드</li>
<li>RFID: 근거리 무선 통신 사용해 정보 전송하는 태그. 일반적으로 128bytes.</li>
</ul>
<h3 id="12-nmap-포트-스캔에-대한-설명">12 NMAP 포트 스캔에 대한 설명</h3>
<blockquote>
<p>①** TCP Connect Scan:** 대상 포트에 대해 3-Way Handshaking을 정상적으로 통신하는 방식. 정상적인 3-Way Handshaking이 완료되면 포트가 열려있다고 판단 가능.
② <strong>TCP FIN Scan</strong>: 대상 포트로 FIN 패킷을 전송해 응답을 확인하는 방식으로 진행됨. FIN 패킷은 연결 종료를 요청하는 패킷. FIN은 연결 종료를 요청하는 패킷. 포트가 열려 있으면 RST 패킷을 응답함.
③ <strong>TCP X-MAS Scan</strong>: 대상 포트로 FIN, URG, PSH 플래그가 모두 설정된 패킷을 전송하는 방식, X-MAX 패킷을 비정상적인 패킷으로, 포트가 열려 있으면 RST 패킷을 응답함.
④ <strong>TCP Null Scan</strong>: 대상 포트로 NULL 패킷을 전송하는 방식으로 응답을 받으면 포트가 닫혀있다고 판단할 수 있다.</p>
</blockquote>
<h3 id="13-vpn에-대한-설명">13 VPN에 대한 설명</h3>
<blockquote>
<p>① SSL VPN은 웹브라우저만 있으면 언제 어디서나 사용이 가능.
② IPSec VPN은 네트워크 계층에서 안전하게 정보를 전송하는 방법.
<strong>③ IPSec VPN은 터널 모드/ 트랜스포트 모드 지원. 암호화 여부에 따라 ESP, AG 프로토콜 모두 사용 가능.</strong>
④ 기본적으로 SSL VPN과 IPSec VPN은 데이터의 기밀성과 무결성이 동일, 데이터의 암호화 구현 방식에 차이</p>
</blockquote>
<h2 id="애플리케이션-보안">애플리케이션 보안</h2>
<h3 id="14-다음-지문에서-설명하고-있는-dns-구성요소는">14 다음 지문에서 설명하고 있는 DNS 구성요소는?</h3>
<blockquote>
<p>인터넷상에 산재하여 존재하고 있는 네임서버들 가운데에서 특정한 도메인 이름에 대해서 원하는 유형의 리소스 레코드 데이터를 조회하는 기능을 수행하는 역할을 함.</p>
</blockquote>
<p><strong>리졸버</strong> : 클라이언트와 네임서버 사이의 중개자 역할을 하며, 도메인 이름에 대한 IP 주소나 기타 정보를 찾기 위해 네임서버에 질의를 수행하는 핵심 컴포넌트</p>
<ul>
<li>whois 클라이언트: 도메인의 소유자 정보, 등록일, 만료일, 관리자 연락처 등을 조회하는 프로토콜을 사용하는 클라이언트</li>
<li>도메인 제어기: AD 환경에서 사용자 인증 및 권한 관리를 담당하는 서버.</li>
</ul>
<h3 id="15-ftp-공격-유형">15 FTP 공격 유형</h3>
<blockquote>
<p><strong>FTP 무차별 대입 공격 (FTP Brute Force Attack)</strong>: 사전 대입, 계정 탈취, 반복적인 로그인 시도
<strong>FTP 바운스 공격</strong>: PORT 명령어, 포트 스캐닝, 익명성, 제3의 호스트
<strong>익명 FTP 공격</strong>: Anonymous, Guest, 누구나 접속, 쓰기 권한
<strong>TFTP 공격</strong>: UDP 69, 인증 절차 없음, 라우터 설정 파일</p>
</blockquote>
<ul>
<li>TFTP: FTP 보다 단순한 프로토콜, UDP 69번 port</li>
</ul>
<h3 id="16-인터넷-메일-구조의-핵심요소">16 인터넷 메일 구조의 핵심요소</h3>
<blockquote>
<p><strong>MUA(Mail User Agent)</strong>: 사용자와 메일 시스템의 인터페이스 역할을 하는 소프트웨어.
<strong>MTA(Mail Transfer Agent)</strong>: 메일 서버 간에 메일을 전송하는 역할을 하는 소프트웨어.
<strong>MDA(Mail Delievery Agent)</strong>: 메일을 사용자의 메일 박스에 전달하는 소프트웨어
<strong>MS(Mail Server)</strong>: 메일 시스템의 기반이 되는 서버</p>
</blockquote>
<h3 id="17-dns-공격-유형">17 DNS 공격 유형</h3>
<blockquote>
<p><strong>DNS 터널링</strong>: 데이터 은닉, 방화벽 우회, C2 통신, 인코딩(Base64)
<strong>DNS 스푸핑(Cache Poisoning)</strong>: 캐시 포이즈닝, 가짜 IP, 파밍(Pharming), 트랜잭션 ID 추측
<strong>DNS 하이재킹</strong>: 설정 변경, 리다이렉션, 가로채기
<strong>NXDOMAIN 공격(DNS Flood)</strong>: 존재하지 않는 도메인, 무작위 서브도메인, 리소스 고갈, DDoS</p>
</blockquote>
<h3 id="18-setsecurity-electronic-transaction-프로토콜">18 SET(Security Electronic Transaction) 프로토콜</h3>
<blockquote>
</blockquote>
<table>
<thead>
<tr>
<th>사용하는 키</th>
<th>대상</th>
<th>결과물</th>
<th>목적</th>
</tr>
</thead>
<tbody><tr>
<td>대칭키(세션키)</td>
<td>원본 데이터</td>
<td>암호문</td>
<td>대용량 데이터의 고속 암호화</td>
</tr>
<tr>
<td>수신자의 공개키</td>
<td>대칭키(세션키)</td>
<td>전자봉투</td>
<td>키 배송 문제 해결 및 기밀성 보장</td>
</tr>
</tbody></table>
<h2 id="정보-보안-일반">정보 보안 일반</h2>
<h3 id="19-blp-모델에-대한설명">19 BLP 모델에 대한설명</h3>
<blockquote>
<ul>
<li><strong>No-write-down 정책</strong>: 인가받은 보안등급 이하의 정보를 수정하지 못하게 하는 정책.</li>
</ul>
</blockquote>
<ul>
<li><strong>BLP 모델</strong><ul>
<li>정보를 Top Secret, Secret, Unclassified 등과 같은 보안 등급에 따라 분류, 정보의 기밀성 보장에 초점.</li>
<li>주체와 객체의 보안등급은 각각 취급등급(clearance), 비밀등급(security label)을 사용.</li>
</ul>
</li>
<li><strong>No-read-up 정책</strong>: 낮은 보안등급을 인가받은 주체가 보안 등급이 높은 객체에 대한 읽기/쓰기 접근을 허용하지 않음으로 정보의 기밀성을 보장함.</li>
</ul>
<h3 id="20--rsa-암호화-방식에서-공개키가-733-개인키가-333일-경우-공개키로-암호화-한-값이-3이라고-할-때-이를-복호화-한-값은-무엇인가">20  RSA 암호화 방식에서 공개키가 (7,33), 개인키가 (3,33)일 경우, 공개키로 암호화 한 값이 3이라고 할 때 이를 복호화 한 값은 무엇인가?</h3>
<blockquote>
<p><strong>27</strong></p>
</blockquote>
<p>$$암호화(M, e, n) = M^e mod n$$</p>
<ul>
<li>M: 암호화 할 메시지</li>
<li>e: 공개키의 지수</li>
<li>n: 공개키의 모듈러</li>
</ul>
<p>$$복호화(C, d, n) = C^d mod n$$</p>
<ul>
<li>C: 암호화된 메시지</li>
<li>d: 개인키의 지수</li>
</ul>
<p>$$3^3 mod 33 = 27$$</p>
<h3 id="21-crl에-포함되어야-하는-기본-필드에-속하지-않는-것은">21 CRL에 포함되어야 하는 기본 필드에 속하지 않는 것은?</h3>
<blockquote>
<p>① 버전(Version)
② 서명 알고리즘(Signature)
③ 다음 발급일자(Next Update)
<del>④ 인증서 효력정지 및 폐지 목록 번호(CRL Number)</del></p>
</blockquote>
<ul>
<li>버전: CRL의 버전 번호</li>
<li>인증서 발급자(Issuer): CRL을 발급한 인증기관의 이름</li>
<li>서명 알고리즘(Signature): CRL의 무결성을 보장하기 위해 사용되는 서명 알고리즘</li>
<li>다음 발급일자(Next Update): 다음 CRL이 발급될 예정인 날짜</li>
<li>인증서 효력정지 및 폐지 정보(CRLEntry): 인증서의 효력정지 및 폐지 정보</li>
</ul>
<h3 id="22-radius-프로토콜의-기본-기능과-가장-거리가-먼-것은">22 RADIUS 프로토콜의 기본 기능과 가장 거리가 먼 것은?</h3>
<blockquote>
<p>① 인증
② 계정 관리
③ 권한 부여
<del>④ 책임추적성</del></p>
</blockquote>
<ul>
<li>RADIUS: AAA(Authentication, Authorization, Accounting) 기능 제공<ul>
<li>Authentication : 사용자의 신원 확인</li>
<li>Authorization: 사용자에게 허용된 권한을 부여하는 기능 </li>
<li>Accounting: 사용자의 접근 및 사용 기록을 관리하는 기능</li>
</ul>
</li>
</ul>
<h3 id="23-kerberos-키-분배-프로토콜의-기반-기술에-해당하는-것은">23 Kerberos 키 분배 프로토콜의 기반 기술에 해당하는 것은?</h3>
<blockquote>
<p>① Needham-Schroeder 프로토콜</p>
</blockquote>
<ul>
<li>** Kerberos 키 분배 프로토콜**: Needham-Schroeder 프로토콜을 기반으로 함.</li>
<li><strong>Needham-Schroeder 프로토콜</strong>: 3-way key exchange 프로토콜. 클라이언트-서버-KDC(키 분배 센터)가 서로의 신원을 확인하고 세션 키를 공유할 수 있게 함.</li>
<li><strong>Challenge-Response 프로토콜</strong>: 클라이언트-서버가 서로의 신원을 확인하기 위한 프로토콜</li>
<li><strong>Diffie-Hellman 프로토콜</strong>: 클라이언트와 서버가 서로의 신원을 확인하지 않고도 안전하게 키를 공유할 수 있도록 하는 프로토콜</li>
<li><strong>RSA 이용 키 분배 프로토콜</strong>: RSA 암호화 알고리즘을 이용하여 클라이언트와 서버가 서로의 신원을 확인하고 키를 공유할 수 있도록 하는 프로토콜 </li>
</ul>
<h3 id="24-전자서명이-갖추어야-할-조건">24 전자서명이 갖추어야 할 조건</h3>
<blockquote>
<ul>
<li>서명자 인증: 개인키를 알고 있는 서명자만 서명을 생성할 수 있어야 함.</li>
</ul>
</blockquote>
<ul>
<li>무결성 보장: 전자문서가 변경되지 않았음을 보장해야 함.</li>
<li>부인 방지: 서명자는 자신의 서명 사실을 부인할 수 없어야 함.</li>
</ul>
<h2 id="정보보안-관리-및-법규">정보보안 관리 및 법규</h2>
<h3 id="25-bcp의-접근-5단계-방법론을-순차적으로-올바르게-나열한-것은">25 BCP의 접근 5단계 방법론을 순차적으로 올바르게 나열한 것은?</h3>
<blockquote>
<p>프로젝트의 범위 설정 및 기획 → 사업영향평가 → 복구전략 개발 → 복구계획 수립 → 프로젝트의 수행 테스트 및 유지보수</p>
</blockquote>
<ul>
<li>BCP : Business Continuity Plan</li>
<li>프로젝트의 범위 설정 및 기획: BCP의 범위와 목표 설정하고 프로젝트 계획 수립.</li>
<li>사업영향평가(BIA): 재해 발생 시, 조직의 비즈니스에 미치는 영향을 평가.</li>
<li>복구전략 개발: 재해 발생 시 조직의 비즈니스를 복구하기 위한 전략을 개발.</li>
<li>복구계획 수립: 복구전략을 구체화하여 복구 계획을 수립.</li>
<li>프로젝트의 수행 테스트 및 유지보수: 복구 계획을 실행하는 테스트를 수행하고 유지보수.</li>
</ul>
<h3 id="26-「정보통신망-이용촉진-및-정보보호-등에-관한-법률」상-정보통신망에-유통되어서는-안-되는-불법정보-관련-조항을-나열한-것이다">26 「정보통신망 이용촉진 및 정보보호 등에 관한 법률」상 정보통신망에 유통되어서는 안 되는 불법정보 관련 조항을 나열한 것이다.</h3>
<blockquote>
<p>① 음란한 부호⋅문언⋅음향⋅화상 또는 영상을 배포⋅판매⋅임대하거나 공공연하게 전시하는 내용의 정보 -&gt; 음란물
② 법령에 따라 금지되는 사행행위에 해당하는 내용의 정보 -&gt; 사행행위
④ 공포심이나 불안감을 유발하는 부호⋅문언⋅음향⋅화상 또는 영상을 반복적으로 상대방에게 도달하도록 하는 내용의 정보 -&gt; 공포심/불안감 유발</p>
</blockquote>
<h3 id="27-다음-중-「개인정보-보호법」의-개인정보-보호-원칙이-아닌-것은-무엇인가">27 다음 중 「개인정보 보호법」의 개인정보 보호 원칙이 아닌 것은 무엇인가?</h3>
<blockquote>
<p>① 개인정보를 익명 또는 가명으로 처리하여도 개인정보 수집목적을 달성할 수 있는 경우 익명처리가 가능한 경우에는 익명에 의하여, 익명처리로 목적을 달성할 수 없는 경우에는 가명에 의하여 처리될 수 있도록 하여야 한다. -&gt; <strong>익명/가명 처리 우선 원칙</strong>
③ 개인정보의 처리 목적에 필요한 범위에서 적합하게 개인정보를 처리하여야 하며, 그 목적 외의 용도로 활용하여서는 아니 된다. -&gt; <strong>목적 제한의 원칙</strong>
④ 개인정보 처리방침 등 개인정보의 처리에 관한 사항을 공개하여야 하며, 열람청구권 등 정보주체의 권리를 보장하여야 한다. -&gt; <strong>투명성 및 권리 보장</strong></p>
</blockquote>
<h3 id="28-조직의-위험평가-수립-및-운영에-대한-사항으로-가장-적절하지-않은-것은">28 조직의 위험평가 수립 및 운영에 대한 사항으로 가장 적절하지 않은 것은?</h3>
<blockquote>
<p>① 위험관리 계획에 따라 위험평가를 연 1회 이상 정기적으로 또는 필요한 시점에 수행하여야 한다. 매년 위험평가 대상에 변동이 없어도 위험평가는 수행되어야 한다. -&gt; <strong>정기 수행</strong>
③ 위험관리를 위한 위험평가 방법 선정은 베이스라인 접근법, 상세위험 분석법, 복합 접근법, 위협 및 시나리오 기반 등의 다양한 방법론 중에서 해당 조직에 맞는 방법론을 선정하고 유지하여야 한다. 선정한 방법론을 운영하는 과정에서 해당 조직에 적절하지 않다고 판단하여 위험분석 방법론을 변경하여도 상관없다. -&gt;** 방법론 변경**
④ 조직에서 수용 가능한 목표 위험수준을 정하고 그 수준을 초과하는 위험을 식별하여야 한다. 수용 가능한 목표 위험수준을 정보보호 최고책임자 등 경영진 의사결정에 의하여 결정하여야 한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[개인정보보호법]]></title>
            <link>https://velog.io/@yeon_ni/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4%EB%B3%B4%ED%98%B8%EB%B2%95</link>
            <guid>https://velog.io/@yeon_ni/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4%EB%B3%B4%ED%98%B8%EB%B2%95</guid>
            <pubDate>Wed, 10 Dec 2025 20:07:24 GMT</pubDate>
            <description><![CDATA[<h2 id="정보보호-및-개인정보보호-관리체계isms-p">정보보호 및 개인정보보호 관리체계(ISMS-P)</h2>
<p>정보보호 및 개인정보보호 관리체계(ISMS-P) 인증 제도의 세부적인 운영 사항은 「정보보호 및 개인정보보호 관리체계 인증 등에 관한 고시」에 규정되어 있습니다. 이 고시는 과학기술정보통신부와 개인정보보호위원회가 공동으로 관장합니다.</p>
<p>해당 고시 제1조(목적)에 따르면 ISMS-P 인증은 다음 두 가지 법률에 근거합니다.</p>
<ul>
<li>「정보통신망 이용촉진 및 정보보호 등에 관한 법률」(약칭 정보통신망법)<ul>
<li>제47조제3항‧제4항(정보보호 관리체계 인증) 및 같은 법 시행령 제47조~제53조의2, 시행규칙 제3조 등 관련 규정</li>
</ul>
</li>
<li>「개인정보 보호법」<ul>
<li>제32조의2(개인정보보호 인증) 및 같은 법 시행령 제34조의2~제34조의8 등 관련 규정</li>
</ul>
</li>
</ul>
<p>ISMS-P 제도는 이 두 법률을 상위법으로 하여 개인정보보호와 정보보호를 통합적으로 관리하기 위한 제도입니다. </p>
<h2 id="정보보호-및-개인정보보호-관리체계의-인증기준">정보보호 및 개인정보보호 관리체계의 인증기준</h2>
<p>정보보호 및 개인정보보호 관리체계 인증 등에 관한 고시」 제23조(인증심사 기준)에 따라 인증기준을 적용한다.</p>
<ol>
<li>정보보호 및 개인정보보호 관리체계 인증 : 별표 7 가목부터 다목 </li>
<li>정보보호 관리체계 인증 : 별표 7 가목 및 나목 </li>
</ol>
<p>위에서 언급된 별표 7의 내용은 가. 관리체계 수립 및 운영(16개 항목), 나. 보호대책 요구사항(64개 항목), 다. 개인정보 처리 단계별 요구사항(21개 항목)의 구조를 바탕으로 구성되어 있다. 
<img src="https://velog.velcdn.com/images/yeon_ni/post/30e3dbe9-67bd-40ad-be3e-8e34d92140fe/image.png" alt="">
ISMS는 가목과 나목 총 80개의 항목으로 구성되며, ISMS-P는 가목부터 다목까지 101개의 항목을 기준으로 한다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[서울보증보험(SGI) 랜섬웨어 사고 대응 보고서]]></title>
            <link>https://velog.io/@yeon_ni/%EC%84%9C%EC%9A%B8%EB%B3%B4%EC%A6%9D%EB%B3%B4%ED%97%98SGI-%EB%9E%9C%EC%84%AC%EC%9B%A8%EC%96%B4-%EC%82%AC%EA%B3%A0-%EB%8C%80%EC%9D%91-%EB%B3%B4%EA%B3%A0%EC%84%9C</link>
            <guid>https://velog.io/@yeon_ni/%EC%84%9C%EC%9A%B8%EB%B3%B4%EC%A6%9D%EB%B3%B4%ED%97%98SGI-%EB%9E%9C%EC%84%AC%EC%9B%A8%EC%96%B4-%EC%82%AC%EA%B3%A0-%EB%8C%80%EC%9D%91-%EB%B3%B4%EA%B3%A0%EC%84%9C</guid>
            <pubDate>Wed, 10 Dec 2025 20:01:02 GMT</pubDate>
            <description><![CDATA[<p>분석 대상: SGI서울보증 침해사고 (Gunra Ransomware)</p>
<h2 id="1-개요">1. 개요</h2>
<p>해킹은 기업의 가용성을 파괴하고 금전을 요구하는 랜섬웨어 공격으로 고도화되고 있다. 2025년 7월, 국내 최대 보증보험사인 SGI서울보증을 대상으로 한 대규모 랜섬웨어 공격이 발생하여 금융 서비스가 마비되는 사태가 초래되었다.</p>
<h2 id="2-침해사고-타임라인-분석-kill-chain-관점">2. 침해사고 타임라인 분석 (Kill Chain 관점)</h2>
<p>Gunra 랜섬웨어 그룹은 2025년 6월 중순부터 내부망에 침투하여 은밀히 권한을 확보했으며, 7월 14일 새벽을 기점으로 랜섬웨어를 실행하고 서비스를 마비시켰다. 주요 타임라인은 표 1과 같다.</p>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/738b56ca-bb11-460b-8a12-e36ec2bf1952/image.png" alt=""></p>
<h2 id="3-공격-기법-technical-analysis">3. 공격 기법 (Technical Analysis)</h2>
<p>이번 사고에 사용된 ‘Gunra(건라)’ 랜섬웨어는 Conti v2 소스코드를 기반으로 제작된 위협으로, 2025년 4월 처음 활동이 포착되었다. 공격자는 SSL-VPN의 취약점을 이용한 최초 침투부터 Windows 및 Linux 시스템을 아우르는 암호화 메커니즘을 사용하여 시스템을 마비시켰다.</p>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/7b10d92d-314e-4625-86fd-d409298bc271/image.png" alt=""></p>
<h3 id="3-1-취약점-스캔-및-초기-침투-reconnaissance--initial-access">3-1. 취약점 스캔 및 초기 침투 (Reconnaissance &amp; Initial Access)</h3>
<p>이번 침해사고의 최초 유입 지점(Initial Access Vector)은 당사가 운영 중인 SSL-VPN 장비의 관리 포트(SSH)로 확인되었다. 공격자는 외부 인터넷에 노출된 해당 접점을 식별하고, 인증 정책의 허점을 악용하여 다음과 같은 단계로 내부망에 침투했다.</p>
<ul>
<li>자산 식별 및 취약점 탐색: 공격자는 포트 스캐닝을 통해 SSL-VPN (SecuwaySSL U V2.0) 장비의 SSH 서비스(TCP Port 22)가 접근 통제 없이 외부 인터넷에 노출되어 있음을 식별했다.</li>
<li>인증 무력화 (Brute Force): 6월 중순경, 공격자는 식별된 SSH 서비스에 대하여 무작위 ID와 패스워드를 대입하는 무차별 대입 공격(Brute Force)을 수행했다.</li>
<li>보안 정책 미비점 악용: 당시 해당 장비에는 로그인 시도 횟수 제한(Account Lockout) 및 다중 인증(MFA) 정책이 적용되지 않아, 공격자는 반복적인 로그인 시도 끝에 관리자 계정 탈취에 성공했다.</li>
</ul>
<h3 id="3-2-내부-침투-및-랜섬웨어-실행-execution">3-2. 내부 침투 및 랜섬웨어 실행 (Execution)</h3>
<p>내부망 장악 후 실행된 Gunra 랜섬웨어는 탐지 회피, 고속 암호화, 복구 무력화를 위해 아래와 같은 기술을 사용했다.</p>
<ul>
<li>탐지 회피 및 실행 제어: 실행 시 난수 기반의 뮤텍스(Mutex)를 생성하여 중복 실행을 방지하고, ‘Windows’, ‘Boot’ 등 주요 시스템 폴더와 랜섬노트(‘R3ADM3.txt’)를 암호화 대상에서 제외하여 협상을 위한 OS 구동 상태를 유지했다.</li>
<li>고속 암호화 알고리즘: CPU 코어 수에 맞춘 멀티 스레딩과 대용량 파일에 대한 부분 암호화(Intermittent Encryption)방식을 적용하여 암호화 속도를 극대화했다. 암호화에는 ChaCha20(대칭키)와 RSA-2048(비대칭키) 이중 암호화 구조를 사용하여 복구 난이도를 높였다.</li>
<li>시스템 복구 무력화: ‘WMIC.exe’를 악용하여 ‘SELECT * FROM Win32_ShadowCopy’ 쿼리를 실행, 시스템 내 모든 볼륨 섀도우 복사본(Volume Shadow Copy)을 삭제함으로써 사용자가 자체적으로 시점을 복원하는 것을 차단했다.<h2 id="4-보안대책-및-복구-대응-방안-countermeasures">4. 보안대책 및 복구 대응 방안 (Countermeasures)</h2>
본 사고의 핵심원인은 ‘접근 통제 실패’와 ‘계정 관리 부실’에 있다. 이에 선제적 방어, 사고 대응, 재발 방지 및 복구 체계를 수립한다. <h3 id="4-1-네트워크-보안-접점-통제-및-확산-방지">4-1. [네트워크 보안] 접점 통제 및 확산 방지</h3>
대응 솔루션: 방화벽(Firewall), 침입방지시스템(IPS), 네트워크 접근통제(NAC)
구체적 대응 방안:</li>
</ul>
<ol>
<li><p>관리 포트 접근 통제 (ACL 강화): SSL-VPN 및 주요 보안 장비의 관리자 페이지(SSH, Web)에 대한 ‘Any Open’ 정책을 폐기한다. 방화벽에서 지정된 관리자 IP(White-List)에서만 접속할 수 있도록 접근 제어 목록을 강화한다.</p>
</li>
<li><p>비정상 접근 차단 정책: IPS(침입방지시스템) 및 방화벽의 임계치 설정을 조정하여, 짧은 시간 내 반복적인 로그인 시도 발생 시 해당 IP를 자동으로 차단하도록 설정한다.</p>
</li>
<li><p>네트워크 세분화 (Segmentation): 업무망과 서버망, 특히 백업/DR망 간의 접근 제어를 강화한다. 랜섬웨어의 횡적 이동을 막기 위해 서버 간 불필요한 통신 포트(SMB, RPC 등)를 차단한다.</p>
<h3 id="4-2-인증-및-접근통제-신원-확인-및-권한-강화">4-2. [인증 및 접근통제] 신원 확인 및 권한 강화</h3>
<p>대응 솔루션: 일회용 비밀번호(OTP), 통합계정관리(EIM)
구체적 대응 방안:</p>
</li>
<li><p>다중 인증(MFA) 전면 도입: VPN 원격 접속 및 서버 관리자 로그인 시 ID/PW 외에 모바일 OTP 등 2차 인증 수단을 필수 적용한다. 이를 통해 패스워드가 유출되더라도 실제 로그인을 방어한다.</p>
</li>
<li><p>계정 임계치(Account Lockout) 설정: 로그인 5회 실패 시 계정을 30분간 잠그거나 관리자 승인 후 해제하는 정책을 시스템 레벨에서 강제한다.</p>
</li>
<li><p>Privileged Access Management (PAM): 제조사 기본 비밀번호 사용을 금지하고, 관리자 비밀번호를 주기적으로 자동 변경하며 이력을 관리하는 솔루션을 도입한다.</p>
<h3 id="4-3-시스템-보안-엔드포인트-방어-및-취약점-제거">4-3. [시스템 보안] 엔드포인트 방어 및 취약점 제거</h3>
<p>대응 솔루션: 바이러스 백신(EDR), 패치관리시스템(PMS), 서버보안
구체적 대응 방안:</p>
</li>
<li><p>ASR(공격 표면 감소) 규칙 적용: Windows Defender 또는 EDR 정책을 통해 ‘Office 앱에서 자식 프로세스 생성 차단’, ‘PSExec 및 WMI 명령 실행 차단’ 규칙을 활성화하여 Gunra 랜섬웨어의 실행 초기 단계(스크립트 실행)를 차단한다.</p>
</li>
<li><p>EDR 기반 행위 탐지: 시그니처 탐지의 한계를 보완하기 위해 ‘vssadmin delete’, ‘taskkill /f /im sql*’ 등 랜섬웨어 고유 이상 행위를 탐지하고 프로세스를 격리하는 EDR 체계를 구축한다.</p>
</li>
<li><p>리눅스 및 레거시 시스템 강화: 리눅스 서버의 경우, Root 계정의 직접 로그인을 차단하고, PMS를 통해 OS 및 WebLogic 등 미들웨어의 최신 보안 패치를 100% 적용하여 알려진 취약점(CVE)을 제거한다.</p>
<h3 id="4-4-보안-서비스유지보수-복구-체계-및-거버넌스-확립">4-4. [보안 서비스/유지보수] 복구 체계 및 거버넌스 확립</h3>
<p>대응 솔루션: 보안관제, 백업 및 복구, 모의해킹
구체적인 복구 대응 방안:</p>
</li>
<li><p>에어갭(Air-Gap) 백업 구축: 금번 사고에서 온라인 백업망이 감염된 점을 고려하여, 네트워크와 물리적으로 분리된 오프라인 백업(Tape Backup) 또는 WORM(Write Once Read Many) 스토리지를 구축하여 랜섬웨어의 접근을 원천 차단한다.</p>
</li>
<li><p>재해복구(DR) 모의훈련: 연 2회 이상 랜섬웨어 공격 시나리오를 가정한 실전 데이터 복구 훈련을 실시하여 RTO 내 서비스 재개 역량을 검증한다.</p>
</li>
<li><p>침해사고 흔적 보존: 사고 분석 및 공격자 추적을 위해 방화벽, VPN, 서버 로그를 최소 6개월 이상 별도 로그 서버에 보관하여 무결성을 유지한다.</p>
</li>
<li><p>ISMS-P 인증 및 인력 확충: 금융기관 필수 요건인 정보보호 관리체계 인증을 추진하여 관리적 보안 수준을 검증받는다.</p>
<h2 id="5-결론">5. 결론</h2>
<p>SGI서울보증 사고는 고도화된 기술적 공격이 사용되었으나, 침투 경로는 기본적인 보안 수칙(SSH 포트 관리, 복잡한 비밀번호 사용)의 미준수에 있었다.
따라서 최신 솔루션 도입과 더불어 기존 인프라의 설정 점검을 최우선으로 수행해야 한다. 특히 MFA 도입과 백업망의 물리적 분리는 필수적임을 경영진 차원에서 인지하고 즉각적인 투자를 집행해야 한다.</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[2025 DFC 101 - In Vehicle Infotainment]]></title>
            <link>https://velog.io/@yeon_ni/2025-DFC-101-In-Vehicle-Infotainment</link>
            <guid>https://velog.io/@yeon_ni/2025-DFC-101-In-Vehicle-Infotainment</guid>
            <pubDate>Mon, 17 Nov 2025 11:24:17 GMT</pubDate>
            <description><![CDATA[<h2 id="step-by-step-methodology">Step-by-step methodology:</h2>
<h3 id="1">1.</h3>
<p>문제 파일 ‘Kakaoi_DB.db’의 확장자가 ‘.db’인 점을 확인하고, DB Browser for SQLite를 사용하여 파일을 열었다. 과거 내역을 확인하기 위해 history가 들어간 테이블명을 위주로 확인했다. 그 결과 ‘soundhound_history_user1’ 테이블에서 iKON의 “Love Scenario”기록을 확인했다. Time 컬럼에서 UNIX timestamp 값인 ‘1653103163303’ 획득했다. 이를 변환하여 최종적으로 ‘Sat May 21 2022 03:19:23’ 라는 시간을 구할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/41f04696-dbc4-4171-a49e-96c31dda0667/image.png" alt=""></p>
<h3 id="2">2.</h3>
<p>DB Browser for SQLite로 ‘radio.db’를 열었다. 문제에서 주어진 ‘current_location’ 테이블을 시작으로 확인했다. ‘navi_cd’의 값이 26320이었고, ‘region_info’테이블에서 해당 값을 필터링하여, region1_cd와 region2_cd의 값이 각각 ‘0x0B’, ‘0x07’임을 확인할 수 있었다. 
‘fm_frequency’테이블에서 ‘region?_cd’ 값을 이전의 값들을 필터링하여, 얻을 수 있는 정보는 ‘frequency’, ‘station_cd’, ‘station_loc_cd’ 였다. 해당하는 값은 아래의 사진과 같다.
<img src="https://velog.velcdn.com/images/yeon_ni/post/d7a54264-d88f-4532-a5ef-e670d6556ae3/image.png" alt=""></p>
<p>아래는 ‘fm_station’테이블에서 방송사 코드 ‘station_cd’의 값을 확인한 결과이다.</p>
<table>
<thead>
<tr>
<th>station_cd</th>
<th>station_name</th>
<th>station_name_e</th>
</tr>
</thead>
<tbody><tr>
<td>0x30</td>
<td>KNN 러브FM</td>
<td>KNN Love FM</td>
</tr>
<tr>
<td>0x04</td>
<td>KBS 1FM (Classic FM)</td>
<td>KBS 1 FM (Classic FM)</td>
</tr>
</tbody></table>
<p>방송지역 정보는 ‘station_location’테이블에서 확인했다.</p>
<table>
<thead>
<tr>
<th>station_loc_cd</th>
<th>Location</th>
<th>Location_e</th>
</tr>
</thead>
<tbody><tr>
<td>0x1C</td>
<td>부산</td>
<td>Busan</td>
</tr>
<tr>
<td>0x1E</td>
<td>진주</td>
<td>Jinju</td>
</tr>
</tbody></table>
<p>위의 정보들을 취합하여 보면 정답은 아래와 같다.</p>
<ul>
<li>주파수: 88.5MHz, 방송사: KNN 러브 FM, 지역: 부산</li>
<li>주파수: 89.3MHz, 방송사: KBS 1FM (Classic FM), 지역: Jinju</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Amazon EC2 (Elastic Compute Cloud) 2]]></title>
            <link>https://velog.io/@yeon_ni/Amazon-EC2-Elastic-Compute-Cloud-2</link>
            <guid>https://velog.io/@yeon_ni/Amazon-EC2-Elastic-Compute-Cloud-2</guid>
            <pubDate>Sat, 15 Nov 2025 16:53:10 GMT</pubDate>
            <description><![CDATA[<h2 id="elastic-load-balancing">Elastic Load Balancing</h2>
<p>AWS는 로드 밸런서로 Elastic Load Balancing을 제공한다. ELB는 들어오는 애플리케이션 트래픽을 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 자동으로 분산시키는 AWS 관리형 서비스이다. 특정 서버에 트래픽이 집중되는 것을 방지하여 애플리케이션의 내결함성과 가용성을 높이는 역할을 한다. </p>
<h3 id="elb-기능과-장점">ELB 기능과 장점</h3>
<ul>
<li>애플리케이션의 고가용성<ul>
<li>상태 확인(Health Check) : 등록된 대상(ex. EC2 인스턴스)의 상태를 주기적으로 확인한다. 미리 정의된 경로, 포트, 프로토콜로 요청을 보내고 정상적인 응답(ex. HTTP 200 OK)이 오는지 모니터링한다. 만약 특정 인스턴스가 응답하지 않거나 비정상적인 응답을 보내면, ELB는 해당 인스턴스를 비정상(unhealthy)으로 간주하고 정상 상태인 다른 인스턴스들로만 트래픽을 자동 라우팅한다.</li>
</ul>
</li>
<li>보안 강화<ul>
<li>HTTPS 지원: ELB는 AWS Certificate Manager(ACM)과 통합되어 SSL/TLS 인증서를 쉽게 적용할 수 있다. 이를 통해 클라이언트와 로드 밸런서 간의 트래픽을 암호화할 수 있다. 백엔드 EC2 인스턴스가 암복호화에 대한 CPU 부하를 덜게 되어 애플리케이션 성능에 더 집중할 수 있다. </li>
</ul>
</li>
<li>탄력적인 확장성 (Elastic Scalability)<ul>
<li>Auto Scaling 연동 : ELB는 Auto Scaling Group과 연동된다. 트래픽 증가로 Auto Scaling 정책에 따라 새로운 EC2 인스턴스가 자동 생성되면 해당 인스턴스는 즉시 ELB 대상 그룹에 등록되어 트래픽을 분산받는다. 반대로 트래픽 감소로 인해 인스턴스가 종료되면 ELB는 해당 인스턴스를 대상 그룹에서 자동으로 제외한다. 이렇게 자동 크기 조정을 통해 어떤 트래픽 규모에도 유연하게 대응하며 비용 효율적인 인프라를 유지할 수 있다.</li>
</ul>
</li>
</ul>
<h3 id="elb-종류">ELB 종류</h3>
<p>다양한 워크로드의 요구사항을 충족시키기 위해 여러 종류의 로드 밸런서를 제공한다.</p>
<ul>
<li>ALB(Application Load Balancer)<ul>
<li>OSI 7계층인 애플리케이션 계층에서 작동하며, HTTP 및 HTTPS 트래픽 분산에 최적화되어 있다.</li>
<li>콘텐츠 기반 라우팅으로 HTTP 헤더, URL 경로, 쿼리 문자열 등 요청의 세부 내용을 분석해 트래픽을 서로 다른 대상 그룹으로 보낼 수 있다.</li>
<li>보안 그룹을 만들어 줄 수 있다.</li>
</ul>
</li>
<li>NLB (Network Load Balancer)<ul>
<li>OSI 4계층인 전송 계층에서 작동하며 TCP, UDP, TLS 트래픽의 초고성능 처리에 중점적이다.</li>
<li>초당 수백만 개의 요청을 매우 낮은지연 시간으로 처리할 수 있어 실시간 게임, 스트리밍과 같이 성능에 민감한 워크로드에 이상적이다.</li>
<li>각 가용 영역에 대해 정적 IP 주소를 할당할 수 있다. 클라이언트 측에서 방화벽 규칙 등에 고정 IP 주소를 사용해야 하는 경우 유용하다. 또한 클라이언트의 원본 IP 주소를 백엔드 서버로 그대로 전달하여 서버에서 클라이언트 IP 기반의 로깅이나 분석이 가능하다. </li>
</ul>
</li>
<li>CLB (Classic Load Balancer) Legacy<ul>
<li>이전 세대의 로드 밸런서로, OSI 4계층, 7계층 모두에서 작동한다.</li>
<li>현재는 사용이 권장되지 않는다.</li>
</ul>
</li>
</ul>
<h2 id="ec2-auto-scaling">EC2 Auto Scaling</h2>
<h3 id="auto-scaling">Auto scaling</h3>
<ul>
<li>네트워크 이해를 해야 한다.</li>
<li>서버의 액세스 상태에 따라 서버 대수를 늘리거나 줄이는 기능이다.</li>
</ul>
<p>인스턴스를 쉽게 늘리거나 줄이는 AWS의 유연성이 높다는 장점이 있는데 이런 인스턴스의 증감을 자동으로 실행하는 것이 오토 스케일링이다.</p>
<h3 id="amazon-ec2-auto-scaling">Amazon EC2 Auto Scaling</h3>
<p>애플리케이션의 부하를 처리할 수 있는 EC2 인스턴스 수량을 min과 max 수량 사이에서 자동 추가 및 제거를 통해 유지한다. 클라이언트의 수가 적으면 EC2 개수를 줄여주고, 많으면 EC2 서버를 늘려준다.
오토 스케일링을 하기 위해서는 &#39;Auto Scaling 그룹&#39; 즉, 인스턴스의 집합을 생성하고 그룹에 인스턴스(서버)의 최소 대수와 최대 대수를 설정한다. 이 최소 대수와 최대 대수 범위 안에서 인스턴스의 수가 증감하게 된다. Auto Scaling 그룹은 서버 시작에 필요한 AMI와 키 페어, 보안 그룹 등을 설정해야 한다.</p>
<ul>
<li>확장/축소 개념<ul>
<li>Scale-out(확장) vs. Scale-in(축소)
인스턴스의 수평적 확장으로 트래픽이 증가하면 인스턴스 수를 늘려 부하를 분산시키고 트래픽이 감소하면 불필요한 인스턴스 수를 줄여 비용을 절감하는 방식이다.</li>
<li>Scale-up(확장) vs. Scale-down(축소)
인스턴스의 수직적 확장으로 인스턴스 수를 늘리는 대신 기존 인스턴스의 사양(CPU, 메모리 등)을 더 높은 사양으로 업그레이드하거나 다운그레이드하여 처리 용량을 조절하는 방식이다. </li>
</ul>
</li>
<li>장점<ul>
<li>향상된 가용성 : 사용자의 요청이 급증하더라도 자동으로 인스턴스를 늘려 서비스를 안정적으로 유지한다. 특정 인스턴스에 장애가 발생해도 Auto Scaling이 이를 감지하여 새로운 인스턴스를 즉시 생성해 서비스 중단을 방지한다.</li>
<li>비용 절감 : 트래픽이 적은 시간에는 불필요한 인스턴스를 자동으로 줄여 낭비되는 비용을 최소화한다.</li>
</ul>
</li>
<li>ASG(Auto Scaling Group) : Auto Scaling을 구현하는 가장 기본적인 단위<ul>
<li>min(가용성) : 서비스에 필요한 최소한의 인스턴스 수를 지정하여 가용성을 보장한다.</li>
<li>max(비용) : 예상치 못한 트래픽 급증에도 비용이 무한정 증가하는 것을 방지하기 위해 생성 가능한 최대 인스턴스 수를 제한한다.</li>
<li>desired(원하는 용량) : ASG가 유지하고자 하는 인스턴스의 수로, Auto Scaling 정책이 적용되지 않을 때, ASG는 이 desired 값에 맞추어 인스턴스 수를 조절한다.</li>
</ul>
</li>
</ul>
<h4 id="오토-스케일링-요소">오토 스케일링 요소</h4>
<ul>
<li>시작 템플릿(Launch Template) : 새로 생성될 EC2 인스턴스의 구성 정보를 미리 정의해놓은 템플릿이다. AMI, 인스턴스 유형, 보안 그룹, 키 페어 등 인스턴스 구성 정보를 지정해놓는다.</li>
<li>오토 스케일링 정책(Auto Scaling Policy) : 언제, 어떻게 인스턴스 수를 조절할지를 정의하는 규칙이다. 이 정책에 따라 Auto Scaling이 동작한다.</li>
</ul>
<h4 id="오토-스케일링-정책">오토 스케일링 정책</h4>
<ul>
<li>수동(Manual Scaling) :관리자가 직접 ASG의 min, max, desired 값을 변경하여 인스턴스 수를 조절하는 방식이다.</li>
<li>자동 (Automatic Scaling)<ul>
<li>예약된 일정(Scheduled Scaling) : 특정 시간이나 날짜에 맞춰 인스턴스 수를 예측하고 조절하는 예약 스케쥴링이 가능하다.</li>
<li>초기값 유지 : min, max, desired 값을 모두 동일하게 설정하면, ASG는 항상 지정된 수의 인스턴스는 예약 스케쥴링이 가능하다.
ex. <code>min : desired : max = 2 : 2 : 2</code> -&gt; 늘 언제나 2개의 개수를 유지하는 것</li>
<li>동적 조정정책 (Dynamic Scaling Policy) : 실시간 모니터링 지표(ex. CPU 사용률, 네트워크 트래픽)의 변화에 따라 인스턴스 수를 동적으로 조절하는 가장 일반적인 방식이다.<ul>
<li>단순 조정정책(Simple Scaling) : &#39;CPU 사용률이 60% 이상이면 2개의 인스턴스를 늘려라&#39;와 같이 특정 조건이 충족되면 지정된 작업을 수행한다.</li>
<li>단계 조정정책(Step Scaling) : 단순 조정정책보다 좀 더 세밀한 조정이 가능하다. &#39;CPU 사용률이 60%~80% 구간이면 인스턴스 1개를 늘리고, 80% 이상이며 3개를 늘려라&#39;와 같이 조건의 심각도에 따라 다른 수의 인스턴스를 조절한다.</li>
<li>대상추적 조정정책(Target Tracking Scaling) : 특정 대상(Target) 값을 지정하면 ASG가 현재 지표를 지속적으로 추적하여 목표값을 유지하기 위해 필요한 인스턴스 수를 자동으로 조정한다. 사용자는 min/max, 목표값만 설정하면 된다.<ul>
<li>대상의 타겟에 맞도록 EC2 min/max/desired 값에 맞게 조정</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>예측 기반 조정(Predictive Scaling) : 머신러닝 기술을 활용하여 과거의 트래픽 패턴을 분석하고, 미래의 트래픽을 예측하여 필요한 인스턴스 수를 미리 준비하는 방식이다.</li>
</ul>
<h2 id="tagging">Tagging</h2>
<p>Auto Scaling 정책에 따라 EC2 인스턴스가 동적으로 생성되고 종료될 때, 이 리소스들을 효과적으로 식별, 관리하고 비용을 추적하는 것이 중요하다. 태그(Tag)는 AWS 리소스를 구성하고 관리하기 위한 핵심 메타데이터이며, Auto Scaling 환경에서 특히 유용하게 사용된다.
Auto Scaling Group(ASG)에서는 그룹 자체에 태그를 지정할 수 있을 뿐만 아니라, ASG가 새로 시작하는 모든 EC2 인스턴스에 자동으로 특정 태그가 상속되도록 설정할 수 있다. </p>
<h3 id="태그-tag">태그 (Tag)</h3>
<p>태그는 리소스 구성을 위한 메타데이터 키 값-페어(Key-Value Pair)이다.</p>
<ul>
<li>ex: <code>Name=WebServer</code>, <code>Team=Dev</code>, <code>Environment=Develop</code></li>
<li>리소스의 이름, 별명, 소유자, 팀 구분, 환경(개발/운영) 등을 구분하는 데 사용된다.</li>
</ul>
<h3 id="tagging의-장점">Tagging의 장점</h3>
<p>태그를 일관되게 적용하면 아래와 같은 이점을 얻을 수 있다.</p>
<ul>
<li>관리 편의성 향상<ul>
<li>태그를 기준으로 특정 리소스(ex. &#39;Team=Prod&#39;태그가 붙은 모든 인스턴스)를 쉽게 쿼리하고 식별할 수 있어 가시성이 높아진다.</li>
<li>AWS 리소스 그룹 기능을 사용하여 태그 기반으로 리소스를 논리적으로 그룹화할 수 있다.</li>
</ul>
</li>
<li>세분화된 권한 제어<ul>
<li>IAM(Identity and Access Management) 정책에서 태그를 기반으로 특정 리소스에 대한 접근(ex. 시작, 중지, 종료)을 제어할 수 있다.</li>
</ul>
</li>
<li>비용 관리 용이<ul>
<li>&#39;비용 할당 태그(Cost Allocation Tag)&#39;를 활성화하면, 태그별로 AWS 사용 요금을 추적하고 분석할 수 있다.</li>
<li>이를 통해 부서별, 프로젝트 별 비용을 정확하게 파악하고 예산을 관리하는 데 활용할 수 있다.</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Amazon EC2 (Elastic Compute Cloud) 1]]></title>
            <link>https://velog.io/@yeon_ni/Amazon-EC2-Elastic-Compute-Cloud</link>
            <guid>https://velog.io/@yeon_ni/Amazon-EC2-Elastic-Compute-Cloud</guid>
            <pubDate>Sat, 15 Nov 2025 16:00:12 GMT</pubDate>
            <description><![CDATA[<h2 id="amazon-ec2-이해하기">Amazon EC2 이해하기</h2>
<p>Amazon EC2 (Elastic Compute Cloud)는 AWS 클라우드 환경에서 기본이 되는 핵심 컴퓨팅 플랫폼이다. EC2는 물리적인 서버 하드웨어를 직접 구매하고 관리할 필요 없이, 가상의 컴퓨터(서버)인 <code>인스턴스(Instance)</code> 라는 단위로 빌려 쓸 수 있게 해준다.</p>
<p>이런 인스턴스에는 Amazon Linux, Windows, macOS 등 다양한 운영체제를 설치하여 실행할 수 있고, 사용자는 인스턴스가 실행 중인 시간에 대해서만 비용을 지불하는 시스템이다.</p>
<h3 id="ec2--탄력성">EC2 : 탄력성</h3>
<p>EC2의 가장 큰 장점은 Elastic; 탄력성 이다</p>
<ul>
<li>빠른 장애 복구
물리적인 서버가 고장 나면 수리에 오랜 시간이 걸리지만, EC2 인스턴스에 문제가 생기면 미리 만들어 두었던 동일한 구성의 인스턴스를 빠른 시간 안에 새로 시작하여 즉시 서비스를 복구할 수 있다.</li>
<li>유연한 확장(Scaling)<ul>
<li>Scale-out/in : 트래픽이나 부하가 증가하면 Auto Scaling Group과 같은 기능을 통해 같은 구성의 서버(인스턴스)를 자동으로 복제하여 부하를 분산시킬 수 있다. 반대로 접속이 줄어들면 불필요한 인스턴스를 자동으로 종료하여 비용을 절감할 수 있다.</li>
<li>Scale-up/down : 현재 사용 ㅈㅇ인 서버의 사용(ex. <code>t2.micro</code>)이 부족하면, 인스턴스를 중지한 후 더 높은 사양(ex. <code>t2.large</code>)으로 빠르고 손쉽게 변경할 수 있다.</li>
</ul>
</li>
</ul>
<h2 id="ec2-인스턴스의-핵심-구성-요소">EC2 인스턴스의 핵심 구성 요소</h2>
<p>EC2 인스턴스를 시작(launch)할 때는 가상 컴퓨터를 구성하기 위한 몇 가지 핵심 요소가 있다.</p>
<h3 id="1-ami-amazon-machine-image">1. AMI (Amazon Machine Image)</h3>
<p>AMI는 인스턴스를 시작하는 데 필요한 모든 소프트웨어 정보가 담긴 루트 볼륨 템플릿이다. 여기에는 운영 체제 만이 아니라 필요한 애플리케이션이나 설정(ex. 웹 서버)이 포함될 수 있다. 사용자는 AWS가 제공하는 기본 AMI, 서드파티가 제공하는 AMI 또는 자신이 직접 설정한 인스턴스를 기반으로 고객 생성 AMI를 만들 수 있다. 사용자 지정 AMI를 사용하면 동일한 설정의 서버를 빠르고 일관되게 복제, 배포할 수 있다.</p>
<h3 id="2-인스턴스-유형-instance-type">2. 인스턴스 유형 (Instance Type)</h3>
<p>인스턴스 유형은 인스턴스가 사용할 물리적 호스트 컴퓨터의 하드웨어 사양을 결정한다. 이는 CPU, 메모리, 스토리지 및 네트워킹 용량의 여러 조합을 제공한다.</p>
<ul>
<li>유형 이름 규칙 : 예를 들어, <code>t2.micro</code>는 아래와 같이 구성된다.<ul>
<li><code>t</code> : 인스턴스 패밀리 (T는 버스트 가능한 범용 유형)</li>
<li><code>2</code> : 세대</li>
<li><code>micro</code> : 인스턴스 크기 (CPU와 메모리 용량)</li>
</ul>
</li>
<li>패밀리 : 워크로드에 따라 범용(T, M 계열), 컴퓨팅 최적화(C 계열), 메모리 최적화(R, X 계열) 등 다양한 유형을 선택할 수 있다.</li>
</ul>
<h3 id="3-네트워크-network-configuration">3. 네트워크 (Network Configuration)</h3>
<p>EC2 인스턴스는 반드시 VPC(Virtual Private Cloud)라는 논리적으로 격리된 가상 네트워크 환경 내 특정 서브넷(Subnet)에 배포되어야 한다. 또한, 인스턴스에 대한 인바운드/아웃바운드 트래픽을 제어하는 가상 방화벽인 보안 그룹(Security Group)을 필수로 지정해야 한다. 인터넷과 통신이 필요할 경우, 공인 IP 자동 할당(Auto-assign public IP) 옵션을 활성화하면 된다.</p>
<h3 id="4-스토리지-storage">4. 스토리지 (Storage)</h3>
<p>모든 EC2 인스턴스는 운영체제가 설치될 루트 스토리지 볼륨이 필요하다.</p>
<ul>
<li>EBS (Elastic Block Store)
가장 일반적으로 사용되며, 인스턴스가 중지되거나 종료되어도 데이터가 보존되는 영구적인 네트워크 연결 디스크이다. OS용 루트 볼륨 외에 데이터 저장을 위한 추가 볼륨(데이터 볼륨)을 연결할 수 있다.</li>
</ul>
<h3 id="5-키-페어-key-pair">5. 키 페어 (Key Pair)</h3>
<p>인스턴스에 안전하게 접속하기 위한 인증 수단이다. 키 페어는 퍼블릭 키와 프라이빗 키로 구성된다. AWS는 인스턴스 내부에 공개키를 저장하고, 사용자는 개인 키 파일(<code>.pem</code>, <code>.ppk</code>)을 보관하다가 SSH(Linux)나 RDP(Windows)로 접속 시 본인 인증에 사용한다.</p>
<h3 id="6-advanced-setting">6. Advanced setting</h3>
<h4 id="user-data-사용자-데이터">User Data (사용자 데이터)</h4>
<p>인스턴스를 처음 시작할 때 자동으로 실행할 스크립트를 지정하는 기능이다. 이를 통해 OS 업데이트, 소프트웨어 설치, 서비스 시작(ex. 웹 서버)와 같은 일반적인 구성 작업을 자동화할 수 있다.</p>
<ul>
<li>ex) Linux에서 Apache 웹 서버 설치 및 실행하는 작업<pre><code class="language-bash">#!/bin/bash
yum update -y
yun install -y httpd
service httpd start
chkconfig httpd on</code></pre>
</li>
</ul>
<h4 id="tenancy-테넌시-hardware">Tenancy (테넌시) Hardware</h4>
<p>테넌시 설정은 EC2 인스턴스가 실행되는 물리적 하드웨어의 격리 수준을 결정한다.</p>
<ul>
<li><strong>공유 (Shared)</strong> : 기본값이다. 인스턴스는 다른 AWS 고객과 물리적 하드웨어를 공유하는 멀티테넌트(Multi-tenant) 환경에서 실행된다. 대부분의 워크로드에 적합하고, 가장 비용 효율적이다.</li>
<li><strong>전용 인스턴스 (Dedicated Instance)</strong> : 인스턴스가 사용자의 계정 전용 하드웨어에서 실행된다. 하드웨어는 동일 계정 내 다른 전용 인스턴스와 공유될 수 있지만, 다른 AWS 고객과는 격리된다.</li>
<li>전용 호스트 (Dedicated Host) : 사용자가 물리적 서버 전체를 독점적으로 임대하는 방식이다. 특정 규정 준수 요구사항(Compliance)을 충족하거나, Windows Server 또는 SQL Server처럼 기존에 보유한 라이선스(BYOL: Bring Your Own License)를 물리적 코어 수 기준으로 사용해야 할 때 유용하다. 하드웨어에 대한 강력한 제어권과 가시성을 제공해준다.</li>
</ul>
<h4 id="instance-profile-인스턴스-프로필">Instance Profile (인스턴스 프로필)</h4>
<p>인스턴스 프로필은 EC2 인스턴스에 IAM 역할(Role)을 연결하는 컨테이너이다.
EC2 인스턴스 내부에서 실행되는 애플리케이션이 S3 버킷에 파일을 업로드하거나 DynamoDB 테이블을 조회하는 등 다른 AWS 서비스에 접근해야 할 때가 있다. 이때에 액세스 키(Access Key) 같은 장기 자격 증명을 인스턴스 내부에 저장하는 것은 보안상 매우 위험하다.
인스턴스 프로필을 사용하게 되면, 인스턴스에 특정 권한을 가진 IAM 역할을 할당할 수 있다. 인스턴스는 이 역할을 통해 자동으로 임시 보안 자격 증명(Temporary Credentials)을 발급받아 다른 AWS 서비스에 안전하게 접근할 수 있다. </p>
<h4 id="placement-group-배치-그룹">Placement Group (배치 그룹)</h4>
<p>배치 그룹은 상호 의존적인 EC2 인스턴스 그룹을 AWS 인프라 내에 어떻게 물리적으로 배치할 지 전략을 결정하는 기능이다. 워크로드의 특성에 따라 네트워크 지연 시간, 고가용성 등을 최적화할 수 있다.</p>
<ul>
<li>클러스터 (Cluster) : 인스턴스들을 단일 가용 영역(AZ) 내에서 최대한 가깝게(동일한 랙) 배치한다. 인스턴스 간의 네트워크 지연 시간을 최소화하고 처리량을 극대화하는 데 중점을 둔다. 고성능 컴퓨팅(HPC)이나 실시간 데이터 처리처럼 노드 간 통신이 매우 빈번한 애플리케이션에 적합하다.</li>
<li>파티션 (Partition) : 인스턴스들을 하나의 AZ 내에서 논리적인 파티션(별개의 랙)으로 분산시킨다. 각 파티션은 독립된 하드웨어 세트를 가지기 때문에 랙 수준의 하드웨어 장애가 발생하더라도 다른 파티션의 인스턴스에는 영향을 주지 않는다. Hadoop(HDFS), Kafka, Cassandra와 같은 대규모 분산 및 복제 워크로드의 가용성을 높이는 데 사용된다.</li>
<li>분산 (Spread) : 각 인스턴스를 물리적으로 완전히 분리된 하드웨어(서로 다른 랙)에 개별적으로 배치한다. 이는 소수의 핵심적인 인스턴스들이 동시에 장애를 겪을 위험을 최소화해 최대 내결함성을 확보하기 위한 것이다. </li>
</ul>
<h2 id="인스턴스-요금-옵션">인스턴스 요금 옵션</h2>
<p>워크로드의 특성에 따라 비용을 최적화할 수 있는 다양한 요금 옵션이 존재한다.</p>
<ul>
<li>온디맨드(On-Demand) : 약정 없이 사용한 시간(초 단위)만큼 비용을 지불하는 가장 유연한 방식이다</li>
<li>예약 인스턴스(Reserved Instances) : 1년 또는 3년의 기간을 약정하는 대가로 온디맨드 대비 상당한 할인을 제공받는다. 꾸준히 사용량이 예측되는 워크로드에 적합하다.</li>
<li>스팟 인스턴스 (Spot Instance) : AWS의 여유 컴퓨팅 용량을 입찰 방식으로 사용하는 방식이다. 온디맨드 대비 최대 90%까지 할인되지만, AWS가 해당 용량을 필요로 하거나 사용자의 입찰가보다 스팟 가격이 높아지면 인스턴스가 중단될 수 있다. 그렇기 때문에 장애에 유연하게 대처할 수 있는 워크로드인 배치 작업이나 빅데이터 분석 등에 적합하다.</li>
</ul>
<h2 id="amazon-ebs와-스냅샷">Amazon EBS와 스냅샷</h2>
<h3 id="ebs">EBS</h3>
<p>Amazon Elastic Block Store(Amazon EBS)는 영구적인 블록 스토리지 볼륨으로, EC2 인스턴스와 조합하여 사용한다. EC2 인스턴스를 위한 가상의 외장 하드 드라이브라고 생각할 수 있따. 가장 큰 특징은 EC2 인스턴스의 수명 주기와 독립적으로 데이터를 보존할 수 있다는 점이다. </p>
<ul>
<li>가용 영역(AZ) 종속성 : 각각의 EBS 볼륨은 특정 가용 영역 내에서 생성되며 자동으로 해당 AZ 내의 여러 서버에 복제되어 구성 요소 장애로부터 보호된다. 따라서 단일 AZ 내에서는 높은 내구성과 가용성을 보장한다.</li>
</ul>
<h3 id="ebs의-주요-기능과-유형">EBS의 주요 기능과 유형</h3>
<p><strong>EC2의 스토리지</strong></p>
<p>EC2 인스턴스의 부팅 볼륨(루트 볼륨)과 데이터 볼륨으로 모두 사용될 수 있따. 운영체제는 루트 볼륨에 설치되며, 애플리케이션 데이터나 파일은 별도의 데이터 볼륨에 저장하여 관리하는 것이 일반적이다.</p>
<p><strong>EBS의 유형</strong></p>
<p>애플리케이션이 필요한 스토리지 성능에 따라 블록 유형을 선택 가능하다. EBS의 읽기/쓰기 성능은 주로 초당 입출력 처리량인 IOPS(Input/Output Operations Per Second) 단위와 처리량(Throughtput)으로 측정된다.</p>
<p>대표적인 스토리지로는 HDD와 SSD가 있다. </p>
<ul>
<li><strong>HDD (Hard Disk Drive)</strong> : 대용량을 지원하며 SSD에 비해 저렴하지만 성능이 낮다. iOPS보다 처리량이 중요한 대용량 데이터 워크로드에 적합하다.<ul>
<li>처리량 최적화 HDD (st1) : 빅데이터 분석, 데이터 웨어하우징, 로그 처리와 같이 크고 순차적인 데이터 액세스가 잦은 워크로드에 최적화된 저비용 스토리지이다.</li>
<li>콜드 HDD (sc1) : 액세스 빈도가 매우 낮은 데이터의 대규모 저장을 위한 가장 저렴한 옵션이다. 데이터 아카이빙이나 백업 용도로 사용된다.</li>
</ul>
</li>
<li><strong>SSD (Solid State Drive)</strong> : 가격이 비싸지만 IOPS가 빠르다.<ul>
<li>범용  SSD (gp3, gp2) : 가격과 성능 간의 균형을 제공하여 가장 많이 사용된다. 시스템 부팅 볼륨, 개발 및 테스트 환경, 지연 시간에 민감하지 않은 대부분의 애플리케이션에 적합하다. 특히 gp3는 IOPS와 처리량을 스토리지 크기와 별개로 독립적으로 프로비저닝할 수 있어 비용 면에서 효율적이다.</li>
<li>프로비저닝된 IOPS SSD (io2 Block Express, io1) : 고성능과 일관된 저지연 시간이 요구되는 애플리케이션을 위해 설계되었다. 대규모 관계형 DB나 NoSQL DB와 같은 고성능 워크로드에 이상적이다.</li>
</ul>
</li>
</ul>
<h3 id="ec2와-ebs">EC2와 EBS</h3>
<p><strong>EC2 생성 시 EBS 볼륨 생성</strong></p>
<p>EC2 인스턴스를 생성할 때, EBS 볼륨을 필수적으로 구성해야 한다.</p>
<ul>
<li>루트 볼륨(OS 볼륨) : 인스턴스의 운영체제가 설치되는 볼륨이다. 기본적으로 ‘종료 시 삭제’ 옵션이 활성화되어 있어 인스턴스를 종료하면 루트 볼륨도 같이 삭제된다.</li>
<li>데이터 볼륨 추가 : OS와 데이터를 분리하여 관리하기 위해 하나 이상의 데이터 볼륨을 추가할 수 있다. 데이터 볼륨은 기본적으로 ‘종료 시 삭제’ 옵션이 비활성화되어 있어서 인스턴스를 종료해도 데이터가 보존된다.</li>
</ul>
<h3 id="ebs-백업--스냅샷snapshot">EBS 백업 : 스냅샷(Snapshot)</h3>
<p>스냅샷은 특정 시점의 EBS 볼륨을 Amazon S3에 저장하는 백업이다. 데이터 보호와 복구를 위한 핵심 기능이다.</p>
<h3 id="ec2-인스턴스-연결-방법---ssh">EC2 인스턴스 연결 방법 - SSH</h3>
<p>EC2 인스턴스에 원격으로 접속하기 위해서는 SSH 프로토콜을 사용한다. 이 과정에서 키 페어를 이용한 공개 키 암호화 방식으로 안전하게 인증을 한다.</p>
<ul>
<li>키 페어 작동 원리 : 공개 키와 개인 키 한 쌍으로 구성된다.<ul>
<li>공개키 : EC2 인스턴스 내부에 저장된다</li>
<li>개인키 (.pem) : 사용자가 직접 다운로드해 안전하게 보관해야 한다</li>
</ul>
</li>
<li>접속 과정 : 사용자가 PuTTY, Tera Term, Git Bash와 같은 SSH 클라이언트를 사용하여 접속을 시도하고 클라이언트는 개인 키를 사용하여 사용자의 신원을 증명한다. EC2 인스턴스 내부에 저장된 공개 키와 대조하여 일치하는 경우에만 접속이 허용된다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Ubuntu CLI 서버, 캡티브 포털 Wi-Fi에 연결하기]]></title>
            <link>https://velog.io/@yeon_ni/Ubuntu-CLI-%EC%84%9C%EB%B2%84-%EC%BA%A1%ED%8B%B0%EB%B8%8C-%ED%8F%AC%ED%84%B8-Wi-Fi%EC%97%90-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@yeon_ni/Ubuntu-CLI-%EC%84%9C%EB%B2%84-%EC%BA%A1%ED%8B%B0%EB%B8%8C-%ED%8F%AC%ED%84%B8-Wi-Fi%EC%97%90-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sat, 15 Nov 2025 15:44:17 GMT</pubDate>
            <description><![CDATA[<p>이 글은 Ubuntu CLI 환경에서 JavaScript 기반 캡티브 포털 Wi-Fi에 연결하려다 발생한 문제를 해결하는 전체 과정을 명령어 중심으로 기록합니다.</p>
<h3 id="1-유선-및-무선-네트워크-진단">1. 유선 및 무선 네트워크 진단</h3>
<p>가장 먼저 기본적인 하드웨어 상태와 네트워크 환경을 진단했습니다.</p>
<pre><code class="language-bash"># 1. 유선/무선 네트워크 인터페이스 상태 확인
# enp2s0(유선)가 &#39;NO-CARRIER&#39; 케이블 인식 불가 상태임을 확인
# wlp1s0(무선)가 &#39;UP&#39; 활성화 상태임을 확인
ip link show

# 2. 사용 가능한 Wi-Fi 네트워크 스캔
# iwlist 가 없다면, &#39;sudo apt install wireless-tools&#39; 필요. 핫스팟 이용
# eduroam은 없고, &#39;2_DDWU_WIFI&#39; 학교 와이파이가 있음을 확인.
sudo iwlist wlp1s0 scan | grep ESSID</code></pre>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/1d689762-db40-4d02-a9b9-7d54f064e5c6/image.png" alt=""></p>
<ul>
<li><code>eth0</code>, <code>enp0s3</code> 등의 인터페이스 이름이 유선 랜카드</li>
<li>해당 항목의 STATE가 <code>UP</code>인지, <code>LOSWER_UP</code>인지 확인<ul>
<li><code>STATE UP</code> : 인터페이스가 활성화된 상태<ul>
<li><code>DOWN</code>으로 표시된다면 비활성화된 상태</li>
</ul>
</li>
<li><code>LOWER_UP</code> : 케이블이 물리적으로 연결되어 신호가 감지된 상태</li>
</ul>
</li>
</ul>
<h3 id="2-cli-환경에서-wi-fi-연결-시도">2. CLI 환경에서 Wi-Fi 연결 시도</h3>
<p>이제 어쩔 수 없이 무선으로 눈을 돌리게 되었습니다. </p>
<p>사실 우분투 CLI OS가 담긴 USB를 포맷하고, GUI 버전을 설치하여 간단하게 와이파이 등록 후, 다시 CLI로 설치하는 방법이 있었지만 오기가 생겨 당연히 CLI로 등록하는 방법은 있겠거니 생각해 여러 가지를 시도해보게 되었습니다.</p>
<p><code>wpa_supplicant</code>와 <code>dhclient</code>를 수동으로 조합하여 &#39;WPA2-개인&#39; 방식의 Wi-Fi에 연결합니다.</p>
<pre><code class="language-bash"># 1. wpa_supplicant 설정 파일 생성
# &#39;2_DDWU_WIFI&#39;의 SSID와 WPA2 비밀번호를 이용해 암호화된 PSK를 생성하고 파일로 저장.
wpa_paassphrase &quot;2_DDWU_WIFI&quot; &quot;[password]&quot; | sudo tee /etc/wpa_supplicant/wifi-wlp1s0.conf

# 2. wpa_supplicant 백그라운드로 실행
# &#39;-B&#39; : 백그라운드 실행
# &#39;-i wlp1s0&#39; : 사용할 무선 인터페이스 지정
# &#39;-c ...&#39; : 방금 생성한 설정 파일 경로 지정

sudo wpa_supplicant -B -i wlp1s0 -D nl80211,wext -c /etc/wpa_supplicant/wifi-wlp1s0.conf

# 3. IP 주소 할당 요청하기
# &#39;-v&#39; : 자세한 로그 출력
# &#39;wlp1s0&#39; 인터페이스로 DHCP 서버에 IP를 요청
sudo dhclient -v wlp1s0

# 4. 인터넷 연결
# apt 가 DNS 주소를 찾지 못함 (&#39;Temporary failure resolving...&#39;)
sudo apt update</code></pre>
<p>CLI에서 캡티브 포털을 뚫기 위해 아래와 같은 단계로 진행했습니다.</p>
<h3 id="3-텍스트-브라우저-lynx-설치하기">3. 텍스트 브라우저 <code>lynx</code> 설치하기</h3>
<p>캡티브 포털 로그인을 위해 <code>lynx</code>가 필요했지만 <code>apt</code>가 안되는 상황이었기에 핫스팟을 이용해 임시로 인터넷을 연결했습니다.</p>
<pre><code class="language-bash"># 1. 기존의 학교 Wi-Fi 연결 종료
sudo killall wpa_supplicant

# 2. 모바일 핫스팟용 설정 파일 생성
wpa_passpharase &quot;내핫스팟_SSID&quot; &quot;내핫스팟_pw&quot; | sudo tee /etc/wpa_supplicant/hotspot.conf

# 3. 핫스팟에 연결
sudo wpa_supplicant -B -i wlp1s0 -D nl80211,wext -c /etc/wpa_supplicant/hotspot.conf

# 4. 핫스팟 IP 할당받기
sudo dhclient -v wlp1s0

# 5. 임시로 연결한 네트워크로 lynx 설치
sudo apt update
sudo apt install lynx</code></pre>
<h3 id="4-lynx로-로그인-시도">4. <code>lynx</code>로 로그인 시도</h3>
<p><code>lynx</code> 설치 후, 다시 학교 Wi-Fi로 돌아와서 로그인을 시도했습니다.</p>
<pre><code class="language-bash"># 1. 핫스팟 연결 종료
sudo killall wpa_supplicant

# 2. 다시 학교 Wi-Fi에 연결
sudo wpa_supplicant -B -i wlp1s0 -D nl80211,wext -c /etc/wpa_supplicant/wifi-wlp1s0.conf
sudo dhclient -v wlp1s0

# 3. lynx로 캡티브 포털 접속 시도
# &#39;-display_charset=UTF-8&#39; : 한글 깨짐 방지
# http://example.com로 접속하는 이유는 캡티브 포털 접속을 하기 위함
lynx -display_charset=UTF-8 http://example.com

# 4. lynx 내부에서 &#39;l&#39; (List links)키 입력
# &#39;There are no references...&#39; 메시지 확인.
# 페이지가 Javascript로 렌더링되어 lynx가 링크를 인식 못함을 확정</code></pre>
<h3 id="5-gui-환경-설치">5. GUI 환경 설치</h3>
<p>CLI로는 해결이 불가능해서 다시 모바일 핫스팟을 연결해 GUI 환경을 설치했습니다.</p>
<pre><code class="language-bash"># 1. 핫스팟 다시 연결
sudo killall wpa_supplicant

wpa_passpharase &quot;내핫스팟_SSID&quot; &quot;내핫스팟_pw&quot; | sudo tee /etc/wpa_supplicant/hotspot.conf

sudo wpa_supplicant -B -i wlp1s0 -D nl80211,wext -c /etc/wpa_supplicant/hotspot.conf

sudo dhclient -v wlp1s0

# 2. 패키지 목록 업데이트
sudo apt update

# 3. 경량 GUI (Xubuntu) 설치
# 해당 과정에서는 모바일 핫스팟이 꽤 많이 필요로 하니 참고하시면 좋겠습니다
# gmd3와 lightdm 중 lightdm 선택
sudo apt install xubuntu-desktop

# 4. GUI 환경으로 재부팅
sudo reboot</code></pre>
<h3 id="6-gui-네트워크-충돌-해결">6. GUI 네트워크 충돌 해결</h3>
<p>GUI로 부팅했으나, Wi-Fi 아이콘이 <code>device not managed</code> 오류 표시.</p>
<pre><code class="language-bash"># 1. 네트워크 상태 확인
# &#39;wlp1s0&#39; 의 STATE가 &#39;unmanaged&#39;임을 확인
nmcli device status

# 2. 1번 실패 -&gt; NetworkManager.conf 수정
# &#39;managed=false&#39;를 &#39;managed=true&#39;로 수정했으나, 재부팅 후에도 &#39;unmanaged&#39; 지속됨
# netplan이 더 상위 설정임을 확인하고 netplan 수정
sudo vi /etc/NetworkManager/NetworkManager.conf
sudo reboot

# 3. 2번 실패 -&gt; 구형 설정 파일 확인
# 파일이 비어있거나 &#39;wlp1s0&#39; 관련 내용이 없는지 확인
# 확인 결과 빈 파일이었음
cat /etc/network/interfaces

# 4. &#39;netplan&#39; 설정 파일 생성
# netplan에게 모든 네트워크 제어권을 NetworkManager에게 위임하도록 설정
# &#39;00-&#39;으로 시작해 가장 먼저 로드되도록 함
sudo vi /etc/netplan/00-networkmanager-all.yaml

# 5. &#39;00-networkmanager-all.yaml&#39; 파일 내용 작성
network:
    version: 2
    renderer: NetworkManager

# 6. netplan 파일 권한 수정
# &#39;Permissions .. too open&#39; 오류 방지 위해 644 권한 부여
sudo chmod 644 /etc/netplan/00-networkmanager-all.yaml

# 7. netplan 설정 적용
# 수정된 .yaml 파일을 시스템에 적용
sudo netplan apply

# 8. NetworkManager 서비스 재시작
sudo systemctl restart NetworkManager.service

# 이후 Wi-Fi 아이콘이 활성화됨</code></pre>
<h3 id="7-최종-인터넷-연결-gui">7. 최종 인터넷 연결 (GUI)</h3>
<p><code>netplan</code> 문제 해결 후, 인터넷 브라우저가 없어 캡티브 포털을 열지 못하는 문제가 발생해 모바일 핫스팟을 다시 연결했습니다.</p>
<pre><code class="language-bash"># 1. 핫스팟 임시 연결 (GUI Wi-Fi 메뉴 이용)
# Wi-Fi 아이콘 클릭 -&gt; 핫스팟 선택

# 2. Firefox 설치
sudo apt update
sudo apt install firefox

# 3. 학교 Wi-Fi로 복귀
# Wi-Fi 아이콘 클릭 -&gt; &#39;2_DDWU_WIFI&#39; 선택 -&gt; WPA2 비밀번호 입력

# 4. 캡티브 포털 로그인
# firefox 접속 -&gt; 포탈 계정으로 로그인

# 5. 인터넷 최종 연결 성공</code></pre>
<blockquote>
<h3 id="결론">결론</h3>
<p>최종적으로 CLI 환경에서 캡티브 포털 접속을 위해 진행했던 방법</p>
</blockquote>
<ul>
<li>모바일 핫스팟을 <code>wpa_passphrase</code> 를 통해 연결</li>
<li><code>sudo apt update</code></li>
<li><code>sudo apt install xubuntu-desktop</code></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[AWS를 사용하기 위한 도구]]></title>
            <link>https://velog.io/@yeon_ni/AWS%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EB%8F%84%EA%B5%AC</link>
            <guid>https://velog.io/@yeon_ni/AWS%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EB%8F%84%EA%B5%AC</guid>
            <pubDate>Fri, 17 Oct 2025 13:05:01 GMT</pubDate>
            <description><![CDATA[<h2 id="aws의-사용법과-계정">AWS의 사용법과 계정</h2>
<h3 id="aws-접근-도구">AWS 접근 도구</h3>
<ul>
<li>AWS Management Console(관리 콘솔) : 서비스 설정 화면으로 웹 브라우저에서 사용할 수 있는 GUI이다. 서비스 설정이나 상태를 시각적으로 확인할 수 있다.</li>
<li>AWS Command Line Interface(CLI) : 명령어로 조작 가능한 명령줄 도구로, 관리 콘솔에서 할 수 없는 것도 가능하다. 스크립트를 통한 반복 작업의 자동화가 용이하다.</li>
<li>Software Development Kits(SDKs) : Python, Java, JavaScript 등의 프로그래밍 언어를 사용하여 AWS 서비스를 프로그래밍적으로 제어할 수 있는 라이브러리와 도구 모음이다.</li>
</ul>
<h3 id="aws-cli-접근">AWS CLI 접근</h3>
<p>접근 권한을 가지고 있어야 이런 접근이 가능하다. Access ID와 secret Key 발급을 받아 접근해야 한다.</p>
<ol>
<li>i-12345678이라는 이름의 EC2 인스턴스를 시작한다
a. <code>$ aws ec2 start-instances --instance-ids i-12345678</code></li>
<li>S3 패키지의 목록 표시
b. <code>$ aws s3 ls</code><br>
### AWS의 사용법과 접근</li>
</ol>
<ul>
<li>Root 사용자 : AWS 계정을 처음 생성할 때 사용한 이메일 주소와 연결된 계정이다. 이 계정의 모든 서비스와 리소스에 대한 전체 권한을 갖는다.<ul>
<li>IAM 사용자 생성이나 결제 정보를 관리할 때를 제외한 일상적인 작업에는 루트 사용자를 사용하지 않아야 한다.</li>
</ul>
</li>
<li>AWS IAM (Identity and Access Management) : Root 사용자 문제를 해결하기 위한 서비스가 IAM이다.</li>
</ul>
<h2 id="aws-iam과-접근-권한">AWS IAM과 접근 권한</h2>
<h3 id="aws-iam-identity-and-access-management">AWS IAM (Identity and Access Management)</h3>
<p>AWS의 ID와 접속 관리를 담당하는 인증 기능이다. AWS 계정과 비슷하지만 다르다.</p>
<ul>
<li>AWS 계정은 계약을 관리하는 계정</li>
<li>IAM은 각 서비스에 대한 접속을 관리하는 기능</li>
</ul>
<p>IAM은 “누가, 무엇을, 어떤 리소스에, 어떤 조건 하에서, 할 수 있는지”를 정의하여 작동한다. IAM 자체는 추가 요금이 없고 무료로 사용 가능하다. IAM 사용자가 사용한 서비스에는 비용이 드나, IAM 자체는 추가 요금이 없다. </p>
<h3 id="iam의-주체">IAM의 주체</h3>
<p>IAM을 사용자나 서비스에 부여하여 접속을 관리한다.</p>
<ul>
<li><strong>IAM 사용자 (User)</strong> : AWS 계정 내에서 생성된 개별적인 ID이다. 각 사용자는 관리 콘솔 접속을 위한 사용자 이름과 암호, 또는 CLI/SDK 접근을 위한 Access Key와 Secret Key 같은 고유한 자격 증명을 소유한다. 사용자는 부여받은 권한의 범위 내에서만 AWS 리소스에 대한 작업을 수행할 수 있다.</li>
<li><strong>IAM 그룹 (Group)</strong> : 여러 IAM 사용자를 담는 컨테이너이다. 부서나 직무별로 그룹을 만들고 그룹에 권한을 부여하면, 해당 그룹에 속한 모든 사용자가 동일한 권한을 상속받게 되어 관리가 편해진다. </li>
<li><strong>IAM 역할 (Role)</strong> : 특정 사용자에게 영구적으로 권한을 부여하는 대신, 필요할 때 <strong>임시적인 권한</strong>을 부여하기 위해 사용되는 매커니즘이다. 역할은 자체적인 자격 증명을 가지지는 않고, 신뢰하는 사용자나 EC2 인스턴스와 같은 서비스가 해당 역할을 Assume하여 임시 보안 자격 증명을 받아 사용한다. <ul>
<li>역할은 권한 정책(무엇을 할 수 있는지)과 신뢰 정책(누가 이 역할을 맡을 수 있는지) 두 가지 정책으로 구성된다.</li>
</ul>
</li>
</ul>
<h3 id="iam-정책">IAM 정책</h3>
<p>어떤 서비스 기능에 어떤 조작을 할 수 있는지 정의하는 JSON 형식의 문서이다. 이 정책을 사용자, 그룹, 또는 역할에 연결하여 권한을 부여한다. </p>
<ul>
<li>IAM 사용자, 그룹 및 IAM 역할, AWS 리소스에 정책을 연결한다.</li>
<li>JSON 형식의 정책 문서<ul>
<li><strong>Effect : 허용, 거부(Allow, Deny)</strong></li>
<li><strong>Action : 허용하거나 거부할 서비스의 특정 작업</strong></li>
<li><strong>Resource : 해당 작업이 적용될 대상을 ARN</strong>(Amazon Resource Name)이라는 고유 식별자로 지정</li>
</ul>
</li>
</ul>
<pre><code class="language-json">{
 &quot;Version&quot;: &quot;2012-10-17&quot;,
 &quot;Statement&quot;: {
     &quot;Effect&quot;: &quot;Allow&quot;,
     &quot;Action&quot;: &quot;s3:ListBucket&quot;,
     &quot;Resource&quot;:
          &quot;**arn:aws:**s3:::example_bucket&quot; 
          # arn:aws:[서비스이름]:[account_이름]
  }
}</code></pre>
<h4 id="정책의-종류">정책의 종류</h4>
<p>관리 방식에 따라 세 가지 유형으로 나뉜다.</p>
<ul>
<li><strong>AWS 관리형 정책 (AWS Managed Policies)</strong>
AWS가 사전에 생성하고 관리하는 정책 템플릿이다. &#39;AmazonS3FullAccess&#39;나 &#39;AdministratorAccess&#39;와 같이 일반적인 사용 사례에 맞춰 미리 정의되어 있다.</li>
<li><strong>고객 관리형 정책 (Customer Managed Policies)</strong>
사용자가 직접 생성하고 관리하는 정책이다. AWS 관리형 정책보다 더 세밀한 권한 설정이 필요할 때 사용하며, 하나의 정책을 만들어 사용자, 그룹, 역할에 반복적으로 연결할 수 있어서 재사용할 수 있다.</li>
<li><strong>인라인 정책 (Inline Policies)</strong>
단 하나의 사용자, 그룹 또는 역할에만 직접 포함시키는 정책이다. 정책과 주체가 1:1로 연결되기 때문에 해당 사용자나 그룹을 삭제하면 인라인 정책도 같이 삭제된다. 1회성 정책이다.</li>
</ul>
<h4 id="정책-평가-우선순위">정책 평가 우선순위</h4>
<p><img src="https://velog.velcdn.com/images/yeon_ni/post/0fdfc2ef-a303-443e-b165-8b76748b3906/image.png" alt=""></p>
<ol>
<li><strong>명시적 Deny</strong> : 정책 중 하나라도 Deny 가 있으면, Allow가 있어도 무조건 거부된다.</li>
<li><strong>명시적 Allow</strong> : Deny가 없을 때, 해당 작업을 허용하는 Allow 정책이 있어야만 작업이 가능하다.</li>
<li><strong>암시적 deny</strong> : Allow와 Deny 정책 정의가 안되어 있으면,  그 작업을 수행할 수 없다. <strong>(최소 권한 원칙)</strong></li>
</ol>
<h3 id="aws-resource-접근-제어-방식">AWS Resource 접근 제어 방식</h3>
<p>AWS 리소스에 대한 접근 제어는 크게 두 가지 관점에서 이뤄진다.</p>
<h4 id="자격-증명-기반-정책-identity-based-policies">자격 증명 기반 정책 (Identity-based Policies)</h4>
<p>사용자, 그룹, 역할과 같은 자격 증명에 정책을 연결하는 일반적인 방식이다. 이 정책은 &quot;이 사용자가 어떤 작업을 할 수 있는가?&quot;라는 관점에서 권한을 정의한다. 거의 모든 AWS 서비스에 적용된다.</p>
<h4 id="리소스-기반-정책-resource-based-policies">리소스 기반 정책 (Resource-based Policies)</h4>
<p>S3 버킷, SQS 큐, KMS 키 등 특정 리소스 자체에 직접 정책을 연결하는 방식이다. 이 정책은 &quot;이 리소스에 누가 접근할 수 있는가&quot;라는 관점에서 권한을 정의한다. 리소스 기반 정책에서는 권한을 부여받는 대상을 &#39;Principal&#39;이라는 키워드를 사용하여 명시적으로 지정해야 한다.</p>
<h3 id="권한-경계-permission-boundary">권한 경계 (Permission Boundary)</h3>
<p>권한 경계는 IAM 사용자나 역할이 가질 수 있는 권한의 최대 범위를 제한하기 위한 보안 기능이다. 최종적으로 사용자가 행사할 수 있는 권한은 자격 증명 기반 정책과 권한 경계의 교집합이 된다.
예를 들어, 특정 사용자에게 관리자 권한(AdministratorAccess) 정책을 부여하더라도, 그 사용자에게 S3 관련 작업만 허용하는 권한 경계를 설정해두면, 최종적으로 이 사용자는 S3 작업 권한만 가지게 된다.
사용자가 스스로 권한을 상승시키거나 의도치 않은 강력한 권한 행사하는 것을 방지한다.</p>
<blockquote>
<h3 id="실습">실습</h3>
</blockquote>
<ul>
<li>EC2, S3 서비스 권한이 없는 IAM 계정에서 EC2 인스턴스에 접근하면 아래와 같은 문구를 볼 수 있다.
<img src="https://velog.velcdn.com/images/yeon_ni/post/cf155446-4b2d-4c7f-9c9b-6839ef4bf8af/image.png" alt="">
<img src="https://velog.velcdn.com/images/yeon_ni/post/174846a6-b241-4a56-9e93-aab6dd6925e2/image.png" alt=""></li>
<li>권한을 부여하기 위해 IAM의 사용자에 들어간다.<ul>
<li>권한을 부여할 사용자를 선택하여 권한 추가를 누르면 아래와 같은 페이지를 볼 수 있다.
<img src="https://velog.velcdn.com/images/yeon_ni/post/2043fb7e-4cf2-416e-b97e-e485fb015066/image.png" alt=""></li>
</ul>
</li>
<li>권한 정책 탭에서 S3와 EC2 서비스에 관한 모든 권한을 허용하도록 하는 정책인 &#39;AmazonS3FullAccess&#39;와 &#39;AmazonEC2FullAccess&#39;를 선택해주었다.
<img src="https://velog.velcdn.com/images/yeon_ni/post/4076676f-9c87-405a-94bc-1ff29c3338b6/image.png" alt=""></li>
<li>다시 EC2와 S3 권한이 없었던 IAM 사용자 계정에 접속하게 되면 아래와 같이 오류 문구가 뜨지 않는 것을 확인할 수 있다.
<img src="https://velog.velcdn.com/images/yeon_ni/post/fa6cc2cc-a478-4851-8336-2f3a995f4a8e/image.png" alt="">
<img src="https://velog.velcdn.com/images/yeon_ni/post/491b6937-386b-4199-bedf-bd7c76e378df/image.png" alt=""></li>
</ul>
<h2 id="모니터링과-감사">모니터링과 감사</h2>
<h3 id="amazon-cloudwatch">Amazon CloudWatch</h3>
<p>AWS 리소스와 애플리케이션에 대한 성능 모니터링 서비스이다.</p>
<ul>
<li>지표(Metrics) : EC2의 CPU 사용률, 네트워크 트래픽 등 다양한 성능 지표를 수집하고 시각화한다.</li>
<li>경보(Alarms) : 특정 지표가 설정된 임계치를 넘으면 자동으로 알림을 보내거나 특정 조치를 취하게 할 수 있다<ul>
<li>예를 들어 CPU 사용률이 5분간 80% 이상 지속될 경우 이메일을 보내거나, EC2 인스턴스를 재시작하게끔 설정할 수 있다.</li>
</ul>
</li>
<li>로그(Logs) : 애플리케이션 및 시스템 로그를 중앙에서 수집하고 분석한다.</li>
</ul>
<h3 id="amazon-cloudtrail">Amazon CloudTrail</h3>
<p>AWS 계정 내에서 이루어지는 모든 활동(API 호출)을 기록하고 감사하는 서비스이다.</p>
<ul>
<li>역할 : &quot;누가, 언제, 어디서, 무엇을 했는가&quot;에 대한 로그를 남긴다.<ul>
<li>예를 들어, &quot;IAM 사용자 A가 2025년 10월 17일 20:00에 서울 리전에서 EC2 인스턴스를 중지시켰다&quot; 와 같은 활동이 기록된다.</li>
</ul>
</li>
<li>보안 분석, 리소스 변경 추적, 규정 준수 감사에 사용된다.</li>
</ul>
<h2 id="aws-billing-and-cost-management">AWS Billing and Cost Management</h2>
<h3 id="비용-관리-도구">비용 관리 도구</h3>
<p>AWS 사용 요금을 효과적으로 추적하고 관리하기 위한 도구 모음이다.</p>
<ul>
<li>청구서 (Bills) : 월별 사용 요금을 상세하게 확인할 수 있는 페이지이다.</li>
<li>AWS Cost Explorer : 시간 경과에 따른 비용과 사용량을 시각적인 그래포 나타내어 분석하고 필터링하여 비용 발생의 원인을 파악하는 데 유용하다.</li>
<li>AWS Budgets : 월별, 분기별, 연간 예산을 설정하고 실제 비용이나 예상 비용이 예산의 특정 비율을 초과하면 알림을 받도록 설정하여 예기치 않은 비용 발생을 방지할 수 있다.</li>
</ul>
<br>
<br>

<hr>
<blockquote>
<h3 id="reference">REFERENCE</h3>
</blockquote>
<ul>
<li>[그림으로 이해하는 AWS 구조와 기술]</li>
<li>AWS 공식 문서</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[클라우드 & 네트워크의 구조]]></title>
            <link>https://velog.io/@yeon_ni/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EA%B5%AC%EC%A1%B0</link>
            <guid>https://velog.io/@yeon_ni/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EA%B5%AC%EC%A1%B0</guid>
            <pubDate>Fri, 17 Oct 2025 00:43:00 GMT</pubDate>
            <description><![CDATA[<h2 id="클라우드와-온프레미스">클라우드와 온프레미스</h2>
<p>IT 인프라를 구축하고 운영하는 방식은 크게 온프레미스(On-premises) 방식과 클라우드 컴퓨팅(Cloud Computing) 방식으로 나눌 수 있다. </p>
<h3 id="온프레미스on-premises">온프레미스(on-premises)</h3>
<p>기업이 자체 데이터 센터나 전산실 내에 서버, 스토리지, 네트워크 장비 등 물리적인 IT 인프라를 직접 소유하고 구축하여 운영하는 방식을 말한다.</p>
<p>온프레미스의 장점은 자사에서 자유롭게 설계, 운영할 수 있다는 것이다. 보안 정책, 시스템 구성, 소프트웨어 배포 등을 비즈니스 요구사항에 맞춰 완벽하게 제어하고 자유롭게 설계할 수 있다. </p>
<p>그러나 초기 비용이 많이 들고, 유지 관리 활동을 기업 내부에서 수행하므로 숙련된 기술과 인력 투자가 필요하다.</p>
<p>온프레미스의 반대말은 클라우드가 아니고 오프프레미스(Off-premises)이다.</p>
<p>오프프레미스는 임대나 공용으로, 자사가 소유하거나 운영하는 것이 아니라 퍼블릭한 곳에 구축된 것을 사용하는 형태이다.</p>
<h3 id="클라우드"><strong>클라우드</strong></h3>
<ul>
<li>Amazon Web Services</li>
<li>Google Cloud Platform</li>
<li>Microsoft Azure</li>
<li>LG CNS Cloud Service &amp; Platform</li>
</ul>
<p>클라우드 컴퓨팅은 위와 같은 클라우드 서비스 제공업체(Vendor)가 IT 리소스를 필요에 따라 제공하는 서비스이다. </p>
<p><strong>클라우드 컴퓨팅 배포 모델</strong></p>
<p>클라우드는 누가 인프라를 소유하고 관리하는지, 누가 사용하는지에 따라 세 가지 모델로 나뉜다.</p>
<ul>
<li>Private Cloud : 프라이빗 클라우드(폐쇄형 클라우드)<ul>
<li>단일 조직(기업) 전용으로 구축되고 사용되는 클라우드 환경이다. 물리적 인프라는 조직의 자체 데이터 센터(on-premises private cloud)에 위치할 수도 있고 제3자 업체에 호스팅될 수도 있다.</li>
<li>조직 내 자체 구성 : 인프라 및 인력 보유 필요, 규정준수 도움</li>
<li>이를 위해 OpenStack, VMware Cloud Foundation 같은 솔루션이 사용된다.</li>
</ul>
</li>
<li>Public Cloud : 퍼블릭 클라우드(개방형 클라우드)<ul>
<li>클라우드 제공업체가 하드웨어 인프라 전체를 소유, 관리, 운영하며 인터넷을 통해 여러 고객에게 컴퓨팅 리소스를 공개적으로 제공하는 모델이다.</li>
<li>조직 내 인프라 관리 불필요, 위치와 규모 구애 없음, 유지 및 관리 용이, 확장 용이</li>
<li>AWS, Azure, GCP</li>
</ul>
</li>
<li>Hybrid Cloud : 하이브리드 클라우드(혼합형 클라우드)<ul>
<li>온프레미스 인프라와 퍼블릭 클라우드를 기술적으로 연결하여 함께 사용하는 모델이다. 각 인프라의 고유 특성을 유지하며 데이터와 애플리케이션을 상호 연동할 수 있다.</li>
</ul>
</li>
</ul>
<h2 id="가상화와-분산-처리">가상화와 분산 처리</h2>
<h3 id="서버-가상화server-virtualization">서버 가상화(Server Virtualization)</h3>
<p>물리적인 서버에 가상화 소프트웨어를 사용하여 단일 물리적 서버의 자원(CPU, 메모리, 스토리지)을 여러 대의 논리적 서버 (가상서버)로 분할하는 기술이다. 생성된 각각의 논리적 서버를 가상 머신(VM)이라고 부른다.</p>
<ul>
<li>서버 가상화 소프트웨어 : VMware ESXi, Linux KVM, MS Hyper-V, Orcle VirtualBox</li>
</ul>
<h3 id="분산-처리distributed-processing">분산 처리(Distributed Processing)</h3>
<p>클라이언트의 요청이 있을 때, 로드 밸런서가 서비스 분산 요청을 해주는 것이다. 애플리케이션 가용성을 높일 수 있다.</p>
<ul>
<li>AWS ELB(Elastic Load Balancing)가 있다. ELB는 들어오는 트래픽을 여러 EC2 인스턴스에 걸쳐 분산시켜 특정 서버에 과부하 걸리는 것을 방지한다.</li>
<li>ELB는 주기적으로 각 인스턴스의 상태를 확인(health check)한다. 정상적으로 작동하는 나머지 서버로만 트래픽을 보내 장애를 극복한다.
⇒ 서버 1대가 망가져도 남은 서버로 기능할 수 있다.</li>
</ul>
<h3 id="중복-서버">중복 서버</h3>
<p>AWS 서비스들은 내구성과 가용성을 높이기 위해 설계 단계부터 서비스의 작동 범위가 정해져 있다.
서비스 레벨(범위)이 존재하는데, 모든 서비스들은 서비스 레벨이 있다.</p>
<ul>
<li>S3(Simple Storage Service): 리전 레벨 서비스<ul>
<li>99.999999999%(11-nines)의 내구성을 제공하도록 설계되어 있다. 사용자가 특정 리전에 데이터를 업로드하면, AWS는 해당 데이터를 그 리전 내에 있는 최소 3개 이상의 물리적으로 분리된 가용 영역에 자동으로 복제하여 저장한다.</li>
</ul>
</li>
<li>EC2 &amp; EBS : 가용 영역 레벨 서비스<ul>
<li>EC2 인스턴스는 사용자가 지정한 단일 가용 영역 내에서 생성된다. 만약 해당 AZ 안에서 장애가 발생하면, 그 안의 EC2 인스턴스도 영향을 받는다.</li>
<li>EBS : EC2에 종속되어 있어서 동일한 AZ에 종속되어 있다. </li>
<li>해당 가용 영역 안에 여러 카피본을 두고 있다.</li>
</ul>
</li>
</ul>
<h3 id="saas-paas-iaas의-차이">SaaS, PaaS, IaaS의 차이</h3>
<ul>
<li>SaaS (Software as a Service)<ul>
<li>애플리케이션 - 플랫폼(OS) - 인프라(하드웨어)</li>
<li>완성된 소프트웨어를 구독하는 모델</li>
<li>Google Workspace, Microsoft 365</li>
</ul>
</li>
<li>PaaS (Platform as a Service)<ul>
<li>플랫폼(OS) - 인프라(하드웨어)</li>
<li>플랫폼을 빌려 쓰는 모델로, 사용자는 애플리케이션 코드, 데이터를 관리하게 되어 애플리케이션 개발에만 집중할 수 있다.</li>
<li>AWS Elastic Beanstalk, Google App Engine</li>
</ul>
</li>
<li>IaaS (Infrastructure as a Service)<ul>
<li>인프라(하드웨어)</li>
<li>가장 높은 수준의 유연성과 제어권을 제공한다.</li>
<li>AWS EC2, Google Compute Engine</li>
</ul>
</li>
</ul>
<h2 id="서버와-인스턴스">서버와 인스턴스</h2>
<h3 id="서버와-클라이언트">서버와 클라이언트</h3>
<ul>
<li><strong>서버</strong> : 어떤 서비스를 제공하는 주체로, 네트워크를 통해 클라이언트에게 파일, 데이터, 서비스 등을 제공한다.</li>
<li><strong>클라이언트</strong> : 서비스를 요청하는 주체로, 서버에게 서비스를 요청하고 받는 주체이다.<h3 id="서버와-인스턴스-1">서버와 인스턴스</h3>
컴퓨터 한 대에 가상화 기능으로 서버 여러 개를 같이 사용할 수 있다.</li>
<li><strong>서버</strong> : 넓은 의미에서는 서비스를 제공하는 모든 컴퓨터(물리적/가상)를 지칭한다. 웹 서버, DB 서버와 같이 특정 기능을 제공하는 소프트웨어를 의미하기도 한다.</li>
<li><strong>인스턴스</strong> : 클라우드 컴퓨팅 환경에서 사용자에게 할당된 하나의 가상 서버를 말한다. <ul>
<li>AWS EC2 인스턴스는 AWS의 데이터 센터에 있는 물리 서버의 자원 일부를 할당받아 생성된 독립적인 가상 컴퓨터를 말한다.</li>
<li>사용자는 &#39;인스턴스&#39;라는 가상의 컴퓨터를 빌린 후, 그 위에 원하는 &#39;서버 운영체제&#39;를 설치하고 그 위에 &#39;특정 서버 소프트웨어&#39;를 설치하여 원하는 기능을 수행하도록 한다.</li>
</ul>
</li>
</ul>
<br>

<hr>
<blockquote>
<h3 id="reference">REFERENCE</h3>
</blockquote>
<ul>
<li>[그림으로 이해하는 AWS 구조와 기술]</li>
<li>AWS 공식 문서</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[AWS 기초]]></title>
            <link>https://velog.io/@yeon_ni/AWS-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@yeon_ni/AWS-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Thu, 16 Oct 2025 08:51:41 GMT</pubDate>
            <description><![CDATA[<h2 id="아마존-웹-서비스란">아마존 웹 서비스란?</h2>
<p>클라우드 컴퓨팅 vs 기존:  on-premise 기반의 Data center, 전산실</p>
<ul>
<li>인터넷을 통해 어디에 있든지</li>
<li>IT 리소스 : 하드웨어, 소프트웨어</li>
<li>On-demand : 요구 시 즉시 구성할 수 있다.</li>
<li>종량 요금제 : 용량 산정 계획이 선수된다. 필요하다고 생각한 만큼만 쓸 수 있다.
유연성 → 1회용품 (자동화 도구: Cloudformation)</li>
</ul>
<h3 id="목적에-따른-서비스-제공">목적에 따른 서비스 제공</h3>
<p>웹서버를 구축하고 싶을 때</p>
<ul>
<li>서버 : EC2</li>
<li>서버 OS : AMI</li>
<li>IP : Elastic IP</li>
<li>스토리지 : S3</li>
<li>도메인 : Route 53</li>
<li>DB 서버 : RDS</li>
</ul>
<p>콘텐츠를 배포하고 싶을 때</p>
<ul>
<li>서버 : EC2</li>
<li>캐시 서버 : CloudFront</li>
<li>IP 주소 : Elastic IP</li>
<li>도메인 : Route 53</li>
</ul>
<p>머신러닝을 개발하고 싶을 때</p>
<ul>
<li>머신러닝 모델 : Machine Learning, SageMaker</li>
<li>이미지 동영상 인식 : Rekognition</li>
<li>음성 인식 : Transcribe, Lex</li>
</ul>
<h2 id="aws의-서비스-및-사용-방법">AWS의 서비스 및 사용 방법</h2>
<h3 id="aws의-대표적인-서비스">AWS의 대표적인 서비스</h3>
<h4 id="amazon-ec2">Amazon EC2</h4>
<p>Amazon Elastic Compute Cloud(Amazon EC2)는 컴퓨팅 용량을 제공하는 서비스이다. 서버, OS, 소프트웨어 등을 사용할 수 있다. 원하는 사양으로 자유롭게 시스템을 구축하고 소프트웨어를 설치할 수 있다. </p>
<h4 id="amazon-s3">Amazon S3</h4>
<p>Amazon Simple Storage Service(Amazon S3)는 객체 스토리지 서비스이다. 웹 서버나 파일 서버용 파일(객체)을 보관하는 장소(저장소)로 사용할 수 있다. 다른 서비스와 연동하는 기능이 있다. </p>
<h4 id="amazon-vpc">Amazon VPC</h4>
<p>Amazon Virtual Private Cloud(Amazon VPC)는 AWS 계정 전용 가상 네트워크이다. 네트워크의 서브넷의 범위, 라우팅 테이블, 네트워크 게이트웨이 등을 설정하고 가상 네트워크 환경을 구성한다.</p>
<hr>
<p>장애가 발생한 가용 영역이 발생해도 정상적인 가용 영역에 대해 영향을 주지 않는다. 데이터 센터를 중복해서 지정해주지 않기 때문에 가용 영역 간의 영향은 없다.</p>
<p>물리적 장애 격리 조치가 되어 있고, AZ 간의 물리적 네트워크로 연결되어 있다. 서버를 배포할 때, 한 곳의 가용 영역에 서버를 배포할 수 있다.</p>
<h3 id="리전">리전</h3>
<ul>
<li>이런 가용 영역을 묶어서 리전이라고 한다.</li>
<li>서울 리전은 두 개의 가용 영역이었으나 현재는 네 개의 가용 영역</li>
<li>내가 운영하고자 하는 서비스가 배포될(클라이언트가 있는) 지역 근처의 리전을 선택하면 좋음<ul>
<li>서비스를 빠르게 제공하기 위한 것이다.</li>
</ul>
</li>
<li>리전과 가용 영역을 선택할 수 있고, 데이터 센터 위치는 선택할 수 없다.</li>
<li>리전마다 비용이 다를 수 있다.</li>
</ul>
<h3 id="가용-영역">가용 영역</h3>
<ul>
<li>아마존이 소유하고 있는 데이터 센터가 여기저기 있다.</li>
<li>같은 지역에 있는 데이터 센터들을 묶어서 부르는 논리적인 용어</li>
</ul>
<h3 id="엣지-로케이션">엣지 로케이션</h3>
<ul>
<li>전 세계 여기저기에 있는 데이터 센터들</li>
<li>리전을 구성하는 데이터 센터들과는 별도의 데이터 센터들이다.</li>
<li>물리적인 인프라</li>
<li>캐싱만을 위한 데이터 센터를 만들자는 취지</li>
</ul>
<h3 id="aws의-쉬운-접근-및-사용">AWS의 쉬운 접근 및 사용</h3>
<ul>
<li>관리 콘솔(GUI)<ul>
<li>사용자 및 그룹 만들기</li>
<li>권한 및 보안 설정</li>
<li>각종 서비스의 구성 변경</li>
<li>서버 및 데이터베이스의 시작, 종료</li>
<li>백업</li>
</ul>
</li>
<li>매니지드 서비스
→ 관리형 서비스 : AWS에서 알아서 작업을 관리해준다.<ul>
<li>자동 백업</li>
<li>자동 알림</li>
<li>모니터링</li>
<li>패치 관리</li>
<li>보안</li>
<li>장애를 대비한 이중화</li>
</ul>
</li>
</ul>
<h2 id="aws의-비용">AWS의 비용</h2>
<p>대부분 서비스가 종량제라 사용할 만큼 임대한 후, 요금은 사용한 만큼 지불한다. 돌발적으로 접속이 늘어나는 경우에 장점이 많다.</p>
<blockquote>
<p>💡 <strong>EX) EC2 요금 산출 방법</strong>
인스턴스 사용량(가동시간) X  단가 (0.0136$/H X 24H X 30d)</p>
</blockquote>
<ul>
<li>EBS 요금(용량 X 단가) ( 0.12$/1GB X 30GB)</li>
<li>통신료 (0.114$/1GB X 150GB)</li>
</ul>
<br>
<br>

<hr>
<blockquote>
<h4 id="reference">REFERENCE</h4>
</blockquote>
<ul>
<li>그림으로 이해하는 AWS 구조와 기술</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Network 3]]></title>
            <link>https://velog.io/@yeon_ni/Network-3</link>
            <guid>https://velog.io/@yeon_ni/Network-3</guid>
            <pubDate>Fri, 10 Oct 2025 08:27:31 GMT</pubDate>
            <description><![CDATA[<h2 id="intro">Intro.</h2>
<p><strong>트래픽 제어를 위한 ACLs(Access Control Lists)</strong></p>
<h2 id="aclsaccess-control-lists">ACLs(Access Control Lists)</h2>
<p>네트워크 장비를 기준으로 </p>
<ol>
<li>네트워크 장비를 통과하는 트래픽</li>
<li>네트워크 장비가 Source/Destination이 되는 트래픽(telnet, ssh)</li>
</ol>
<p>-&gt; ACLs에서 주가 되는 트래픽은 1번</p>
<h3 id="access-lists-특징">Access Lists 특징</h3>
<ul>
<li>ACL 문장 기반 : <ul>
<li>Top-down 처리 : 각각의 규칙에 대해 1번부터 하위로 내려가면서 확인을 하게 된다.</li>
<li>First-Match : 위에서부터 비교해서 내려가다가 특정 조건에 부합하는 규칙을 찾게 되면, 그 밑의 규칙은 확인하지 않는다.</li>
<li><strong>암묵적 deny</strong> : 규칙을 주었고, 가장 하단까지 내려갔을 때 조건에 대해 하나도 해당하지 않는다면 그 외의 나머지에 대해서는 굳이 deny라고 명시하지 않아도 암묵적으로 deny라고 처리하게 된다.</li>
<li>프로토콜별/방향별/인터페이스별로 하나의 Access List를 적용할 수 있다.</li>
</ul>
</li>
<li>전송 패킷 필터</li>
</ul>
<h4 id="acl이-사용되는-곳">ACL이 사용되는 곳</h4>
<p>주소의 범위를 표현하는 용도로 사용되기 때문에 이 주소를 가지고 다른 기술들과 함께 사용할 수 있다.</p>
<ul>
<li>패킷 필터링</li>
<li>NAT</li>
<li>QoS, 경로 조정 등</li>
</ul>
<h4 id="access-list-종류">Access List 종류</h4>
<ul>
<li>조건식에 따라<ul>
<li>Standard ACL<ul>
<li>IP 정보를 이용, 패킷 필터</li>
</ul>
</li>
<li>Extended ACL<ul>
<li>IP + Port 정보 사용, 포트 필터</li>
</ul>
</li>
</ul>
</li>
<li>ACL을 구분하는 방식에 따라<ul>
<li>Numbered ACL<ul>
<li>VLAN과 같이 초기에는 numbered를 부여했었지만</li>
</ul>
</li>
<li>Named ACL<ul>
<li>이후 Named를 부여해준다</li>
</ul>
</li>
</ul>
</li>
<li>적용 방향에 따라<ul>
<li>Inbound ACL<ul>
<li>라우터를 기준으로 들어오는 방향</li>
</ul>
</li>
<li>Outbound ACL<ul>
<li>라우터를 기준으로 나가는 방향</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="standard-access-list">Standard Access List</h3>
<p>IP 정보를 기준으로 하는데, Source 주소만을 보고 결정한다.</p>
<ul>
<li>조건식 : Source 주소만 확인</li>
<li>ACL의 숫자 범위<ul>
<li>1 ~ 99</li>
<li>1300 ~ 1999</li>
</ul>
</li>
<li>적용 위치<ul>
<li>목적지에 가까운 곳에서부터</li>
<li>Outbound Interface로</li>
</ul>
</li>
<li>Protocol : IPv4</li>
<li>설정 단계<ul>
<li>ACL 생성하기 : global configuration 모드에서<ul>
<li><code>access-list [ACL의 숫자 번호 부여] [허용/차단] condition</code></li>
</ul>
</li>
<li>ACL 적용하기<ul>
<li>라우터의 적용하고자 하는 해당 인터페이스에 가서 적용</li>
<li><code>[protocol: ip] access-group [번호] [in/out]</code></li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote>
<h4 id="실습0">실습0</h4>
</blockquote>
<pre><code>조건
- 192.168.1.0/24와 192.168.2.0/24는 서로 접근 허용
- Internet 망에서 내부망에 접근 불허
- Standard ACL 적용</code></pre><pre><code class="language-bash">! Src IP가 192.168.1.0/24 에서부터 출발하는 데이터를 1번으로 줬고 허용하겠다
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255 
! Src IP가 192.168.2.0/24 에서부터 출발하는 데이터를 1번으로 줬고 허용하겠다
R1(config)#access-list 1 permit 192.168.2.0 0.0.0.255 
! 각 인터페이스에 적용하기 위해 설정
R1(config)#int e0/0
! 이더넷 0/0 으로 나가는 것을 허용하겠다.
R1(config-if)#ip access-group 1 out
R1(config-if)#int e0/1
! 이더넷 0/1로 나가는 것을 허용하겠다.
R2(config-if)#ip access-group 1 out</code></pre>
<ul>
<li>192.168.1.0 - 255.255.255.0 =&gt; 0.0.0.255
Inverse mask == Wildcard mask</li>
<li>Wildcard mask의 bit 1은 Don&#39;t care</li>
</ul>
<p>0.0.0.255라면 host (0~255)에 어떤 IP가 와도 신경쓰지 않겠다는 의미</p>
<ul>
<li><p>Wildcard mask의 bit 0은 반드시 일치해야 한다.</p>
</li>
<li><p>Internet 망에서 내부망에 접근 불허 : 암묵적 deny라는 것이 있기 때문에 따로 명시하지 않아도 deny된다. </p>
</li>
</ul>
<blockquote>
<h3 id="실습1">실습1</h3>
</blockquote>
<pre><code>- 192.168.2.80/24에서 192.168.1.0/24에 접근 불허
- 나머지 다 허용
- Standard ACL을 적용</code></pre><p><img src="https://velog.velcdn.com/images/yeon_ni/post/3307766f-6c52-4610-a5d6-b4d4ef2346ae/image.png" alt=""></p>
<ul>
<li>엔드포인트 IP 설정</li>
<li>R1 초기 설정<pre><code class="language-bash">R1&gt;en
R1#conf t
R1(config)#int f0/0
R1(config-if)#ip addr 192.168.1.1 255.255.255.0
R1(config-if)#int f0/1
R1(config-if)#ip addr 192.168.2.1 255.255.255.0
R1(config)#int e1/0
R1(config-if)#ip addr 192.168.12.1 255.255.255.0
R1(config-if)#no sh
R1#sh ip int brie
Interface              IP-Address      OK? Method Status                Protocol
FastEthernet0/0        192.168.1.1     YES manual up                    up
FastEthernet0/1        192.168.2.1     YES manual up                    up
Ethernet1/0            192.168.12.1    YES manual up                    up</code></pre>
</li>
<li>R2 초기 설정<pre><code class="language-bash">R2(config)#hostname Internet
Internet(config)#int f0/0
Internet(config-if)#ip addr 192.168.12.2 255.255.255.0
Internet(config-if)#no shut
Internet(config-if)#exit
Internet(config)#ip route 0.0.0.0 0.0.0.0 192.168.12.1</code></pre>
</li>
<li>ACL 설정<pre><code class="language-bash">! R1
! 스탠다드인 경우 0.0.0.0 안 넣어도 됨
R1(config)#access-list 1 deny 192.168.2.80
R1(config)#do sh acce.ss-list
Standard IP access list 1
  10 deny host 192.168.2.80
R1(config-if)#int f0/0
R1(config-if)#ip access-group 1 out
! C, D에서 A로 ping 해보자
! 암묵적 deny 규칙이 있기 때문에 permit을 명시해줘야 한다
R1(config)#access-list 1 permit 0.0.0.0 255.255.255.255
R1(config)#do sh access-list
Standard IP access list 1
  10 deny host 192.168.2.80 (4 match(es))
  20 permit any
! C와 D에서 다시 A로 ping해보자</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Network 2]]></title>
            <link>https://velog.io/@yeon_ni/Network-2</link>
            <guid>https://velog.io/@yeon_ni/Network-2</guid>
            <pubDate>Tue, 07 Oct 2025 08:01:37 GMT</pubDate>
            <description><![CDATA[<h2 id="ssh-구성">SSH 구성</h2>
<h3 id="ssh-secure-shell-특징">SSH (Secure Shell) 특징</h3>
<ul>
<li>원격 접근 안전하게 가능</li>
<li>Username, password 요구</li>
<li>로컬DB를 이용한 인증 가능</li>
<li>암호화된 형태로 전송</li>
</ul>
<h4 id="ssh-구성-방식">SSH 구성 방식</h4>
<ol>
<li>ssh 설정 확인 (#sh ip ssh)</li>
<li>도메인 설정( (config)# ip domain-name cisco.com)</li>
<li>RSA key pair 생성 및 ssh enable ((config)#crypto key generate rsa)</li>
<li>line vty 설정 변경</li>
</ol>
<ul>
<li>sw(config)# line vty 0 15</li>
<li>sw(config-line)# login local</li>
<li>sw(config-line)# transport input ssh</li>
</ul>
<ol start="5">
<li>username/password 설정 및 ssh 설정 확인</li>
</ol>
<blockquote>
<h3 id="실습0">실습0</h3>
</blockquote>
<h4 id="router1에서-ssh-설정하기">Router1에서 SSH 설정하기</h4>
<pre><code class="language-bash">! domain 설정
R1(config)#ip domain-name test.com
! RSA key pair 생성
R1(config)#crypto key generate rsa
The name for the keys will be: R1.test.com
Choose the size of the key modulus in the range of 360 to 2048 for your
  General Purpose Keys. Choosing a key modulus greater than 512 may take
  a few minutes.
  ! [Enter] 키 눌러서 default 값으로 설정
How many bits in the modulus [512]: 
% Generating 512 bit RSA keys, keys will be non-exportable...[OK]
! line vty 설정 변경
! 최신 버전은 2인데, default값으로 설정했기 떄문에 1.5버전으로 적용됨
R1(config)#line vty 0 15
*3 1 0:2:0.412:  RSA key size needs to be at least 768 bits for ssh version 2
*3 1 0:2:0.412:  %SSH-5-ENABLED: SSH 1.5 has been enabled 
R1(config-line)#transport input ssh
R1(config-line)#end
R1#
%SYS-5-CONFIG_I: Configured from console by console
! ssh 설정 확인
R1#show ip ssh
SSH Enabled - version 1.5
Authentication timeout: 120 secs; Authentication retries: 3</code></pre>
<h4 id="router1-ssh-설정-후-router-2에서-접근하기">Router1 ssh 설정 후, Router 2에서 접근하기</h4>
<pre><code class="language-bash">! ssh -l [username] [ip addr]
R2#ssh -l user1 192.168.1.1
Open
Password: </code></pre>
<h2 id="review">review</h2>
<ul>
<li>L1 장비 - 허브<ul>
<li>동작 방식: Flooding</li>
<li>허브는 모든 데이터를 모든 포트로 단순히 전달하는 장비이다. 주소 개념이 없다.</li>
</ul>
</li>
<li>L2 장비 - 스위치<ul>
<li>동작 방식: L2 Switching</li>
<li>MAC 주소를 보고 데이터를 전달한다. 각 포트에 어떤 장비가 연결되어 있는 MAC address table에 기록해둔다.</li>
</ul>
</li>
<li>L3 장비 - 라우터, L3 스위치<ul>
<li>동작 방식: L3 Switching</li>
<li>IP address로 시스템을 구분한다. 다른 네트워크  간 통신을 가능하게 한다.</li>
</ul>
</li>
<li>L4 장비 - L4 스위치, Load Balancer<ul>
<li>동작 방식: L4 Switching</li>
<li>L3의 IP 주소와 함께 Port 번호를 확인한다. 이를 통해 하나의 시스템 위에 있는 서비스를 구분하기 위한 요청을 처리한다.</li>
<li>기능<ul>
<li>Load Balancing : 여러 서버에 들어오는 트래픽을 IP와 포트 번호를 보고 분산시켜 서버의 과부하를 막는다.</li>
<li>보안 : 특정 포트로 들어오는 비정상적인 접근 차단하는 등 보안 정책을 적용할 수 있다.</li>
</ul>
</li>
</ul>
</li>
<li>L7 장비 - L7 스위치, ADC<ul>
<li>동작 방식: L7 Switching (콘텐츠 스위칭)</li>
<li>데이터 패킷의 내용인 콘텐츠까지 확인한다. 같은 웹 서버 요청이라도 URL, HTTP 헤더, 쿠키 정보 등을 분석하여 다르게 처리한다.</li>
<li>기능<ul>
<li>Load Balancing : 이미지 파일 요청은 이미지로, 동영상 요청은 비디오 서버로 보내는 등 콘텐츠 종류에 따라 트래픽을 정교하게 분산한다.</li>
<li>보안 : 애플리케이션 레벨의 공격(SQL Injection, DDoS 등)을 탐지하고 차단하는 웹 방화벽 기능을 수행한다.</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="dhcp">DHCP</h3>
<pre><code class="language-bash">Client --------Relay Agent --------Server</code></pre>
<p>DHCP는 브로드캐스트 패킷으로 전송이 되기 때문에 client와 server가 반드시 같은 네트워크 상에 존재해야 한다.
하지만, Relay Agent를 사용함으로써 별도의 서버를 두지 않고서 이를 해결할 수 있게 된다.
Relay Agent는 서로 다른 네트워크에 있는 클라이언트의 DHCP 요청(브로드캐스트)을 수신해 DHCP 서버로 전달(유니캐스트)하는 L3 장비이다.</p>
<ul>
<li>중앙 서버 팜(Server Farm) : 각 네트워크마다 DHCP 서버를 둘 필요 없이, 서버 팜에서 여러 네트워크의 IP 주소를 통합적으로 관리할 수 있게 된다.</li>
<li>보안 강화 : 허가되지 않은 사설 DHCP 서버인 &#39;Rogue DHCP 서버&#39;의 활동을 효과적으로 차단하고 관리할 수 있다.</li>
</ul>
<h4 id="dhcp-snooping">DHCP snooping</h4>
<ul>
<li>IP starvation attack : IP가 필요없음에도 불구하고 ip를 부여해달라고 해서 dhcp가 가지고 있는 pool을 고갈시켜서 원활한 서비스가 어렵도록 하는 공격
-&gt; rate limit을 걸어서 내가 지정한 limit보다 많은 요청이 들어오면 포트를 차단하는 정책을 통해 IP Starvation attack을 방어</li>
</ul>
<h3 id="dns">DNS</h3>
<pre><code class="language-bash">Client --------DNS Forwarder --------Server</code></pre>
<p>네트워크 내부의 모든 기기가 외부 DNS 서버에 요청을 보내게 된다면 반복적인 요청으로 트래픽이 증가하게 되고, 클라이언트 자체 정보에 대한 노출이 발생할 수 있게 된다.
이 문제를 해결하기 위해 DNS Forwarder를 사용한다.
DNS Forwarder는 내부 네트워크와 외부 DNS 서버 사이에 위치하는 중계 서버이다.</p>
<ul>
<li>Caching을 통한 트래픽 감소
내부 클라이언트가 특정 사이트에 대한 DNS 조회를 요청하면, 포워더가 대신 외부 DNS 서버에 물어보게 된다. 그리고 해당 결과를 자신의 cache에 저장을 한다. 이후 다른 클라이언트가 또 다시 같은 사이트에 대한 정보를 요청할 경우, 캐시에 저장되어 있던 정보를 바로 전달해준다. 이로 인해 응답 속도가 빨라지고 전체적인 트래픽이 감소하게 된다.</li>
<li>클라이언트 정보 노출 최소화
포워더를 사용하면 모든 DNS 요청이 포워더의 IP 주소로 외부 서버에 전달된다. 외부에서는 어떤 클라이언트가 요청했는지 알 수 없기 때문에 내부 네트워크의 IP 주소와 같은 정보 노출을 최소화할 수 있다.</li>
</ul>
<h4 id="dns-forwarder와-유사한-기능으로는-proxy">DNS Forwarder와 유사한 기능으로는 <strong>Proxy</strong></h4>
<ul>
<li>클라이언트의 요청을 대신 처리해주고 실제 클라이언트의 정보를 알 수 없도록 해준다.</li>
<li>웹 페이지 접속(HTTP/HTTPS)과 같은 실제 웹 콘텐츠 요청을 처리해준다.</li>
</ul>
<h3 id="firewall">FireWall</h3>
<p>방화벽은 미리 정해진 보안 규칙에 따라 네트워크 트래픽을 감시하고 제어하는 보안 시스템이다.</p>
<h4 id="network-firewall-경계-방화벽">Network Firewall (경계 방화벽)</h4>
<p>외부망에서 내부망으로 들어오는 트래픽을 차단한다.
방화벽을 통과한 트래픽은 내부망 안에서 자유롭게 이동할 수 있다. 내부 시스템 간의 통신은 감시하거나 제어하기 어렵다.</p>
<h4 id="host--basedsystem-firewall">Host- based(System) Firewall</h4>
<p>경계 방화벽의 한계를 보완하기 위해 개별 시스템(서버, PC 등)에 직접 설치하는 방화벽이다. 대표적인 예시로는 Windows FireWall이 있다.</p>
<h4 id="가상화-환경과-방화벽">가상화 환경과 방화벽</h4>
<p>오늘날 클라우드와 가상화 환경이 보편화되면서 많은 가상 머신이 동적으로 생성, 복제, 이동하고 있기 때문에 트래픽 병목 현상이나 정책 관리의 어려움을 겪게 된다.</p>
<p>이러한 문제를 해결하기 위해 분산 방화벽(Distributed Firewall) 기술이 등장한다. 예를 들어 VMware의 NSX 솔루션 등이 있다. </p>
<h4 id="vm">VM</h4>
<p>NOS 대신 VOS라고 하는 Virtual OS가 설치된다.
가상화 환경을 지원해준다. Hypervisor라고도 한다.</p>
<ul>
<li>Dare metal : 물리적인 시스템에 직접 설치하는 방식<ul>
<li>Windows의 Hyper-V, Linux의 KVM</li>
</ul>
</li>
<li>Host based : Windows 기반의 특정 어플리케이션을 설치하는 방식<ul>
<li>Test 환경에서 사용하는 것으로 VM Workstation, Virtual Box -&gt; nested 환경</li>
<li>가상화 환경 안의 가상화 환경 같은 것</li>
</ul>
</li>
</ul>
<p>관리해주는 매니지먼트 시스템을 두게 된다.</p>
<ul>
<li>vCenter Server (중앙집중관리)<ul>
<li>중간에서 Configuration, Monitoring, trouble shooting</li>
</ul>
</li>
</ul>
<p>-&gt; vCenter server에서 F/W에 대한 규칙을 정의하게 되면, 모든 host로 분산된다. VM의 앞단에 firewall이 배치된다.</p>
<p>서버대로 그룹으로 묶게 되고, 각 그룹에 대한 정책을 정의한다. 정책과 관련되어진 가장 기본적인 룰을 Access List라고 한다.</p>
<h4 id="container">Container</h4>
<p>먼저 가상화에는 두가지가 있다.</p>
<ul>
<li>Full Virtualization : 완벽하게 가상화를 지원한다. 각각의 VM이 물리적인 시스템이라고 생각한다. <ul>
<li>VM의 ESXi, Hyper-V</li>
<li>VM의 box를 정의하고, 그 위에 OS를 설치한다.</li>
<li>그 밑에 애플리케이션 등을 설치하는 방식...</li>
<li>리소스 관리하는 커널 : Virutal CPU, Memory, Hard disk 등등..</li>
</ul>
</li>
<li>Para Virtualization</li>
</ul>
<p>반면에 <strong>컨테이너는 Application 중심</strong>이다.
그 애플리케이션 개발 환경에서 세팅이 된 것이다.
애플리케이션이 실행되기 위한 라이브러리, 바이너리 파일까지 모든 환경을 지원해주기 위한  환경을 같이 탑재해주는 것이다.</p>
]]></description>
        </item>
    </channel>
</rss>