ipfw

提供: セキュリティ
2013年8月29日 (木) 00:29時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「<!-- vim: filetype=mediawiki --> ipfw (IP FireWall) とは、FreeBSD のパケットフィルタ型の ファイアーウォール です。 '''読み方''...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

ipfw (IP FireWall) とは、FreeBSD のパケットフィルタ型の ファイアーウォール です。

読み方

ipfw
あいぴー えふだぶりゅー

概要

カーネル に組み込むことができます。ローダブルカーネルモジュールとして利用できます。 Windows には、wipfw として移植されています。

カーネルオプション

options    IPFIREWALL
 
# This option enables IPFW as part of the kernel.
options    IPFIREWALL_VERBOSE
 
#This option enables logging of packets that pass through IPFW and have the log keyword specified in the ruleset.
options    IPFIREWALL_VERBOSE_LIMIT=5
 
#This option limits the number of packets logged through syslogd(8), on a per-entry basis. This option may be used in hostile environments, when firewall activity logging is desired. This will close a possible denial of service attack via syslog flooding.
options    IPFIREWALL_DEFAULT_TO_ACCEPT
 
# This option allows everything to pass through the firewall by default, which is a good idea when the firewall is being set up for the first time.
options    IPDIVERT

/etc/rc.conf のオプション

firewall_enable="YES"
 
# To select one of the default firewall types provided by FreeBSD, select one by reading /etc/rc.firewall and specify it in the following:
firewall_type="open"
 
# Enabled logging
firewall_logging="YES"


  • open: すべてのトラフィックをパスします。
  • client: protects only this machine.
  • simple: protects the whole network.
  • closed: entirely disables IP traffic except for the loopback interface.
  • UNKNOWN: disables the loading of firewall rules.
  • filename: absolute path of the file containing the firewall rules.

カーネルモジュール

カーネルモジュール ipfw をロードします。

sudo kldload ipfw

カーネルモジュール ipfw をアンロードします。

sudo kldunload ipfw

設定ファイル /etc/rc.firewall

使い方

% ipfw -h
ipfw syntax summary (but please do read the ipfw(8) manpage):
 
        ipfw [-abcdefhnNqStTv] <command>
 
where <command> is one of the following:
 
add [num] [set N] [prob x] RULE-BODY
{pipe|queue} N config PIPE-BODY
[pipe|queue] {zero|delete|show} [N{,N}]
nat N config {ip IPADDR|if IFNAME|log|deny_in|same_ports|unreg_only|reset|
                reverse|proxy_only|redirect_addr linkspec|
                redirect_port linkspec|redirect_proto linkspec}
set [disable N... enable N...] | move [rule] X to Y | swap X Y | show
set N {show|list|zero|resetlog|delete} [N{,N}] | flush
table N {add ip[/bits] [value] | delete ip[/bits] | flush | list}
table all {flush | list}
 
RULE-BODY:      check-state [PARAMS] | ACTION [PARAMS] ADDR [OPTION_LIST]
ACTION: check-state | allow | count | deny | unreach{,6} CODE |
               skipto N | {divert|tee} PORT | forward ADDR |
               pipe N | queue N | nat N | setfib FIB | reass
PARAMS:         [log [logamount LOGLIMIT]] [altq QUEUE_NAME]
ADDR:           [ MAC dst src ether_type ]
                [ ip from IPADDR [ PORT ] to IPADDR [ PORTLIST ] ]
                [ ipv6|ip6 from IP6ADDR [ PORT ] to IP6ADDR [ PORTLIST ] ]
IPADDR: [not] { any | me | ip/bits{x,y,z} | table(t[,v]) | IPLIST }
IP6ADDR:        [not] { any | me | me6 | ip6/bits | IP6LIST }
IP6LIST:        { ip6 | ip6/bits }[,IP6LIST]
IPLIST: { ip | ip/bits | ip:mask }[,IPLIST]
OPTION_LIST:    OPTION [OPTION_LIST]
OPTION: bridged | diverted | diverted-loopback | diverted-output |
        {dst-ip|src-ip} IPADDR | {dst-ip6|src-ip6|dst-ipv6|src-ipv6} IP6ADDR |
        {dst-port|src-port} LIST |
        estab | frag | {gid|uid} N | icmptypes LIST | in | out | ipid LIST |
        iplen LIST | ipoptions SPEC | ipprecedence | ipsec | iptos SPEC |
        ipttl LIST | ipversion VER | keep-state | layer2 | limit ... |
        icmp6types LIST | ext6hdr LIST | flow-id N[,N] | fib FIB |
        mac ... | mac-type LIST | proto LIST | {recv|xmit|via} {IF|IPADDR} |
        setup | {tcpack|tcpseq|tcpwin} NN | tcpflags SPEC | tcpoptions SPEC |
        tcpdatalen LIST | verrevpath | versrcreach | antispoof

デフォルトの状態は、下記の通りです。

# kldload ipfw
ipfw2 (+ipv6) initialized, divert loadable, nat loadable, default to deny, logging disabled
# ipfw list
65535 deny ip from any to any

ipfw getsockeopt IP_FW_GET Protocol not available

ipfw がロードされていない場合、下記のエラーがでます。

# ipfw list
ipfw: getsockeopt(IP_FW_GET): Protocol not available

ipfw をロードします。

# kldload ipfw

関連項目




スポンサーリンク