본문 바로가기
IT/시스템네트워크

방화벽(Firewall)

by 모르면 모른다고 해 2013. 4. 29.
반응형

이번 글은 네트워크 보안에 필수적인 보안 장비, 방화벽에 대하여 포스팅 하고자 합니다.
궁금증이나 추가 설명은 메일이나 댓글 바랍니다.


목표 :
1. 방화벽의 목적과 기능을 이해한다.
2. 방화벽의 위치에 따른 구조와 특징을 이해한다
3. 방화벽의 설정 규칙을 이해하고 적용한다.

1. 방화벽의 목적과 기능

네트워크 분야에서는 주로 외부의 공격들로부터 내부 네트워크를 안전하게 보호하기 위해 사용된다.
상대적으로 안전하고 신뢰할 수 있는 내부 네트워크를 그렇지 않은 외부망으로 보호하기 위하여, 방화벽은 중간에서 미리 정해진 규칙에 따라 해당 데이터 패킷의 허용 여부를 결정하는 방식으로, 모든 IN, OUT 네트워크 트래픽을 제어한다.

그러나 방화벽은 두 네트워크 사이의 모든 트래픽을 처리하기 때문에 네트워크 대역폭의 손실을 최소화하기 위하여, 주로 패킷의 IP주소와 포트 종류 및 번호만으로 접근 제어를 수행하는 것이 보통이다.
이렇듯 방화벽은 미리 정해진 규칙에 따른 1차적인 방어를 수행할 뿐, 들어오고 나가는 패킷의 내용까지 검사하는 것이 아니므로 악의적인 목적을 가진 사용자의 공격 자체를 막을 수는 없다. 이러한 방화벽의 한계 때문에 대부분 도메인에서는 IDS 등 방화벽을 보완할 수 있는 다른 보안 시스템을 함게 사용한다.

 

2. 방화벽의 구조의 및 특징

가. 네트워크 레이어 방화벽
TCP/IP 프로토콜 스택의 하위 단계에서 동작하는 방화벽으로, 패킷 필터링이란 용어가 보편적으로 사용된다. 두 네트워크 사이의 패킷을 미리 정해진 규칙에 따라 검사하여 허용여부를 결정하며, 방화벽 관리자는 접근 제어 목록(ACL)을 통해 규칙을 정의한다.
네트워크 방화벽은 일반적으로 상태 기반 방식과 비 상태 기반 방식으로 나누어 볼 수 있다.

나. 애플리케이션 레이어 방화벽
TCP/IP 스택의 가장 상위 단계에서 동작하는 방화벽으로, 애플리케이션으로 오가는 모든 패킷에 대한 검사를 수행하고 그외의 패킷은 차단한다. 데이터 영역을 포함한 패킷의 모든 부분을 검사하기 때문에 네트워크를 통해 유입되는 웜이나 트로이 목마 등 악성 프로그램의 확산을 일부 차단할 수 있다.
애플리케이션 방화벽은 보통 OSI(Open System Interconnection) 모델의 애플리케이션 레이어와 하위 레이어들 간의 연결을 필터링하는 소켓 함수들을 후킹하는 방식으로, 프로세스가 특정 연결을 허용할지를 결정하는 기능을 한다.
애플리케이션 방화벽은 마치 패킷 필터링 방화벽(네트워크 레이어 방화벽)과 흡사하게 동작하는 듯 하지만, 허용 여부를 결정하는 필터링 규칙을 포트 단위가 아닌 프로세스 단위로 적용한다는 차이가 있다.

다. 프락시(Proxy) 방화벽

프락시 서버는 내부 네트워크 사용자와 외부 네트워크의 중간에서 연결 요청 등 상호 간에 유입되는 패킷을 대신하여 처리한다. 내부 사용자가 외부 네트워크에 접속하려 할 때, 이 연결 요청은 프락시 서버에 전달되어 접근 정책에 따른  위반 여부 점검 후 내부 사용자 대신 외부 네트워크로 해당 연결 요청을 전달한다. 또한 이에 대한 응답으로 외부 네트워크에서 수신된 패킷 역시 먼저 프락시 서버에 전달되어, 방화벽 설정 규칙에 따른 검사 후 내부 사용자에게 전달된다.

 

 

라. NAT(Network Address Translation) 방화벽
하나의 공인(Public) IP 주소를 다수의 내부 네트워크 사용자들이 사용할 수 있도록 각각 사설(Private)IP 주소를 할당하고, 이들 주소 간에 변환을 수행하는 것이 기본적인 NAT의 역활이다. NAT 기능이 있는 방화벽을 통해 외부로부터 내부 네트워크 구성을 감출 수 있을 뿐만 아니라, 다양한 서브 네트워크를 구성함으로써 효율성을 높일 수 있다.

 

3. 방화벽 설정 규칙
방화벽은 그 자체로서 의미가 있다기보다 관리자가 설정한 보안 규칙에 의존적이기 때문에, 사용 목적에 맞도록 규칙을 알맞게 설정하는 것이 중요하다.

가. iptable 설정 규칙

기본적으로 iptables는 다음과 같은 구문으로 구성되어 있으며, 해당 구문은 chain을 target으로 전달(-j, jump)하는 규칙을 추가(-A, Append)하게 된다.

#iptables -A chain -j target

이때, chain은 기본적으로 해당 네트워크를 통과하는 모든 패킷에 영향을 미치는 상태를 의미하며, IN,OUT,FORWARD의 3가지 기본 chain이 존재한다.
한편 target은 일반적으로 -j 옵션과 함께 쓰여 해당 패킷의 허용 여부를 결정하며, ACCEPT, DROP, REJECT 3가지 target이 존재한다. ACCEPT은 패킷을 허용하며, DROP과 REJECT는 해당 패킷을 차단한다. DROP은 해당 패킷을 버리지만 REJECT은 해당 패킷을 돌려보내는데 차이가 있으며, 일반적인 경우에는 부하를 고려하여 DROP을 사용한다.

패킷의 출발지와 목적지를 설정하기 위해서는 각각 -s (도는 --source, --src)와  -d(또는 --destination, --dst)옵션을 사용한다. 예를 들어 다음과 같은 규칙은 192.168.0.1로부터 오는 모든 패킷을 허용한다

#iptables -A INPUT -s 192.168.0.1 -j ACCEPT

192.168.0.1을 제외한 다른 모든 주소로부터 오는 패킷을 허용하는 규칙은 다음과 같다.

#iptables -A INPUT -s ! 192.168.1.0 -j ACCEPT

프로토콜을 설정하기 위해서는 -p옵션을 사용하며 인자로 TCP, UDP, ICMP 또는 이들을 모두 포함한 ALL을 지정할 수 있다. 또한 출발지 포트는 --sport옵션, 도착지 포트는 --dport 옵션을 통해 설정할 수 있다. 예를 들어 TCP프로토콜의 80번(http)포트로부터 오는 모든 패킷을 허용하는 규칙은 다음과 같다.

#iptables -A INPUT -p TCP --sport 80 -j ACCEPT

나. iptables 설정 예제
iptables 규칙은 순차적으로 적용되기 때문에 그 순서에 대한 고려가 필요하다.
관리자가 192.168.0.1을 제외한 192.168.0.0/24 서브넷에서 들어오는 모든 패킷을 차단하고자 하는 경우, 먼저 192.168.0.1에서 들어오는 모든 패킷을 허용하도록 설정한 후 192.168.0.0/24 서브넷에서 들어오는 모든 패킷을 차단하도록 설정해야 한다.

 

4. REFERENCE 및 참조
1. 해킹의 비밀을 푸는 KEY 15 | 홍현욱 외 8인 공저 | 인포더북스

반응형

'IT > 시스템네트워크' 카테고리의 다른 글

ARP Spoofing(ARP 스푸핑)  (0) 2013.04.29

댓글