「ipfw」の版間の差分
提供: セキュリティ
(相違点なし)
|
2013年8月29日 (木) 00:29時点における版
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