Skip to content

Commit

Permalink
2024-02-13
Browse files Browse the repository at this point in the history
  • Loading branch information
Lim committed Feb 13, 2024
1 parent b161b7d commit efd69f6
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
Binary file added docs/sk-lim19f/2024-02-13.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
61 changes: 61 additions & 0 deletions docs/sk-lim19f/2024-02-13.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
## 6.3 방화벽

- 방화벽: 네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용(Permit)하거나 차단(Deny)하는 장비
- 일반적으로 네트워크 3,4계층에서 동작하고 세션을 인지, 관리하는 SPI(Stateful Packet Inspection) 엔진을 기반으로 동작하는 장비를 방화벽이라 부름
- 방화벽은 NAT(Network Address Translation) 동작 방식과 유사하게 세션 정보를 장비 내부에 저장
- 패킷이 외부로 나갈 때 세션 정보를 저장하고 패킷이 들어오거나 나갈 때 저장했던 세션 정보를 먼저 참조해 들어오는 패킷이 외부에서 처음 시작된 것인지, 내부 사용자가 외부로 요청한 응답인지 가려냄
- 세션 테이블을 이용해 패킷의 인과 관계를 파악할 수 있어 정책을 간단히 유지

## 6.4 4계층 장비를 통과할 때의 유의점(세션 관리)

- 세션 장비는 일반적인 2, 3계층 네트워크 장비와 달리 세션을 이해하고 세션 테이블을 유지
- 세션 테이블 정보를 이용해 패킷을 변경하거나 애플리케이션 성능을 최적화하고 보안을 강화하기 위해 패킷을 포워드(Foward)하거나 드롭(Drop)할 수 있음
- 특히 애플리케이션의 세션 시간과 서비스 방향성을 고려하고 비대칭 경로를 피해주는 것이 매우 중요

### 6.4.1 세션 테이블 유지, 세션 정보 동기화

- 종단 장비에서 통신을 시작하면 중간에 있는 세션 장비는 해당 세션 상태를 테이블에 기록
- 통신이 없더라고 종단 장비 간 통신이 정상적으로 종료되이 않았다면 일정 시간 동안 세션 테이블을 유지
- 세션 테이블은 메모리에 저장되므로 메모리 사용률을 적절히 유지하기 위해 일정 시간만 세션 정보를 저장
- 악의적인 공격자가 과도한 세션을 발생시켜 정상적인 세션 테이블 생성을 방해하는 세션 공격으로부터 시스템을 보호하기 위해 타임아웃값을 더 줄이기도 함
- 하지만 일부 애플리케이션은 세션을 한 번 연결해놓고 다음 통신이 시도될 때까지 세션이 끊기지 않도록 세션 타임아웃값을 길게 설정하기도 함
- 이런 종류의 애플리케이션이 통신할 때, 세션 장비의 세션 타임아웃값이 애플리케이션의 세션 타임아웃값보다 짧으면 통신에 문제가 생김
- 세션 장비의 세션 테이블에 세션이 없는 상황에서 SYN이 아닌 ACK로 표시된 패킷이 들어오면 세션 장비에서는 비정상 통신으로 판단해 패킷을 차단하고 그런 종류의 패킷을 통과시키는 옵션을 설정해 패킷을 강제로 통과시키더라도 반대 방향으로 데이터가 들어오면 정책에 막힐 수 있음

#### 6.4.1.1 세션 장비 운영자 입장

- 세션 만료 시간 증가
- 세션 장비의 운영자가 애플리케이션에 맞게 세션 만료시간을 늘리는 방법이 있음
- 이 경우, 애플리케이션의 세션 유지 시간보다 방화벽 세션 유지 시간이 길어야 함
- 세션 시간을 둔 채로 중간 패킷을 수용할 수 있도록 방화벽 설정(세션 장비중 방화벽에 해당)
- 세션 테이블에 정보가 없는 ACK 패킷이 방화벽에 들어오면 방화벽은 패킷을 차단하지만 방화벽 옵션을 조정해 세션 테이블에 정보가 없는 ACK 패킷이 들어오더라도 세션을 새로 만들어 통과시킬 수 있는 옵션이 있음
- 하지만 이런 해결책은 전체적인 보안이 취약해지는 기능임
- 세션 장비에서 세션 타임아웃 시 양 단말에 세션 종료 통보
- 양 종단 장비의 세션 정보와 중간 세션 장비의 세션 정보가 일치하지 않아 발생하는 문제를 해결하기 위해 사용하는 기능

#### 6.4.1.2 개발자 입장

- 애플리케이션에서 주기적인 패킷 발생 기능 추가
- 애플리케이션과 세션 장비의 세션 타임아웃 시간을 일치시키는 가장 좋은 방법은 애플리케이션에서 패킷을 주기적으로 발생시키는 것
- 세션 상태 정보를 체크하는 더미 패킷(Dummy Packet)을 보내는 기능을 추가하면 패킷이 주기적으로 발생해 중간 방화벽에서 세션 타임아웃이 발생하기 전에 세션을 유지할 수 있음

### 6.4.2 비대칭 경로 문제

- 네트워크의 안정성을 높이기 위해 네트워크 회선과 장비를 이중화
- 이때 패킷이 지나가는 경로가 2개 이상이므로 인바운드 패킷과 아웃바운드 패킷의 경로가 같거나 다를 수 있음
- 인바운드 패킷과 아웃바운드 패킷이 같은 장비를 통과하는 것을 대칭 경로(Symmetric Path)
- 다른 장비를 통과하는 것을 비대칭 경로(Asymmetric Path)라고 함
- 비대칭 경로를 방화벽에서 처리할 수 있는 첫 번째 방법은 세션테이블 동기화
- 세션 테이블을 동기화 하면 두 개 경로상의 두 장비가 하나의 장비처럼 동작하므로 비대칭 경로에서도 정상적으로 동작
- 이 기능은 응답시간이 비교적 긴 인터넷 게이트웨이로 방화벽이 사용될 때 유용하게 사용할 수 있음
- 두 번째 방법은 비대칭 경로가 생길 경우, 세션 장비에서 다양한 방법으로 이를 보정
- 인바운드 패킷이 통과하지 않았는데 아웃바운드 패킷이 장비로 들어온 경우, 인바운드 패킷이 통과한 다른 세션 장비 쪽으로 패킷을 보내 경로를 보정
- 강제로 대칭 경로를 만들어 주므로 문제 해결 가능

### 6.4.3 하나의 통신에 두 개 이사의 세션이 사용될 때의 고려사항

- 현대 프로토콜은 하나의 통신을 위해 한 개의 세션만 사용하는 경우가 대부분이지만 특별한 목적으로 두 개 이상의 세션을 만드는 경우가 있음
- 프로토콜은 데이터 프로토콜과 컨트롤 프로토콜로 구분할 수 있음
- 데이터 프로토콜은 데이터를 실어 나르고 컨트롤 프로토콜은 데이터가 잘 전송되도록 세션을 제어
- 현대 프로토콜들은 대부분 컨트롤 프로토콜 기능과 데이터 프로토콜 기능을 하나의 프로토콜에서 헤더나 별도 메시지로 해결하지만 특별한 목적이 있거나 오래된 프로토콜은 두 개의 프로토콜이 분리된 경우가 있음
- 가장 대표적인 프로토콜이 FTP(File Tranfer Protocol)

0 comments on commit efd69f6

Please sign in to comment.