외로운 Nova의 작업실

정보보안기사 필기 - 28(침입차단시스템) 본문

Certification/정보보안기사

정보보안기사 필기 - 28(침입차단시스템)

Nova_ 2022. 12. 16. 12:33

- 침입차단시스템(Firewall) 개요

침입차단시스템(방화벽)은 조직의 보안 정책에따라 인가된 네트워크 서비스에대한 접근을 허가하고 인가되지 않은 서비스를 수행하는 트래픽을 철저하게 차단함으로써 효율적인 보안 서비스를 제공하는 시스템입니다.

 

<방화벽 기능>

  • 접근 통제 : 외부에서 내부 네트워크로 접속하는 것을 패킷 필터링 등을 이용하여 통제하는 기능입니다. 패킷의 IP, 포트등을 분석한후 외부 또는 내부 네트워크에 대한 접근을 통제합니다.
  • 사용자 인증 : 사용자들의 신분을 증명하는 기능입니다. ID/Password나 공개키 인증서를 이용한 사용자에대한 식별기능과 이를 검증하는 인증과정으로 이루어집니다.
  • 감사 및 로그 기능 : 모든 트래픽에대한 접속 정보 및 네트워크 사용에따른 유용한 통계정보를 기록하는 감사 및 로그 기능입니다. 보안기능과 보안 데이터에대한 언전한 보안관리기능또한 제공되어야합니다.
  • 프라이버시 보호 : 이중 DNS 기능과 프락시 기능등을 제공함으로써 프라이버시와 관련된 정보의 노출을 막거나 정보를 공격자로부터 보호해야합니다.
  • 서비스 통제 : 네트워크의 호스트가 갖고 있는 취약점을 감소시켜 줘야합니다.
  • 데이터 암호화 : 방화벽에서 다른 방화벽까지 전송되는 데이터를 암호화해서 보내는 기능입니다.

<방화벽의 한계점>

  • 방화벽은 악성 소프트웨어 침투방어에 한계가 있습니다. 방화벽은 패킷의 IP주소와 포트 번호로 접근제어 하는 것이 보통이므로 바이러스나 웜, xss 코드 등과 같이 문서와 프로그램 내부에 포함된 악성 소프트웨어를 탐지하여 방어하는데 한계를 가집니다. 방화벽은 두 네트워크사이에서 높은 트래픽을 처리해야하므로 데이터 내용까지 검사하면 큰 오버헤드가 발생하며 네트워크 대역폭에 큰 손실을 가져옵니다.
  • 방화벽은 악의적인 내부 사용자의 공격을 막을 수 없습니다. 방화벽은 보통 신뢰하지 않는 외부 네트워크로부터 신뢰하는 내부 네트워크를 보호하는 것이 주목적이기때문에 경계에대한 보안정책을 수행할뿐 내부 공격자에게 보안정책을 적용할 수 없습니다.
  • 방화벽은 자신을 통과하지 않은 통신에 대한 제어 역시 불가능합니다. 만약 외부사용자가 방화벽을 통과하는 통신선로가 아닌 무선이나 사설 통신 경로를 이용해 통신한다면 방화벽을 우회하여 내부 네트워크로 접속할 수 있습니다.
  • 방화벽은 전혀 새로운 형태의 공격을 막을 수 없습니다. 방화벽은 규칙을 세우고 이에대해서만 방어하기때문에 새로운 형태의 공격에는 능동적으로 적용할 수 없습니다. 방화벽을 우회하거나 통과하는데 성공하고 공격을 실행하는 해킹 공격이 많습니다. 따라서 방화벽이 보안의 완성은 절대 아닙니다.

<방화벽의 운영정책>

Deny All 정책 : 모든 트래픽을 먼저 차단하고 허용해야할 트래픽만 선별적으로 허용하는 방식입니다.

Permit All 정책 : 모든 트래픽을 허용하고 특정 트래픽만을 선별적으로 차단하는 방식입니다.

 

- 침입차단시스템의 유형 분류

<패킷 필터링 시스템>

패킷 필터링 시스템은 발신지 주소와 목적지 주소 그리고 사용하고있는 세션과 애플리케이션 프로토콜에 기반해서 데이터의 흐름을 통제합니다. 패킷 필터링을 위하여 사용되는 정보는 다음과 같습니다.

  • 발신지 IP주소와 목적지 IP주소
  • 발신지 포트번호와 목적지 포트번호
  • 트래픽의 방향
  • 프로토콜의 형태
  • 패킷의 상태(SYN or ACK)

<IP주소를 이용한 패킷 필터링>

가장 기본적이고 단순한 방법은 패킷이 포함되고 있는 프로토콜이 무엇인가를 고려하지않고 단순히 패킷 내의 IP주소에 의해 패킷의 흐름을 제한하는 방식입니다. 이를 통해 위조된 발신지 주소를 가진 패킷을 차단할 수 있으며, 외부의 호스트가 내부의 호스트와 통신을 하는 것을 허용할 수도 있습니다. 그러나 IP주소를 이용한 필터링 방법의 경우에는 서비스와 무관하게 특정 IP를 가질 호스트에대하여 필터링을 수행하므로 보다 미세한 보안정책을 수행할 수 없습니다.

 

<서비스를 이용한 패킷 필터링 방법>

서비스를 이용한 패킷 필터링 방법은 패킷내의 서비스 포트번호를 이용하여 필터링을 시행하는 방법으로 IP주소를 이용한 패킷 필터링보다 더 복자하며 미세한 보안정책을 수행할 수 있게 해줍니다.

 

<패킷 필터링의 장점>

  • 단순성 : 동작 방식이 매우간단하여 구현하기 쉽습니다.
  • 고속 처리 : 필터링 규칙과 비교하기만 하면되므로 고속으로 처리할 수 있습니다.
  • 투명성 : 사용자는 방화벽의 존재를 알지못하는 상태에서 보안서비스를 제공할 수 있습니다.

 

<패킷 필터링의 단점>

  • 로그 감사기능이 부족합니다.
  • 네트워크계층 주소 스푸핑같은 TCP/IP 명세와 프로토콜 스택 안의 문제점을 이용하는 공격에는 취약합니다.
  • 패킷 단편화 공격을 탐지할 수 없습니다.

<NAT>

패킷 필터링과 상태 유지 방화벽은 NAT(network address translation)이라불리는 제2의 보안체제를 제공합니다. NAT(네트워크 주소 변환)은 사설주소와 범용 주소의 매핑을 제공하고 동시에 가상 사설 네트워크를 지원하는 기술입니다. 외부에서 내부 네트워크로 직접적인 접근이 불가능하게되므로 네트워크 보안효과를 가져옵니다.

 

<NAT 종류>

  • static NAT : 단지 사설주소와 외부주소 2개의 열만 가지는 것입니다. 
  • Dynamic NAT : 범용주소들을 모아놓은 풀에서 사설주소와 매핑합니다.
  • PAT(port address translation) : 사설주소를 외부주소 하나의 여러가지 포트번호를 붙여 매핑합니다.

 

<스테이트풀 패킷 검사 침입차단 시스템>

스테이트풀 패킷 검사 침입차단시스템(상태기반 검사 방화벽, stateful packet inspection firewall)은 패킷 필터링 침입차단시스템에서와 마찬가지로 동일한 패킷 정보를 검토하지만 TCP 연결에 관한 정보를 기록합니다. 또한 TCP 순서번호를 추적해서 순서번호를 이용한 세션 하이재킹 같은 공격을 막습니다. 네트워크와 전송 계층에서 동작합니다.

 

<상태기반 검사 방화벽 동작 원리>

state packet inspector은 데이터링크 계층에서 SYN 패킷을 전송받으면 접근제어 정책에 의해 상태 테이블에 남기고 접근 허용여부를 결정합니다. 만약 접근이 금지된 패킷일경우 로그를 저장하고 전송을 수행하지않으며 접근이 허용된 패킷은 네트워크 계층으로 전송시킵니다. 만약 SYN 패킷이 아닐경우 상태 테이블의 패킷정보 여부를 검사하고 존재하면 네트워크 계층으로 패킷을 전송시킵니다.

 

<상태기반 검사 방화벽 장단점>

  • 패킷 상태 정보에대한 보안성을 높일 수 있습니다.
  • stateful packet inspector 모듈을 통하여 전체 계층에대한 상태를 조사할 수 있습니다.
  • SYN 패킷의 검사를 시작으로 상태 테이블을 유지시키는 방법을 사용하기때문에 첫 패킷 헤더가 공격당할 경우에는 잘못된 상태 테이블을 구성할 수 있다는 단점이 있습니다.

<프락시 방화벽>

프락시(proxy) 서비스는 침입차단시스템 호스트에서 실행되는 전문화된 애플리케이션이나 혹은 서버 프로그램으로서 침입차단시스템에서 사용되는 배스천호스트에 설치되어 운영됩니다.

 

<배스천 호스트>

배스천 호스트(bastion host)는 중세 성곽의 외부 방벽의 강화된 돌출부에서 유래된 이름으로 침입차단 S/W가 설치되어 내부외부 네트워크 사이에서 게이트웨이 역할을 수행하며 철저한 보안 방어 기능이 구축되어있는 컴퓨터 시스템을 말합니다. 침입차단 시스템 관리자가 중점적으로 관리해야될 부분이며 외부에서 내부 네트워크로 접속하기위해선 배스천호스트를 통해야 합니다. 내부 네트워크 사용자의 주요 접속점으로 인터넷에 노출되어 공격에 취약하므로 불필요한 사용자 계정 중요하지않은 명령 및 파일은 삭제하고 운영하는 것이 좋습니다.

 

<배스천 호스트의 설계와 구축의 기본원리>

단순한 구조 : 배스천호스트가 단순하면 단순할 수록 호스트 보안정책을 쉽게 구성할 수 있습니다.

비상 대비책 강구 : 배스천호스트의 손상에대한 대비책을 강구해야합니다.

로그 백업 기능 : 시스템 로그에대한 백업 방법을 강구해야합니다.

 

<응용프로그램 수준 프록시 방화벽(응용 계층 게이트웨이)>

패킷을 응용프로그램 계층까지 검사합니다. 응용 계층 게이트웨이는 내부 서버 보호를 목적으로합니다. 회선 수준 프락시는 세션 계층까지 검사하는 반면 응용프로그램 수준 프락시는 패킷 전체를 이해하고 패킷 내의 내용에 기반을 두어 접근 결정을 내립니다. 응용프로그램 수준 프록시는 FTP GET명렬어와 FTP PUT명령어를 구분하지만 패킷필터링 침입차단시스템은 FTP프로토콜인지 아닌지를 구분합니다. 운용 서비스마다 다른 응용 게이트웨이를 구현하여 보다 안전하게 네트워크 시스템을 보호할 수 있습니다. 또한 응용서비스 사용에따른 기록 및 감사 추적이 가능하고 스푸핑 공격과 다른 정교한 공격에 대응하 수 있습니다. 하지만, 높은 대역폭으로 실시간 응용프로그램에는 적합하지않으며 새로운 네트워크 응용프로그램과 프로토콜의 지원에 제한적입니다.

 

<회선 레벨 게이트웨이>

회선 레벨 게이트에위(circuit-level gateway)는 socks 프로토콜을 사용하는 프락시 서버입니다. 내부 네트워크에 있는 호스트를 보호하는 목적으로 사용합니다. 내부 호스트가 외부 접속을 요청하면 서킷 레벨 게이트웨이는 IP주소를 서킷 레벨 게이트웨이 IP주소로 변환하여 보내기때문에 내부 호스트의 정보를 노출 시키지 않습니다. 이는 유연하게 공격에 대처할 수 있으며 서비스마다 개별 프락시 서버를 둘 필요가 없습니다. 응용 게이트웨이 프락시에비해 처리속도가 빠르고 패킷 필터링 방화벽에의해 높은 수준의 보안 서비스를 제공합니다. 반면 응용 트래픽을 조사하지 않으므로 응용 서비스를 사용하여 공격용 트래픽을 전송할 수있는 신뢰할 수 없는 사용자에대해 사용할 경우 위험이 따릅니다.

 

- 침입차단 시스템의 종류(구축 형태)

<스크리닝 라우터 구조>

스크리닝 라우터 구조(screening router architecture)은 라우터를 이용해 각 인터페이스에 들어오고 나가는 패킷을 필터링하여 내부 서버로의 접근을 가려내는 역할을합니다. TCP/UDP 패킷 헤더를 분석하여 통과시킬건지 차단할지를 판별합니다.

 

<이중 네트워크 호스트 구조>

이중 네트워크 호스트 구조(dual-homed host architcture)은 두개의 인터페이스를 가지는 장비를 말하며 하나의 인터페이스는 외부 네트워크와 연결되고 다른 인터페이스는 내부 네트워크로 연결되며 라우팅 기능이 없는 방화벽을 설치하는 형태입니다. 네트워크의 모든 패킷을 검사 및 필터링해야하기때문에 상당히 높은 성능의 시스템이 요구되며 소규모 네트워크에 적합니다.

<스크린드 호스트 게이트웨이구조>

스크린드 호스트 게이트웨이 구조(screened host gateway)는 듀얼-홈드 게이트웨이와 스크리닝 라우터를 결합한 형태로 내부 넽ㅡ워크에 놓여있는 배스천호스트와 외부 네트워크 사이에 스크리닝 라우터를 설치하여 구성합니다. 2단계 방어가 가능하기때문에 필터링 규칙이 단순하며, 방어의 깊이가 개선되어 해커의 공격에 잘 대처할 수 있습니다. 하지만, 속도가 느리고 IP스푸핑이나 단편화를 이용한 공격으로 침입해오면 내부 호스트를 보호할 수 없게됩니다.

 

<스크린드 서브넷 구조>

스크린드 서브넷 구조(sceened subnet architecture)은 스크리닝 라우터들 사이에 듀얼 홈드 게이트웨이가 위치하는 구조로 인터넷과 내부 네트워크 사이에 DMZ라는 네트워크 완충지역 역할을 하는 서브넷을 운영하는 방식입니다. 스크린드 서브넷에 설치된 배스천호스트는 프락시 서버를 이용하여 명확히 진입이 허용되지않은 모든 트래픽을 거절하는 기능을 수행합니다. 보통 DMZ안에 있는 시스템은 외부와 접속해야하는 웺버, 이메일서버, DNS 서버등이 있습니다. DB서버는 내부 네트워크에 설치됩니다. 허니팟 시스템은 일반적으로 DNZ에 위치하며 공격자를 유인할 수 있도록 이용하기 쉬운 서비스와 포트를 사용가능으로 설정합니다. 매우 안전하며 높은 방어의 깊이를 가지지만 구축비용이 많으들며 느려집니다.

- iptables

iptables는 리눅스 커널에 내장된 netfilter 기능을 관리하기위한 툴이며 rule 기반의 패킷 필터링 기능을 제공합니다. 또한 concection tracking 기능을 제공하는데 이는 모든 패킷에 대 연결 상태를 추적하여 이를 메모리에 기억하고 있다가 기존의 연결을 가장하여 접근할 경우 메모리에 저장된 상태 목록과 비교하여 적합하면 통과시키는 기능을말합니다. NAT 기능을 제공하며 패킷 레벨에서의 로깅기능, 확장모듈을 통한 다양한 기능을 제공합니다.

 

<주요 용어>

  • table : iptables가 제공하는 기능을 의미하며 대표적으로 패킷 필터링을 제공하는 fiter 테이블과 NAT 기능을 제공하는 nat 테이블이 있습니다.
  • chain : 체인은 패킷이 이동하는 경로를 의미합니다. 종류는 아래에 있습니다.
  • INPUT 체인 : 방화벽을 최종목적지로 하는 체인
  • OUTPUT 체인 : 방화벽을 최초 출발지로 하는 체인
  • FORWARD 체인 : 방화벽을 경유하는 채널

 

<사용법>

문법 : iptables [테이블명] [iptables] [체인명] [룰설정] [타깃지정]

가장 먼저 설정된 룰부터 순서대로 매칭여부를 검사하여 일치할 경우 해당 정책을 따릅니다. 모든 룰에 매칭되지않는다면 해당 체인에 defalt 정책을 따릅니다.
테이블명 : 테이블 명에는 filter, nat등이 올 수 있으며 명시하지않으면 filter로 적용됩니다.

iptabels : 룰을 설정할 모드를 설정합니다.

iptables - [A|I|D|F|P] 

  • A : append 모드로 해당 체인의 제일 마지막에 룰을 추가합니다.
  • I : insert 모드로 해당 체인의 첫행에 룰을 추가합니다. 행번호 지정지 측정위치에 룰 추가가 가능합니다.
  • D : delet 모드로 행번호를 지정하여 특정 위치의 룰을 삭제합니다.
  • F : flush 모드로 해당 체인의 모든 룰을 삭제합니다.
  • P : 해당 체인의 default 정책을 설정합니다.

체인명 : INPUT, OUTPUT, FORWARD 체인이 올 수있습니다.

룰 설정 : 쓸 수 있는 명령어는 아래와 같습니다.

  • -p : 프로토콜을 지정합니다 ex) tcp, udp
  • -s : source ip로 출발지 주소를 지정합니다. 명시하지않으면 any로 됩니다.
  • -d : destination ip로 목적지 주소를 지정합니다. 명시하지않으면 any로 됩니다.
  • --sport : source port를 지정합니다.
  • --dport : destination port를 지정합니다.
  • -i : 패킷이 들어오는 인터페이스를 지정합니다.
  • -o : 패킷이 나가는 인터페이스를 지정합니다.

타깃 지정 : -j를 쓰고 룰에 매칭될때 적용할 정책을 지정합니다. 아래는 주요 정책입니다.

  • ACCEPT : 패킷을 통과시킵니다.
  • DROP : 아무런 응답을 하지않고 차단합니다.
  • REJECT : icmp 에러 응답을 전송하고 차단합니다.
  • LOG : 로그를남깁니다.

<iptables 기본 사용 예시>

출발지 주소가 1.1.1.1인 모든 접속 포트를 차단 : iptables -A INPUT -s 1.1.1.1 -j DROP

목적지 포트가 1024번 이하의 모든 포트인 tcp 프로토콜 패킷을 거부하는 규칙 추가 : iptables -A INPUT --dport:1023 -j DROP

Comments