네트워크 보안 전체분류
네트워크 보안 (Network Security)
├── 네트워크 접근 제어 (NAC) ← 네트워크에 "누가" 접근 가능한지 결정
│ ├── 방화벽 (Firewall) ← 특정 IP/포트 접근 허용/차단
│ ├── 보안 그룹 (Security Group) ← 클라우드 환경의 접근 제어
│ ├── ACL (Access Control List) ← 네트워크 장비에서 접근 제한
│ ├── VLAN 보안 ← 네트워크 내부 트래픽 분리
│ ├── MAC 필터링 ← 특정 MAC 주소만 허용
│ ├── 802.1X 인증 ← 사용자 인증을 통한 네트워크 접근 제어
├── 침입 탐지 및 차단 (IDS/IPS) ← 네트워크 공격 탐지 및 차단
├── VPN (Virtual Private Network) ← 외부에서 안전한 내부망 접근 제공
├── DDoS 방어 ← 대량의 트래픽 공격 차단
├── 웹 방화벽 (WAF) ← 웹 애플리케이션 보안 (SQL Injection, XSS 방어)
├── 데이터 암호화 ← 네트워크에서 전송되는 데이터 보호 (TLS/SSL)

물리적 범위에 따른 네트워크 구분
- 물리적 커버 범위에 따라서 지역의 LAN(Local Area Network), ISP(인터넷서비스 프로바이더)가 제공하는 광역의 WAN(Wide)이 존재함.
- WAN(Wide Area Network) :
- 인터넷서비스제공자(ISP ; SK,KT)이 제공하는 광역 네트워크로 국가 및 글로벌 네트워크와 연결
- 라우터의 "WAN 포트"를 통해 연결됨.
- 공인 IP (Public IP) 사용 (203.x.x.x, 8.8.8.8)
- 지역의 중개허브들을 연결하여 국가 내, 국가 간 케이블을 통해서 데이터를 송수신한다. ISP 외에도 Google같은 사기업이 국가 간 케이블을 보유하는 경우도 있음.
- LAN(Local Area Network) :
- "지역 네트워크"로, 하나의 건물 또는 작은 범위 내에서 운영되는 내부 네트워크입니다.
- 각각의 Device에 부착된 LAN 카드로 통신
- LAN 내부 기기들이 서로 통신할 수 있도록 합니다.
- ISP가 제공한 인터넷을 기반으로 개별 네트워크(사설 IP)로 형성된 서브넷입니다.
- 인터넷이란 이중에서도 전세계를 연결하는 공용의 통합망인 특정한 네트워크 시스템을 지칭하는 것
IP 주소 체계 (IP Addressing)
IPv4는 전 세계적으로 약 43억 개(2³²개)만 존재하기 때문에, 효율적인 IP 관리가 필요함. 이를 해결하기 위해 Public IP와 Private IP 체계가 나뉘었음.
- Public IP (공인 IP)
- 인터넷에서 접근할 수 있는 IP 주소
- 전 세계적으로 유일한 IP 주소로 ICANN(인터넷 할당 번호 관리 기관)이 관리하며 ISP(인터넷 서비스 제공 업체)가 사용자에게 할당
- 예: 203.0.113.20, 52.78.102.45 (AWS EC2 등)
- Private IP (사설 IP)
- 내부 네트워크에서만 사용되는 IP 주소로 외부 인터넷에서는 직접 접근할 수 없음
- 특정 IP 대역만 사용 가능하며 라우터(가정용 Wi-Fi, AWS VPC)가 Private IP 할당
- 사설 IP 주소 대역(Private IP Range) 은 다음과 같습니다. 즉, 아래 범위에 속하면 Private IP, 그 외는 Public IP!
IP 대역 | 서브넷 마스크 | 설명 |
10.0.0.0 ~ 10.255.255.255 | 255.0.0.0 (/8) | 대규모 네트워크 (AWS, GCP VPC 등) |
172.16.0.0 ~ 172.31.255.255 | 255.240.0.0 (/12) | 중규모 네트워크 (기업 내부망 등) |
192.168.0.0 ~ 192.168.255.255 | 255.255.0.0 (/16) | 가정용 네트워크 (공유기, Wi-Fi 등) |
Private IP를 갖은 기기가 인터넷에 접근할 수 있도록 하는 방법
- 사설 IP는 인터넷에서는 "비허용(Non-Routable)" 주소이므로, 직접 인터넷에 접속할 수 없습니다.즉, "인터넷 서버"들은 사설 IP를 알 수 없으며, 사설 IP로 오는 요청을 직접 처리할 수 없습니다.
- 라우터가 "NAT(Network Address Translation)"을 사용하여 공인 IP(Public IP)로 변환해 주기 때문에 인터넷 사용이 가능해집니다.
- NAT : 사설 네트워크 내부의 Private IP를 인터넷과 통신할 수 있도록 Public IP로 변환하는 기술
- 내부 PC(192.168.0.10)가 인터넷 요청을 보내면, 라우터가 공인 IP(203.0.113.5)로 변환하여 외부로 보냄.
- 인터넷 서버는 이 요청을 받은 후, 응답을 공인 IP(203.0.113.5)로 다시 보냄.
- 라우터는 이 응답을 다시 사설 IP(192.168.0.10)로 변환하여 내부 기기로 전달.
방화벽
네트워크 트래픽을 모니터링하고, 특정 규칙에 따라 허용하거나 차단하여 보안을 강화하는 보안 시스템.
소프트웨어 방화벽 (Software Firewall)
- 운영체제(OS)에 설치되어 개별 장치(PC, 서버 등)에서 동작
- 소프트웨어 방화벽 종류
- Windows Defender Firewall (윈도우 기본 방화벽)
- iptables (리눅스 방화벽)
- UFW (Uncomplicated Firewall) (Ubuntu용 간단한 방화벽)
- pfSense (오픈소스 방화벽)
- 특정 포트, 프로토콜, IP를 기반으로 접근을 허용하거나 차단함
일반적 백엔드 방화벽 설정
- API 서버(백엔드)는 클라이언트(웹/모바일)에서 요청을 받아야 하므로, 80(HTTP), 443(HTTPS) 포트는 열려 있어야 한다.
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
- 관리자 SSH(22번 포트)는 특정 IP에서만 접근 가능하도록 제한해야 한다.
sudo ufw allow from 203.0.113.10 to any port 22
- 캐시 서버 / 데이터베이스서버는 내부 네트워크에서만 접근 가능하도록 제한
sudo ufw allow from 192.168.1.0/24 to any port 3306
sudo ufw allow from 192.168.1.0/24 to any port 5432
- 내부 서버 간 통신 허용
- 백엔드 서버, DB 서버, 캐시 서버 간 통신이 가능해야 한다.
방화벽 기본원칙
(1) 방화벽 기본 정책: "내부 → 외부는 허용, 외부 → 내부는 차단"
일반 가정이나 회사에서 사용하는 공유기(라우터), 방화벽, NAT(Network Address Translation)는 보통 아래와 같은 기본 정책을 가짐.
아웃바운드 (내부 → 외부) | ✅ 허용됨 | 브라우저에서 유튜브, 구글 접속 |
인바운드 (외부 → 내부) | ❌ 기본적으로 차단됨 | 다른 사람이 내 PC에 직접 접속하는 것 차단 |
즉, 내가 구글이나 네이버에 요청을 보낼 수 있지만, 외부에서 내 컴퓨터로 직접 접근할 수는 없음. 이것은 방화벽이 기본적으로 인바운드 트래픽을 차단하는 정책을 가지고 있기 때문!
- 나가는 트래픽(Outbound)은 기본적으로 허용한다.
- 방화벽은 "요청이 먼저 발생한 경우"에 한해, 응답을 자동으로 허용하는 Stateful Inspection(상태 기반 검사) 원칙을 따른다.
하드웨어 방화벽 (Hardware Firewall)
- 물리적인 네트워크 장비(라우터, UTM 등)에서 네트워크 전체를 보호
- 이런게 있다.
- AWS EC2 (Security Group)에서 3306 포트 열기
- AWS에서는 서버 내부 방화벽(UFW, iptables)뿐만 아니라 AWS Security Group에서도 3306 포트를 열어야 함.
- AWS EC2 (Security Group)에서 3306 포트 열기
웹 서버가 외부에서 접근 가능하도록 설정하는 방법
외부 인터넷에서 특정 인스턴스(서버)에 접근하도록 하려면 ① 서버 네트워크 설정, ② 방화벽 설정, ③ 어플리케이션 접근 제어 설정이 필요함
(1) 서버 네트워크 설정
서버가 외부 인터넷에서 접근가능하려면 Public IP를 갖아야함. Private IP만 가지고 있다면 서버 네트워크 설정이 필요함.
- 웹 서버가 공인 IP를 가지면 외부에서 직접 접근 가능
- 온프레미스 환경에서는 ISP로부터 공인 IP 신청하여 직접 할당받을 수 있음
- AWS 같은 클라우드에서는 Elastic IP(고정 Public IP)를 통해서 Public IP를 쉽게 할당 가능.
(2) OS 방화벽 설정 (HOST 방화벽 설정)
Public IP가 있어도, 방화벽이 요청을 차단하면 외부 접근이 불가능함! 방화벽은 OS 레벨에서도 존재하고, 클라우드(AWS)에서는 Security Group 같은 네트워크 레벨에서도 관리.
- 기본적으로 웹 서버는 80(HTTP)과 443(HTTPS) 포트를 사용함.
- 방화벽(Firewall)에서 해당 포트를 열어야 외부에서 접근 가능.
- 클라우드 환경(AWS, GCP, Azure)에서는 Security Group을 설정해야 함.
📌 리눅스(Ubuntu) UFW 설정 예제
# 80 (HTTP)과 443 (HTTPS) 포트 허용
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload # 방화벽 설정 적용
AWS Security Group에서 HTTP/HTTPS 허용
- AWS EC2 관리 콘솔 → Security Group 설정
- Inbound Rules에서 80, 443 포트에 대해 "Anywhere(0.0.0.0/0)" 설정
(3) 접근제어 설정 (웹 서버 설정)
Public IP와 방화벽 설정이 되어 있어도, 웹 서버(Apache, Nginx, Spring Boot 등)가 외부 요청을 받을 수 있도록 설정해야 함!
- 웹 서버의 bind-address 설정을 변경해야 함.
- Spring Boot, Node.js 등에서 서버가 127.0.0.1(로컬호스트)에서만 실행되면 외부에서 접근할 수 없음.
Spring Boot 접근 설정 (application.yml)
server:
address: 0.0.0.0 # 모든 네트워크 인터페이스에서 접근 가능
port: 8080 # 기본 포트 설정
Nginx 웹 서버 설정 (/etc/nginx/nginx.conf)
server {
listen 80;
server_name _;
root /var/www/html;
}
우회방안
일반적으로 Public IP가 없는 컴퓨터(서버)에 접속하기 위해서는 아래와 같은 방법이 활용된다.
- VPN
- VPN 서버는 마치 라우터처럼 동작하여 Public IP를 VPN 클라이언트에 제공합니다. VPN 클라이언트는 VPN 서버를 통해 인터넷에 나가며, 외부에서 보면 VPN 서버의 Public IP를 사용하는 것처럼 보임.
- SSh :
- 같은 네트워크(LAN)에서는 리눅스 ssh를 통해서 Private IP를 활용해 접근가능
'개발기술 > 보안' 카테고리의 다른 글
JWT Refresh Token Strategy (0) | 2025.03.07 |
---|---|
브라우저 보안정책 (0) | 2025.02.26 |
보안의 개념과 기술 (0) | 2025.01.19 |
HTTPS 의 TLS 동작과정 (0) | 2025.01.18 |
Security JWT,세션, 쿠키방식 (0) | 2025.01.15 |