Exactly what I'm talking about. Everything is very precisely setup. Aliases
are setup for common commands. Extended attributes, say, ls -l, would be a
command which is scripted through sudo, and requires authentication. It sure
makes the system difficult to use, but not if you have a good level of
access. It's a pain to setup too, but once it's done, it's all maintenance,
which is quite simple. 

-- 
Austin Gonyou
Systems Architect, CCNA
Coremetrics, Inc.
Phone: 512-796-9023
email: [EMAIL PROTECTED] 

> -----Original Message-----
> From: Brian Hatch [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, September 26, 2001 4:14 PM
> To: [EMAIL PROTECTED]
> Cc: Gonyou, Austin
> Subject: Re: Why restrict root logins?
> 
> 
> 
> 
> > > you are only partially correct. I developed a scheme on 
> Linux where you
> > > cannot have root access, except for using sudo, but if 
> sudo is only allowed
> > > for certain groups, then only a small subset of people, 
> who'm are explicitly
> > > told they can, have access to sudo and are fully 
> accounted for. This in
> > > addition to some other ACLs, perhaps, XFS, etc, allows 
> almost no one to get
> > > sudo, without being accounted for in this way. It is 
> tedious, but very
> > > secure as well. 
> > 
> > having read the sudo code, and understanding goal-based 
> attacks in the
> > way I do, I wouldn't bet on it.....
> 
> Rule #1 about sudo:  don't give sudoer's access to anything but
> custom extreemly paranoid scripts you write yourself.  For example
> if a sudoer needs to be able to add a network route, you'd make the
> following program (totally off the top of my head and untested):
> 
>   #!/usr/bin/perl
> 
>   sub bail { print STDERR "Shove off.\n"; exit 1 };
> 
>   my($network,$gateway,$toomanyargs) = @ARGV;
>   bail if $toomanyargs;
> 
>   # Validate network
>   @bytes = ($network =~ m#^(\d+)\.(\d+)\.(\d+)\.(\d+)($|/\d+$)# );
>   for $c ( 0..3 ) { bail if $bytes[$c] > 255 or ! defined 
> $bytes[$c] };
>   bail if $bytes[4] and $bytes[4]>32; # too big mask
> 
>   @bytes = ($gateway =~ m#^(\d+)\.(\d+)\.(\d+)\.(\d+)# );
>   for $c ( 0..3 ) { bail if $bytes[$c] > 255 or ! defined 
> $bytes[$c] };
> 
>   # network/gateway are valid, exec *AS A LIST* for increased paranoia
>   exec "/sbin/route", "add", "-net", $network, "gw", $gateway;
> 
> 
> When you're done writing it, you test the hell out of it by sending it
> all sorts of nasty input.  You make sure that a valid IP address isn't
> a bad one (don't let them change your default route, so add a 
> restriction
> where the network is 0.0.0.0, for example) or better yet list the ones
> that are valid, bailing if they're wrong.  Add a quick logging line to
> the bail subroutine to print out the args if invalid to syslog, etc.
> 
> 
> Yes, you can use sudo safely.  You just must be a paranoid person
> who is more knowledgable in security than those to whom you're giving
> sudo access.  If your users don't know they can shell out in vi then
> you can give them 'vi /etc/httpd.conf' access.  But better to make a
> new program called 'vihttpd' like the following and give them sudo
> access to it:
> 
>       #/bin/sh
>       file=`mktemp /tmp/httpd.conf.XXXXXX`
>       [ -e $file ] || exit 1
>       cat /etc/httpd.conf > $file
>       chown nobody $file
>       su - nobody -c "vi $file"
>       cp $file /etc/httpd.conf
>       rm $file
> 
> Ok, enough, now I'm getting to the point where I'm re-writing part of
> Hacking Linux Exposed again in a email list.  Clearly I need 
> more sleep.
> 
> 
> 
> 
> --
> Brian Hatch                "Nothing changes. Corruption,
>    Systems and              immorality, chaos."
>    Security Engineer
> www.hackinglinuxexposed.com
> 
> Every message PGP signed
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to