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

정보보안·개인정보보호 · 네트워크·웹 보안

이 페이지의 목차

핵심 요약

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

본문

공격면과 심층방어

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

도식
Internet
   │
[경계 방화벽]
   │
[WAF·Reverse Proxy]
   │
[응용 서버] ──► [DB]
   │
[내부 API·메시지]
   │
[관리망·운영도구]

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

대표 네트워크 공격

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

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

방화벽·IDS·IPS·WAF

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

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

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

네트워크 분리와 Zero Trust 기초

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

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

시스템 하드닝

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

도식
기본 설치↓불필요 서비스·포트 제거↓계정·권한·비밀번호 정책↓패치·안전한 설정↓로그·감사·무결성 점검↓기준선 저장·정기 검증

주요 항목:

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

악성코드

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

대응:

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

SQL Injection

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

나쁜 예:

예시·텍스트
query = "SELECT * FROM users WHERE id='" + user_input + "'"

안전한 원칙:

PYTHON
cursor.execute(
    "SELECT * FROM users WHERE id = %s",
    (user_input,)
)
  • 파라미터 바인딩
  • 입력 형식 검증
  • DB 계정 최소권한
  • 오류정보 최소화
  • 동적 식별자는 허용목록으로 처리

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

XSS와 출력 인코딩

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

도식
공격자 입력 → 서버 저장·반사 → 피해자 브라우저 렌더링
                                  │
                                  └─ 스크립트 실행·세션 악용

대응:

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

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

CSRF·SSRF·접근통제 오류

CSRF

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

대응:

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

SSRF

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

대응:

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

접근통제 오류

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

파일·API·비밀 관리

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

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

도식
인터넷 → CDN/WAF → Reverse Proxy → Web/WAS → DB·내부 API
              │          │             │
           L7 필터     TLS 종료      최소권한·쿼리 바인딩

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

안전한 구현 판독

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 통제

최신 웹 보안 분류의 변화

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가 포함된다.

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

도식
의존성 잠금→출처 검증→SBOM→취약점·서명 검사→불변 아티팩트→배포 승인

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

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

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

대표 통제 조합 장면

인터넷 공개 API를 보호할 때 TLS는 전송을 보호하고 WAF는 일부 HTTP 공격 패턴을 차단하며 애플리케이션은 객체별 인가를 수행한다. IDS 경보나 WAF 설치만으로 안전해지는 것이 아니며 우회·오탐과 내부 호출을 고려한다. 자산, 위협 경로와 실패 시 영향을 기준으로 통제를 겹친다.

복습 문제

답을 생각한 뒤 정답과 근거를 펼쳐 보세요.

01

WAF가 안전한 쿼리 바인딩을 대체할 수 있는가?

정답과 근거

정답: 아니다. WAF는 보완 통제이며 서버 코드의 명령·데이터 분리를 대체하지 않는다.

02

동적 정렬 방향을 SQL에 넣을 때 기본 방어는?

정답과 근거

정답: 파라미터가 되지 않는 문법 요소이므로 허용목록 값으로 매핑한다.

03

SSRF 방어에서 URL 문자열 앞부분만 검사하면 부족한 이유는?

정답과 근거

정답: 리다이렉트·DNS 변경·인코딩·정규화 우회와 실제 연결 IP를 놓칠 수 있기 때문이다.

04

Zero Trust의 핵심은 내부망을 신뢰하는가?

정답과 근거

정답: 아니다. 위치 기반 자동 신뢰를 줄이고 신원·기기·워크로드와 정책을 지속 검증한다.

05

예외를 모두 성공으로 숨길 때 생기는 위험은?

정답과 근거

정답: 실패 안전성·데이터 일관성·탐지와 감사 가능성이 깨질 수 있다.