[IT-Security] Chapter 8. Firewall

MJ·2023년 2월 15일
0

IT Security

목록 보기
8/9

Firewall (방화벽)

네트워크 분야에서 방화벽은 네트워크 상에서 공격자의 침입이나 바이러스 등으로부터 발생하는 보안 사고 및 문제가 더 이상 확대되는 것을 차단하고 격리하는 벽을 역할을 하는 하드웨어나 소프트웨어를 뜻한다.

네트워크 상 보안 사고를 방지하는 방법은?:

  • 권한없는 트래픽을 차단한다.
  • 방화벽 내에서 정해진 정책을 따라 트래픽을 통제한다.

Packet Filter (패킷 필터)

패킷 필터는 방화벽 1세대로써, 현재는 잘 사용하지 않지만 초창기에 많이 사용된 방화벽 방식이다.

패킷 필터링은 OSI 7계층 구조에서 전송 계층과 네트워크 계층에서 동작라며, 지나가는 패킷의 헤더안의 IP address 와 Port address만을 단순 검색하여 통제한다.

패킷 필터 방화벽은 인터넷 내부 네트워크의 경계에 설치해서 패킷의 IP주소와 포트번호 등의 조건으로 통신을 허가하거나 거부를 한다. 이렇게 패킷 필터링은 미리 정해놓은 정책에 따라 전송을 허용한다.

패킷 필터링 정책의 예시:

  • 명시적으로 금지되지 않은 통신 모두 허용
  • 명시적으로 금지되지 않은 통신 모두 거부 (Default Deny)
    - 이 방식이 더 안전하다
  • 위 두가지가 혼합된 방식

Stateful Inspection 방식이나 Application gateway 방식에 비하여 처리 속도가 빠르고 적용/운용이 쉽다.

패킷 필터의 구성요소:

  • Input Interface
  • IP destination and source address
  • Utilized transport protocol
  • Flags e.g. from TCP header
  • Time and date
  • Application via transport protocols and server-side port numbers

단점:

  • 하나의 서비스를 허용하기 위해서는 패킷이 들어오느 방향과 나가는 방향에 대한 접근규칙을 정의해야 하므로 두 개 이상의 정책 설정이 필요하다.
  • Protocol Tunneling의 경우나 암호화 된 메세지가 네트워크 안으로 들어왔을 때 처리하기 어렵다.
  • 가변적인 통신포트를 사용하는 서비스나 FTP 처럼 다중 포트를 사용하는 서비스를 처리하기 매우 어렵다.
  • 전송중인 데이터가 응용 프로그램에 부정적인 영향을 미칠지 여부를 미리 정의된 정책이 없다면 확인할 수 없다.
  • 신뢰할 수 있는 소스 주소에서 허용된 악의적인 행위로 인해 데이터베이스가 삭제되더라도 방화벽은 확일할 방법이 없다.
  • 전송되는 모든 패킷을 정책과 비교해야 하기 때문에 전송 속도가 느려지고, 패킷의 헤더를 조작하는 방식으로 우회로 접근할 수 있다.
    Protocol Tunneling이란?:
    한 네트워크에서 다른 네트워크로 데이터를 이동할 수 있도록 하는 통신 프로토콜이다. 캡슐화 되어 전송되기 때문에 packet filtering에 적합하지 않다.

Static packet filter

Stateless

  • 정적 패킷 필터는 당장 표시된 패킷 헤더만을 기반으로 동작한다.

Dynamic packet filter

Stateful

  • 한번 허용된 패킷은 잠깐 세션을 저장하여, 후속 패킷들은 그대로 통과시킨다.
  • Application 계층까지 분석하고, 네트워크 연결 상태를 추적한다.
  • 이 방식이 요즘날 쓰이는 방식이다.
  • Static paket filtering 보다는 더 넓은 트래픽을 볼 수 있어 다양한 계층 공격에 대응할 수 있지만 속도는 상대적으로 떨어질 수 있다.
  • Load balancing이나 다른 방화벽으로 전환하는 것이 어렵다.

Network Address Translation

가장 추천하는 combination: NAT-Gateway & packet filter

Symmetric NAT

IP:PORT 검증

Symmetric NAT은 연결된 Destination에 따라 다른 외부 IP:PORT 로 매핑된다는 특징을 갖는다.

외부 네트워크 통신에서의 제약사항은 Port Restricted Cone NAT과 동일하게 적용된다.

Host의 Private NAT에 대해 NAT 장비가 매핑하는 정보가 통신 대상에 따라 달라진다.

고정 매핑 방식이 아니라 가변적인 매핑 방식으로 이해할 수 있다.

  • 매핑 테이블:

    <internal private IP address, internal port, externally used IP address,
    externally used port, IP address of the communication partner in the
    Internet, port of the communication partner in the Internet, transport
    protocol>

  • 들어오는 패킷들을 자동적으로 블락하기 때문에 VoIP는 사용하기 까다롭다.

Cone NAT

Cone NAT은 NAT 장비가 NAT 네트워크의 Host에 대해 공인 IP:PORT로 매핑한 주소가 변하지 않는다는 특징을 갖는다.

  • 매핑 테이블:

    <internal private IP address, internal port, externally used IP address,
    externally used port, transport protocol>

Full Cone NAT

제한사항 없음

가장 개방적인 형태의 NAT 방식으로 외부 네트워크 누구든지 NAT 장비에 매핑된 Public IP:PORT로 접근 시 내부 네트워크 Host에 통신을 시도할 수 있다.

Restricted Cone NAT

IP 검증
이전에 Host가 외부로 데이터를 전송한 적이 있는 ip만 허용한다. 따라서 통신한 적이 없는 주소로부터 패킷을 받으면 드랍한다.

Port Restricted Cone NAT

IP/PORT 검증

이전에 통신하던 IP주소와 PORT가 일치해야만 패킷을 수신할 수 있다.

Linux Packet Filter

netfilter

  • 리눅스 커널 내부의 네트워크 관련 프레임워크
  • 다양한 네트워크 관련 연산을 핸들러 형태로 구현할 수 있도록 훅(hook) 제공
  • 네트워크 주소 변환, 패킷 필터링 및 패킷 분해 등을 용이하게 해준다.
  • iptable을 통해 접근 권한 제어

iptable이란?

  • 리눅스 OS 방화벽
  • 방화벽, 라우터, 브리지 역할을 한다.
  • IP Packet Filtering, NAT 관리 도구
  • 여러개의 netfilter 모듈로 구현된다.

기능:

  • 상태추척 : iptables 경유 패킷들에 대한 연결상태 추적 기능
  • 매칭 : 출발지와 목적지 IP, 출발지와 목적지 PORT, 프로토콜 등을 통한 매칭 기능
  • 로그 : 매칭 패킷의 로그 저장
  • 포트 포워딩 : NAT 기능 포함

Application Level Gateway (ALG)

프록시 (Proxy) 또는 Session Border Controller (SBC) 라고도 불린다.

프록시(Proxy)는 "대리"의 의미로, 인터넷과 관련해서 쓰이는 경우, 특히 내부 네트워크에서 인터넷 접속을 할 때에, 빠른 액세스나 안전한 통신등을 확보하기 위한 중계서버를 "프록시 서버"라고 일컫는다. 클라이언트와 Web서버의 중간에 위치하고 있어, 대신 통신을 받아 주는 것이 프록시 서버이다.

서버의 IP를 숨기는 기능과 외부로부터 위험을 막아주는 역할을 한다.

  • 프록시 서버에는 캐시가 있는데 이는 이전에 했던 요청들을 프록시 서버에 저장해두어 다음 번에 재요청을 보낼 때 서버를 거치지 않고 데이터를 주고 받을 수 있도록 한다 -> 더 빠른 연결 속도!

  • 프록시 서버를 사용하면 사용자의 IP주소를 감출 수 있는데 이 때문에 어느 곳에서 접속한지를 숨길 수 있다.

패킷 필터링과 다른점:

  • application 기능과 사용자 사이에서 communication이 제한되어 있다.
  • 사용자가 rule을 지정할 수 있다.
  • content checking
  • 사용자는 communiation partner와 직접적으로 communication을 하지 않는다.
  • Applcation Level 에서 작동한다.

주로 패킷 필터링과 함께 쓰인다.

단점:

  • 특정 application에게 강하게 의존적이다.
  • host와 직접적으로 연결되어 있기 때문에 easier to discover.

0개의 댓글