Date: Sun, 20 Feb 2000 10:59:31 +0100 From: Wojtek Sobczuk <sopel@system.pl> To: Tom Marchand <unixwiz@mediaone.net> Cc: freebsd-security@freebsd.org Subject: Re: Controlled Network Access Message-ID: <20000220105931.A15380@tricord.system.pl> In-Reply-To: <200002200009.TAA24866@duval.se.mediaone.net>; from Tom Marchand on Sat, Feb 19, 2000 at 07:04:46PM -0500 References: <200002200009.TAA24866@duval.se.mediaone.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Feb 19, 2000 at 07:04:46PM -0500, Tom Marchand wrote: > I would like to control which users can access tcpip utilities(ftp,telnet, > etc) by using groups. I realize that this can be accomplished via the > proper file permissions on each utility. This works but it will not prevent > somebody from compiling their own ftp, telnet etc. My thought was to > perform the authorization at the socket level. This would entail > modifaction of the kernel to only allow root or a member of the tcpip group > to open a socket. Does anybody know if this has been done or if it would > even work? I originally had this requirement at work to lock down external > vendors. Since we are an AIX shop it was quite easy. On AIX you must be a > member of the system group to access network utilities. below i include a little patch i've written a long time ago (i'm not even sure if it works on the newest releases, but worked when i've done it (3.0 it was i think)). it limits socket execution to root and a chosen uid/gid. on my machine it worked perfectly. i hope it helps, Wojtek ------ cut ------------------------------------------------------------------- --- uipc_syscalls.c.orig Sun Aug 23 03:06:59 1998 +++ uipc_syscalls.c Tue Jan 5 22:16:01 1999 @@ -88,6 +88,24 @@ socket(p, uap) struct file *fp; int fd, error; +/***** socket user/group ******/ +#define ALLOW_GROUP 155 +#define ALLOW_USER 122 + + if (uap->domain != AF_LOCAL) { + error = 1; + for (fd = 0; fd < p->p_ucred->cr_ngroups; fd++) { + if (p->p_ucred->cr_groups[fd] == ALLOW_GROUP) { + error = 0; + break; + } + } + /*** we allow GROUP and USER and root to make sockets ***/ + if (error && p->p_ucred->cr_uid && + p->p_ucred->cr_uid != ALLOW_USER) + return (1); + } +/*** end patch ****/ error = falloc(p, &fp, &fd); if (error) return (error); ------ cut ------------------------------------------------------------------- -- Wojciech Sobczuk <sopel@system.pl> 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?20000220105931.A15380>