방화벽이란?
방화벽(Firewall)은 네트워크 보안 시스템이다. 미리 정의된 보안 규칙에 따라 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 장치 또는 소프트웨어이다. 불법 접근, 악의적 접근, 트래픽 낭비 등을 방지하기 위해 사용된다.
방화벽은 트래픽 필터링, 네트워크 세분화, 감시 및 로깅, 인증, 프라이버시 보호 등의 여러 가지 기능을 한다.
이중 인바운드 규칙, 아웃바운드 규칙은 트래픽 필터링 기능에 포함된다.
트래픽 필터링(접근 제어)
트래픽 필터링이란 방화벽이 네트워크를 통해 주고받는 데이터 패킷을 검사하고 제어하는 것을 말한다.
방화벽이 허용한 트래픽만 네트워크로 들어오거나 나갈 수 있도록 한다.
트래픽 필터링 방식 중 패킷 필터링 방식은 데이터 패킷의 헤더 정보를 분석하여 트래픽을 허용/차단하는 방식이다. 패킷 헤더에는 IP, Port, Protocol 등의 정보가 포함되어 있어, 특정 요건에 따라 트래픽을 허용하거나 차단할 수 있다.
특정 IP 주소에서 오는 트래픽, 특정 IP 주소로 가는 트래픽, 특정 프로토콜(TCP, UDP 등)을 사용하는 트래픽 등을 제어할 수 있다.
인바운드 규칙 & 아웃바운드 규칙
인바운드, 아웃바운드 규칙은 방화벽이 네트워크 트래픽을 제어하고 관리하는 데 있어 핵심적인 역할을 한다.
- 인바운드: 외부 -> 내부 네트워크 필터링
- 아웃바운드: 내부 -> 외부 네트워크 필터링
특정 IP, Port, Protocol에 대한 트래픽을 제어하여 허용 또는 차단하는 것이다.
인바운드 규칙(Inbound Rules)
인바운드 규칙은 외부 네트워크에서 내부 네트워크로 들어오는 트래픽을 제어하는 방화벽 규칙이다.
특정 프로토콜, IP, Port로 들어오는 트래픽을 차단 또는 허용할 수 있다.
역할
- 보안: 외부에서 오는 불법 접근 시도를 차단하고, 내부 네트워크를 보호한다.
- 서비스 제공: 특정 서비스(웹 서버, 이메일 서버 등)에 대한 외부 접근을 허용한다,.
- 트래픽 제어: 허용된 트래픽만 내부 내트워크에 접근할 수 있도록 제어한다.
예시
1. 외부에서 내부 웹 서버에 HTTP, HTTPS 프로토콜을 통해 접근할 수 있도록 허용
- 프로토콜: TCP
- 동작: Allow
- 소스 IP: 0.0.0.0 (모두 허용)
- 목적지 IP: 3.39.xxx.xxx (웹 서버 IP)
- 포트: 80(HTTP), 443(HTTPS)
2. 관리자의 IP 주소로만 내부 서버로 SSH 접속할 수 있도록 허용
- 프로토콜: TCP
- 동작: Allow
- 소스 IP: 192.168.xxx.xxx (관리자 IP)
- 목적지 IP: 3.39.xxx.xxx (서버 IP)
- 포트: 22
3. 특정 IP에서의 MariaDB 접근 차단
- 프로토콜: TCP
- 동작: Deny
- 소스 IP: 203.0.xxx.xxx (차단하고자 하는 IP)
- 목적지 IP: 3.39.xxx.xxx (MariaDB서버 IP)
- 포트: 3306
아웃바운드 규칙(Outbound Rules)
아웃바운드 규칙은 내부 네트워크에서 외부 네트워크로 나가는 트래픽을 제어하는 방화벽 규칙이다.
역할
- 데이터 유출 방지: 내부 네트워크에서 외부로 민감한 정보 유출을 방지한다.
- 접근 제어: 내부 사용자가 특정 외부 사이트나 서비스에 접근하는 것을 제한하여 보안을 유지한다.
- 트래픽 관리: 내부에서 외부로 나가는 트래픽을 제어하여 불필요한 트래픽을 줄여서 네트워크 성능을 최적화한다.
예시
1. 내부 네트워크에서 외부로의 HTTP, HTTPS 접근을 허용
- 프로토콜: TCP
- 동작: Allow
- 소스 IP: <내부 네트워크 범위>
- 목적지 IP: 0.0.0.0/0 (모두 허용)
- 포트: 80(HTTP), 443(HTTPS)
2. 내부 네트워크에서 외부로의 이메일 발송 제한
- 프로토콜: TCP
- 동작: Deny
- 소스 IP: <내부 네트워크 범위>
- 목적지 IP: 0.0.0.0/0 (모두 제한)
- 포트: 25
3. 내부 네트워크의 특정 사용자들이 외부 FTP 서버 접근 허용
- 프로토콜: TCP
- 동작: Allow
- 소스 IP: <특정 사용자 IP>
- 목적지 IP: <외부 FTP 서버 IP>
- 포트: 21
AWS EC2 보안 그룹 설정 예시
배포 테스트 용으로 AWS EC2 우분투 서버를 사용했고, 여기서 보안 그룹을 지정해줘야한다.
처음으로 MariaDB를 띄우고 외부에서 DBeaver 등을 통해 접근하려 했을 때 접근이 되지 않았던 기억이 있다. 인바운드 규칙을 허용하고 나서 정상적으로 접근이 가능해졌었다.
위의 내용을 알고 보면 이 보안 그룹이 어떤 이유로 존재하고, 어떤 것들을 제한/허용하는지 알 수 있었다.
SpringBoot Project를 8080 포트로 띄울 것이고 MongoDB, MariaDB, redis 등을 사용하고 있다.
인바운드 규칙
기본적으로 HTTP, HTTPS, SSH 접근을 허용하기 위해 80, 443, 22번 포트 모든 소스에 대해 허용했다.
SpringBoot, MariaDB, Redis로의 접근을 허용하기 위해 각각 8080, 3306, 6379번 포트도 허용했다.
위와 같은 설정을 통해 외부에서 특정 IP, 포트로만 접근할 수 있도록 설정할 수 있다.
아웃바운드 규칙
아웃바운드 규칙은 모든 프로토콜, IP, 포트를 허용했다.
정리
인바운드 규칙은 외부에서 내부로의 네트워크 트래픽을 제어하는 규칙이고,
아웃바운드 규칙은 내부에서 외부로의 네트워크 트래픽을 제어하는 규칙이다.
인바운드 규칙을 지정하여 특정 IP, Port, Protocol만이 내부 서버로의 요청을 보낼 수 있도록 허용 또는 제한할 수 있고,
아웃바운드 규칙을 지정하여 내부 사용자가 외부 서버로의 요청을 보내는 것을 제어할 수 있다.
'[ Computer Science ] > Web & Network' 카테고리의 다른 글
[Web/Network] 프록시(Proxy) (0) | 2024.08.17 |
---|---|
[Network] 포트(PORT), 소켓(Socket)이란? (웹소켓 아님 Web Socket != Socket) (0) | 2024.08.07 |
[Web] CSRF(크로스 사이트 요청 위조) 알아보기, Spring Security CSRF (0) | 2024.07.30 |
[Network] CORS란? Cross-Origin Resource Sharing / CORS 에러, Spring Boot (0) | 2024.07.29 |
[Network] OSI 7계층과 TCP/IP 4계층 (0) | 2023.07.19 |