Date: Thu, 25 Nov 1999 10:39:23 -0800 (PST) From: "Rodney W. Grimes" <rgrimes@gndrsh.dnsmgr.net> To: Cy.Schubert@uumail.gov.bc.ca (Cy Schubert - ITSD Open Systems Group) Cc: ahl@austclear.com.au (Tony Landells), ipfw@freebsd.org, arch@freebsd.org Subject: Re: new IPFW Message-ID: <199911251839.KAA49143@gndrsh.dnsmgr.net> In-Reply-To: <199911251534.HAA67071@cwsys.cwsent.com> from Cy Schubert - ITSD Open Systems Group at "Nov 25, 1999 07:33:13 am"
next in thread | previous in thread | raw e-mail | index | archive | help
> In message <199911242148.IAA25984@tungsten.austclear.com.au>, Tony Landells wri
> tes:
> > I'd be much happier with something in ipfw that just marked the next line
> > number to be used, preferably in a way that I could get it to move to the
> > next "grouping"--like "set the next rule number to the next multiple of
> > 1000".
>
> This is what I use in one of my dialup scripts at home:
...
And here is another one thats designed to simply handling client/server
type tcp and udp protocols it uses fixed rule bases and the port # as
an offset. Makes for grepping specific types of accept log data from
the ipfw.log files easier [Tab formats probably destroyed by cut-n-paste]:
This is just a snippet of the whole file, but I think one can get the
idea of what we did here. Note also this is a very open rule set in
the calls to clnsrv, we mainly just monitor for suspecious activity.
The contents of rc.firewall.conf is up to the reader to figure out...
#!/bin/sh
# GLOBALS to control things, like testing. Setting fire="echo"
# is real nice for debugging.
fire="/sbin/ipfw"
fadd="${fire} add"
# clnsrv(action, proto, sport, dport, clients, servers)
clnsrv() {
action=$1; shift
proto=$1; shift
sport=$1; shift
dport=$1; shift
clients=$1; shift
servers=$1; shift
if [ X"${proto}" = X"tcp" ]; then
setup="setup"
base=10000
else
setup=""
base=40000
fi
if [ X"${dport}" = X"" ]; then
ruleoffset=${sport}
else
ruleoffset=${dport}
fi
if [ ${ruleoffset} -gt 1899 ]; then
ruleoffset=1900
fi
rule=`expr ${base} + \( ${ruleoffset} \* 10 \)`
for cln in ${clients} ; do
for srv in ${servers} ; do
from ${cln} ${sport} to ${srv} ${dport} ${setup}
done
done
rule=`expr ${rule} + 9`
${fadd} ${rule} ${CLASS} log ${proto} from any ${sport} to any ${dport}
}
# Pull in the address variables from the conf file or error out if
# there is not one (keeps one from shooting your feet off!)
if [ -f /etc/rc.firewall.conf ]; then
. /etc/rc.firewall.conf
else
echo "$0 - no rc.firewall.conf file!!! Not loading!!!"
exit 1
fi
... [basic stuff for lo0, rfc1918, and some other not so public data] ...
################################################################################
# TCP/*
#
${fadd} 10000 allow tcp from any to any established
clnsrv "allow " tcp 20 "" "${tcp_ftpdata_c}" "${tcp_ftpdata_s}"
clnsrv "allow " tcp "" 21 "${tcp_ftp_c}" "${tcp_ftp_s}"
clnsrv "allow " tcp "" 22 "${tcp_ssh_c}" "${tcp_ssh_s}"
clnsrv "allow " tcp "" 23 "${tcp_telnet_c}" "${tcp_telnet_s}"
clnsrv "allow " tcp "" 25 "${tcp_smtp_c}" "${tcp_smtp_s}"
clnsrv "allow " tcp "" 43 "${tcp_nicname_c}" "${tcp_nicname_s}"
clnsrv "allow " tcp "" 53 "${tcp_domain_c}" "${tcp_domain_s}"
clnsrv "allow " tcp "" 79 "${tcp_finger_c}" "${tcp_finger_s}"
clnsrv "allow " tcp "" 80 "${tcp_http_c}" "${tcp_http_s}"
clnsrv "allow " tcp "" 110 "${tcp_pop3_c}" "${tcp_pop3_s}"
clnsrv "allow " tcp "" 111 "${tcp_sunrpc_c}" "${tcp_sunrpc_s}"
clnsrv "allow " tcp "" 113 "${tcp_auth_c}" "${tcp_auth_s}"
clnsrv "allow " tcp "" 119 "${tcp_nntp_c}" "${tcp_nntp_s}"
clnsrv "allow " tcp "" 123 "${tcp_ntp_c}" "${tcp_ntp_s}"
clnsrv "allow " tcp "" 137 "${tcp_netbios_ns_c}" "${tcp_netbios_ns_s}"
clnsrv "allow " tcp "" 138 "${tcp_netbios_dgm_c}" "${tcp_netbios_dgm_s}"
clnsrv "allow " tcp "" 139 "${tcp_netbios_ssn_c}" "${tcp_netbios_ssn_s}"
clnsrv "allow " tcp "" 179 "${tcp_bgp_c}" "${tcp_bgp_s}"
clnsrv "allow " tcp "" 443 "${tcp_https_c}" "${tcp_https_s}"
clnsrv "allow " tcp "" 515 "${tcp_printer_c}" "${tcp_printer_s}"
clnsrv "allow " tcp "" 5190 "${tcp_aol_c}" "${tcp_aol_s}"
# XXX For now log all other TCP setups
${fadd} 29999 allow log tcp from any to any setup
################################################################################
# UDP/*
#
clnsrv "allow " udp "" 53 "${udp_domain_c}" "${udp_domain_s}"
clnsrv "allow " udp 53 "" "${udp_domain_s}" "${udp_domain_c}"
clnsrv "allow " udp "" 123 "${udp_ntp_c}" "${udp_ntp_s}"
clnsrv "allow " udp "" 137 "${udp_netbios_ns_c}" "${udp_netbios_ns_s}"
clnsrv "allow " udp "" 138 "${udp_netbios_dgm_c}" "${udp_netbios_dgm_s}"
clnsrv "allow log" udp "" 139 "${udp_netbios_ssn_c}" "${udp_netbios_ssn_s}"
clnsrv "allow " udp "" 161 "${udp_snmp_c}" "${udp_snmp_s}"
clnsrv "allow " udp 161 "" "${udp_snmp_s}" "${udp_snmp_c}"
clnsrv "allow " udp "" 162 "${udp_snmptrap_c}" "${udp_snmptrap_s}"
clnsrv "allow " udp 162 "" "${udp_snmptrap_s}" "${udp_snmptrap_c}"
clnsrv "allow " udp "" 512 "${udp_biff_c}" "${udp_biff_s}"
clnsrv "allow " udp "" 513 "${udp_who_c}" "${udp_who_s}"
clnsrv "allow " udp "" 514 "${udp_syslog_c}" "${udp_syslog_s}"
clnsrv "allow " udp "" 515 "${udp_printer_c}" "${udp_printer_s}"
clnsrv "allow " udp "" 516 "${udp_videotex_c}" "${udp_videotex_s}"
clnsrv "allow " udp "" 517 "${udp_talk_c}" "${udp_talk_s}"
clnsrv "allow " udp "" 518 "${udp_ntalk_c}" "${udp_ntalk_s}"
clnsrv "allow " udp "" 519 "${udp_utime_c}" "${udp_utime_s}"
clnsrv "allow " udp "" 520 "${udp_router_c}" "${udp_router_s}"
clnsrv "allow " udp "" 521 "${udp_ripng_c}" "${udp_ripng_s}"
clnsrv "allow " udp 1645 1645 "${udp_radius_c}" "${udp_radius_s}"
clnsrv "allow " udp 1645 1645 "${udp_radius_s}" "${udp_radius_c}"
clnsrv "allow " udp 1646 1646 "${udp_radacct_c}" "${udp_radacct_s}"
clnsrv "allow " udp 1646 1646 "${udp_radacct_s}" "${udp_radacct_c}"
clnsrv "allow " udp 1812 1812 "${udp_radius_c}" "${udp_radius_s}"
clnsrv "allow " udp 1812 1812 "${udp_radius_s}" "${udp_radius_c}"
clnsrv "allow " udp 1813 1813 "${udp_radacct_c}" "${udp_radacct_s}"
clnsrv "allow " udp 1813 1813 "${udp_radacct_s}" "${udp_radacct_c}"
clnsrv "allow " udp "" 4000 "${udp_4000_c}" "${udp_4000_s}"
clnsrv "allow " udp 4000 "" "${udp_4000_s}" "${udp_4000_c}"
${fadd} 59999 allow log udp from any to any
much much more below here deleted...
--
Rod Grimes - KD7CAX @ CN85sl - (RWG25) rgrimes@gndrsh.dnsmgr.net
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199911251839.KAA49143>
