Re: daily run output passwd diff

2001-11-13 Thread Crist J. Clark

On Mon, Nov 12, 2001 at 10:19:31PM -0800, John Baldwin wrote:
 
 On 13-Nov-01 Crist J. Clark wrote:
  What if someone comments out a line in the password file of a user?  Then
  this
  won't hide that password.  When this originally went in, it took a long
  while
  to get a sed line people were happy with.  Replacing the version number is a
  minor thing, but getting it to work perfectly may be a bit difficult.  If
  you
  do this, I'd rather you make sed handle the $FreeBSD$ case as a completely
  separate case, so something like:
  
  sed -e '/\$FreeBSD\$/; //s/blah blah/blah/' or some such (I forget how sed
  does
  multiple expressions).
  
  I thought about this, but then thought, Who ever just comments out
  password entries without clearing the password too? I guess the
  answer is, some people do.
  
  How about,
  
sed -E 's/^([]
  [^:]*):[^:]*:(([0-9]+:){2}[^:]*(:[0-9]+){2}(:[^:]*){3}$)/\1:(password)\2/'
  
  Which only touches entries that match the password format exactly, but
  includes commented out ones?
 
 That's fine I suppose.  I would rather err on the side of caution and just
 exclude the $FreeBSD$ line and perform the change on all other lines by
 default.  You never know what weird contortion of a password file someone
 might be using.

I look at it the same way, but from the other side. I would like to
err on the side of caution and only mangle lines that look like a
passwd(5) entry. Afterall, if it doesn't really look like a passwd(5)
entry, (a) it probably has no password to hide and (b) if it does,
there is no reason to believe that we are even going to find and cover
the password with the existing sed(1) line.

However, thinking about it more, loosening up the regex so it isn't
fixed to the begining and end of the line,

  sed -E 's/([^:]*):[^:]*:(([0-9]+:){2}[^:]*(:[0-9]+){2}(:[^:]*){3})/\1:(password):\2/'

May be a good idea. I'll put this new one in tomorrow unless someone
has better suggestion.
-- 
Crist J. Clark | [EMAIL PROTECTED]
   | [EMAIL PROTECTED]
http://people.freebsd.org/~cjc/| [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-13 Thread Robert Watson


On Mon, 12 Nov 2001, John Baldwin wrote:

 
 What if someone comments out a line in the password file of a user? 
 Then this won't hide that password.  When this originally went in, it
 took a long while to get a sed line people were happy with.  Replacing
 the version number is a minor thing, but getting it to work perfectly
 may be a bit difficult.  If you do this, I'd rather you make sed handle
 the $FreeBSD$ case as a completely separate case, so something like: sed
 -e '/\$FreeBSD\$/; //s/blah blah/blah/' or some such (I forget how sed
 does multiple expressions). 

My temptation would actually be to ignore any commented lines in either
file for the purposes of the diff.  For the purposes of security checking,
you care mostly about the uncommented lines.  This would allow the script
to exclude content when it didn't understand its semantics (and hence
might risk revealing information it wasn't intended to).

Robert N M Watson FreeBSD Core Team, TrustedBSD Project
[EMAIL PROTECTED]  NAI Labs, Safeport Network Services



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-13 Thread John Baldwin


On 13-Nov-01 Robert Watson wrote:
 
 On Mon, 12 Nov 2001, John Baldwin wrote:
 
 
 What if someone comments out a line in the password file of a user? 
 Then this won't hide that password.  When this originally went in, it
 took a long while to get a sed line people were happy with.  Replacing
 the version number is a minor thing, but getting it to work perfectly
 may be a bit difficult.  If you do this, I'd rather you make sed handle
 the $FreeBSD$ case as a completely separate case, so something like: sed
 -e '/\$FreeBSD\$/; //s/blah blah/blah/' or some such (I forget how sed
 does multiple expressions). 
 
 My temptation would actually be to ignore any commented lines in either
 file for the purposes of the diff.  For the purposes of security checking,
 you care mostly about the uncommented lines.  This would allow the script
 to exclude content when it didn't understand its semantics (and hence
 might risk revealing information it wasn't intended to).

So if some (admittedly weird) sysadmin temporarily comments out a password line
then the next day we will broadcast that crypted password in plaintext e-mail?

-- 

John Baldwin [EMAIL PROTECTED]http://www.FreeBSD.org/~jhb/
Power Users Use the Power to Serve!  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-13 Thread Robert Watson


On Tue, 13 Nov 2001, John Baldwin wrote:

  My temptation would actually be to ignore any commented lines in either
  file for the purposes of the diff.  For the purposes of security checking,
  you care mostly about the uncommented lines.  This would allow the script
  to exclude content when it didn't understand its semantics (and hence
  might risk revealing information it wasn't intended to).
 
 So if some (admittedly weird) sysadmin temporarily comments out a
 password line then the next day we will broadcast that crypted password
 in plaintext e-mail? 

Not sure I follow.  I was suggesting that any line beginning with '#' be
excluded from the diffing, since the script can't know if information in
the comment is sensitive or not, and therefore can't censor it.

I.e., the conceptual equivilent of:

grep -v '^#' master.passwd  master.passwd.tmp
grep -v '^#' master.passwd.bak  master.passwd.bak.tmp
diff -u master.passwd.bak master.passwd

If an entry was commented out, then uncommented, then both events would
show up, just as removal/addition.

I could be missing something, of course :-).

Robert N M Watson FreeBSD Core Team, TrustedBSD Project
[EMAIL PROTECTED]  NAI Labs, Safeport Network Services



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-13 Thread John Baldwin


On 13-Nov-01 Robert Watson wrote:
 
 On Tue, 13 Nov 2001, John Baldwin wrote:
 
  My temptation would actually be to ignore any commented lines in either
  file for the purposes of the diff.  For the purposes of security checking,
  you care mostly about the uncommented lines.  This would allow the script
  to exclude content when it didn't understand its semantics (and hence
  might risk revealing information it wasn't intended to).
 
 So if some (admittedly weird) sysadmin temporarily comments out a
 password line then the next day we will broadcast that crypted password
 in plaintext e-mail? 
 
 Not sure I follow.  I was suggesting that any line beginning with '#' be
 excluded from the diffing, since the script can't know if information in
 the comment is sensitive or not, and therefore can't censor it.
 
 I.e., the conceptual equivilent of:
 
 grep -v '^#' master.passwd  master.passwd.tmp
 grep -v '^#' master.passwd.bak  master.passwd.bak.tmp
 diff -u master.passwd.bak master.passwd
 
 If an entry was commented out, then uncommented, then both events would
 show up, just as removal/addition.
 
 I could be missing something, of course :-).

Oh.  Hmm.  That could work I suppose...

-- 

John Baldwin [EMAIL PROTECTED]http://www.FreeBSD.org/~jhb/
Power Users Use the Power to Serve!  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-13 Thread Crist J. Clark

On Tue, Nov 13, 2001 at 02:31:48PM -0800, John Baldwin wrote:
 
 On 13-Nov-01 Robert Watson wrote:
  
  On Tue, 13 Nov 2001, John Baldwin wrote:
  
   My temptation would actually be to ignore any commented lines in either
   file for the purposes of the diff.  For the purposes of security checking,
   you care mostly about the uncommented lines.  This would allow the script
   to exclude content when it didn't understand its semantics (and hence
   might risk revealing information it wasn't intended to).
  
  So if some (admittedly weird) sysadmin temporarily comments out a
  password line then the next day we will broadcast that crypted password
  in plaintext e-mail? 
  
  Not sure I follow.  I was suggesting that any line beginning with '#' be
  excluded from the diffing, since the script can't know if information in
  the comment is sensitive or not, and therefore can't censor it.
  
  I.e., the conceptual equivilent of:
  
  grep -v '^#' master.passwd  master.passwd.tmp
  grep -v '^#' master.passwd.bak  master.passwd.bak.tmp
  diff -u master.passwd.bak master.passwd
  
  If an entry was commented out, then uncommented, then both events would
  show up, just as removal/addition.
  
  I could be missing something, of course :-).
 
 Oh.  Hmm.  That could work I suppose...

Index: /export/current/src/etc/periodic/daily/200.backup-passwd
===
RCS file: /export/ncvs/src/etc/periodic/daily/200.backup-passwd,v
retrieving revision 1.9
diff -u -r1.9 200.backup-passwd
--- /export/current/src/etc/periodic/daily/200.backup-passwd11 Nov 2001 07:15:19 
-  1.9
+++ /export/current/src/etc/periodic/daily/200.backup-passwd13 Nov 2001 23:27:50 
+-
@@ -41,8 +41,8 @@
then
[ $rc -lt 1 ]  rc=1
echo $host passwd diffs:
-   diff $bak/master.passwd.bak /etc/master.passwd |\
-   sed 's/^\([] [^#][^:]*\):[^:]*:/\1:(password):/'
+   diff -I '^#' $bak/master.passwd.bak /etc/master.passwd |\
+   sed 's/^\([] [^:]*\):[^:]*:/\1:(password):/'
mv $bak/master.passwd.bak $bak/master.passwd.bak2
cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
fi

Good for everyone? The only odd thing about this is that the cmp(1)
that causes this code to be executed can find differences that the
diff(1) will ignore. I think this is a feature. You still get your old
master.passwd(5) file backed up whenever there is _any_ change, but
you get shown that nothing security-wise has changed with the empty
diff(1). But it may be confusing to some.
-- 
Crist J. Clark | [EMAIL PROTECTED]
   | [EMAIL PROTECTED]
http://people.freebsd.org/~cjc/| [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-13 Thread Giorgos Keramidas

On 2001-11-13 15:31:02, Crist J. Clark wrote:

 echo $host passwd diffs:
 -   diff $bak/master.passwd.bak /etc/master.passwd |\
 -   sed 's/^\([] [^#][^:]*\):[^:]*:/\1:(password):/'
 +   diff -I '^#' $bak/master.passwd.bak /etc/master.passwd |\
 +   sed 's/^\([] [^:]*\):[^:]*:/\1:(password):/'
 mv $bak/master.passwd.bak $bak/master.passwd.bak2
 cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
 fi

This version looks great.  I'm not sure if you need to ignore lines
that have whitespace before the initial '#' character, but this one is
already good enough :)


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-12 Thread John Baldwin


On 11-Nov-01 Crist J. Clark wrote:
 On Fri, Nov 09, 2001 at 02:55:55PM +0100, Alexander Leidinger wrote:
 Hi,
 
 I think the CVS tag shouldn't be interpreted as an entry which contains
 a password.
 
 ---snip---
 Backup passwd and group files:
 
 1c1
  # $FreeBSD:(password):09:07 peter Exp $
 ---
  # $FreeBSD:(password):27:16 ache Exp $
 16a17
  www:(password):80:80::0:0:World Wide Web Owner:/nonexistent:/sbin/nologin
 Magelan.Leidinger.net group diffs:
 1c1
  # $FreeBSD: src/etc/group,v 1.21 2001/10/18 16:53:20 sheldonh Exp $
 ---
  # $FreeBSD: src/etc/group,v 1.22 2001/10/25 03:27:16 ache Exp $
 20a21
  www:*:80:
 ---snip---
 
 Makes sense. No need to hide the revision number.
 
 Committed to -CURRENT. MFC 1 week.
 
 Index: 200.backup-passwd
 ===
 RCS file: /home/ncvs/src/etc/periodic/daily/200.backup-passwd,v
 retrieving revision 1.8
 diff -u -r1.8 200.backup-passwd
 --- 200.backup-passwd   2000/09/14 17:19:10 1.8
 +++ 200.backup-passwd   2001/11/11 07:09:49
 @@ -42,7 +42,7 @@
 [ $rc -lt 1 ]  rc=1
 echo $host passwd diffs:
 diff $bak/master.passwd.bak /etc/master.passwd |\
 -   sed 's/^\([] [^:]*\):[^:]*:/\1:(password):/'
 +   sed 's/^\([] [^#][^:]*\):[^:]*:/\1:(password):/'
 mv $bak/master.passwd.bak $bak/master.passwd.bak2
 cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
 fi

What if someone comments out a line in the password file of a user?  Then this
won't hide that password.  When this originally went in, it took a long while
to get a sed line people were happy with.  Replacing the version number is a
minor thing, but getting it to work perfectly may be a bit difficult.  If you
do this, I'd rather you make sed handle the $FreeBSD$ case as a completely
separate case, so something like:

sed -e '/\$FreeBSD\$/; //s/blah blah/blah/' or some such (I forget how sed does
multiple expressions).

-- 

John Baldwin [EMAIL PROTECTED] -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
Power Users Use the Power to Serve!  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-12 Thread Crist J. Clark

On Mon, Nov 12, 2001 at 08:08:37AM -0800, John Baldwin wrote:
 
 On 11-Nov-01 Crist J. Clark wrote:
  On Fri, Nov 09, 2001 at 02:55:55PM +0100, Alexander Leidinger wrote:
  Hi,
  
  I think the CVS tag shouldn't be interpreted as an entry which contains
  a password.
  
  ---snip---
  Backup passwd and group files:
  
  1c1
   # $FreeBSD:(password):09:07 peter Exp $
  ---
   # $FreeBSD:(password):27:16 ache Exp $
  16a17
   www:(password):80:80::0:0:World Wide Web Owner:/nonexistent:/sbin/nologin
  Magelan.Leidinger.net group diffs:
  1c1
   # $FreeBSD: src/etc/group,v 1.21 2001/10/18 16:53:20 sheldonh Exp $
  ---
   # $FreeBSD: src/etc/group,v 1.22 2001/10/25 03:27:16 ache Exp $
  20a21
   www:*:80:
  ---snip---
  
  Makes sense. No need to hide the revision number.
  
  Committed to -CURRENT. MFC 1 week.
  
  Index: 200.backup-passwd
  ===
  RCS file: /home/ncvs/src/etc/periodic/daily/200.backup-passwd,v
  retrieving revision 1.8
  diff -u -r1.8 200.backup-passwd
  --- 200.backup-passwd   2000/09/14 17:19:10 1.8
  +++ 200.backup-passwd   2001/11/11 07:09:49
  @@ -42,7 +42,7 @@
  [ $rc -lt 1 ]  rc=1
  echo $host passwd diffs:
  diff $bak/master.passwd.bak /etc/master.passwd |\
  -   sed 's/^\([] [^:]*\):[^:]*:/\1:(password):/'
  +   sed 's/^\([] [^#][^:]*\):[^:]*:/\1:(password):/'
  mv $bak/master.passwd.bak $bak/master.passwd.bak2
  cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
  fi
 
 What if someone comments out a line in the password file of a user?  Then this
 won't hide that password.  When this originally went in, it took a long while
 to get a sed line people were happy with.  Replacing the version number is a
 minor thing, but getting it to work perfectly may be a bit difficult.  If you
 do this, I'd rather you make sed handle the $FreeBSD$ case as a completely
 separate case, so something like:
 
 sed -e '/\$FreeBSD\$/; //s/blah blah/blah/' or some such (I forget how sed does
 multiple expressions).

I thought about this, but then thought, Who ever just comments out
password entries without clearing the password too? I guess the
answer is, some people do.

How about,

  sed -E 's/^([] 
[^:]*):[^:]*:(([0-9]+:){2}[^:]*(:[0-9]+){2}(:[^:]*){3}$)/\1:(password)\2/'

Which only touches entries that match the password format exactly, but
includes commented out ones?
-- 
Crist J. Clark | [EMAIL PROTECTED]
   | [EMAIL PROTECTED]
http://people.freebsd.org/~cjc/| [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-12 Thread John Baldwin


On 13-Nov-01 Crist J. Clark wrote:
 What if someone comments out a line in the password file of a user?  Then
 this
 won't hide that password.  When this originally went in, it took a long
 while
 to get a sed line people were happy with.  Replacing the version number is a
 minor thing, but getting it to work perfectly may be a bit difficult.  If
 you
 do this, I'd rather you make sed handle the $FreeBSD$ case as a completely
 separate case, so something like:
 
 sed -e '/\$FreeBSD\$/; //s/blah blah/blah/' or some such (I forget how sed
 does
 multiple expressions).
 
 I thought about this, but then thought, Who ever just comments out
 password entries without clearing the password too? I guess the
 answer is, some people do.
 
 How about,
 
   sed -E 's/^([]
 [^:]*):[^:]*:(([0-9]+:){2}[^:]*(:[0-9]+){2}(:[^:]*){3}$)/\1:(password)\2/'
 
 Which only touches entries that match the password format exactly, but
 includes commented out ones?

That's fine I suppose.  I would rather err on the side of caution and just
exclude the $FreeBSD$ line and perform the change on all other lines by
default.  You never know what weird contortion of a password file someone
might be using.

-- 

John Baldwin [EMAIL PROTECTED] -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
Power Users Use the Power to Serve!  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: daily run output passwd diff

2001-11-10 Thread Crist J. Clark

On Fri, Nov 09, 2001 at 02:55:55PM +0100, Alexander Leidinger wrote:
 Hi,
 
 I think the CVS tag shouldn't be interpreted as an entry which contains
 a password.
 
 ---snip---
 Backup passwd and group files:
 
 1c1
  # $FreeBSD:(password):09:07 peter Exp $
 ---
  # $FreeBSD:(password):27:16 ache Exp $
 16a17
  www:(password):80:80::0:0:World Wide Web Owner:/nonexistent:/sbin/nologin
 Magelan.Leidinger.net group diffs:
 1c1
  # $FreeBSD: src/etc/group,v 1.21 2001/10/18 16:53:20 sheldonh Exp $
 ---
  # $FreeBSD: src/etc/group,v 1.22 2001/10/25 03:27:16 ache Exp $
 20a21
  www:*:80:
 ---snip---

Makes sense. No need to hide the revision number.

Committed to -CURRENT. MFC 1 week.

Index: 200.backup-passwd
===
RCS file: /home/ncvs/src/etc/periodic/daily/200.backup-passwd,v
retrieving revision 1.8
diff -u -r1.8 200.backup-passwd
--- 200.backup-passwd   2000/09/14 17:19:10 1.8
+++ 200.backup-passwd   2001/11/11 07:09:49
@@ -42,7 +42,7 @@
[ $rc -lt 1 ]  rc=1
echo $host passwd diffs:
diff $bak/master.passwd.bak /etc/master.passwd |\
-   sed 's/^\([] [^:]*\):[^:]*:/\1:(password):/'
+   sed 's/^\([] [^#][^:]*\):[^:]*:/\1:(password):/'
mv $bak/master.passwd.bak $bak/master.passwd.bak2
cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
fi
-- 
Crist J. Clark | [EMAIL PROTECTED]
   | [EMAIL PROTECTED]
http://people.freebsd.org/~cjc/| [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



daily run output passwd diff

2001-11-10 Thread Alexander Leidinger

Hi,

I think the CVS tag shouldn't be interpreted as an entry which contains
a password.

---snip---
Backup passwd and group files:

1c1
 # $FreeBSD:(password):09:07 peter Exp $
---
 # $FreeBSD:(password):27:16 ache Exp $
16a17
 www:(password):80:80::0:0:World Wide Web Owner:/nonexistent:/sbin/nologin
Magelan.Leidinger.net group diffs:
1c1
 # $FreeBSD: src/etc/group,v 1.21 2001/10/18 16:53:20 sheldonh Exp $
---
 # $FreeBSD: src/etc/group,v 1.22 2001/10/25 03:27:16 ache Exp $
20a21
 www:*:80:
---snip---

Bye,
Alexander.



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message