]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
apparmor: provide an apparmor profile
authorVincent Bernat <vincent@bernat.im>
Sun, 30 Aug 2015 14:41:27 +0000 (16:41 +0200)
committerVincent Bernat <vincent@bernat.im>
Sun, 30 Aug 2015 15:12:13 +0000 (17:12 +0200)
Currently, lldpd has to be installed in /usr/sbin/lldpd. Will change
that later.

Makefile.am
NEWS
configure.ac
edit.am
src/daemon/Makefile.am
src/daemon/usr.sbin.lldpd.in [new file with mode: 0644]

index eabdd56a56c980d521b582c80c0a52bd446ebdfb..7728212a28d1b9262e602af6ca5111fdd750f1da 100644 (file)
@@ -41,4 +41,6 @@ MOSTLYCLEANFILES = $(DX_CLEANFILES)
 DISTCHECK_CONFIGURE_FLAGS = $(CONFIGURE_ARGS) \
         --with-sysusersdir=no \
         --with-systemdsystemunitdir=no \
-       --with-launchddaemonsdir=no
+       --with-launchddaemonsdir=no \
+       --with-apparmordir=no
+
diff --git a/NEWS b/NEWS
index 5fd05a2c547f6d6583e5864e5fad6de782236f72..2080105ea29aa89b35aa27b4c1829e23544653ec 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,7 @@ lldpd (0.8.0)
       case of static linking.
     + Introduce the notion of default local port. New interfaces will
       use it as a base. This allows setting various MED stuff.
+    + Provide an apparmor profile (untested).
 
 lldpd (0.7.17)
   * Fix:
index fd72541a40a115b0d9656b7cbdb3388e5d15a019..6a42fc882d59807a75ebac810b28121b74017d73 100644 (file)
@@ -268,6 +268,13 @@ AC_SUBST([sysusersdir], [$with_sysusersdir])
 AM_CONDITIONAL(HAVE_SYSUSERSDIR,
     [test -n "$with_sysusersdir" -a "x$with_sysusersdir" != xno ])
 
+# AppArmor
+lldp_ARG_WITH([apparmordir], [Directory for AppArmor profiles (Linux)],
+                             [no])
+AC_SUBST([apparmordir], [$with_apparmordir])
+AM_CONDITIONAL(HAVE_APPARMORDIR,
+    [test -n "$with_apparmordir" -a "x$with_apprmordir" != xno ])
+
 # Systemtap/DTrace
 lldp_SYSTEMTAP
 
diff --git a/edit.am b/edit.am
index 136db8e7e12803ad545639c7b2dcdab8f1ed6622..c3f047b5480c56af7dfa61ea457ed18f482e4f67 100644 (file)
--- a/edit.am
+++ b/edit.am
@@ -1,6 +1,7 @@
 edit = $(SED) \
         -e 's|@bindir[@]|$(bindir)|g' \
         -e 's|@sbindir[@]|$(sbindir)|g' \
+        -e 's|@sysconfdir[@]|$(sysconfdir)|g' \
         -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \
         -e 's|@libdir[@]|$(libdir)|g' \
         -e 's|@includedir[@]|$(includedir)|g' \
@@ -13,7 +14,9 @@ edit = $(SED) \
         -e 's|@PRIVSEP_USER[@]|$(PRIVSEP_USER)|g' \
         -e 's|@PRIVSEP_GROUP[@]|$(PRIVSEP_GROUP)|g' \
         -e 's|@PRIVSEP_CHROOT[@]|$(PRIVSEP_CHROOT)|g' \
-        -e 's|@LLDPD_CTL_SOCKET[@]|$(LLDPD_CTL_SOCKET)|g'
+        -e 's|@LLDPD_PID_FILE[@]|$(LLDPD_PID_FILE)|g' \
+        -e 's|@LLDPD_CTL_SOCKET[@]|$(LLDPD_CTL_SOCKET)|g' \
+        -e 's|@PRIVSEP_CHROOT[@]|$(PRIVSEP_CHROOT)|g'
 
 $(TEMPLATES): Makefile
        $(AM_V_GEN)mkdir -p $(@D) && $(edit) $(srcdir)/$@.in > $@.tmp && mv $@.tmp $@
index 7cb2e925739353cf17fd622d1bf886c651037ca3..c14d83aafa2abd611b640785b1d152dbb84ee560 100644 (file)
@@ -169,10 +169,17 @@ if HAVE_SYSUSERSDIR
 sysusers_DATA = lldpd.sysusers.conf
 endif
 
-TEMPLATES   = lldpd.8    lldpd.service    lldpd.sysusers.conf
-EXTRA_DIST += lldpd.8.in lldpd.service.in lldpd.sysusers.conf.in
+if HOST_OS_LINUX
+if HAVE_APPARMORDIR
+apparmor_DATA = usr.sbin.lldpd
+endif
+endif
+
+TEMPLATES   = lldpd.8    lldpd.service    lldpd.sysusers.conf    usr.sbin.lldpd
+EXTRA_DIST += lldpd.8.in lldpd.service.in lldpd.sysusers.conf.in usr.sbin.lldpd.in
 CLEANFILES += $(TEMPLATES)
 lldpd.8: lldpd.8.in
 lldpd.service: lldpd.service.in
 lldpd.sysusers.conf: lldpd.sysusers.conf.in
+usr.sbin.lldpd: usr.sbin.lldpd.in
 include $(top_srcdir)/edit.am
diff --git a/src/daemon/usr.sbin.lldpd.in b/src/daemon/usr.sbin.lldpd.in
new file mode 100644 (file)
index 0000000..97e3233
--- /dev/null
@@ -0,0 +1,63 @@
+#include <tunables/global>
+
+@sbindir@/lldpd {
+  #include <abstractions/base>
+  #include <abstractions/nameservice>
+
+  capability chown,
+  capability dac_override,
+  capability fowner,
+  capability fsetid,
+  capability kill,
+  capability net_admin,
+  capability net_raw,
+  capability setgid,
+  capability setuid,
+  capability sys_chroot,
+  capability sys_module,
+
+  # Need to receive/send raw packets
+  network packet raw,
+
+  @sbindir@/lldpd mr,
+
+  # Ability to run lldpcli for self-configuration
+  @sbindir@/lldpcli rix,
+  @sysconfdir@/lldpd.d/* r,
+  @sysconfdir@/lldpd.conf r,
+
+  # PID file and socket
+  @LLDPD_PID_FILE@ rw,
+  @LLDPD_CTL_SOCKET@ rw,
+
+  # Chroot setup
+  @PRIVSEP_CHROOT@/etc/ rw,
+  @PRIVSEP_CHROOT@/etc/localtime rw,
+
+  # Gather system description
+  /etc/os-release r,
+  /usr/lib/os-release r,
+  /usr/bin/lsb_release Cxr -> lsb_release,
+  profile lsb_release {
+    #include <abstractions/base>
+    #include <abstractions/python>
+    /usr/bin/lsb_release r,
+    /bin/dash ixr,
+    /usr/bin/dpkg-query ixr,
+    /usr/include/python2.[4567]/pyconfig.h r,
+    /etc/lsb-release r,
+    /etc/debian_version r,
+    /var/lib/dpkg/** r,
+
+    /usr/local/lib/python3.[0-4]/dist-packages/ r,
+    /usr/bin/ r,
+    /usr/bin/python3.[0-4] r,
+  }
+
+  # Gather network information
+  @{PROC}/sys/net/ipv4/ip_forward r,
+  @{PROC}/net/bonding/* r,
+  @{PROC}/self/net/bonding/* r,
+  /sys/devices/virtual/dmi/** r,
+  /sys/devices/pci**/net/*/ifalias r,
+}