본문 바로가기

카테고리 없음

Firewalls, Tunnels and Network Intrustion Detection

Firewalls

네트워크 보안 시스템의 한 종류로 보안 규칙에 따라 네트워크 트래픽을 필터링(모니터링 및 제어)한다.

신뢰할 수 있는 내부 네트워크와 신뢰할 수 없는 외부 네트워크 사이에 위치한다.

(private network) ||방화벽|| (public network)

 

Firewall Policies

dangurous한 트래픽을 필터링하기 위해서는 "네트워크 트래픽을 어떻게 처리할지"에 대해 결정하는 규칙이 필요하다. 

방화벽은 이 firewall policies를 기반으로 네트워크 트래픽을 필터링한다.

조직의 보안 목표 및 요구사항을 반여해 구성된다.

 

Policy Actions

방화벽을 통과한 패킷은 아래 3가지 결과 중 하나를 갖는다.

Accepted 방화벽의 보안조건을 충족하여 패킷을 네트워크에 통과시키는 경우
Dropped 패킷을 네트워크에 통과시키지 않고, 출발지에도 패킷이 거부되었다는 사실을 알리지 않는 경우
Rejected 패킷을 네트워크에 통과시키지 않고, source destination에 패킷 거부를 알리려고 시도하는 경우

 

Firewall Policy는 패킷의 몇몇 속성들을 검사하여 보안성을 검사한다.

  • 프로토콜: TCP or UDP
  • 출발지 및 목적지 IP 주소
  • 출발지 및 목적지 포트
  • 패킷 application level payload(여기서 payload란, 네트워크를 통해 전송되는 데이터 패킷 내의 전송하고자 하는 데이터 부분을 말한다. 해당 데이터 부분에 malware, virus 등을 포함하고 있지는 않은지 검사한다.)

 

 

Blacklists and White Lists

1) Blacklist

사전 정의한 불허할 IP 주소, 도메인, 프로토콜, 애플리케이션 등을 저장하는 리스트이다.

블랙리스트에 명시된 규칙에 해당하지 않는 패킷들을 통과시킨다. 즉, 블랙리스트에 있는 애들만 block하겠다는 뜻으로 효율성은 whitelist보다 더 좋지만 보안의 엄격성은 whitelist가 더 높다.

 

2) Whitelist
사전에 정의한 허용할 IP주소, 도메인, 프로토콜, 애플리케이션 등을 저장하는 리스트이다.

화이트리스트에 명시된 규칙에 해당하는 패킷들만을 네트워크에 통과시킨다. (= default-deny 정책)

허용 규칙에 해당하지 않는 패킷은 rejected 혹은 dropped outcome을 갖는다.

 

Firewall Types

방화벽의 타입은 크게 3가지가 있다.

1) Packet Filters(stateless)

이 유형은 네트워크 트래픽을 필터링하는 가장 기본적인 형태이다.

패킷이 사전에 정의된 규칙에 맞는지 확인하고, 규칙에 따라 패킷을 허용하거나 차단한다.

stateless(상태를 유지하지 않음) 특성을 가지므로 각 패킷의 선후관계를 고려하지 않고 패킷을 독립적으로 처리한다.

 

2) Stateful Firewalls

네트워크 연결의 상태 혹은 컨텍스트를 추적해 stateless보다 지능적으로 트래픽을 관리한다.

예를들어서, 데이터를 요청한 후 서버로부터 응답이 돌아오는 경우, 이 방화벽은 응답 패킷이 유효한 요청의 결과임을 인식하고 네트워크를 통해 네트워크를 통해 패킷을 통과시킨다.

 

3) application layer Firewalls

네트워크의 가장 상위 계층에서 작동하는 방화벽으로, 특정 애플리케이션의 트래픽을 분석하고 필터링 할 수 있다.

이 방화벽은 웹트래픽, 이메일, 데이터베이스 접근과 같이 더  복잡한 데이터의 내용을 검사할 수 있으며 바이러스나 취약점과 같은 위협을 차단하는 데 사용된다.

서비스별로 proxy라는 통신 중계용 데몬이 구동되어 각 서비스 요청에 대해 방화벽 접근 규칙을 적용하고 연결을 대신하는 역할을 수행한다.

 

 

 

Stateless Firewalls

 

 

Stateless Restrictions

 

 

Statefull Firewalls

 

Stateful Firewall Example

 

 

Tunnels

TCP 패킷 내용의 경우 일반적으로 암호화되지 않기 때문에, 누군가 TCP 연결을 도청할 경우, 이 세션에서 페이로드 내용을 완전히 볼 수 있다.

이를 예방하기 위해, 통신 소프트웨어를 변경하지 않고 적용할 수 있는 기술이 tunneling protocol이다.

이 프로토콜에서는 터널링을 통해 인터넷에서 패킷(데이터)이 자동적으로 암호화되어 네트워크 상에서 통신되므로 외부에서 보기에는 public network상에서 가상의 터널이 생성된 것처럼 패킷유출을 보호한다.

이 때 네트워크 전송 경로 상에서 라우터, 스위치는 패킷의 존재를 인식할 수 있지만, 암호화된 내용을 파악할 수는 없다.

 

 

 

Secure Shell(SSH)

보안성을 가지고 원격 시스템에 로그인하거나 명령을 실행하고, 다른 시스템으로 파일ㅇ르 복사할 수 있도록 해주는 응용 프로그램 혹은 프로토콜을 말한다.

보안성이 약한 로그인 프로토콜(Telnet, Rlogin)과 안전하지 않은 파일 전송 방법(FTP)에 대한 대안으로 등장하였다.

이는 Client - Server 모델에서 작동하며 SSH 서버에 연결되는 SSH 클라이언트에 의해 연결이 설정된다.

 

SSH 프로토콜 작동 방식은 아래와 같다.

1) 클라이언트가 TCP 세션을 통해 서버에 연결된다.

2) 클라이언트와 서버는 지원하는 암호화 방법 및 프로토콜 버전과 같은 세부 정보를 교환하고, 서로가 지원하는 프로토콜 세트를 선택한다.

3) 클라이언트와 서버는 비밀 세션 키를 설정하기 위해 비밀키 교환을 시작한다. 생성된 공유 비밀 세션 키는 통신을 암호화하는데 사용한다. 그러나 인증에는 사용하지 않는다.

-> 세션 키는 선택된 블록 암호화(AES, 3DES 등)와 함께 사용되어 모든 후속 통신을 암호화한다.

4) 서버와 클라이언트가 통신할 준비를 마치고, 서버는 클라이언트의 identity를 확인한다. 

-> 서버가 클라이언트에게 허용 가능한 인증 방식의 목록을 보내고, 클라이언트는 순서대로 시도한다. 가장 일반적인 매커니즘은 암호 또는 공개키 인증 방법이다.

5) 인증에 성공하면 서버는 클라이언트가 명령프롬프트와 같은 적절한 리소스에 접근할 수 있도록 한다.

[공개키 인증 방식]
->
클라이언트는 서버에 자신의 공개 키를 보낸다.
-> 서버는 이 키가 자신의 승인된 키 목록에 저장되어 있는지 확인한다. 만약 저장되어 있다면 서버는 클라이언트의 공개 키를 -사용하여 도전 과제를 암호화하여 클라이언트에게 보낸다.
-> 클라이언트는 자신의 개인 키를 사용하여 도전 과제를 복호화하고 서버에 응답하여 자신이 제시한 공개키의 소유자임을 증명한다.

payload: 전송할 실제 데이터
compress(압축): payload를 압축해 전송할 데이터 크기를 줄인다.
패킷 생성: seq #(sequence number) + pktl(packet length) + pdl(padding length)
encrypt: 위에서 생성한 전체 패킷을 암호화한다. 여기서 AES, 3DES 등의 블록 암호화 알고리즘 및 통신 양 단 간에 생성한 공유 비밀 세션 키를 사용한다.
MAC(메시지 인증 코드): 데이터 무결성을 확인하는 용도로 사용한다.
SSH:  암호화된 패킷과 맥을 포함하여 SSH 패킷을 완성한다.

 

 

 

IPSec

인터넷 프로토콜을 사용해 통신하는 네트워크에서 데이터의 confidentiality와 authenticity를 보장하며 안전하게 전송하기 위한 일련의 프로토콜의 집합이다.

IPSec은 두가지 주요 모드로 동작한다.

Transport Mode 트랜스포드 모드에서는 IPsec이 페이로드(데이터)의 보안만을 담당한다. 주로 host간의 통신을 보호하는데 사용된다. IPSec 헤더 정보는 원래 IP 패킷의 데이터 앞쪽에 삽입된다. 이렇게 해서 데이터 페이로드만이 암호화되거나 인증처리되고 패킷의 나머지 부분은 변하지 않는다.
Tunnel Mode 터널 모드에서는 전체 IP 패킷을 보호한다. 일반적으로 두 네트워크간의 VPN을 구축할 때 사용되며, 이 경우 라우터나 게이트웨이 간의 통신을 암호화한다.
새로운 IPsec 헤더가 생성되고, 원래의 전체 IP 패킷이 새 패킷의 페이로드로 캡슐화된다. 
원본 패킷 자체를 암호화하므로 기존 src, dst 주소까지 전부 암호화되어 새로운 IP addr을 붙여줘야 한다.            

 

 

Virtual Private Networking(VPN)

공중망을 통해 사설망들을 연결하여 전용 회선 설치에 따른 비용문제를 해결하고, 공중망의 보안문제를 해결해 안전한 통신을 지원하는 네트워크이다. 즉, 공중망에서의 사설망 간 안전한 통신을 지원하는 네트워크이다.

 VPN은 개인 네트워크를 물리적 거리에 관계 없이 안전하게 확장할 수 있느 기술로 인터넷을 통해 데이터를 안전하게 전송할 수 있다.

 

- VPN은 원격 사용자에게 VPN을 통해 연결된 사설 네트워크의 사설 IP를 할당한다. 따라서 원격 사용자는 로컬 네트워크에 연결된 것처럼 작동한다.

- VPN 터널을 생성하여 암호화된 패킷을 통신한다.
- VPN은 암호화/인증 방식을 협상하고, 인터넷(공중망)에서 IP 패킷을 캡슐화하여 통신한다.

 

*공중망(Public Network): 불특정 다수의 사용자에게 서비스르 제공하는 통신망

*사설망(Private Network): 특정한 회사나 조직이 소유하고 독점적으로 사용하는 네트워크이다. 사설 IP를 가지며, 주로 LAN이다.

 

 

Types of VPNs

 

(1) 원격 접속 VPN (Remote Access VPN)

개인 사용자가 원격 위치에서 사무실 또는 홈 네트워크에 접속할 수 있게 해주는 VPN 유형이다.

즉, 인트라넷이라고도 불리는 개인 네트워크에 인터넷을 통해 원격으로 안전하게 접근할 수 있게 해주는 기술이다.

이는 주로 재택근무나 출장 중인 직원들이 회사의 네트워크 리소스에 접근할 때 사용된다. 

 

 

동작 방식은 다음과 같다.

조직은 VPN endpoint로 NAS(네트워크 접근 서버)를 설정한다.

클라이언트는 'VPN 클라이언트 소프트웨어'를 설치해 NAS와의 연결을 협상하고 통신을 가능하게 한다.

 

*NAS란?

VPN 연결의 엔드포인트로 사용자가 VPN을 통해 접속할 때 최종적으로 연결되는 서버나 장치를 말한다.
원격사용자의 인증, 권한 부여 및 계정 관리를 담당한다.

*VPN 클라이언트 소프트웨어란?
원격 사용자가 자신의 장치에 설치하는 것으로, 원격 사용자의 장치와 NAS간의 VPN 연결을 설정하고 관리할 수 있게 한다.

 

 

 

(2) 사이트 투 사이트 VPN (Site-to-Site VPN)

두 개 이상의 사이트를 연결하여, 각 사이트의 네트워크가 마치 하나의 네트워크인 것처럼 작동하게 해주는 VPN 유형이다. 이는 일반적으로 본사와 지사 간, 또는 여러 지사들 간의 네트워크를 연결하는 데 사용된다.

 

이 유형의 VPN은 각 위치에 VPN 게이트웨이를 설치하여 네트워크 간의 연결을 구성한다. VPN은 이러한 게이트웨이들 사이에서 암호화된 터널을 생성하여 데이터가 안전하게 전송될 수 있게 합니다.