SW 전공

SW 전공 이론 학습

이론 목록으로 돌아가기

네트워크·시스템·웹 보안

네트워크 공격과 보안장비, 시스템 하드닝, 웹 취약점과 시큐어코딩 대응을 학습한다.

예상 읽기 8

1. 공격면과 심층방어

공격면은 공격자가 접근할 수 있는 계정, 포트, API, 프로그램, 외부 연계, 공급망 등의 전체 범위이다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
Internet
   │
[경계 방화벽]
   │
[WAF·Reverse Proxy]
   │
[응용 서버] ──► [DB]
   │
[내부 API·메시지]
   │
[관리망·운영도구]

한 장비에만 의존하지 않고 네트워크 분리, 인증, 최소권한, 보안코딩, 모니터링, 백업을 겹쳐 적용한다.

2. 대표 네트워크 공격

공격핵심
스니핑통신 내용을 도청
스푸핑IP·ARP·DNS·신원 등을 위조
재전송획득한 정상 메시지를 다시 사용
세션 하이재킹유효한 세션을 탈취
DoS한 주체가 자원·대역폭 고갈
DDoS다수 감염 시스템이 분산 공격
DRDoS반사·증폭 가능한 서버를 이용
중간자 공격통신 사이에 끼어 도청·변조
CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
공격자 ─ 위조된 피해자 주소 ─► 반사 서버 다수
피해자 ◄──── 증폭된 응답 ───── 반사 서버 다수

대응은 소스 검증, 속도 제한, 필터링, 비정상 트래픽 탐지, 용량·분산 대응, 안전한 프로토콜 설정을 조합한다.

3. 방화벽·IDS·IPS·WAF

장비주 역할
방화벽주소·포트·상태·응용 규칙으로 통신 허용/차단
IDS의심 활동 탐지·경보
IPS경로상에서 탐지 후 차단
WAFHTTP 요청과 웹 공격 패턴을 응용 계층에서 검사
프록시클라이언트와 서버 사이 중계·정책·캐시
VPN신뢰하기 어려운 네트워크 위에 암호화 터널 구성
CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
외부
  │
[Screening Router]
  │
[DMZ: 공개 Web·DNS]
  │
[내부 방화벽]
  │
내부 업무망

제공 자료의 스크린드 서브넷 구조는 DMZ를 둔 다층 방화벽 구조로 이해한다.

방화벽이 허용한 정상 포트 안에서도 웹 취약점 공격이 들어올 수 있으므로 WAF와 응용 보안이 별도로 필요하다.

4. 네트워크 분리와 Zero Trust 기초

  • 외부·DMZ·업무·DB·관리망을 목적에 따라 분리
  • 관리 포트는 제한된 관리망에서만 접근
  • 동서 트래픽도 필요한 서비스만 허용
  • 장치·사용자·서비스 신원을 지속 검증
  • 네트워크 위치만으로 신뢰하지 않음
  • 최소권한과 세션별 위험 평가

Zero Trust는 특정 제품이 아니라 “명시적으로 검증하고 최소권한을 적용하며 침해를 가정한다”는 보안 접근이다.

5. 시스템 하드닝

하드닝은 불필요한 기능과 공격면을 줄이고 안전한 설정을 적용하는 활동이다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
기본 설치
  ↓
불필요 서비스·포트 제거
  ↓
계정·권한·비밀번호 정책
  ↓
패치·안전한 설정
  ↓
로그·감사·무결성 점검
  ↓
기준선 저장·정기 검증

주요 항목:

  • 기본·공유계정 제거 또는 통제
  • 관리자 원격접속 제한
  • 패치와 취약 구성 조치
  • 파일·디렉터리 권한 최소화
  • 시간 동기화
  • 보안로그 중앙 전송
  • 실행 파일·설정 변경 감시
  • 백신·EDR 등 엔드포인트 통제

6. 악성코드

종류특징
바이러스다른 파일·프로그램에 기생
네트워크 등을 통해 자기 복제
트로이목마정상 프로그램처럼 위장
랜섬웨어데이터 암호화·서비스 방해 후 금전 요구
루트킷높은 권한 확보와 존재 은닉
백도어정상 통제를 우회하는 비밀 접근
스파이웨어·키로거사용자 정보와 입력 탈취
원격 명령을 받아 DDoS 등에 사용

대응:

  • 실행 통제와 최소권한
  • 패치
  • 이메일·웹 필터링
  • EDR·행위 탐지
  • 네트워크 분리
  • 오프라인·불변 백업
  • 사고대응 훈련

7. SQL Injection

입력값이 SQL 구조로 해석되어 의도하지 않은 쿼리를 실행하는 취약점이다.

나쁜 예:

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
query = "SELECT * FROM users WHERE id='" + user_input + "'"

안전한 원칙:

PYTHON코드 영역 안에서 좌우로 이동할 수 있습니다.
cursor.execute(
    "SELECT * FROM users WHERE id = %s",
    (user_input,)
)
  • 파라미터 바인딩
  • 입력 형식 검증
  • DB 계정 최소권한
  • 오류정보 최소화
  • 동적 식별자는 허용목록으로 처리

단순히 특수문자를 제거하는 방식만으로 안전을 보장하기 어렵다.

8. XSS와 출력 인코딩

XSS는 공격자가 넣은 스크립트가 다른 사용자의 브라우저에서 실행되는 취약점이다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
공격자 입력 → 서버 저장·반사 → 피해자 브라우저 렌더링
                                  │
                                  └─ 스크립트 실행·세션 악용

대응:

  • 출력 문맥에 맞는 인코딩
  • 안전한 템플릿 엔진
  • 위험 HTML 정제
  • CSP 보완
  • 쿠키 HttpOnly
  • 입력검증만으로 끝내지 않음

HTML 본문, 속성, JavaScript, URL 문맥은 필요한 인코딩이 다를 수 있다.

9. CSRF·SSRF·접근통제 오류

CSRF

로그인된 사용자의 브라우저가 공격자의 요청을 의도치 않게 보내도록 만든다.

대응:

  • CSRF 토큰
  • SameSite 쿠키
  • 중요 작업 재인증
  • 상태 변경에 GET 사용 금지
  • Origin/Referer 검증 보완

SSRF

서버가 공격자가 지정한 내부·외부 주소로 요청하도록 악용한다.

대응:

  • 목적지 허용목록
  • 내부 주소·메타데이터 서비스 차단
  • URL 파싱·리다이렉트 검증
  • 네트워크 egress 제한

접근통제 오류

URL이나 객체 ID만 바꿔 다른 사용자의 데이터를 읽는 문제를 포함한다. 모든 요청에서 서버 측 권한 검사를 수행해야 한다.

10. 파일·API·비밀 관리

  • 파일 업로드 확장자만 믿지 않고 내용·크기·저장경로 검증
  • 실행 가능한 경로와 업로드 저장소 분리
  • API 요청의 인증·인가·속도 제한
  • 오류 응답에 스택·SQL·비밀정보 노출 금지
  • 비밀키·토큰을 코드에 하드코딩하지 않음
  • 의존성·이미지·패키지 취약점과 무결성 관리
  • 로그에 비밀번호·토큰·주민번호 원문을 남기지 않음

11. 공격면과 통제 위치를 연결하기

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
인터넷 → CDN/WAF → Reverse Proxy → Web/WAS → DB·내부 API
              │          │             │
           L7 필터     TLS 종료      최소권한·쿼리 바인딩

방화벽이 포트를 허용하면 응용 계층 취약점까지 안전해지는 것은 아니다. WAF는 보완 통제이며 안전한 코드와 권한 검사를 대체하지 않는다. Zero Trust는 위치 기반 자동 신뢰를 줄이고 사용자·기기·워크로드 신원, 정책, 지속 검증을 사용한다.

12. 안전한 구현 판독

SQL Injection

PYTHON코드 영역 안에서 좌우로 이동할 수 있습니다.
# 취약: 입력을 SQL 문법에 연결
sql = "SELECT * FROM users WHERE id='" + user_id + "'"

# 기본 방어: 파라미터 바인딩
cursor.execute("SELECT * FROM users WHERE id=%s", (user_id,))

테이블명·정렬방향처럼 파라미터 바인딩이 적용되지 않는 문법 요소는 허용목록으로 매핑한다.

XSS·CSRF·SSRF

  • XSS: 출력 문맥에 맞는 인코딩과 안전한 DOM API, CSP를 결합
  • CSRF: same-site 쿠키, 예측 불가능한 토큰, Origin 검증; 상태 변경을 GET으로 만들지 않음
  • SSRF: 목적지 allowlist, URL 정규화 후 재검증, 내부 메타데이터·loopback·사설주소 차단, egress 통제

13. 최신 웹 보안 분류의 변화

OWASP Top 10:2025에는 Broken Access Control, Security Misconfiguration, Software Supply Chain Failures, Cryptographic Failures, Injection, Insecure Design, Authentication Failures, Software or Data Integrity Failures, Security Logging and Alerting Failures, Mishandling of Exceptional Conditions가 포함된다.

공급망 보안에서는 다음을 함께 본다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
의존성 잠금 → 출처 검증 → SBOM → 취약점·서명 검사 → 불변 아티팩트 → 배포 승인

예외를 과도하게 숨겨 성공처럼 처리하면 실패 안전성, 감사 가능성, 데이터 일관성이 깨질 수 있다. 반대로 상세 stack trace와 비밀값을 외부 응답에 노출해서도 안 된다.

14. 네트워크·웹 보안 문제 풀이 순서

  1. 공격자의 입력 지점과 신뢰 경계를 표시한다.
  2. 인증과 객체별 인가가 서버 측에서 수행되는지 본다.
  3. 입력 검증, 명령·데이터 분리, 출력 인코딩 중 맞는 통제를 고른다.
  4. 우회 경로와 내부 통신·관리 포트·공급망까지 포함한다.
  5. 탐지·차단만이 아니라 로그·경보·복구 증적을 확인한다.

확인 문제

  1. WAF가 안전한 쿼리 바인딩을 대체할 수 있는가?
  2. 동적 정렬 방향을 SQL에 넣을 때 기본 방어는?
  3. SSRF 방어에서 URL 문자열 앞부분만 검사하면 부족한 이유는?
  4. Zero Trust의 핵심은 내부망을 신뢰하는가?
  5. 예외를 모두 성공으로 숨길 때 생기는 위험은?