Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/dist/ipf Import IP Filter 3.4.1
details: https://anonhg.NetBSD.org/src/rev/7a13779ed203
branches: trunk
changeset: 485684:7a13779ed203
user: veego <veego%NetBSD.org@localhost>
date: Wed May 03 10:55:27 2000 +0000
description:
Import IP Filter 3.4.1
diffstat:
dist/ipf/FreeBSD-4.0/ipv6-patch | 61 +++
dist/ipf/FreeBSD-4.0/kinstall | 50 ++
dist/ipf/FreeBSD-4.0/unkinstall | 48 ++
dist/ipf/IPF.KANJI | 465 ++++++++++++++++++++++++
dist/ipf/LICENCE | 2 +-
dist/ipf/Makefile | 69 ++-
dist/ipf/common.c | 578 ++++++++++++++++++++++++++++++
dist/ipf/facpri.c | 6 +-
dist/ipf/facpri.h | 6 +-
dist/ipf/ipf.h | 33 +-
dist/ipf/ipfs.c | 765 ++++++++++++++++++++++++++++++++++++++++
dist/ipf/ipft_ef.c | 6 +-
dist/ipf/ipft_hx.c | 6 +-
dist/ipf/ipft_pc.c | 6 +-
dist/ipf/ipft_sn.c | 6 +-
dist/ipf/ipft_td.c | 6 +-
dist/ipf/ipft_tx.c | 18 +-
dist/ipf/ipt.h | 6 +-
dist/ipf/kmem.c | 6 +-
dist/ipf/kmem.h | 6 +-
dist/ipf/misc.c | 6 +-
dist/ipf/ml_ipl.c | 4 +-
dist/ipf/mlfk_ipl.c | 183 +++++++++
dist/ipf/mln_ipl.c | 4 +-
dist/ipf/natparse.c | 721 ++++++++++++++++++-------------------
dist/ipf/opt.c | 8 +-
dist/ipf/pcap.h | 6 +-
dist/ipf/relay.c | 5 +-
dist/ipf/snoop.h | 6 +-
dist/ipf/todo | 63 +++-
30 files changed, 2693 insertions(+), 462 deletions(-)
diffs (truncated from 3916 to 300 lines):
diff -r 3a7f9c0797b4 -r 7a13779ed203 dist/ipf/FreeBSD-4.0/ipv6-patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/ipf/FreeBSD-4.0/ipv6-patch Wed May 03 10:55:27 2000 +0000
@@ -0,0 +1,61 @@
+*** ip6_input.c.orig Sun Feb 13 14:32:01 2000
+--- ip6_input.c Wed Apr 26 22:31:34 2000
+***************
+*** 121,126 ****
+--- 121,127 ----
+
+ extern struct domain inet6domain;
+ extern struct ip6protosw inet6sw[];
++ extern int (*fr_checkp) __P((struct ip *, int, struct ifnet *, int, struct mbuf **));
+
+ u_char ip6_protox[IPPROTO_MAX];
+ static int ip6qmaxlen = IFQ_MAXLEN;
+***************
+*** 302,307 ****
+--- 303,317 ----
+ ip6stat.ip6s_badvers++;
+ in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_hdrerr);
+ goto bad;
++ }
++
++ if (fr_checkp) {
++ struct mbuf *m1 = m;
++
++ if ((*fr_checkp)(ip6, sizeof(*ip6), m->m_pkthdr.rcvif,
++ 0, &m1) || !m1)
++ return;
++ ip6 = mtod(m = m1, struct ip6_hdr *);
+ }
+
+ ip6stat.ip6s_nxthist[ip6->ip6_nxt]++;
+*** ip6_output.c.orig Fri Mar 10 01:57:16 2000
+--- ip6_output.c Wed Apr 26 22:34:34 2000
+***************
+*** 108,113 ****
+--- 108,115 ----
+ #include <netinet6/ip6_fw.h>
+ #endif
+
++ extern int (*fr_checkp) __P((struct ip *, int, struct ifnet *, int, struct mbuf **));
++
+ static MALLOC_DEFINE(M_IPMOPTS, "ip6_moptions", "internet multicast options");
+
+ struct ip6_exthdrs {
+***************
+*** 754,759 ****
+--- 756,770 ----
+ ip6->ip6_src.s6_addr16[1] = 0;
+ if (IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_dst))
+ ip6->ip6_dst.s6_addr16[1] = 0;
++ }
++
++ if (fr_checkp) {
++ struct mbuf *m1 = m;
++
++ if ((error = (*fr_checkp)(ip6, sizeof(*ip6), ifp, 1, &m1)) ||
++ !m1)
++ goto done;
++ ip6 = mtod(m = m1, struct ip6_hdr *);
+ }
+
+ #ifdef IPV6FIREWALL
diff -r 3a7f9c0797b4 -r 7a13779ed203 dist/ipf/FreeBSD-4.0/kinstall
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/ipf/FreeBSD-4.0/kinstall Wed May 03 10:55:27 2000 +0000
@@ -0,0 +1,50 @@
+#!/bin/csh -f
+#
+set dir=`pwd`
+set karch=`uname -m`
+if ( -d /sys/arch/$karch ) set archdir="/sys/arch/$karch"
+if ( -d /sys/$karch ) set archdir="/sys/$karch"
+set confdir="$archdir/conf"
+
+if ( $dir =~ */FreeBSD* ) cd ..
+echo -n "Installing "
+foreach i (ip_fil.[ch] ip_nat.[ch] ip_frag.[ch] ip_state.[ch] fil.c \
+ ip_proxy.[ch] ip_{ftp,rcmd,raudio}_pxy.c mlf_ipl.c ipl.h \
+ ip_compat.h ip_auth.[ch] ip_log.c)
+ echo -n "$i ";
+ cp $i /sys/netinet
+ chmod 644 /sys/netinet/$i
+end
+echo ""
+echo "Linking /usr/include/osreldate.h to /sys/sys/osreldate.h"
+ln -s /usr/include/osreldate.h /sys/sys/osreldate.h
+
+echo ""
+echo "Patching ip6_input.c and ip6_output.c"
+cat FreeBSD-4.0/ipv6-patch | (cd /sys/netinet6; patch)
+
+set config=`(cd $confdir; /bin/ls -1t [0-9A-Z_]*) | head -1`
+echo -n "Kernel configuration to update [$config] "
+set newconfig=$<
+if ( "$newconfig" != "" ) then
+ set config="$confdir/$newconfig"
+else
+ set newconfig=$config
+endif
+echo "Rewriting $newconfig..."
+if ( -f $confdir/$newconfig ) then
+ mv $confdir/$newconfig $confdir/$newconfig.bak
+endif
+if ( -d $archdir/../compile/$newconfig ) then
+ set bak=".bak"
+ set dot=0
+ while ( -d $archdir/../compile/${newconfig}.${bak} )
+ set bak=".bak.$dot"
+ set dot=`expr 1 + $dot`
+ end
+ mv $archdir/../compile/$newconfig $archdir/../compile/${newconfig}.${bak}
+endif
+awk '{print $0;if($2=="INET"){print"options IPFILTER\noptions IPFILTER_LOG"}}'\
+ $confdir/$newconfig.bak > $confdir/$newconfig
+echo "You will now need to run config on $newconfig and build a new kernel."
+exit 0
diff -r 3a7f9c0797b4 -r 7a13779ed203 dist/ipf/FreeBSD-4.0/unkinstall
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/ipf/FreeBSD-4.0/unkinstall Wed May 03 10:55:27 2000 +0000
@@ -0,0 +1,48 @@
+#!/bin/csh -f
+#
+#
+set dir=`pwd`
+set karch=`uname -m`
+if ( -d /sys/arch/$karch ) set archdir="/sys/arch/$karch"
+if ( -d /sys/$karch ) set archdir="/sys/$karch"
+set confdir="$archdir/conf"
+
+if ( $dir =~ */FreeBSD* ) cd ..
+echo -n "Uninstalling "
+foreach i (ip_fil.[ch] ip_nat.[ch] ip_frag.[ch] ip_state.[ch] fil.c \
+ ip_auth.[ch] ip_proxy.[ch] ip_{ftp,rcmd,raudio}_pxy.c ip_compat.h \
+ ip_log.c mlf_ipl.c ipl.h)
+ echo -n "$i ";
+ /bin/rm -f /sys/netinet/$i
+end
+echo ""
+
+echo "Removing link from /usr/include/osreldate.h to /sys/sys/osreldate.h"
+rm /sys/sys/osreldate.h
+
+echo "Removing patch to ip6_input.c and ip6_output.c"
+cat FreeBSD-4.0/ipv6-patch | (cd /sys/netinet6; patch -R)
+
+set config=`(cd $confdir; /bin/ls -1t [0-9A-Z_]*) | head -1`
+echo -n "Kernel configuration to update [$config] "
+set newconfig=$<
+if ( "$newconfig" != "" ) then
+ set config="$confdir/$newconfig"
+else
+ set newconfig=$config
+endif
+if ( -f $confdir/$newconfig ) then
+ mv $confdir/$newconfig $confdir/$newconfig.bak
+endif
+if ( -d $archdir/../compile/$newconfig ) then
+ set bak=".bak"
+ set dot=0
+ while ( -d $archdir/../compile/${newconfig}.${bak} )
+ set bak=".bak.$dot"
+ set dot=`expr 1 + $dot`
+ end
+ mv $archdir/../compile/$newconfig $archdir/../compile/${newconfig}.${bak}
+endif
+egrep -v IPFILTER $confdir/$newconfig.bak > $confdir/$newconfig
+echo 'You will now need to run "config" and build a new kernel.'
+exit 0
diff -r 3a7f9c0797b4 -r 7a13779ed203 dist/ipf/IPF.KANJI
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/ipf/IPF.KANJI Wed May 03 10:55:27 2000 +0000
@@ -0,0 +1,465 @@
+IP filter ショ・踉札肇�ぅ� Dec, 1999
+
+ホ・踉札爛據��ジ: http://coombs.anu.edu.au/~avalon/ip-filter.html
+FTP: ftp://coombs.anu.edu.au/pub/net/ip-filter/
+
+ 外山 純生 <sumio%is.s.u-tokyo.ac.jp@localhost>
+ 山本 泰宇 <ymmt%is.s.u-tokyo.ac.jp@localhost>
+
+-----
+はじめに
+
+IP filter を gateway マシンにインスト・踉札襪垢襪海箸妊僖吋奪肇侫�
+ルタリングを行う瘢雹ことができます。
+
+インスト・踉札襪諒�,蓮���INSTALLに書いてう髟阡擦襪里如���そちらを参��箸靴�
+ください。IP filter のバ・踉札献腑� 3.3.5 は・髟阡�
+ Solaris/Solaris-x86 2.3 - 8 (early access)
+ SunOS 4.1.1 - 4.1.4
+ NetBSD 1.0 - 1.4
+ FreeBSD 2.0.0 - 2.2.8
+ BSD/OS-1.1 - 4
+ IRIX 6.2
+で動作することが確認されています。
+
+なお・髟阡�64 bit kernel の走ってる Solaris7 マシンでは・髟阡�gcc とかでコ
+ンパイルした kernel driver は動作しません。
+
+そのよう瘢雹な��豺腓砲蓮���precompiled binary を
+ftp://coombs.anu.edu.au/pub/net/ip-filter/ip_fil3.3.2-sparcv9.pkg.gz
+(1999年12月14日現在・髟阡擦泙�3.3.5はパッケ・踉札犬砲覆辰討い泙擦�)
+から��茲辰討�襪����Workshop Compiler 5.0 でコンパイルして 64bit
+driver を作ってください。
+
+-----
+設定ファイルの記述方法
+
+IP filterの設定は「どのウ髟阡札疋譽后廚痢屬匹離檗��ト」から「どのウ髟阡札�
+レス」の「どのポ・踉札函廚悗離僖吋奪箸� block するか pass するか・髟阡�
+を指定することで行います。
+
+以王踉擦領磴任蓮���我々が管理しているサブネットより外から内のウ髟阡札�札�
+は・髟阡三貮瑤離泪轡鵑鮟釮い討倭瓦謄屮蹈奪�掘���内から外へのウ髟阡札�札垢蓮���
+原則として全て素通しするポリシ・踉擦乃Ⅸ劼気譴討い泙后�
+
+以王踉察���管理しているサブネットを
+ 123.45.1.0/24
+として例を��┐靴泙后�24はサブネットマスクです。
+
+また・髟阡�gateway は
+ 123.45.1.111 (hme0)
+が LAN側瘢雹のインタ・踉札侫А��ス・髟阡�
+ 123.45.2.10 (hme1)
+が外側瘢雹のインタ・踉札侫А��スとします。
+
+
+===================== ここから ====================
+########## quickly deny malicious packets
+#
+block in quick from any to any with short
+block in log quick from any to any with ipopts
+===================== ここまで ====================
+
+まずはこのル・踉札襪如���不正なパケットをはねます。block は block す
+る意味で・髟阡使紳个膨未孔苳詞合は pass となります。
+
+log という瘢雹のは・髟阡擦海離襦��ルにマッチするパケットのログを��茲觧悧踉雑で
+す。ログは /dev/ipl という瘢雹デバイスファイルからウ髟阡札�札垢任④泙垢����
+このデバイスは bounded buffer なので・髟阡擦���る程度以��紊離蹈阿櫓苳暫えて
+しまいます。
+
+/dev/ipl の内容を読み出すには ipmon という瘢雹プログラムを使います。
+ipmon は stdout, syslog, もしくは通��錣離侫.ぅ襪縫蹈阿鮟侘呂靴�
+す。起動時に ipmon を立ち��紊欧襪覆蕁�����,里茲�逅擦聞圓� rc ファイル
+に書くとよいでしょう瘢雹。
+
+ipmon -n -o I ${IPMONLOG} < /dev/null > /dev/null 2>&1 &
+
+${IPMONLOG} は適当なファイル巳苳擦肪峇垢靴討�世気ぁ�syslog に出力
+する��豺腓蓮���-s オプションを付けます。syslog に出力する��豺隋���
+local0.info を記録するよう瘢雹に syslog.conf を編集してください。
+例えば・髟阡�
+
+local0.info ifdef(`LOGHOST', /var/log/syslog, @loghost)
+
+
+quick という瘢雹のは・髟阡擦海離襦��ルにマッチしたパケットは以降のル・踉札襪�
+調べずに・髟阡札���クション(block or pass)に拾苳擦錣擦襪箸い�逅擦發里任后��
+だし・髟阡士祿阿����ります。後述します。
+
+
+===================== ここから ====================
+########## group setup
+#
+block in on hme1 all head 100
+block out on hme1 all head 150
+pass in quick on hme0 all
+pass out quick on hme0 all
+===================== ここまで ====================
+
+��,棒�罎鬚�韻襯ぅ鵐拭��フェ・踉札綱茲縫僖吋奪箸謀�僂垢襯襦��ルを分
+類します。hme0 は LAN 側瘢雹のインタ・踉札侫А��スなので・髟阡斬┷造傍��
+(pass quick)しています。
+
+all という瘢雹のは・髟阡�from any to any の��蔑�舛任后�
+
+外部とのインタ・踉札侫А��スでう髟阡擦� hme1 は incoming と outgoing で・髟阡�
+それう苳擦� group 100 番と 150 番に分類します。head という瘢雹のは・髟阡擦�
+のル・踉札襪縫泪奪舛靴織僖吋奪箸鬢踉察の番号のグル・踉札廚吠�爐垢襪箸い�逅�
+意味です。
+
+
+===================== ここから ====================
+########## deny IP spoofing
+#
+block in log quick from 127.0.0.0/8 to any group 100
+block in log quick from 123.45.2.10/32 to any group 100
+block in log quick from 123.45.1.111/24 to any group 100
+#
+########## deny reserved addresses
+#
+block in log quick from 10.0.0.0/8 to any group 100
+block in log quick from 192.168.0.0/16 to any group 100
+block in log quick from 172.16.0.0/12 to any group 100
+#
+===================== ここまで ====================
Home |
Main Index |
Thread Index |
Old Index