Ubuntu 16.04: AppArmorにusr.sbin.sshdプロファイルを適用する

AppArmorの使い方について記載します。

1 AppArmorのインストール

こちらの手順でAppArmorをインストールします。

2 usr.sbin.sshdプロファイルの修正と適用

/usr/share/doc/apparmor-profiles/extras/usr.sbin.sshdを利用します。

$ sudo cp /usr/share/doc/apparmor-profiles/extras/usr.sbin.sshd \
       /etc/apparmor.d/

/etc/apparmor.d/usr.sbin.sshdに対して以下のパッチを適用します。以下のパッチはssh接続時にDENIEDされたものに対して権限を与えるものです。

$ cd /etc/apparmor.d/
$ cat <<EOF | sudo patch -p1
--- a/usr.sbin.sshd       2017-03-16 10:11:02.000000000 +0900
+++ b/usr.sbin.sshd       2017-06-14 13:38:47.862170542 +0900
@@ -21,6 +21,7 @@
   #include <abstractions/consoles>
   #include <abstractions/nameservice>
   #include <abstractions/wutmp>
+  #include <abstractions/dbus>

   capability sys_chroot,
   capability sys_resource,
@@ -32,6 +33,8 @@
   capability setgid,
   capability setuid,
   capability audit_control,
+  capability audit_write,
+  capability net_admin,
   capability dac_override,
   capability dac_read_search,

@@ -51,10 +54,16 @@
   /var/log/btmp r,
   /{,var/}run w,
   /{,var/}run/sshd{,.init}.pid wl,
+  /{,var/}run/systemd/notify w,
+
+  ptrace,

   @{PROC}/@{pid}/fd/ r,
-  @{PROC}/@{pid}/loginuid w,
+  @{PROC}/@{pid}/loginuid rw,
   @{PROC}/@{pid}/limits r,
+  @{PROC}/@{pid}/uid_map r,
+  @{PROC}/@{pid}/environ r,
+  @{PROC}/cmdline r,

 # should only be here for use in non-change-hat openssh
 # duplicated from EXEC hat
@@ -85,6 +94,7 @@
 # duplicated from AUTHENTICATED
   /etc/motd r,
   /{,var/}run/motd{,.new} rw,
+  /{,var/}run/motd.dynamic{,.new} rw,
   /tmp/ssh-*/agent.[0-9]* rwl,

   /tmp/ssh-*[0-9]*/ w,
EOF

プロファイルをEnforceにします。

$ sudo aa-enforce /etc/apparmor.d/usr.sbin.sshd