Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Dec 2000 19:32:59 -0600
From:      lists+freebsd-security@niss.com
To:        Garrett Wollman <wollman@khavrinen.lcs.mit.edu>
Cc:        Guy Helmer <ghelmer@palisadesys.com>, freebsd-security@FreeBSD.ORG
Subject:   Re: Securing FreeBSD against hacking 
Message-ID:  <200012200132.TAA83848@crag.niss.com>

next in thread | raw e-mail | index | archive | help
	I used to post-process the mtree specification and remove
	all time=value settings for directories. However, for items
	such as /dev/tty, that's not enough. In that case, the mode
	and other attributes change as well.

	A few days ago I modified mtree to accept the syntax of
	"keyword=*". The star indicates that the value for that
	keyword should be cleared, even if it was set using the
	"/set keyword=default" directive.

	I still post-process the output to allow for known changes,
	but this feature makes it a much simpler task.

	The patch to mtree from 4.2 is included below.

		Scott

	P.S. If someone with commit privileges could add this
	     I would appreciate it.


On Tue, 19 Dec 2000 15:19:48 -0500 (EST), Garrett Wollman wrote:
> 
> You'd probably find that to be rather difficult and tedious, and
> there's no reason to do such a comparison by hand since that function
> is built in to mtree.  Just do `mtree -d /mnt/foo -f /rdonly/foo.mtree'.
> 
> After setting up a new system for the first time, I recommend doing a:
> 
> mtree -c -i -x -p /file/system -k \
>  size,flags,gid,md5digest,sha1digest,ripemd160digest,mode,nlink,uid,link,time
> 
> for every filesystem.  You might well want to use an excludes file
> for directories containing files which are very likely to change.  For
> example, a quick test showed me:
> 
> .:    modification time (Tue Dec 19 15:10:20 2000, Tue Dec 19 15:11:34 2000)
> dev/ttyp1: 
>       modification time (Tue Dec 19 15:10:25 2000, Tue Dec 19 15:15:26 2000)
> dev/ptyp1: 
>       modification time (Tue Dec 19 15:10:25 2000, Tue Dec 19 15:15:26 2000)
> dev/ttyp2: 
>       modification time (Tue Dec 19 15:10:25 2000, Tue Dec 19 15:15:26 2000)
> dev/null: 
>       modification time (Tue Dec 19 15:05:54 2000, Tue Dec 19 15:11:03 2000)
> tmp:  modification time (Tue Dec 19 15:10:01 2000, Tue Dec 19 15:15:23 2000)


diff -ru mtree-4.2/mtree.8 mtree-4.2+/mtree.8
--- mtree-4.2/mtree.8	Fri Jun 30 04:54:06 2000
+++ mtree-4.2+/mtree.8	Sat Dec 16 19:08:18 2000
@@ -136,7 +136,8 @@
 Specifications are mostly composed of ``keywords'', i.e. strings that
 that specify values relating to files.
 No keywords have default values, and if a keyword has no value set, no
-checks based on it are performed.
+checks based on it are performed. If the value is ``*'', then any default
+value for that keyword is cleared.
 .Pp
 Currently supported keywords are as follows:
 .Bl -tag -width Cm
diff -ru mtree-4.2/spec.c mtree-4.2+/spec.c
--- mtree-4.2/spec.c	Tue Jun 27 21:33:17 2000
+++ mtree-4.2+/spec.c	Sat Dec 16 19:08:12 2000
@@ -186,6 +186,10 @@
 		ip->flags |= type = parsekey(kw, &value);
 		if (value && (val = strtok(NULL, " \t\n")) == NULL)
 			errx(1, "line %d: missing value", lineno);
+		if (strcmp("*", val) == 0) {
+			ip->flags &= ~type;
+			continue;
+		}
 		switch(type) {
 		case F_CKSUM:
 			ip->cksum = strtoul(val, &ep, 10);


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?200012200132.TAA83848>