@@ -104,6 +104,9 @@ install -D -p -m 0644 engine/contrib/init/systemd/docker.socket ${RPM_BUILD_ROOT
104104# install manpages
105105make -C ${RPM_BUILD_DIR}/src/engine/man DESTDIR= ${RPM_BUILD_ROOT} mandir= %{_mandir } install
106106
107+ # install SELinux policy to deny AF_ALG sockets in container domains
108+ install -D -m 644 engine/contrib/selinux/docker-af-alg-deny.cil %{buildroot }%{_datadir }/docker-ce/selinux/docker-af-alg-deny.cil
109+
107110# create the config directory
108111mkdir -p ${RPM_BUILD_ROOT}/etc/docker
109112
@@ -114,18 +117,32 @@ mkdir -p ${RPM_BUILD_ROOT}/etc/docker
114117%{_unitdir }/docker.service
115118%{_unitdir }/docker.socket
116119%{_mandir }/man* /*
120+ %{_datadir }/docker-ce/selinux/docker-af-alg-deny.cil
117121%dir /etc/docker
118122
119123%post
120124%systemd_post docker.service
121125if ! getent group docker > /dev/null; then
122126 groupadd --system docker
123127fi
128+ # Load the AF_ALG deny policy when SELinux is enabled. This may fail on systems
129+ # with SELinux userspace < 3.6, or without container-selinux's container_domain
130+ # attribute, so keep installation non-fatal.
131+ if command -v semodule > /dev/null 2>&1 && selinuxenabled 2> /dev/null; then
132+ if ! semodule -i %{_datadir}/docker-ce/selinux/docker-af-alg-deny.cil 2> /dev/null; then
133+ echo " warning: could not load docker-af-alg-deny.cil SELinux policy; AF_ALG SELinux denial is not active" >&2
134+ fi
135+ fi
124136
125137%preun
126138%systemd_preun docker.service docker.socket
127139
128140%postun
129141%systemd_postun_with_restart docker.service
142+ if [ " $1 " -eq 0 ]; then
143+ if command -v semodule > /dev/null 2>&1 ; then
144+ semodule -r container-af-alg-deny 2> /dev/null || :
145+ fi
146+ fi
130147
131148%changelog
0 commit comments