IPFWADM(8)

이름
ipfwadm - IP 방화벽, 통계분석 관리 도구

개요
ipfwadm -A 명령 매개변수 [옵션]
ipfwadm -I 명령 매개변수 [옵션]
ipfwadm -O 명령 매개변수 [옵션]
ipfwadm -F 명령 매개변수 [옵션]
ipfwadm -M [ -l | -s ] [옵션]

설명
Ipfwadm 은 리눅스 커널에서 IP 방화벽, 통계분석 규칙을 설정, 유지, 감독하기 위한 도구이다. 이 규칙은 4 개의 범주로 나뉜다 : IP 패킷의 통계분석, IP 입력 방화벽, IP 출력 방화벽, 그리고 IP 전달 방화벽. 규칙은 각 범주마다 따로 관리한다. 자세한 내용은 ipfw(4) 을 참고하라.

옵션
ipfwadm 에서 사용하는 옵션은 몇 개의 그룹으로 나뉜다.

  범주
적용시키고자 하는 명령에 대하여 규칙 범주를 선택하기 위해 다음과 같은 플래그가 사용된다:

-A [방향]
    IP 통계분석 규칙. 선택적으로 방향 을 명시할 수 있다. (in, out, 또는 both), 이는 통계를 나가는 또는 들어오는 패킷에 대해서만 수행하도록 지시한다. 기본 방향값은 both이다.

-I  IP 입력 방화벽 규칙.

-O  IP 출력 방화벽 규칙.

-F  IP 전달 방화벽 규칙.

-M  IP 매스커레이딩(masquerading) 관리. 이 범주는 다음 -l (보여주기) 또는 -s (타임아웃 시간 설정) 명령하고만 조합하여 사용할 수 있다.

한 번에 단 한 가지만 사용한다.

  명령
다음 옵션은 수행할 특정 행위를 명시한다. 특별한 언급이 없는 한, 명령행에서 단 한 가지만 사용가능하다.

-a [정책]
    선택한 목록에 대하여 하나 또는 그 이상의 규칙을 추가한다(Append). 회계분석의 경우에는 어떠한 정책도 명시해선 안된다. 방화벽 규칙의 경우 다음 정책 중 한 가지를 명시해야 한다: accept, deny, 또는 reject. 출발지 또는 목적지 이름이 하나 이상의 주소를 나타낼 때는 그것이 나타내는 모든 주소 조합에 대하여 규칙이 추가된다.

-i [정책]
    선택한 목록의 맨 앞에 하나 또는 그 이상의 규칙을 삽입한다. 자세한 내용은 -a 에 대한 설명을 참고하라.

-d [정책]
    선택한 규칙 목록으로부터 하나 또는 그 이상의 규칙을 삭제한다. 문법은 추가/삽입 명령과 동일하다. 명시된 매개변수는 추가 또는 삽입 명령에서 사용했던 매개변수와 일치해야 한다. 그렇지 않은 경우엔 목록에서 규칙을 제거하지 않는다. 오로지 첫번째 부합되는 규칙만 삭제될 뿐이다.

-l  선택한 목록에 있는 모든 규칙을 보여준다. 이 명령은 -z (카운터를 0으로 재설정) 명령과 같이 사용할 수 있다. 이 때는 현재 값을 출력한 직후 패킷과 바이트 카운터가 다시 0 으로 설정된다. -x 옵션이 없으면 패킷과 바이트 카운터 값이 값K 또는 값M, 으로 표시되는데 여기서 1K는 1000을, 1M는 1000K(가장 가까운 정수값으로 반올림 내림 표시)을 의미한다. 몇 가지 더 많은 기능에 대해서는 -e 와 -x 플래그도 참고하라.

-z  선택한 목록의 모든 규칙에 대하여 패킷과 바이트 카운터를 0으로 돌려놓는다. 이 명령은 -l (보여주기) 명령과 함께 사용할 수 있다.

-f  는 선택한 규칙 목록을 비워버린다.

-p 정책
    선택한 방화벽 유형에 대한 기본 정책을 바꾼다. 정책으로 사용하는 값은 accept, deny, 또는 reject중하나이다. 부합되는 규칙이 발견되지 않을 때 사용하는 것이 기본 정책이다. 이 동작은 IP 방화벽에만 사용하는 것으므로 with the -I, -O, 그리고 -F 플래그와만 사용한다.

-s tcp tcpfin udp
    매스커레이딩에 사용되는 타임아웃값을 바꾼다. 이 명령은 언제나 3 개의 매개변수를 갖는데 각각 TCP 세션에 대한 타임아웃값, FIN 패킷을 받은 후 TCP 세션에 대한 값, 그리고 UDP 패킷에 대한 값이다. 타임아웃값에 0 을 적으면 현재 적용되고 있는 값을 보존한다는 뜻이다. 이 동작은 오로지 -M 플래그와만 사용한다.

-c  선택한 방화벽 유형에 대하여 IP 패킷이 허가, 거부(deny) 또는 거절(reject)될 것인지 점검한다. 이 동작은 IP 방화벽에만 관계되므로 -I, -O, 그리고 -F 플래그와만 사용한다.

-h  도움말. 명령 문법에 대한 설명을 보여준다.( 현재는 매우 간단하게 보여준다 )

  매개변수
다음 매개변수는 추가, 삽입, 삭제, 점검 명령과 함께 사용할 수 있다:

-P 프로토콜
    규칙 또는 점검할 패킷의 프로토콜을 말한다. 프로토콜로 올 수 있는 값은 tcp, udp, icmp, 또는 all이다. all 은 모든 프로토콜을 말하며 이 옵션이 생략된 경우 사용하는 기본값이다. All 은 점검 명령과 사용하지 못할 것이다.

-S 주소[/매스크] [포트 ...]
    출발지 명시 (선택적). 주소 에는 호스트명, 네트웍명 또는 평범한 IP 주소가 올 수 있다. 매스크 는 네트웍 매스크 또는 간단한 값이 될 수 있는데 후자의 경우 네트웍 매스크에서 왼편에 오는 1 의 갯수가 몇 개인지를 가리키는 값이다. 따라서 24 라는 매스크값은 255.255.255.0와동일하다.

    출발지에는 하나 이상의 포트 명시 또는 ICMP 유형 명시가 가능하다. 각각은 서비스명, 포트 번호 또는 (숫자 표현의) ICMP 유형이 될 수 있다. 이 절에서 앞으로 포트 는 포트 명시 또는 ICMP 유형을 가리키는 의미로 사용한다. 포트의 범위를 명시할 수 있는데 형식은 다음과 같다. 포트:포트. 참고로 출발지와 도착지 주소에 적을 수 있는 포트의 갯수는 IP_FW_MAX_PORTS (현재 10) 값을 넘어선 안된다. 여기서 포트 범위는 2 개의 포트로 간주한다.

    TCP, UDP, ICMP 패킷의 첫번째 조각이 아닌 패킷에 대하여 방화벽은 항상 허가한다. 통계분석 목적을 위해 이러한 두번째 이후 조각들은 특별히 처리되며 다른 방식으로 계산한다. 포트 번호 0xFFFF (65535)는 TCP, UDP 패킷 중 두번째 이후 조각에 대하여 사용된다. 이러한 패킷은 그들의 포트 번호가 마치 0xFFFF인 것처럼 통계에서 다룬다. 0xFF (255) 번은 ICMP 패킷의 두번째 이후 패킷에 대하여 사용한다. 이러한 패킷은 포트 번호가 마치 0xFF인 것처럼 통계에서 다룬다. 명시한 명령 또는 프로토콜마다 사용하는 포트가 있으므로 포트에 대한 제한이 자동으로 이뤄진다. 포트는 다음 tcp, udp, 그리고 icmp 프로토콜과 함께 사용할 수 있다.

    이 옵션이 생략되면 출발지 주소로서 기본 주소/매스크 0.0.0.0/0 (모든 주소와 일치)가 사용된다. 점검 명령에서는 이 옵션이 꼭 필요하다. 이 때는 꼭 포트를 하나만 명시해야 한다.

-D 주소[/매스크] [포트 ...]
    도착지 명시 (선택적) See the desciption of the 자세한 문법, 기본값 그리고 다른 사항에 대해서는 -S (출발지) 플래그에 대한 설명을 참고하라. ICMP 유형은 -D 플래그와 사용할 수 없다: ICMP 유형은 오로지 -S 플래그 뒤에서만 사용한다.

-V 주소
    패킷을 받거나 보내는 통로가 되어 주는 인터페이스에 대한 주소로서 선택적이다. 주소 는 호스트명 또는 평범한 IP 주소를 사용한다. 호스트명을 사용하는 경우 딱 하나의 IP 주소로 해결되어야 한다. 이 옵션이 생략되면 0.0.0.0 이라고 가정하는데 이는 특별히 모든 인터페이스를 의미한다. 점검 명령에서는 이 옵션을 꼭 사용해야 한다.

-W 이름
    패킷을 주고 받는 인터페이스의 이름으로서 선택적이다. 생략되면 빈 문자열로 가정하는데 이는 모든 인터페이스명을 의미한다. 점검 명령의 경우 이 옵션은 필수적이다.

  기타 옵션
다음과 같은 추가 옵션이 있다:

-b  양방향 모드. 규칙을 양방향 모두의 IP 패킷에 적용하도록 한다. 이 옵션은 추가, 삽입, 삭제 명령하고만 같이 사용할 수 있다.

-e  확장 출력. 이 옵션을 주면 list 명령에 대하여 인터페이스 주소와 규칙 옵션(존재한다면)을 추가로 보여준다. 방화벽 목록의 경우 패킷과 바이트 카운터( 통계분석 규칙에 있어서는 기본설정이다)를 보여주며 TOS 매스크도 보여준다. -M 와 함께 사용하면, 델타 시퀀스 번호와 관련된 정보도 출력한다. 이 옵션은 오로지 list 명령하고만 사용할 수 있다.

-k  ACK 비트가 설정된 TCP 패킷하고만 부합한다.( 이 옵션은 다른 프로토콜의 패킷에 대해서는 무시된다 ) 이 옵션은 추가, 삽입, 삭제 명령하고만 같이 사용한다.

-m  전달 허용하는 패킷에 대하여 매스커레이드한다. 이 옵션이 주어지면 규칙에 부합되는 패킷에 대하여 마치 지역 호스트에서 나가는 것처럼 매스커레이드해준다. 물론, 방화벽을 통과하여 되돌아오는 패킷을 인식하여 자동으로 원래의 출발지로 보내준다. 이 옵션은 전달 방화벽 규칙에서 accept 정책 (또는 accept 를 기본 정책으로 명시한 경우) 하고만 사용하며 커널은 CONFIG_IP_MASQUERADE 이 정의된 채로 컴파일되어 있어야 한다.

-n  수치 출력. IP 주소와 포트 번호가 수치 형태로 출력된다. 기본적으로 프로그램은 가능한 한 호스트명, 네트웍명, 서비스명으로 출력하고자 한다.

-o  부합하는 패킷에 대하여 커널 로깅을 하도록 한다. 어떤 규칙에 대하여 이 옵션을 설정해두면 리눅스 커널은 모든 부합하는 패킷에 대하여 ( 마치 대부분의 IP 헤더 필드처럼 ) printk()를사용하여출력한다. 이 옵션은 리눅스 커널을 CONFIG_IP_FIREWALL_VERBOSE 정의하고 컴파일한 경우에만 유효하다. 이 옵션은 추가, 삽입, 삭제 명령에서만 사용한다.

-r [포트]
    패킷을 지역적 소켓으로 리다이렉트한다. 이 옵션이 주어지면 패킷이 원격 호스트로부터 온 것이라 할 지라도 지역적 소켓으로 리다이렉트된다. 명시한 리다이렉션 포트가 0 이면( 기본값임 ) 패킷의 도착지 포트가 리다이렉션 포트로 사용된다. 이 옵션은 입력 방화벽에서 accept 정책 사용시에만 유효하며 리눅스 커널은 CONFIG_IP_TRANSPARENT_PROXY 을 정의하고 컴파일되어 있어야 한다.

-t AND매스크 XOR매스크
    IP 헤더의 TOS 필드를 변경하기 위해 사용하는 매스크이다. 방화벽 규칙에 의해 패킷이 받아들여지면(매스커레이드에 상관없이) TOS 필드는 우선 첫번째 매스크로 비트 AND 된 후 두번째 매스코로 XOR 된다. 매스크는 16진수 8 비트 값이어야 한다. 이 옵션은 추가, 삽입, 삭제 명령하고만 사용되며 통계분석 규칙 또는 거절(reject), 거부(deny)하는 방화벽 규칙에서는 어떠한 일도 하지 않는다.

-v  장황한 출력. 추가, 삭제, 점검될 규칙이나 패킷에 대한 상세 정보를 출력한다. 이 옵션은 추가, 삽입, 삭제 명령에만 유효하다.

-x  숫자를 확장. K (1000) 또는 M (1000K) 단위로 반올림 표현하지 말고 패킷과 바이트 카운터의 수치를 정확하게 표시한다. 이 옵션은 카운터가 있는 경우에만 유효하다. ( -e 옵션을 참고).

-y  SYN 비트가 설정되어 있고 ACK 비트가 없는 TCP 패킷하고만 부합한다. (다른 프로토콜에 대해서는 무시된다) 이 옵션은 추가, 삽입, 삭제 명령과 사용한다.

관련 파일
/proc/net/ip_acct
/proc/net/ip_input
/proc/net/ip_output
/proc/net/ip_forward
/proc/net/ip_masquerade

참고 사항
ipfw(4)

저자
Jos Vos <jos@xos.nl>
네덜란드, 암스테르담에 있는 Open Systems BV의 X/OS 전문가

번역자
이 만 용 <geoman@nownuri.net>
<freeyong@soback.kornet.nm.kr>