메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

BSD 방화벽에서 IPFW 룰셋 사용하기

한빛미디어

|

2006-11-27

|

by HANBIT

16,410

제공: 한빛 네트워크
저자: Dennis Olvany, 한동훈 역
원문: Using IPFW Rulesets with BSD Firewalls

IPFW를 이용하면 훌륭한 네트워크 방화벽을 구성할 수 있으며, 여기서는 IPFW를 사용하는 방법에 대해 설명하려 합니다. IPFW를 사용하는 방법과 룰셋 구조에 대해 설명할 것입니다. IP 필터링에 범위에 대해서는 많은 논쟁이 있지만, 효과적인 필터링을 학습하는 가장 좋은 방법은 연구와 경험을 통한 것입니다. 이 자습서는 내가 개인적으로 선호하는 IPFW 사용법과 보다 다양한 작업을 수행하기 위해 다른 방법들을 사용하고 있는 것을 설명하고 있습니다.

IPFW 시작하기

/etc/rc.conf를 수정해서 부팅시에 IPFW를 시작하도록 정의합니다.

firewall_enable="yes"

명령줄에서 커널 모듈을 설치하는 것으로 IPFW를 시작할 수 있습니다.

# kldload ipfw

룰(Rules) 파일

룰 파일을 생성하고, 부팅시에 룰을 읽어들이도록 변수를 설정합니다.

firewall_type="/path/to/file"

ipfw 명령을 사용해서 룰을 설치합니다.

# ipfw /path/to/file

룰을 설치하기 위해 ipfw 명령을 사용하는 것이 개인적으로 선호하는 방법입니다. 룰 파일을 변경했을 때는 전체 룰셋을 재설치합니다. 룰셋을 설치하는 동안은 방화벽을 사용할 수 없기 때문에 방화벽에서 룰셋 변경에 따른 트래픽을 차단하지 못합니다. 오타 등으로 인해 룰을 설치하는 것이 실패하는 경우에는 이것이 문제가 될 수 있습니다. 또한, 새로운 룰을 설치하기 전에 이전 룰을 제거하는 것도 필요합니다. 이러한 문제를 해결하는 룰 파일은 다음과 같습니다.

disable firewall

[tables]

-f flush

[rules]

enable firewall

테이블

테이블은 IPFW 룰에서 다중 네트워크 주소를 참조하기 위해 사용합니다. 룰 파일에서 테이블을 설정하려면 먼저 테이블을 비웁니다.

table 1 flush

table 1 add 1.2.3.4

table 1 add 2.3.4.5

table 1 add 3.4.5.6

룰에서 이 테이블을 참조하기 위해 table(1)을 사용합니다.

구조

자유로운 형태의 방화벽 설계에서 가장 많이 간과되는 부분이 구조입니다. 시스코 IOS는 인터페이스와 디렉션(direction)을 ACL과 바인딩하는 것으로 방화벽 구조를 강제로 사용하게 합니다. IPFW는 구조를 강제로 적용시킬 수 있는 메커니즘이 없습니다. 대신에 skipto 액션을 갖고 있습니다. eth0(내부)와 eth1(외부)와 같이 인터페이스를 2개 갖고 있는 라우터가 있다고 해봅시다.

[룰은 모든 인터페이스에 적용됩니다. 예를 들어, chk-state/frags]

add set 1 skipto 10000 ip from any to me in

add set 2 skipto 15000 ip from me to any out

add set 3 skipto 20000 ip from any to any in via eth1

add set 4 skipto 25000 ip from any to any out via eth1

add set 5 skipto 30000 ip from any to any in via eth0

add allow ip from any to any # default rule

### local host - in #################################

add 10000 set 1 count ip from any to any

[rules]

add set 1 deny ip from any to any  # 기본 룰

###############################################

### local host - out ################################

add 15000 set 2 count ip from any to any

[rules]

add set 2 allow ip from any to any keep-state # 기본 룰

###############################################

### external interface - in ###########################

add 20000 set 3 count ip from any to any

[rules]

add set 3 deny ip from any to any  # 기본 룰

###############################################

### external interface - out ##########################

add 25000 set 4 count ip from any to any

[rules]

add set 4 allow ip from any to any keep-state # 기본 룰

###############################################

### internal interface - in ###########################

add 30000 set 5 count ip from any to any

[rules]

add set 5 allow ip from any to any # 기본 룰
###############################################

룰셋은 일련의 룰 모듈들을 참조하는 skipto 룰들로 구성되어 있습니다. 모듈화(Modularity)는 정교한 트래픽 컨트롤을 제공하는 룰셋을 보다 쉽게 작성할 수 있게 해줍니다. 다른 모듈들을 사용하기 전에 로컬 호스트 모듈을 통과(skip)하는 것이 중요합니다. 만약, 다른 모듈들을 사용하기 전에 로컬 호스트 모듈을 통과하지 않는다면 트래픽이 잘못된 룰과 일치하게 될지도 모릅니다. 모듈방식의 디자인은 방화벽을 통하는 몇가지 기본 룰들을 제공합니다. 모듈화(Modularity)의 가장 큰 차이점은 기본 룰에 도착하기 까지의 이터레이션이 매우 적다는 것입니다.

이 예제의 룰셋은 또한 그룹으로 규칙들을 처리하는 IPFW 셋을 보여줍니다. 예를 들어, 전체 셋을 사용하지 않을 수도 있습니다. ipfw -S show 또는 ipfw -S list 명령을 실행해서 셋에 대한 자세한 정보를 볼 수 있습니다.

문제 해결

만약, 뭔가가 제대로 동작하지 않는 것 같다면 tcpdump를 사용합니다. tcpdump는 사용하기 쉬우며, 문제해결에 필요한 정보를 제공합니다. 관심있는 트래픽만 보려면 bpf 필터를 추가합니다.

# tcpdump -i eth0 ip

때때로 방화벽은 루프백 인터페이스를 차단할 수 있습니다. 이는 바람직하지 않습니다. 루프백 인터페이스 차단을 테스트하려면 ping을 사용합니다.

# ping localhost

스푸핑도 문제가 될 수 있습니다. 제대로 설정되지 않은 방화벽은 스푸핑된 트래픽을 허용할 수 있습니다. 자신의 방화벽을 hping을 사용해서 스푸핑하는 것이 방화벽을 테스트하는 가장 좋은 방법입니다. hping은 기본 시스템의 일부가 아니므로 포트 컬렉션에서 hping을 설치해야 합니다.

먼저, 루프백 인터페이스에 대해 tcpdump을 실행합니다.

# tcpdump -i lo0

원격 호스트로부터 스푸핑된 ping을 전송합니다.

# hping -icmp -a [firewall host IP] [firewall host IP]

만약, tcpdump가 루프백 인터페이스에 대해 응답하는 ping을 보여주고 있다면 방화벽이 스푸핑을 막지 못하는 것을 알 수 있습니다.

참고자료

- IPFW main page
- FreeBSD handbook IPFW section
- Andre Oppermann"s in-depth analysis of FreeBSD networking

Dennis Olvany(http://www.onlamp.com/pub/au/2796)는 자신을 NASA에서 일하는 컴퓨터 사이언티스트이자 독신 여성으로 소개하고 있습니다.
TAG :
댓글 입력
자료실

최근 본 상품0