* Re: LSM conversion to static interface
@ 2007-10-22 2:24 Thomas Fricaccia
2007-10-22 3:59 ` Greg KH
2007-10-22 10:07 ` Alan Cox
0 siblings, 2 replies; 17+ messages in thread
From: Thomas Fricaccia @ 2007-10-22 2:24 UTC (permalink / raw)
To: Crispin Cowan; +Cc: linux-kernel, LSM ML, Linus Torvalds
Yes, I think Crispin has succinctly summed it up: irrevocably closing
the LSM prevents commercial customers from using security modules other
than that provided by their Linux distributor. As Sarbanes-Oxley and
other regulatory laws require these customers to use "standard
kernels", the result is a rather dreary form of vendor lock-in, where the
security framework is coupled to the distribution.
Though it would require a somewhat undesirable complexity of CONFIG_
flags, it should be possible to construct flexibility enough for everyone
to get what he wants. For example, it should be possible to configure
kernels with a single security framework hard-linked, AND it should
also be possible to configure kernels such that the default security
framework could be completely replaced at boot time by another, be it
out-of-tree module, or other.
I agree entirely that preserving this form of freedom for the end user
makes Linux a much stronger technology than not. For one thing, the
consequences of closing LSM are fairly certain to irritate enterprise
commercial customers, which is probably a sign that the technology has
taken a wrong turn.
Tommy F.
Crispin Cowan <crispin@crispincowan.com> wrote:
> So the net impact of this patch is:
>
> * It takes a deployment practice (static compiled-in security) that
> is arguably good in many circumstances and makes it mandatory at
> all times.
> * It takes a development practice that is very convenient and
> slightly risky, and forces you into the pessimal inconvenient
> development practice at all times.
> * It prevents enterprise users, and in fact anyone who isn't
> comfortable compiling their own kernel, from ever trying out any
> security module that their distro vendor of choice did not ship.
>
> This strikes me as a rather anti-choice position to take. It says that
> because candy is bad for you, you only ever get to eat vegetables. I
> don't understand why Linux would want to do this to its users.
>
> It doesn't hurt me or AppArmor. Since AppArmor is now shipping with
> SUSE, Ubuntu, and Mandriva, what this does is make it harder for newer
> modules like TOMOYO, Multi-Admin, etc, to get exposure to enterprise
> users. So I don't think I am being self-serving in arguing against this
> patch. I just think it is bad for Linux.
>
> Crispin
>
> --
> Crispin Cowan, Ph.D. http://crispincowan.com/~crispin/
> Itanium. Vista. GPLv3. Complexity at work
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: LSM conversion to static interface 2007-10-22 2:24 LSM conversion to static interface Thomas Fricaccia @ 2007-10-22 3:59 ` Greg KH 2007-10-22 17:47 ` Avi Kivity 2007-10-23 16:52 ` Geert Uytterhoeven 2007-10-22 10:07 ` Alan Cox 1 sibling, 2 replies; 17+ messages in thread From: Greg KH @ 2007-10-22 3:59 UTC (permalink / raw) To: Thomas Fricaccia; +Cc: Crispin Cowan, linux-kernel, LSM ML, Linus Torvalds On Sun, Oct 21, 2007 at 07:24:42PM -0700, Thomas Fricaccia wrote: > Yes, I think Crispin has succinctly summed it up: irrevocably closing > the LSM prevents commercial customers from using security modules other > than that provided by their Linux distributor. Any "customer" using a security model other than provided by their Linux distributor instantly voided all support from that distro by doing that. So, since the support is gone, they can easily build their own kernels, with their own LSM interfaces, and get the exact same lack of support :) And, what are these "other LSM modules" you speak of that people rely on to run their businesses? > As Sarbanes-Oxley and > other regulatory laws require these customers to use "standard > kernels", the result is a rather dreary form of vendor lock-in, where the > security framework is coupled to the distribution. Wait, what? Since when does Sarbanes-Oxley decree that a company must use a "standard kernel"? And just exactly what defines such "standard kernel"? Can you point out where in that bill it requires such a thing? Totally confused, greg k-h ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM conversion to static interface 2007-10-22 3:59 ` Greg KH @ 2007-10-22 17:47 ` Avi Kivity [not found] ` <e7d8f83e0710221559i6b14469fjebceee12c6dec98e@mail.gmail.com> 2007-10-23 16:05 ` LSM conversion to static interface Adrian Bunk 2007-10-23 16:52 ` Geert Uytterhoeven 1 sibling, 2 replies; 17+ messages in thread From: Avi Kivity @ 2007-10-22 17:47 UTC (permalink / raw) To: Greg KH Cc: Thomas Fricaccia, Crispin Cowan, linux-kernel, LSM ML, Linus Torvalds Greg KH wrote: > On Sun, Oct 21, 2007 at 07:24:42PM -0700, Thomas Fricaccia wrote: > >> Yes, I think Crispin has succinctly summed it up: irrevocably closing >> the LSM prevents commercial customers from using security modules other >> than that provided by their Linux distributor. >> > > Any "customer" using a security model other than provided by their Linux > distributor instantly voided all support from that distro by doing that. > > So, since the support is gone, they can easily build their own kernels, > with their own LSM interfaces, and get the exact same lack of support :) > > Running a vendor kernel has the advantage of reusing all the QA work that has gone into that kernel. It is very different from running 2.6.24-rc1 (or 2.6.22.x). Hence projects like centos: you don't get any support, but the likelihood of actually requiring support is lower than running some random kernel. [but I agree that someone who has somehow determined that they need a specific LSM will probably have determined that they need vendor support as well] -- error compiling committee.c: too many arguments to function ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <e7d8f83e0710221559i6b14469fjebceee12c6dec98e@mail.gmail.com>]
[parent not found: <471D8877.5030901@crispincowan.com>]
* Re: LSM and Containers (was: LSM conversion to static interface) [not found] ` <471D8877.5030901@crispincowan.com> @ 2007-10-23 13:32 ` Serge E. Hallyn 2007-10-23 17:57 ` LSM and Containers Crispin Cowan 0 siblings, 1 reply; 17+ messages in thread From: Serge E. Hallyn @ 2007-10-23 13:32 UTC (permalink / raw) To: Crispin Cowan; +Cc: Peter Dolding, linux-security-module, Containers Quoting Crispin Cowan (crispin@crispincowan.com): > Peter, I may be mistaken, but I think you are talking about an entirely > different issue than the LSM static interface issue, so I've changed the > subject. > > Peter Dolding wrote: > > You are all focusing on vendors. I am thinking server farm or people > > running many different distros side by side using containers. > This right here is a challenging goal. > > It completely surprises me that anyone would consider trying to run > different distros in different containers. It seems reasonable to me. > It would especially surprise > me if one tried to run different kernels in different containers. That's not just unreasonable, it's impossible :) > It is my understanding of containers that they are intended to be a > *lightweight* virtualization technique, giving each container > effectively a private copy of identical instances of the host OS. > > If you want to rent out divergent distros, kernels, etc. then it seems > to me that heavier virtualization like Xen, KVM, VMware, etc. are the > right answer, rather than trying to force difficult kernel solutions > into the container and LSM features into the kernel. For different kernels, yes, but unless you pick two distros which require incompatible kernel features (?) I don't see running, say, gentoo, fedora, and ubuntu under different containers as a problem. Perhaps the biggest reason not to do that, speaking practically, is that you miss out on some of the ability to share /usr, /lib, etc readonly among containers to save overall disk space. > I call it "difficult" because you would have to build a great big switch > into the LSM interface, so that each hook is dispatched to the LSM > module being used by the current container. This will impose some > complexity and overhead, making each hook slower. Worse,the semantics > become painfully undefined if a syscall by one container touches an > object owned by a different container; which LSM gets called to mediate > the access? At first my thought was this is worse than dealing with stacker. But on the other hand, perhaps introducing some sort of 'personality' to objects and subjects, where the personality decides which LSM is invoked for access, can be done more optimally than one would think. It would probably require strict enforcement that two "things" with different personalities can NOT mix, ever. > What makes a *lot* more sense to me is for individual LSMs to try to > "containerize" themselves. This is actually the AppArmor plan: we hope > to eventually support having a private AppArmor policy per container. Agreed, that had been my assumption. That, and that the configuring of LSM policies inside a container would simply be disabled if say loading a suse container under a fedora host. > Thus all of the containers on the physical machine will be running > identical kernels, and all will use AppArmor, but each one can have a > different AppArmor policy set, so that e.g. my private Apache process > instance is confined in my container different than your Apache process > is confined in your container. > > I see no barrier to SELinux or SMACK or TOMOYO doing the same thing. But > I see *big* barriers to trying to support multiple LSM modules in the > kernel at the same time with each container using the LSM of its choice. It's not as clear to me how SMACK (or the MLS/MCS portion of selinux) would be handled. -serge ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM and Containers 2007-10-23 13:32 ` LSM and Containers (was: LSM conversion to static interface) Serge E. Hallyn @ 2007-10-23 17:57 ` Crispin Cowan 2007-10-24 0:07 ` Peter Dolding 0 siblings, 1 reply; 17+ messages in thread From: Crispin Cowan @ 2007-10-23 17:57 UTC (permalink / raw) To: Serge E. Hallyn; +Cc: Peter Dolding, linux-security-module, Containers Serge E. Hallyn wrote: > Quoting Crispin Cowan (crispin@crispincowan.com): > >> It is my understanding of containers that they are intended to be a >> *lightweight* virtualization technique, giving each container >> effectively a private copy of identical instances of the host OS. >> >> If you want to rent out divergent distros, kernels, etc. then it seems >> to me that heavier virtualization like Xen, KVM, VMware, etc. are the >> right answer, rather than trying to force difficult kernel solutions >> into the container and LSM features into the kernel. >> > For different kernels, yes, but unless you pick two distros which > require incompatible kernel features (?) I don't see running, say, > gentoo, fedora, and ubuntu under different containers as a problem. > > Perhaps the biggest reason not to do that, speaking practically, is that > you miss out on some of the ability to share /usr, /lib, etc readonly > among containers to save overall disk space. > This is why it just doesn't seem very reasonable. People who want to do that will just use KVM or Xen. People who want the efficiency of lightweight containers, and have enough load pressure to care, can just have one Fedora physical box with many containers all running Fedora, and another openSUSE physical box with many containers all running openSUSE. I can see how you *could* manage to run different distros in different containers, but you would have to make many compromises. No sharing of read-only disk as Serge said. You would have to pick one kernel, as no 2 distros I know of actually run the same kernel. You would have to pick one set of device drivers, and one LSM. By the time you deal with all this crap, just using KVM or Xen starts to look good :-) >> I call it "difficult" because you would have to build a great big switch >> into the LSM interface, so that each hook is dispatched to the LSM >> module being used by the current container. This will impose some >> complexity and overhead, making each hook slower. Worse,the semantics >> become painfully undefined if a syscall by one container touches an >> object owned by a different container; which LSM gets called to mediate >> the access? >> > At first my thought was this is worse than dealing with stacker. > > But on the other hand, perhaps introducing some sort of 'personality' to > objects and subjects, where the personality decides which LSM is invoked > for access, can be done more optimally than one would think. It would > probably require strict enforcement that two "things" with different > personalities can NOT mix, ever. > Yes, that's what you would have to do. But I basically don't think it is a good idea; use full virtualization if you don't want to share kernel features among your virtual guests. >> What makes a *lot* more sense to me is for individual LSMs to try to >> "containerize" themselves. This is actually the AppArmor plan: we hope >> to eventually support having a private AppArmor policy per container. >> > Agreed, that had been my assumption. That, and that the configuring > of LSM policies inside a container would simply be disabled if say > loading a suse container under a fedora host. > This is why running an openSUSE container under a Fedora host (or vice versa) seems daft to me. >> Thus all of the containers on the physical machine will be running >> identical kernels, and all will use AppArmor, but each one can have a >> different AppArmor policy set, so that e.g. my private Apache process >> instance is confined in my container different than your Apache process >> is confined in your container. >> >> I see no barrier to SELinux or SMACK or TOMOYO doing the same thing. But >> I see *big* barriers to trying to support multiple LSM modules in the >> kernel at the same time with each container using the LSM of its choice. >> > It's not as clear to me how SMACK (or the MLS/MCS portion of selinux) > would be handled. > That actually seems easier to me. You may not need to do anything at all to the MLS/MCS code. There is no actual "policy" in MLS, it is just a single policy (label dominance) and all of your "policy" is expressed through labeling. So what you do is make the container ID be part of the label schema, and poof! none of the containers are permitted to touch objects belonging to any others, because they cannot dominate each other. Crispin -- Crispin Cowan, Ph.D. http://crispincowan.com/~crispin/ Itanium. Vista. GPLv3. Complexity at work ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM and Containers 2007-10-23 17:57 ` LSM and Containers Crispin Cowan @ 2007-10-24 0:07 ` Peter Dolding 2007-10-24 23:07 ` Peter Dolding 0 siblings, 1 reply; 17+ messages in thread From: Peter Dolding @ 2007-10-24 0:07 UTC (permalink / raw) To: linux-security-module, Containers Crispin Cowan wrote: > Serge E. Hallyn wrote: > >> Quoting Crispin Cowan (crispin@crispincowan.com): >> >> >>> It is my understanding of containers that they are intended to be a >>> *lightweight* virtualization technique, giving each container >>> effectively a private copy of identical instances of the host OS. >>> >>> If you want to rent out divergent distros, kernels, etc. then it seems >>> to me that heavier virtualization like Xen, KVM, VMware, etc. are the >>> right answer, rather than trying to force difficult kernel solutions >>> into the container and LSM features into the kernel. >>> >>> >> For different kernels, yes, but unless you pick two distros which >> require incompatible kernel features (?) I don't see running, say, >> gentoo, fedora, and ubuntu under different containers as a problem. >> >> Perhaps the biggest reason not to do that, speaking practically, is that >> you miss out on some of the ability to share /usr, /lib, etc readonly >> among containers to save overall disk space. >> >> > This is why it just doesn't seem very reasonable. People who want to do > that will just use KVM or Xen. People who want the efficiency of > lightweight containers, and have enough load pressure to care, can just > have one Fedora physical box with many containers all running Fedora, > and another openSUSE physical box with many containers all running openSUSE. > > I can see how you *could* manage to run different distros in different > containers, but you would have to make many compromises. No sharing of > read-only disk as Serge said. You would have to pick one kernel, as no 2 > distros I know of actually run the same kernel. You would have to pick > one set of device drivers, and one LSM. By the time you deal with all > this crap, just using KVM or Xen starts to look good :-) > Sorry the reason for doing it is 1 set of driver. In particular Opengl. KVM, Xen, Lguest... All virtual machines cannot handle it effectively so you have one very high comprise. Containers can. Same with other devices some devices don't take well at all being wrapped up in KVM, Xen and other systems. Running the same kernel is not a issue to me. Most distributions I have run with standard from kernel.org with there LSM. Nothing else added to kernel. So the different kernel is null and void. If LSM are rebuild we will see distro kernels with support for a broad range of distro support. You may have a distro that allows like the top 10 server Distributions to be run under it. Of course you are not going to be using any stock kernel from those Distros if they don't support running other distros. I would not bring it up if I had not run OpenSuse Fedora and Debian and other distros of the same kernel before. How simple in initrd load the LSM for the Distro that was it. There is no technical problem at the kernel for doing it. Also part of the reason why I despise static LSM's becoming only option cross distro performance testing of a kernel to see if there is a difference will be made harder since I will have to build the kernel more than once. Now when I get to containers you are now saying I cannot do the same thing. I know current LSM model does not fit well for this. Because its a giant hooking solution. This solution is not suitable to exist well with containers and massively limiting on security improvements to the over all os that can be done.. The LSM model needs ripping in two to work great with containers and along the way allow applications and users to take care of there own problems. Enforcement modules and Controllers. Controllers work on threads and processors created to allocate security limitations. LSM level controller can grant higher security access to threads and processors than what they all ready have to the level of the LSM. User/program level controllers can only remove permissions to do things this is most likely better as a feature of the Enforcement modules. LSM level controllers have to be attached to kernel or a security containers. Since a container could all ready have limits from another LSMs put on it could only allocate permissions inside those limts. Enforcement is exactly that. Enforcement modules would be like posix file caps and so on. An option has to be choose here if Enforcement modules have to report to LSM level controller on secuirty change request to lower and expand or only to expand or not at all. Not at all being default because it could be a new feature the controller does not know how to handle or want to handle. Most likely this would be controller option on what if any information it wants out of the Enforcement modules. Default operation of all enforcement modules is like posix file caps is lower only. No option to expand what has all ready been given. With a LSM controller asking to be given notice of change of a Enforcement section it can allow raising or forbid lowering. Applications developers like GUI Filemanagers wine... Can depend on the Enforcement parts always being there. This is a overall system wide upgrade of security that does not fail completely just because you disable the contoller. Because if all applications are doing there own internal thread based and process id based enforcements what can be far tighter than what any controller can do since they know what the application should be doing where. I hear different people asking for a LSM to be build into kernel. This is not a requirement. The enforcement features of LSM's are. Each one of the enforcement features is a upgrade to the overall security of the operating system no matter the LSM loaded or even if LSM is loaded. Basically just like containers take responsibility for parts individually when put into once piece become a virtual server. The same needs to be done with LSM's. The controller is the final thing that joins the parts up. Not coming with the parts in one huge blob as LSM do now. The huge blob problem is why they don't want to work right containers. Over head is small with Controllers. From Enforcement module to Controller is always the same depth. When Controller goes to change permissions its checked against the list its allowed. At this point does not matter if you are 1 deep or 1000 deep. Since there is no need to go any deeper or run other Controllers to get information. Just the first Controller the one you might statically build in gets told it has every permission to do whatever it sees fit maybe. The first Controller at build time could have its rights limited. Just like selinux strict mode for all. As you can see 100 percent the same path level no matter what. Only thing that changes in what controller you are in. As bad as it sounds to some people doing this will lower the security difference between selinux apparmor or other LSM's . This forces user and security friendly solutions out of LSM makers. Yes true completion to produce the best and leave users as least exposed as able. Not my LSM is better than yours arguments with complexity of comparing. It will be simpler to compare LSM's ok what enforcement modules does it control. Does that cover the area I need. Then look at how it controls them and choose. Note LSM controllers could be Security Containers. Just one Container is set default off the start line. Peter Dolding ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM and Containers 2007-10-24 0:07 ` Peter Dolding @ 2007-10-24 23:07 ` Peter Dolding 2007-10-24 23:21 ` Crispin Cowan 0 siblings, 1 reply; 17+ messages in thread From: Peter Dolding @ 2007-10-24 23:07 UTC (permalink / raw) To: linux-security-module, Containers The other thing you have not though of and is critical. If LSM is the same LSM across all containers. What happens if that is breached and tripped to disable. You only want to loss one container to a breach not the whole box and dice in one hit. Its also the reason why my design does not have a direct link between controllers. No cascade threw system to take box and dice. The more I look at it more holes I find why the current LSM model just cannot keep on existing with Containers. Its not the best option. Hacking it to work with containers is only creating risks of more problems. The LSM model as also breed that problem of not sharing security tech advantages to everyone. Ie if they don't use our LSM they don't need/deserve our defense. Different LSM per container from a security point of view appears critical. Sorry to say redesign from the ground up time everyone. Its a round peg into a square hole yes you can bash it in but it will never fit right. Peter Dolding ps sorry for going on so long I just see this as a major problem. If you have a solution to it tell me. Since a cut line has be put somewhere with containers. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM and Containers 2007-10-24 23:07 ` Peter Dolding @ 2007-10-24 23:21 ` Crispin Cowan 2007-10-25 0:20 ` Peter Dolding 0 siblings, 1 reply; 17+ messages in thread From: Crispin Cowan @ 2007-10-24 23:21 UTC (permalink / raw) To: Peter Dolding; +Cc: linux-security-module, Containers Peter Dolding wrote: > The other thing you have not though of and is critical. If LSM is the > same LSM across all containers. What happens if that is breached and > tripped to disable. You only want to loss one container to a breach > not the whole box and dice in one hit. Its also the reason why my > design does not have a direct link between controllers. No cascade > threw system to take box and dice. > Sorry, but I totally disagree. If you obtain enough privilege to disable the LSM in one container, you also obtain enough privilege to disable *other* LSMs that might be operating in different containers. This is a limitation of the Containers feature, not of LSM. The purpose of LSM would be to manage privilege such that you cannot do damage, and in particular, any LSM that fails to prevent an attacker from disabling the LSM itself has failed, either in design, or in having an inadequate policy in place. > The more I look at it more holes I find why the current LSM model just > cannot keep on existing with Containers. Its not the best option. > Hacking it to work with containers is only creating risks of more > problems. The LSM model as also breed that problem of not sharing > security tech advantages to everyone. Ie if they don't use our LSM > they don't need/deserve our defense. > Again, I completely disagree. Well, I agree that the hacking you proposed to permit different LSMs in different containers is a bad idea, so lets not do that :) I see no need to support different LSMs in different containers. The complexity of such a feature would be very high. The utility strikes me as being very low; people who want that degree of separation of containers should be using Xen or KVM, not Containers. > Different LSM per container from a security point of view appears > critical. Sorry to say redesign from the ground up time everyone. > Its a round peg into a square hole yes you can bash it in but it will > never fit right. > I have no idea how you can support such assertions. Absolutely not. It is quite clear that the way to address security for containers is to enhance individual LSM modules to be container-aware so that you can have separate policies in the separate containers. That is in keeping with the spirit of sharing the kernel, and providing separate instances to the users. > ps sorry for going on so long I just see this as a major problem. If > you have a solution to it tell me. Since a cut line has be put > somewhere with containers. > Where as I see it as a very minor problem, and very easy to fix without any re-design of LSM, or of Containers. It only requires container-aware LSM modules. Crispin -- Crispin Cowan, Ph.D. http://crispincowan.com/~crispin/ Itanium. Vista. GPLv3. Complexity at work ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM and Containers 2007-10-24 23:21 ` Crispin Cowan @ 2007-10-25 0:20 ` Peter Dolding 2007-10-25 1:44 ` Serge E. Hallyn 0 siblings, 1 reply; 17+ messages in thread From: Peter Dolding @ 2007-10-25 0:20 UTC (permalink / raw) To: linux-security-module, Containers On 10/25/07, Crispin Cowan <crispin@crispincowan.com> wrote: > Peter Dolding wrote: > > The other thing you have not though of and is critical. If LSM is the > > same LSM across all containers. What happens if that is breached and > > tripped to disable. You only want to loss one container to a breach > > not the whole box and dice in one hit. Its also the reason why my > > design does not have a direct link between controllers. No cascade > > threw system to take box and dice. > > > Sorry, but I totally disagree. > > If you obtain enough privilege to disable the LSM in one container, you > also obtain enough privilege to disable *other* LSMs that might be > operating in different containers. This is a limitation of the > Containers feature, not of LSM. > That is not a Container feature. If you have enough privilege does not mean you can. Root user in a Container does not mean you can play with other containers applications. There is a security split at the container edge when doing Virtual Servers what by using one LSM you are disregarding. Simple point if one LSM is disabled in a container it can only get the max rights of that Container. So cannot see the other LSM's on the system bellow it. Reason also why in my model its the same layout if there is 1 or 1000 stacked so attack cannot tell how deep they are in and if there is anything to be gained by digging. You have to break the Security Container as well to get higher. Of course breaking the base LSM you would have problems the one with full powers of the system and the right to kill and control the containers bellow it. Most likely it would be wise to run that just for limited operations. Really limited operations. I think you need to go any play with Solaris some time what containers can do is quite impressive. Right upto changing the syscalls and device names inside them. Now its only going to get tricker if someone brings in Freebsd and Solaris emulation containers into linux. Yes this is still just using the Linux kernel. Because LSM's don't exist on them you will want to plug in a module to suit the platform contained inside the container. In particular something different to process the security configs even if the same enforcement code is used. You are dealing with something far more powerful current model is not going to fit. I look long term and I just cannot find what you are doing is going to fit in anyway shape or form. Just different Linux distros is the simple form of containers not is fully grown form. This is the problem if you cannot do that future of containers will have problems because LSM will be limiting its forms. To rebuild a security framework takes time. Its time to pull head out sand that containers are not simple thing that what has worked in past with small alterations will work with it in future. Containers are completely new system with completely new problems. LSM's should not interfere with its development. What you are doing is having each LSM create its own outer shield. With its own weaknesses. Common Security Container makes only one shield at edge of containers to maintain and look after. Does not different weakness to track down and fix on a LSM by LSM base. Peter Dolding ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM and Containers 2007-10-25 0:20 ` Peter Dolding @ 2007-10-25 1:44 ` Serge E. Hallyn 2007-10-25 4:31 ` Peter Dolding 0 siblings, 1 reply; 17+ messages in thread From: Serge E. Hallyn @ 2007-10-25 1:44 UTC (permalink / raw) To: Peter Dolding; +Cc: linux-security-module, Containers Quoting Peter Dolding (oiaohm@gmail.com): > On 10/25/07, Crispin Cowan <crispin@crispincowan.com> wrote: > > Peter Dolding wrote: > > > The other thing you have not though of and is critical. If LSM is the > > > same LSM across all containers. What happens if that is breached and > > > tripped to disable. You only want to loss one container to a breach > > > not the whole box and dice in one hit. Its also the reason why my > > > design does not have a direct link between controllers. No cascade > > > threw system to take box and dice. > > > > > Sorry, but I totally disagree. > > > > If you obtain enough privilege to disable the LSM in one container, you > > also obtain enough privilege to disable *other* LSMs that might be > > operating in different containers. This is a limitation of the > > Containers feature, not of LSM. > > > That is not a Container feature. If you have enough privilege does > not mean you can. Root user in a Container does not mean you can play > with other containers applications. There is a security split at the > container edge when doing Virtual Servers what by using one LSM you > are disregarding. > > Simple point if one LSM is disabled in a container it can only get the > max rights of that Container. So cannot see the other LSM's on the > system bellow it. Reason also why in my model its the same layout if > there is 1 or 1000 stacked so attack cannot tell how deep they are in > and if there is anything to be gained by digging. You have to break You're sometimes hard to parse, but here are a few basic facts within which to constrain our discussions: 1. LSMs are a part of the kernel. The entire kernel is in the same trusted computing base 2. containers all run on the same kernel 3. whether an lsm is compromised, or a tty driver, or anything else which is in the TCB, all containers are compromised 4. it is very explicitly NOT a goal to hide from a container the fact that it is in a container. So your 'cannot tell how deep they are' is not a goal. If you want to be able to 'plug' lsms in per container, by all means feel free to write a proof of concept. It is kind of a cool idea. But be clear about what you'll gain: You allow the container admin to contrain data access within his container in the way he chooses using the model with which he is comfortable. It does nothing to protect one container from another, does nothing to protect against kernel exploits, and absolutely does nothing to protect a container from the 'host'. Also please keep in mind that the container security framework is not only not yet complete, it's pretty much not started. My own idea for how to best do it are outlined in emails which are in the containers list archive. But in terms of LSM they follow the idea Crispin outlines, namely that the LSMs support containers themselves. And, in a proces in a container started without CAP_NS_OVERRIDE (which does not yet exist :) in its capability bounding set will only be able to access files in another container as DAC user 'other' (i.e if perms are 754, it will get read access, if 750, then none), even if it has CAP_DAC_OVERRIDE. (unless it gets an authorization key for the owning user in the target namespace, but *that's* probably *years* off) -serge ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM and Containers 2007-10-25 1:44 ` Serge E. Hallyn @ 2007-10-25 4:31 ` Peter Dolding 0 siblings, 0 replies; 17+ messages in thread From: Peter Dolding @ 2007-10-25 4:31 UTC (permalink / raw) To: linux-security-module, Containers > You're sometimes hard to parse, but here are a few basic facts within > which to constrain our discussions: > > 1. LSMs are a part of the kernel. The entire kernel is in the > same trusted computing base > 2. containers all run on the same kernel > 3. whether an lsm is compromised, or a tty driver, or anything > else which is in the TCB, all containers are compromised > 4. it is very explicitly NOT a goal to hide from a container > the fact that it is in a container. So your 'cannot tell how > deep they are' is not a goal. You are missing what I am saying. I am breaking the LSM in two. Kernel level comprise that is out of my hands. If you wished in mine the controller could be user space run outside kernel does not have to stay in the TCB. Since its not having any direct control on the approval or rejection of access. Its only queried when needed like when a process breaches the rules applied to it or when processes start or changing security. So breaching it turning it off and so on. This is to reduce the risk of someone trying to customize a LSM can cause a security flaw of hell level(Inside kernel space). With Intel's and Amd new memory table splitting yes the controller could be put away from the main kernel in time with the rest of the container only data. Yes less bits trusted. This includes when sending the container between machines the controller with it current state could be sent with it. If the interface to controller is standard of course. Ok apparmor and selinux will cope with your system but some of the more complex state based need to transfer state as well this should be in the controller bit of a LSM and not mixed up with the state of the overall machine either. Over all this is making it simpler to do advanced container things like sending between servers. The permission enforcement parts stay the same no matter the controller in use. Breaching the enforcement parts still remain a problem. Allows running many controllers unlike LSM's where they can fight and on way around that cleanly. Just like LSM two controllers controlling the same space would still fight so guess how many each container take 1. Since a different controller has to be give its own zone. So people cannot complain about not being able to run there preferred controller if they want a different one they have to give it a different zone. Yes this is getting on top of a lot of long term problems of people wanting a or b LSM. Stuff it have both and be happy. Its also removing the single overall kill switch. And replacing them with a per container kill switches. So someone does what will normally turn X controller off and it does. Yet still the outside security is applied to everything run in the container. Security is lowed but not off. The controllers don't need to keep track of how deep they are. They just don't need to know. From there point of view the world ends from there startup security settings. Only time the controller would have to be give notice is if those outside security settings were changed so it could update the programs under it to the way it wanted. Even that the security settings if they were lower would have just been brute forced applied. Basically its have you done containers running containers is you model Serge E. Hallyn. This avoids have to much around with flags for the next container in. Only thing in mine are you doing is changing the path back to the controller from the security enforcing modules. Enforcing modules process not doing permissions were told to allow I report that to x secuirty container that reports it to contoller. Note the security container only hands out what its allowed nothing more the controller is not trusted. No processing to work out what security files it should be using since the controller only knows the files it should be using. Yes there is overhead in my system. But were able the system is avoiding traveling in a perfectly functioning system controller could be only being bothered when new processors were being created the rest of the time the enforcement modules just do there job as they were configured. Traveling down a tree of stacked LSM is going to cause massive lag. Ie knowing that something is below you. Not knowing reduces travel and time to resolve. And allows security to be controlled over the complete container from one spot. The problem with running many LSM again having to tweek them all to get it locked down on container. Ie enabling some disabling others so simple to loss track and have big problems. No problem here the secuirty model is applied to the container and if you want to lock its outside down you just do and the controller inside has to cope. Yes it will be possible to take too much away from a security container. Ok this security container should not have access to that device slam not a question. With running many LSM the question what one does that container own to so I do turn that device off and not have another LSM turn it back on. Besides having selinux and apparmor installed side by side is going to lag the system due to overlapping hooks. This what I am avoiding. The enforcement modules are only hooked in once no reason at all to overlap them. This overlapping is what makes running many LSM problematic. The outside security on a container will stay on even if the host LSM is turned off in the design I am look at. It was set when the container started and would have to be directly updated. The outside security defined to a container would be everything selinux could do to a program and then some. Just like selinux opt in. Over lapping I am handling differently in this design. The outside security set on the container covers overlaps. Far more flex able option. Using directory filtering and other options are on the table as well as far more complex cap options. My design depends on the common protective modules. Not the bit that says this is Mac or Role based or State or so on. Basically apparmor and selinux would be sitting on the same engine that everyone can use to build solid controllers. If you want a new enforcement feature you would add it for everyone. Since altering the controller would be toothless only can tweak what already exists since you can never be sure its even in kernel space no direct tweaking no hooking no bad stuff with controllers. There is a security advantage from the design change even for people not using containers or LSM. Everything in system can apply LSM style restrictions lower than what it has to what it wants to run even if a controller is present or not. The controller is to provide the security model in use. With the enforcement system you could almost do any security model with user space code. The difference being not catching process starts to apply security to them. This is useful for programs running untrusted content web browers that java program running from web does not need all the access I am cut it back. Application level security something LSM overlook and it not wise to use different interfaces for it. Yes these are major changes in design. Yes they will force clear designs and more sharing so everyone can take advantage of advancements. As well should kill off lots of problems of poor quality LSM's and LSM limitations. Basically my design and LSM cannot live side by side effectively. Peter Dolding ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM conversion to static interface 2007-10-22 17:47 ` Avi Kivity [not found] ` <e7d8f83e0710221559i6b14469fjebceee12c6dec98e@mail.gmail.com> @ 2007-10-23 16:05 ` Adrian Bunk 1 sibling, 0 replies; 17+ messages in thread From: Adrian Bunk @ 2007-10-23 16:05 UTC (permalink / raw) To: Avi Kivity Cc: Greg KH, Thomas Fricaccia, Crispin Cowan, linux-kernel, LSM ML, Linus Torvalds On Mon, Oct 22, 2007 at 07:47:36PM +0200, Avi Kivity wrote: > Greg KH wrote: >> On Sun, Oct 21, 2007 at 07:24:42PM -0700, Thomas Fricaccia wrote: >> >>> Yes, I think Crispin has succinctly summed it up: irrevocably closing >>> the LSM prevents commercial customers from using security modules other >>> than that provided by their Linux distributor. >>> >> >> Any "customer" using a security model other than provided by their Linux >> distributor instantly voided all support from that distro by doing that. >> >> So, since the support is gone, they can easily build their own kernels, >> with their own LSM interfaces, and get the exact same lack of support :) > > Running a vendor kernel has the advantage of reusing all the QA work that > has gone into that kernel. It is very different from running 2.6.24-rc1 > (or 2.6.22.x). Hence projects like centos: you don't get any support, but > the likelihood of actually requiring support is lower than running some > random kernel. You can also get the QA work by building your own kernel from vendor kernel sources. E.g. the Debian distribution ships a package linux-source-2.6.18 that contains a linux-source-2.6.18.tar.bz2 with the patched 2.6.18 kernel sources Debian uses for building its kernels. > [but I agree that someone who has somehow determined that they need a > specific LSM will probably have determined that they need vendor support as > well] cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM conversion to static interface 2007-10-22 3:59 ` Greg KH 2007-10-22 17:47 ` Avi Kivity @ 2007-10-23 16:52 ` Geert Uytterhoeven 1 sibling, 0 replies; 17+ messages in thread From: Geert Uytterhoeven @ 2007-10-23 16:52 UTC (permalink / raw) To: Greg KH Cc: Thomas Fricaccia, Crispin Cowan, linux-kernel, LSM ML, Linus Torvalds On Sun, 21 Oct 2007, Greg KH wrote: > On Sun, Oct 21, 2007 at 07:24:42PM -0700, Thomas Fricaccia wrote: > > As Sarbanes-Oxley and > > other regulatory laws require these customers to use "standard > > kernels", the result is a rather dreary form of vendor lock-in, where the > > security framework is coupled to the distribution. > > Wait, what? > > Since when does Sarbanes-Oxley decree that a company must use a > "standard kernel"? And just exactly what defines such "standard > kernel"? Can you point out where in that bill it requires such a thing? Simple, these days Sarbanes-Oxley is the default argument behind anything being pushed down your throat in a company. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM conversion to static interface 2007-10-22 2:24 LSM conversion to static interface Thomas Fricaccia 2007-10-22 3:59 ` Greg KH @ 2007-10-22 10:07 ` Alan Cox 2007-10-22 16:10 ` Crispin Cowan 1 sibling, 1 reply; 17+ messages in thread From: Alan Cox @ 2007-10-22 10:07 UTC (permalink / raw) To: Thomas Fricaccia; +Cc: Crispin Cowan, linux-kernel, LSM ML, Linus Torvalds On Sun, 21 Oct 2007 19:24:42 -0700 "Thomas Fricaccia" <thomas_fricacci@yahoo.com> wrote: > Yes, I think Crispin has succinctly summed it up: irrevocably closing > the LSM prevents commercial customers from using security modules other > than that provided by their Linux distributor. As Sarbanes-Oxley and > other regulatory laws require these customers to use "standard > kernels", the result is a rather dreary form of vendor lock-in, where the > security framework is coupled to the distribution. Crispin at least is providing genuine discussion points. Sarbox has nothing to say on "using vendor linux kernels". ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM conversion to static interface 2007-10-22 10:07 ` Alan Cox @ 2007-10-22 16:10 ` Crispin Cowan 2007-10-22 16:50 ` Alan Cox 0 siblings, 1 reply; 17+ messages in thread From: Crispin Cowan @ 2007-10-22 16:10 UTC (permalink / raw) To: Alan Cox; +Cc: Thomas Fricaccia, linux-kernel, LSM ML, Linus Torvalds Alan Cox wrote: > On Sun, 21 Oct 2007 19:24:42 -0700 > "Thomas Fricaccia" <thomas_fricacci@yahoo.com> wrote >> Yes, I think Crispin has succinctly summed it up: irrevocably closing >> the LSM prevents commercial customers from using security modules other >> than that provided by their Linux distributor. As Sarbanes-Oxley and >> other regulatory laws require these customers to use "standard >> kernels", the result is a rather dreary form of vendor lock-in, where the >> security framework is coupled to the distribution. >> > Crispin at least is providing genuine discussion points. Sarbox has > nothing to say on "using vendor linux kernels". > I agree that SarBox is not really the issue here. Partially related is enterprise rules about what kernels one is allowed to load. More generally, this change forces users who want to use a different LSM than their vendor provides to recompile their kernel, where they did not have to recompile before. It forces LSM module developers who want to modify their LSM to reboot, where they didn't necessarily have to reboot before. That is not a catastrophe, it is just tedious. It does not kill baby seals, and it does not make Linux utterly useless. OTOH, I think it is strictly negative: it takes away user choice in 2 dimensions, and adds zero value. So apply it if you must to bake the kernel developer's lives easier, but it really is a net loss in Linux kernel capability. Crispin -- Crispin Cowan, Ph.D. http://crispincowan.com/~crispin/ Itanium. Vista. GPLv3. Complexity at work ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM conversion to static interface 2007-10-22 16:10 ` Crispin Cowan @ 2007-10-22 16:50 ` Alan Cox 2007-10-22 16:56 ` Greg KH 0 siblings, 1 reply; 17+ messages in thread From: Alan Cox @ 2007-10-22 16:50 UTC (permalink / raw) To: Crispin Cowan; +Cc: Thomas Fricaccia, linux-kernel, LSM ML, Linus Torvalds > > Crispin at least is providing genuine discussion points. Sarbox has > > nothing to say on "using vendor linux kernels". > > > I agree that SarBox is not really the issue here. Partially related is > enterprise rules about what kernels one is allowed to load. More > generally, this change forces users who want to use a different LSM than > their vendor provides to recompile their kernel, where they did not have > to recompile before. It forces LSM module developers who want to modify > their LSM to reboot, where they didn't necessarily have to reboot before. The moment they load a module from a third party they usually hit support issues, unless there is some kind of arrangement between the parties. > > That is not a catastrophe, it is just tedious. It does not kill baby > seals, and it does not make Linux utterly useless. OTOH, I think it is > strictly negative: it takes away user choice in 2 dimensions, and adds > zero value. So apply it if you must to bake the kernel developer's lives > easier, but it really is a net loss in Linux kernel capability. Frankly I don't care about apparmor, I don't see it as a serious project. Smack is kind of neat but looks like a nicer way to specify selinux rules. What I do care about is that at some point something is going to appear which is based on all the same good practice and experience and forty years of research that leads towards SELinux, and which is much better. At that point there will be a changeover phase and the LSM is exactly what is needed for this. The fact it allows people to play with toy security systems, propose new ones like SMACK, and do research and PhD work on Linux into security is a convenient and very good side effect. For that reason I think keeping LSM is the right thing to do. Alan ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: LSM conversion to static interface 2007-10-22 16:50 ` Alan Cox @ 2007-10-22 16:56 ` Greg KH 0 siblings, 0 replies; 17+ messages in thread From: Greg KH @ 2007-10-22 16:56 UTC (permalink / raw) To: Alan Cox Cc: Crispin Cowan, Thomas Fricaccia, linux-kernel, LSM ML, Linus Torvalds On Mon, Oct 22, 2007 at 05:50:43PM +0100, Alan Cox wrote: > > For that reason I think keeping LSM is the right thing to do. Wait, we aren't talking about dropping LSM at all, just the "LSM is a module" option. That's it. And by making LSM not a module, we can then go on to fix some of the reported speed issues that are present with the LSM option enabled right now. thanks, greg k-h ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2007-10-25 4:31 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-22 2:24 LSM conversion to static interface Thomas Fricaccia
2007-10-22 3:59 ` Greg KH
2007-10-22 17:47 ` Avi Kivity
[not found] ` <e7d8f83e0710221559i6b14469fjebceee12c6dec98e@mail.gmail.com>
[not found] ` <471D8877.5030901@crispincowan.com>
2007-10-23 13:32 ` LSM and Containers (was: LSM conversion to static interface) Serge E. Hallyn
2007-10-23 17:57 ` LSM and Containers Crispin Cowan
2007-10-24 0:07 ` Peter Dolding
2007-10-24 23:07 ` Peter Dolding
2007-10-24 23:21 ` Crispin Cowan
2007-10-25 0:20 ` Peter Dolding
2007-10-25 1:44 ` Serge E. Hallyn
2007-10-25 4:31 ` Peter Dolding
2007-10-23 16:05 ` LSM conversion to static interface Adrian Bunk
2007-10-23 16:52 ` Geert Uytterhoeven
2007-10-22 10:07 ` Alan Cox
2007-10-22 16:10 ` Crispin Cowan
2007-10-22 16:50 ` Alan Cox
2007-10-22 16:56 ` Greg KH
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.