마짱짱의 지식창고

4계층 Session 장비 (Loadbalancer, 방화벽) 본문

Network

4계층 Session 장비 (Loadbalancer, 방화벽)

마짱짱 2021. 4. 14. 16:09
반응형

1. Loadbalancer(로드밸런서)

흔히들 서버나 장비의 부하를 분산하기위해 사용하는 장비를 LoadBalancer(로드밸런서)라고 부릅니다.

보통 부하분산 이라 하면 2가지 방법이 있습니다.

Scale-Up, Scale-Out 입니다.

Scale-up은 서버 자체의 성능을 확장하는것을 의미하며 1 을 2로 늘리는 것입니다
부품만 추가하면 변경없이 쉽게 늘릴 수 있지만 시스템이 커질수록 비용이 기하급수적으로 커집니다

 

Scale-Out은 서버 수를 증설하는 것을 의미하며 1을 1,1 로 늘려 운영하는 것입니다.

적은 비용으로 확장이 가능하지만 별도의 장비나 아키텍처를 이해해야만 운영이 가능합니다.

 

이렇게 Scale-Out을 하게되면 여러대를 연결하여 분산할 장비가 필요한데 그것을 로드밸런서 라고 부릅니다.

 

로드밸런서 중에서도 L4, L7 로드밸런서 두종류로 나뉘게 됩니다

 

L4 로드밸런서(ex L4 스위치)

  - TCP/UDP 포트 정보를 바탕으로 분산합니다.

 

L7 로드밸런서(ex ADC)
  - HTTP, FTP 와 같은 프로토콜 정보를 기반으로 분산합니다.

 

2. 방화벽

해당 장비를 통과하는 트래픅을 사전에 주어진 정책 조건에 맞춰 허용하거나 차단하는 장비

 

1. 접근통제(Access Control)

- 외부에서 내부 네트워크로 접근하는 것을 패킷필터링*을 통해 통제하는 기능입니다.

 * 패킷필터링: 내부 네트워크로 접근하는 패킷의 IP, Port 등 검열하여 내,외부 네트워크에 대한 접근을 통제

2. 인증(Authentication)

1) 메시지 인증: VPN과 같은 신뢰할 수 있는 통신선을 통해 전송되는 메시지 신뢰성 보장

2) 사용자 인증: 방화벽을 지나가는 트래픽에 대한 사용자가 누군지에 대해 증명하는 기능(OTP, 토큰기반 인증, 패스워드 인증 등)

3) 클라이언트 인증: 모바일 사용자처럼 특수한 경우에 접속을 요구하는 호스트 자체에 대해 인가된 호스트인지 확인

3. 감사 및 로깅(Auditing & Logging)

- 정책 설정 및 변경, 관리자 접근, 네트워크 트래픽 허용 또는 차단과 관련한 사항 등 접속정보를 로그로 남김

4. 프록시(Proxy) 기능

- 보안정책에 따라 실제 서비스를 수행하는 서버로, 클라이언트의 서비스 요청을 받아 전달하고, 결과를 수신하여 사용자에게 전달하는 기능

5. NAT(Network Address Translation) 기능

- 주소변환 기능으로, 외부 호스트의 IP나 목적지 호스트 IP를 전송단계에서 변환하여 전달하는 기능으로, 네트워크에서 외부망과 내부망을 나눠주는 기능을 가능하게 함

 

3. Session 관리

기본적으로 Session 이라 하면 웹사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법으로 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다. 그렇다면 쿠키랑 헷갈릴 수 있는데 

쿠키와 비교를 해보면 쿠키는 방문자 컴퓨터의 메모리에 저장하는 것이고 세션은 서비스가 돌아가는 서버에 저장하는 것이다.

 

기본적인 동장 방식을 보면

1. 정상적으로 연결(세션설정)

2. 세션테이블을 참조해 방화벽에서 패킷 통과

3. 일정시간동안 통신 없을시 세션타임 확인 후 세션테이블 만료

4. 방화벽에서 패킷 삭제

 

방화벽 이중화

네트워크 경로 이중화를 위해 두 대 이상 설치한 경우, 들어오 경로와 나가는 경로가 일치하지 않을 시 정상적인 서비스가 되지 않을 수가 있습니다. 그래서 하나의 장비처럼 동작할 수 있도록 세션 테이블을 동기화 해주는 방법 이 있습니다.

다른 방법으로는 방화벽 끼리 경로를 하나 더 연결하여  패킷경로를 확인하여 들어온 경로로 다시 내보냅니다.

 

 

FTP 부분 예시 (infosys.beckhoff.com/english.php?content=../content/1033/cx8110_hw/68233610358735665675.html&id=)

FTP(File Transfer Protocol)는 TCP 기반 통신 연결만을 기반으로 합니다. FTP는 데이터 전송에 중요한 두 개의 TCP 포트를 지정합니다.

포트 20/tcp: 이 포트를 데이터 포트라고도 하며 파일 및 디렉토리 목록을 주고받는 데 사용됩니다.
포트 21/tcp: 이 포트는 일반적으로 명령 포트라고 하며 클라이언트와 서버 간에 상태 정보를 교환하는 데 사용됩니다.
별도의 TCP 연결은 파일(데이터 포트)을 송수신하고 명령(명령 포트)을 전송하는 데 사용됩니다. FTP를 사용하면 두 가지 연결 모드를 사용하여 이러한 연결을 설정할 수 있습니다: "Active FTP"와 "Passive FTP". 연결 모드에 따라 위에서 언급한 두 포트는 다르게 시작되며, 아래에 자세히 설명되어 있습니다

 

서버에서 클라이언트로 접속은 Active

 

 

클라이언트에서 서버로 접속은 Passive

 

 

 



출처: https://jwprogramming.tistory.com/273 [개발자를 꿈꾸는 프로그래머] - 방화벽 부분
infosys.beckhoff.com/english.php?content=../content/1033/cx8110_hw/68233610358735665675.html&id= FTP ACTIVE PASSIVE 부분

반응형