Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add policycoreutils and related tools #1016

Merged
merged 8 commits into from
Aug 10, 2020

Conversation

bcressey
Copy link
Contributor

@bcressey bcressey commented Aug 8, 2020

Issue number:
#997

Description of changes:
Add policycoreutils to the default install, so that higher level tools for managing the policy are available if the break-glass admin container is used. In particular, semodule is useful for making temporary adjustments to troubleshoot an issue.

The policy files are now included in the image, as otherwise it is not possible to extend the policy without obtaining them from the repository.

Adjust the kernel default for memory protection checking so that sestatus reports "actual (secure)". We don't enforce the memory protection checks for processes running inside containers, and none of the host binaries request memory that's both writable and executable, so this is not a fixing an actual vulnerability, just hardening the default.

Testing done:
Built the aws-dev variant. Confirmed that the policy was loaded and that files copied by tmpfiles.d were correctly labeled.

Built the aws-k8s-1.17 variant. Verified that conformance tests passed with no AVC denials.

Tested various semodule commands: -R reloads the policy and -B builds and reloads the policy.

Verified that a new policy module that refers to existing policy types can be created and loaded:

# cat <<EOF >/tmp/permissive.cil
(typepermissive super_t)
EOF
# semodule -i /tmp/permissive.cil
# echo -n 'system_u:system_r:system_t:s0' > /proc/self/attr/current
# dmesg
[...] audit: type=1400 audit(1596900137.247:11): avc:  denied  { dyntransition } for  pid=570238 comm="bash" scontext=system_u:system_r:super_t:s0 tcontext=system_u:system_r:system_t:s0 tclass=process permissive=1

Terms of contribution:

By submitting this pull request, I agree that this contribution is dual-licensed under the terms of both the Apache License, version 2.0, and the MIT license.

The feature will eventually be deprecated so that only the secure
form is available, per upstream discussion:
  https://patchwork.kernel.org/patch/11324099/

Signed-off-by: Ben Cressey <[email protected]>
This is required by libsemanage, which expects policy modules to be
compressed with bzip2.

Signed-off-by: Ben Cressey <[email protected]>
Signed-off-by: Ben Cressey <[email protected]>
To allow the policy to be extended or modified at runtime, we need to
store the files in /etc rather than on the immutable root filesystem.

Signed-off-by: Ben Cressey <[email protected]>
`avcstat` can be used by an administrator to display AVC statistics,
and `sefcontext_compile` is required to rebuild the SELinux policy.

Signed-off-by: Ben Cressey <[email protected]>
Shipping the modules enables an administrator to customize the policy
at runtime without needing to obtain the sources from elsewhere.

Signed-off-by: Ben Cressey <[email protected]>
`semodule` can be used by an administrator to add new modules to the
SELinux policy, which can be helpful for troubleshooting. It depends
on `load_policy` and `setfiles` to rebuild the policy.

`sestatus` provides a quick summary of the SELinux configuration.

Signed-off-by: Ben Cressey <[email protected]>
Signed-off-by: Ben Cressey <[email protected]>
@bcressey bcressey linked an issue Aug 8, 2020 that may be closed by this pull request
@bcressey bcressey merged commit 86dab58 into bottlerocket-os:develop Aug 10, 2020
@bcressey bcressey deleted the policycoreutils branch August 10, 2020 18:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

add utilities from policycoreutils
4 participants