본문 바로가기

전공 공부/네트워크 해킹과 보안 : 정보보안 개론과 실습

ch12 - 방화벽 / 연습문제 12장

728x90

01 - 방화벽의 기능과 구조

방화벽(firewall) : 네트워크의 보안을 높이는 데 필요한 기본적인 보안 솔류션으로 신뢰하지 않는 외부 네트워크와 신뢰하는 내부 네트워크 사이를 지나는 패킷을 미리 정한 규칙에 따라 차단하거나 보내주는 기능을 하는 소프트웨어, 하드웨어이다.

 - 네트워크에서 방화벽은 성문을 지키는 병사가 행인의 통행증을 검사하고 출입을 허가하는 것과 비슷하다.

 

 1. 방화벽의 기능

  • 접근제어(Access Control)

 - 방화벽의 가장 기본적인 기능으로 통과시킬 접근과 차단할 접근을 관리자가 명시해주면 방화벽이 실행

이런 제어 방식은 구현방법에 따라 필터링(Packet Filtering)프록시 방식(Proxy)으로 나뉜다.

 

  • 로깅과 감사 추적

로깅(Logging) : 방화벽을 통과하는 패킷 및 연결에 대한 정보나 관리자의 설정 변경 정보를 저장한다.

감사추적(Audit Trail) : 정보 시스템 내에 저장된 로그를 이용하여 허용되지 않은 접속 시도 및 연결 등을 확인할 수 있는 기능이다.

 

  • 인증(Authentication)

 - 통행증같은 것으로 메시지, 사용자, 클라이언트 인증이 있다.

메시지 인증 : VPN과 같은 신뢰하는 통신선으로 전송되는 메시지에 대한 신뢰성을 보장하는 것이다.

사용자 인증 : 패스워드를 통한 단순 인증부터 OTP(One Time Password)나 토큰 기반(Token Base)과 같은 높은 수준의                     인증까지 가능하다.

클라이언트 인증 : 모바일 사용자와 같이 특수한 접속을 요구하는 호스트 자체가 정당한 접속 호스트인지 확인하는 것이다.

 

  • 데이터 암호화

방화벽에서 방화벽까지 전송되는 데이터를 암호화해서 보내는 것으로 VPN기능을 이용한다.

 

  1.1 방화벽의 한계

  • 바이러스 차단 불가

방화벽은 패킷의 IP 주소와 포트 번호로 접근 제어를 하는 것으로 두 네트워크 사이에 존재하는 방화벽은 높은 트래픽을 처리해야 한다. 여기에 데이터 내용까지 검사하면 오버헤드가 발생하고 네트워크 대역폭에 큰 손실을 가져올 수 있다.

 

  • 내부 공격 차단 불가

방화벽은 악의적인 내부 사용자의 공격을 막을 수 없다. 방화벽의 주 목적은 외부로부터 내부를 보호하는 것으로 내부 공격자는 막을 수 없다.

 

  • 자신을 통하지 않은 통신에 대한 제어 불가

방화벽은 자신을 통과하지 않은 통신에 대해서 제어할 수 없다. 내부 사용자가 방화벽을 통과하는 통신 선로가 아닌 무선이나 사설 통신 선로로 통신하면, 공격자는 방화벽을 우회해 내부 네트워크로 접속할 수 있다.

 

  • 새로운 형태의 공격 차단 불가

 

 2. 방화벽의 구조

  2.1 적을 방어하는 최상의 위치

베스천 호스트(bastion host) : 성곽의 사각 모서리 둥근 부분을 지칭하는 것으로 감시병이 성을 지키거나 적을 방어하기 위한 최상의 위치를 말한다.

 - 네트워크에서 베스천 호스트 :  철저한 방어 정책이 구현되어 있고 외부 접속에 대한 일차적인 연결을 받아들이는 시스템을 말한다.

 

  2.2 방화벽의 기본 구조

방화벽 위치에 다른 구분

 

  • 스크리닝 라우터

스크리닝 라우터(Screening router) : 3계층, 4계층에서 실행되며 IP 주소와 포트에 대한 접근 제어만 가능하다.

 - 외부와 내부 네트워크의 경계에 있고 일반 라우터에 패킷 필터링 규칙을 적용하여 방화벽의 역할을 수행

단점 : 방화벽이라 하기에 부족하고 세부적인 규칙을 적용하기 어렵고 많은 규칙을 적용하면 라우터에 부하가 걸려 대역폭을 효과적으로 이용할 수 없다. 또한 실패한 접속에 대한 로깅을 지원하지 않아 검증도 어렵다.

 

장점 : 저렴한 가격으로 기본 역할을 수행하며 빠른 처리 속도를 유지할 수 있다. 또한 내부와 외부의 정상적인 사용자는 패킷 피러링 라우터가 존재함을 인식하지 않고 자유롭게 서비스를 이용할 수 있다.

 

  • 단일 홈 게이트웨이

단일 홈 게이트웨이(single-Homed Gateway) : 스크리닝 라우터와 비슷한 구조와 좀 더 발전된 형태로 이 구조를 베스천 호스트라고 부르기도 한다.

 - 접근 제어, 프록시, 인증, 로깅 등과 같은 방화벽의 가장 기본이 되는 기능을 수행하며 윈도우 NT, 유닉스 등과 같은 운영체제에 설치하여 운영하기 때문에 다음과 같은 작업을 해야 한다.

  • 일반 사용자 계정 모두 삭제
  • 방화벽 기능 외의 유틸리티와 파일은 모두 지운다.
  • 대용량의 모니터링과 로깅이 가능해야 한다.
  • IP 포워딩 및 소스 라우팅 기능을 없앤다.

- 단일 홈 게이트웨이로 비교적 강력한 보안 정책을 실행할 수 있지만 원격 로그인 정보가 노출되어 공격자가 방화벽에 대한 제어권을 얻으면 내부 네트워크를 보호할 수 없다. 2계층 공격을 통하면 방화벽 우회도 가능하다. 

 

  • 이중 홈 게이트웨이

이중 홈 게이트웨이(Dual-Homed Gateway)는 네트워크 카드를 둘 이상 갖춘 방화벽이다.

단일은 하나의 네트워크 카드로 다른 시스템과 동등하게 경계선에 놓이고 이중 홈은 외부네트워크/내부네트워크에 대한 네트워크 카드를 구분하여 운영한다.

효율적으로 트래픽을 관리

 

  • 스크린된 호스트 게이트웨이

스크린된 호스트 게이트웨이 : 좀더 발전된 형태의 방화벽으로 라우터와 방화벽을 구분하여 운영하는데 스크리닝 라우터와 단일 홈 게이트웨이의 조합이라고 생각할 수 있다.

스크린된 호스트 게이트웨이는 스크리닝 라우터에서 패킷 필터링으로 1차 방어를 하고 베스천 호스트로 단일 홈 게이트웨이에서 프록시와 같은 서비스를 통해 2차 방어를 한다.

또한 베스천 호스트는 스크리닝 라우터를 거치지 않은 모든 접속을 거부하고 스크리닝 라우터도 베스천 호스트를 거치지 않은 모든 접속을 거부하도록 설정한다.

 

 - 스크리닝 라우터 + 이중 홈 게이트웨이

 

 장점 : 스크린된 호스크 게이트웨이는 2단계로 방어를 실행하고 스크리닝 라우터에서 3,4계층에 대한 접근제어와 베스천 호스트에서 7계층에 대한 접근 제어까지 실행해서 가장 많이 이용하고 해커가 공격하기 어렵다.

 

단점 : 해커가 스크리닝 라우터를 해킹하면 베스천 호스트를 건너뛰고 내부 네트워크에 직접 접근 할 수 있고 구축 비용이 많이 든다.

 

  • 스크린된 서브넷 게이트웨이

스크린된 서브넷 게이브웨이(Screened Subnet Gateway) : 외부 네트워크와 내부 네트워크 사이에 완충 지대를 두는 것.

완충지대의 네트워크를 서브넷(subnet) 이라고 부르며 보통 여기에 DMZ(DeMilitarized Zone)가 위치한다.

방화벽도 서브넷에 위치하는데 프록시가 주로 설치된다.

장점 : 다른 방화벽의 장점을 모두 갖출 정도로 융통성이 뛰어나고 좋다. 또한 해커가 침입하는데 통과할 곳이 많아 안전한 편이다.

단점 : 다른 방화벽보다 설치, 관리가 어렵고 서비스 속도가 느리면 고가다.

 

 

 - 스크린된 서브넷 게이트웨이 - 이중 홈 게이트웨이

 -> 단일 홈 게이트웨이 보다 빠르면 강력한 보안 정책 가능

 

[실습] IPCop 방화벽 설치

 

 

02 - 방화벽의 역할

 2.1 패킷 필터링

[실습] IPCop 패킷 필터링 규칙 적용하기

 

 1.1 보안의 기본 원칙

  • 페일 세이브(Fail Safe)

 : 오류가 발생하여 시스템이 정상적으로 작동하지 않을 때 사용자나 시스템에 피해를 입히지 않는 상태로 남아 있어야 한다는 뜻으로 시스템이 인증 시스템 등의 오류로 정상 운용이 불가능한 상태가 되었어도 공격자가 인증을 받지 않고 접속할 수는 없어야 한다. [명백히 허용하지 않은 서비스에 대한 거부]

 -> 함당한 사용자도 인증 시스템의 오류로 정상적인 서비스가 가능해질 때까지 시스템을 이용할 수 없고 방화벽은 일반적으로 fail safe가 원칙.

 

 - 거부를 명시하지 않은 모든 서비스에 대한 허용을 기본 원칙도 있지만 예외적인 경우로 매우 위험하다.

 

  • 세이프 페일러(safe failure)

 : 안전한 실패라는 뜻으로 실패가 일어나도 안전해야 한다는 의미이다.

ex) 전기로 작동하는 문에 전기가 공급되지 않아 문제가 생겨도 대안 방안이 있어야 한다.

 

 - 스위치는 시스템에 오류가 생기더라도 네트워크가 마비되지 않도록 허브로 작동한다.

 

 1.2 패킷 필터링 규칙

 - 명백히  허용하지 않은 서비스에 대한 거부 적용 과정

1) 허용할 서비스를 확인한다.

2) 제공하려는 서비스에 보안 문제가 없는지, 허용이 타당한지 검토한다.

3) 서비스가 이뤄지는 형태를 확인하고, 어떤 규칙을 적용할지 구체적으로 결정한다.

4) 실제로 방화벽에 적용을 한 뒤 적용된 규칙을 검사한다.

 

방화벽은 내부 인터페이스와 외부 인터페이스가 따로 존재하는 이중 홈 게이트웨이로 내부 네트워크 : 192.168.1.0/24

 

 - 내부 클라이언트가 외부의 웹 서버로 접근이 가능하도록 설정

  • 1번 규칙 : 내부 -> 외부로 나가는 패킷 중 80번 포트를 목적지로 하는 패킷은 허용한다.
  • 2번 규칙 : 일반적으로 방화벽은 명백히 허용하지 않은 모든 패킷을 거부하게 되어 있지만 그렇지 않은 경우도 있으므로 기본적으로 차단하고 경우에 따라 허용한다.

 

 - 외부 클라이언트가 내부의 웹 서버(~1.10)와 FTP(~1.12) 서버에 접근할 수 있도록 패킷 필터링 규칙 추가

  • 2번 규칙 : 내부와 외부에서 모두 웹 서버(~1.10)에 접근할 수 있도록 허용
  • 3번 규칙 : FTP 서버(~1.10)에도 같은 접근을 허용

 

 - 메일 필터링 규칙 적용

내부 클라이언트가 내부 메일 서버로 메일을 보내면, 메일 서버가 이를 저장했다가 다시 외부 메일 서버로 보내고, 외부메일 서버는 다시 외부 클라이언트에게 메일을 전달하는 방식으로 동작

내부 클라이언트 -> 내부 메일 서버 저장 -> 외부 메일 서버 -> 외부 클라이언트 순

 

  • 4번 규칙 : 내부 메일 서버(~1.11)에서 외부 메일 서버(10.10.10.21)로 가는 SMTP 패킷을 허용
  • 5번 규칙 : 내부 메일 서버에서 외부 메일 서버로의 POP3 접근을 금지한다.
  • 6번 규칙 : 내부 메일 서버에서 외부 메일 서버로의 IMAP 접근을 허용
  • 7~9번 규칙 : 외부 메일 서버에 대한 내부 메일 서버의 접근 규칙을 똑같이 설정
  • 10번 규칙 : 외부의 모든 시스템에서 내부 시스템으로 메일을 보내지 못하도록 설정. 스팸 메일을 막기 위한 규칙

 

 - DNS 서버에 대한 접근 규칙 추가

  • 11번 규칙 : 내부에서 외부로의 DNS 접근 허용

[실습] IPCop 패킷 필터링 규칙 적용

 

 2.2 NAT

NAT(Network Address Translation) : 사용 가능한 공인 주소의 수가 실제 인터넷에 연결되는 시스템의 수에 비해 부족해서 개발된 기술로 내부 네트워크에서 사설 주소를 소유하고 있다가 외부로 접근할 때 라우팅이 가능한 외부 공인 주소를 규칙에 따라 할당받아야 접속할 수 있다.

 

 - 구현 방법에 따른 구분

  • Normal NAT

 : 내부의 사설 IP 주소를 가진 클라이언트가 외부로 접속할 때 사용하는 것

1) 클라이언트는 내부(사설) IP 주소를 출발지 주소로, 접속하려는 외부 IP 주소를 목적지 주소로 하는 패킷을 생성하여 방화벽으로 보낸다.(방화벽은 기본 게이트웨이처럼 동작)

2) 방화벽은 Normal NAT 규칙에 따라 패킷의 출발지 주소를 미리 설정된 방화벽(공인) IP 주소로 바꾸어 원격지 서버로 전송한다.

3) 방화벽이 보낸 패킷에 대한 응답 패킷을 원격지 서버에서 보낸다.

4) 방화벽은 다시 Normal NAT규칙에 따라 목적지 주소를 처음 접속을 시도한 클라이언트의 내부(사설) IP 주소로 바꾼 후, 실제로 접속을 시도한 클라이언트로 전송한다.

 

  • Reverse NAT

 : 내부에 서버가 존재하는 경우에 설정.

클라이언트는 Normal NAT를 통해서 원격 접속을 할 수 있지만, 서버는 처음 패킷의 시도가 원격에서 오기 때문에 여러 개의 내부 IP 주소 중 어디에서 접속해온 패킷을 보내야 할지 알 수 없어서 내부 네트워크에 대해서 Reverse NAT 규칙이 존재해야 한다.

 

 - 'Static Mapping'이라고도 하며 사설 IP 주소 하낭 대해 공인 IP 주소 한 개를 설정한다.

1) 외부 클라이언트는 공인 IP 주소를 출발지 주소로, 방화벽 지정 외부 IP 주소를 목적지 주소로 하는 패킷을 생성하여 방화벽으로 보낸다.

2) 방화벽은 Reverse NAT 규칙에 따라 패킷의 목적지 주소를 미리 설정되어 있는 내부(사설) IP 주소로 바꾸어 내부 서버로 전송한다.

3) 내부 서버는 이에 대한 응답을 방화벽으로 보낸다.

4) 방화벽은 내부(사설) IP 주소로 되어 있는 출발지 IP 주소를 방화벽 지정 외부 IP 주소로 바꾸어 외부 클라이언트로 전송한다.

 

  • Redirect NAT

 : 목적지 주소를 재지정할 때 사용한다. 

210.100.100.1로 사용하던 서버의 주소가 210.100.100.2로 바뀔 경우, 210.100.100.1로 접속을 시도한 패킷의 목적지 주소를 210.100.100.2로 바꿔준다.

 

  • Exclude NAT

 : Normal NAT를 적용받지 않고 방화벽을 지나도록 설정하는 것이다. 방화벽과 라우터 사이에 서버가 있는 경우와 같이 특정한 목적지에 대해서만 Normal NAT가 적용되지 않도록 설정할 수 있다.

 

 - NAT는 3,4계층에서 작동해 7계층인 응용 계층에서 IP 주소 정보를 전달하는 일부 응용 프로그램에서는 NAT기능을 사용할 수 없고 대신 프록시가 있어야 통신이 가능하다.

[7계층에서 IP 주소를 전달하는 프로그램 - ICMP, FTP, NetBIOS, RealAudio, StramWorks, RIP, OSPF, IPSec..]

 

[실습]IPCop에서 NAT 적용하기

 

 2.3 프록시

 : 방화벽의 한 구성 요소로 동작하면서 패킷 필터링에 대한 보조적인 도구 또는 독립적으로 운영되고 외부 사용자에게는 많은 서비스를 제약하지만, 내부 사용자에게는 제약을 두지 않는 편이다.

 

 - 프록시의 종류

  • 회로 계층 프록시(Circuit Level Proxy)

SOCKS처럼 하나의 회로를 만들 뿐 실제적인 프로토콜 분석이 가능한게 아니라서 바이러스 같은 것을 잡을 수 없다.

 

  • 응용 계층 프록시(Application Level Proxy)

http, ftp 등 하나의 서비스에 대한 포록시가 개별적으로 존재

 

 

[실습] IPCop 프록시 설정