Date: 13 Jun 1999 12:50:06 +0200 From: Dag-Erling Smorgrav <des@flood.ping.uio.no> To: Nicholas Brawn <ncb@zip.com.au> Cc: Dag-Erling Smorgrav <des@flood.ping.uio.no>, Richard Childers <rchilders@hamquist.com>, Dmitriy Bokiy <ratebor@cityline.ru>, freebsd-security@FreeBSD.ORG Subject: Re: Newbie questions: DoS & xinetd Message-ID: <xzpvhcsxtlt.fsf@flood.ping.uio.no> In-Reply-To: Nicholas Brawn's message of "Sat, 12 Jun 1999 13:20:21 %2B1000 (EST)" References: <Pine.LNX.4.05.9906121313250.7720-100000@zipper.zip.com.au>
next in thread | previous in thread | raw e-mail | index | archive | help
Nicholas Brawn <ncb@zip.com.au> writes:
> For those interested, here is a patch to /sys/netinet/ip_icmp.c that will
> enable the dropping of icmp redirects without requiring the use of IPFW or
> IPFilter (although it's a good idea to run either one of them).
Here's a better patch:
Index: src/sys/netinet/ip_icmp.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_icmp.c,v
retrieving revision 1.34
diff -u -r1.34 ip_icmp.c
--- ip_icmp.c 1999/03/06 23:10:42 1.34
+++ ip_icmp.c 1999/06/13 10:41:47
@@ -69,6 +69,14 @@
SYSCTL_INT(_net_inet_icmp, ICMPCTL_MASKREPL, maskrepl, CTLFLAG_RW,
&icmpmaskrepl, 0, "");
+static int logredirect = 0;
+SYSCTL_INT(_net_inet_icmp, OID_AUTO, logredirect, CTLFLAG_RW,
+ &logredirect, 0, "");
+
+static int dropredirect = 0;
+SYSCTL_INT(_net_inet_icmp, OID_AUTO, dropredirect, CTLFLAG_RW,
+ &dropredirect, 0, "");
+
#ifdef ICMP_BANDLIM
/*
@@ -462,6 +470,15 @@
return;
case ICMP_REDIRECT:
+ if (logredirect) {
+ char from[4 * sizeof "123"], dst[4 * sizeof "123"];
+ strcpy(from, inet_ntoa(icp->ip_src));
+ strcpy(dst, inet_ntoa(icp->icmp_ip.ip_dst));
+ printf("icmp_redirect from %s: %s => %s\n",
+ from, dst, inet_ntoa(icp->icmp_gwaddr));
+ }
+ if (dropredirect)
+ break;
if (code > 3)
goto badcode;
if (icmplen < ICMP_ADVLENMIN || icmplen < ICMP_ADVLEN(icp) ||
Index: src/etc/rc.network
===================================================================
RCS file: /home/ncvs/src/etc/rc.network,v
retrieving revision 1.47
diff -u -r1.47 rc.network
--- rc.network 1999/06/08 13:00:30 1.47
+++ rc.network 1999/06/13 10:48:08
@@ -164,6 +164,16 @@
echo -n ' broadcast ping responses=YES'
sysctl -w net.inet.icmp.bmcastecho=1 >/dev/null
fi
+
+ if [ "X$icmp_dropredirect" = X"YES" ]; then
+ echo -n ' ignore ICMP redirect=YES'
+ sysctl -w net.inet.icmp.dropredirect=1 >/dev/null
+ fi
+
+ if [ "X$icmp_logredirect" = X"YES" ]; then
+ echo -n ' log ICMP redirect=YES'
+ sysctl -w net.inet.icmp.logredirect=1 >/dev/null
+ fi
if [ "X$gateway_enable" = X"YES" ]; then
echo -n ' IP gateway=YES'
Index: src/etc/defaults/rc.conf
===================================================================
RCS file: /home/ncvs/src/etc/defaults/rc.conf,v
retrieving revision 1.10
diff -u -r1.10 rc.conf
--- rc.conf 1999/06/05 05:45:57 1.10
+++ rc.conf 1999/06/13 10:44:09
@@ -42,6 +42,8 @@
tcp_extensions="NO" # Set to Yes to turn on RFC1323 extensions.
log_in_vain="NO" # Disallow bad connection logging (or YES).
tcp_keepalive="YES" # Kill dead TCP connections (or NO).
+icmp_dropredirect="NO" # Set to YES to ignore ICMP REDIRECT packets
+icmp_logredirect="NO" # Set to YES to log ICMP REDIRECT packets
network_interfaces="lo0" # List of network interfaces (lo0 is loopback).
ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
DES
--
Dag-Erling Smorgrav - des@flood.ping.uio.no
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-security" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzpvhcsxtlt.fsf>
