netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Richard Guy Briggs <rgb@redhat.com>
To: containers@lists.linux-foundation.org, linux-api@vger.kernel.org,
	Linux-Audit Mailing List <linux-audit@redhat.com>,
	linux-fsdevel@vger.kernel.org,
	LKML <linux-kernel@vger.kernel.org>,
	netdev@vger.kernel.org, netfilter-devel@vger.kernel.org
Cc: Paul Moore <paul@paul-moore.com>,
	sgrubb@redhat.com, omosnace@redhat.com, dhowells@redhat.com,
	simo@redhat.com, eparis@parisplace.org, serge@hallyn.com,
	ebiederm@xmission.com, nhorman@tuxdriver.com,
	Richard Guy Briggs <rgb@redhat.com>
Subject: [PATCH ghak90 V6 10/10] audit: NETFILTER_PKT: record each container ID associated with a netNS
Date: Mon,  8 Apr 2019 23:39:17 -0400	[thread overview]
Message-ID: <294c8b48b595de6316330b6496c82c8c5bd17d86.1554732921.git.rgb@redhat.com> (raw)
In-Reply-To: <cover.1554732921.git.rgb@redhat.com>
In-Reply-To: <cover.1554732921.git.rgb@redhat.com>

Add audit container identifier auxiliary record(s) to NETFILTER_PKT
event standalone records.  Iterate through all potential audit container
identifiers associated with a network namespace.

Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com>
---
 include/linux/audit.h    |  5 +++++
 kernel/audit.c           | 39 +++++++++++++++++++++++++++++++++++++++
 net/netfilter/nft_log.c  | 11 +++++++++--
 net/netfilter/xt_AUDIT.c | 11 +++++++++--
 4 files changed, 62 insertions(+), 4 deletions(-)

diff --git a/include/linux/audit.h b/include/linux/audit.h
index 4b2503927c37..d43db4491dd1 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -220,6 +220,8 @@ static inline u64 audit_get_contid(struct task_struct *tsk)
 extern void audit_netns_contid_del(struct net *net, u64 contid);
 extern void audit_switch_task_namespaces(struct nsproxy *ns,
 					 struct task_struct *p);
+extern void audit_log_netns_contid_list(struct net *net,
+					struct audit_context *context);
 
 extern u32 audit_enabled;
 #else /* CONFIG_AUDIT */
@@ -296,6 +298,9 @@ static inline void audit_netns_contid_del(struct net *net, u64 contid)
 static inline void audit_switch_task_namespaces(struct nsproxy *ns,
 						struct task_struct *p)
 { }
+static inline void audit_log_netns_contid_list(struct net *net,
+					       struct audit_context *context)
+{ }
 
 #define audit_enabled AUDIT_OFF
 #endif /* CONFIG_AUDIT */
diff --git a/kernel/audit.c b/kernel/audit.c
index 996213591617..512464a626d1 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -453,6 +453,45 @@ void audit_switch_task_namespaces(struct nsproxy *ns, struct task_struct *p)
 		audit_netns_contid_add(new->net_ns, contid);
 }
 
+/**
+ * audit_log_netns_contid_list - List contids for the given network namespace
+ * @net: the network namespace of interest
+ * @context: the audit context to use
+ *
+ * Description:
+ * Issues a CONTAINER_ID record with a CSV list of contids associated
+ * with a network namespace to accompany a NETFILTER_PKT record.
+ */
+void audit_log_netns_contid_list(struct net *net, struct audit_context *context)
+{
+	struct audit_buffer *ab = NULL;
+	struct audit_contid *cont;
+	struct audit_net *aunet;
+
+	/* Generate AUDIT_CONTAINER_ID record with container ID CSV list */
+	rcu_read_lock();
+	aunet = net_generic(net, audit_net_id);
+	if (!aunet)
+		goto out;
+	list_for_each_entry_rcu(cont, &aunet->contid_list, list) {
+		if (!ab) {
+			ab = audit_log_start(context, GFP_ATOMIC,
+					     AUDIT_CONTAINER_ID);
+			if (!ab) {
+				audit_log_lost("out of memory in audit_log_netns_contid_list");
+				goto out;
+			}
+			audit_log_format(ab, "contid=");
+		} else
+			audit_log_format(ab, ",");
+		audit_log_format(ab, "%llu", (unsigned long long)cont->id);
+	}
+	audit_log_end(ab);
+out:
+	rcu_read_unlock();
+}
+EXPORT_SYMBOL(audit_log_netns_contid_list);
+
 void audit_panic(const char *message)
 {
 	switch (audit_failure) {
diff --git a/net/netfilter/nft_log.c b/net/netfilter/nft_log.c
index 655187bed5d8..bdb1ec2368a7 100644
--- a/net/netfilter/nft_log.c
+++ b/net/netfilter/nft_log.c
@@ -69,13 +69,16 @@ static void nft_log_eval_audit(const struct nft_pktinfo *pkt)
 	struct sk_buff *skb = pkt->skb;
 	struct audit_buffer *ab;
 	int fam = -1;
+	struct audit_context *context;
+	struct net *net;
 
 	if (!audit_enabled)
 		return;
 
-	ab = audit_log_start(NULL, GFP_ATOMIC, AUDIT_NETFILTER_PKT);
+	context = audit_alloc_local(GFP_ATOMIC);
+	ab = audit_log_start(context, GFP_ATOMIC, AUDIT_NETFILTER_PKT);
 	if (!ab)
-		return;
+		goto errout;
 
 	audit_log_format(ab, "mark=%#x", skb->mark);
 
@@ -102,6 +105,10 @@ static void nft_log_eval_audit(const struct nft_pktinfo *pkt)
 		audit_log_format(ab, " saddr=? daddr=? proto=-1");
 
 	audit_log_end(ab);
+	net = xt_net(&pkt->xt);
+	audit_log_netns_contid_list(net, context);
+errout:
+	audit_free_context(context);
 }
 
 static void nft_log_eval(const struct nft_expr *expr,
diff --git a/net/netfilter/xt_AUDIT.c b/net/netfilter/xt_AUDIT.c
index af883f1b64f9..a3e547435f13 100644
--- a/net/netfilter/xt_AUDIT.c
+++ b/net/netfilter/xt_AUDIT.c
@@ -71,10 +71,13 @@ static bool audit_ip6(struct audit_buffer *ab, struct sk_buff *skb)
 {
 	struct audit_buffer *ab;
 	int fam = -1;
+	struct audit_context *context;
+	struct net *net;
 
 	if (audit_enabled == AUDIT_OFF)
-		goto errout;
-	ab = audit_log_start(NULL, GFP_ATOMIC, AUDIT_NETFILTER_PKT);
+		goto out;
+	context = audit_alloc_local(GFP_ATOMIC);
+	ab = audit_log_start(context, GFP_ATOMIC, AUDIT_NETFILTER_PKT);
 	if (ab == NULL)
 		goto errout;
 
@@ -104,7 +107,11 @@ static bool audit_ip6(struct audit_buffer *ab, struct sk_buff *skb)
 
 	audit_log_end(ab);
 
+	net = xt_net(par);
+	audit_log_netns_contid_list(net, context);
 errout:
+	audit_free_context(context);
+out:
 	return XT_CONTINUE;
 }
 
-- 
1.8.3.1


  parent reply	other threads:[~2019-04-09  3:41 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-09  3:39 [PATCH ghak90 V6 00/10] audit: implement container identifier Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 01/10] audit: collect audit task parameters Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 02/10] audit: add container id Richard Guy Briggs
2019-05-29 14:57   ` Tycho Andersen
2019-05-29 15:29     ` Paul Moore
2019-05-29 15:34       ` Tycho Andersen
2019-05-29 16:03         ` Paul Moore
2019-05-29 22:28           ` Tycho Andersen
2019-05-29 22:39             ` Paul Moore
2019-05-30 17:09               ` Serge E. Hallyn
2019-05-30 19:29                 ` Paul Moore
2019-05-30 21:29                   ` Tycho Andersen
2019-05-30 23:26                     ` Paul Moore
2019-05-31  0:20                       ` Richard Guy Briggs
2019-05-31 12:44                         ` Paul Moore
2019-06-03 20:24                           ` Steve Grubb
2019-06-18 22:12                             ` Paul Moore
2019-06-18 22:46                               ` Richard Guy Briggs
2019-07-08 18:12                       ` Richard Guy Briggs
2019-07-08 20:43                         ` Paul Moore
2019-07-15 21:09                         ` Paul Moore
2019-07-16 15:37                           ` Richard Guy Briggs
2019-07-16 16:08                             ` Paul Moore
2019-07-16 16:26                               ` Richard Guy Briggs
2019-07-08 18:05                   ` Richard Guy Briggs
2019-07-15 21:04                     ` Paul Moore
2019-07-16 22:03                       ` Richard Guy Briggs
2019-07-16 23:30                         ` Paul Moore
2019-07-18  0:51                           ` Richard Guy Briggs
2019-07-18 21:52                             ` Paul Moore
2019-07-19 16:00                               ` Eric W. Biederman
2019-07-20  2:19                                 ` James Bottomley
2019-07-19 15:32                             ` Eric W. Biederman
2019-07-08 17:51       ` Richard Guy Briggs
2019-07-15 20:38         ` Paul Moore
2019-07-16 19:38           ` Richard Guy Briggs
2019-07-16 21:39             ` Paul Moore
2019-07-19 16:07   ` Eric W. Biederman
2019-04-09  3:39 ` [PATCH ghak90 V6 03/10] audit: read container ID of a process Richard Guy Briggs
2019-07-19 16:03   ` Eric W. Biederman
2019-07-19 17:05     ` Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 04/10] audit: log container info of syscalls Richard Guy Briggs
2019-05-29 22:15   ` Paul Moore
2019-05-30 13:08     ` Ondrej Mosnacek
2019-05-30 14:08       ` Richard Guy Briggs
2019-05-30 14:34         ` Paul Moore
2019-04-09  3:39 ` [PATCH ghak90 V6 05/10] audit: add contid support for signalling the audit daemon Richard Guy Briggs
2019-04-09 12:57   ` Ondrej Mosnacek
2019-04-09 13:40     ` Paul Moore
2019-04-09 13:48       ` Neil Horman
2019-04-09 14:00         ` Ondrej Mosnacek
2019-04-09 14:07         ` Paul Moore
2019-04-09 13:53       ` Richard Guy Briggs
2019-04-09 14:08         ` Paul Moore
2019-04-09 13:46     ` Neil Horman
2019-04-09  3:39 ` [PATCH ghak90 V6 06/10] audit: add support for non-syscall auxiliary records Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 07/10] audit: add containerid support for user records Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 08/10] audit: add containerid filtering Richard Guy Briggs
2019-05-29 22:16   ` Paul Moore
2019-05-30 14:19     ` Richard Guy Briggs
2019-05-30 14:34       ` Paul Moore
2019-05-30 20:37         ` Richard Guy Briggs
2019-05-30 20:45           ` Paul Moore
2019-05-30 21:10             ` Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 09/10] audit: add support for containerid to network namespaces Richard Guy Briggs
2019-05-29 22:17   ` Paul Moore
2019-05-30 14:15     ` Richard Guy Briggs
2019-05-30 14:32       ` Paul Moore
2019-04-09  3:39 ` Richard Guy Briggs [this message]
2019-04-11 11:31 ` [PATCH ghak90 V6 00/10] audit: implement container identifier Richard Guy Briggs
2019-04-22 11:38 ` Neil Horman
2019-04-22 13:49   ` Paul Moore
2019-04-23 10:28     ` Neil Horman
2019-05-28 21:53     ` Daniel Walsh
2019-05-28 22:25       ` Richard Guy Briggs
2019-05-28 22:26       ` Paul Moore
2019-05-28 23:00         ` Steve Grubb
2019-05-29  0:43           ` Richard Guy Briggs
2019-05-29 12:02             ` Daniel Walsh
2019-05-29 13:17               ` Paul Moore
2019-05-29 14:07                 ` Daniel Walsh
2019-05-29 14:33                   ` Paul Moore
2019-05-29 13:14             ` Paul Moore
2019-05-29 22:26     ` Paul Moore
2019-05-30 13:08       ` Steve Grubb
2019-05-30 13:35         ` Paul Moore
2019-05-30 14:08           ` Richard Guy Briggs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=294c8b48b595de6316330b6496c82c8c5bd17d86.1554732921.git.rgb@redhat.com \
    --to=rgb@redhat.com \
    --cc=containers@lists.linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=eparis@parisplace.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-audit@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=nhorman@tuxdriver.com \
    --cc=omosnace@redhat.com \
    --cc=paul@paul-moore.com \
    --cc=serge@hallyn.com \
    --cc=sgrubb@redhat.com \
    --cc=simo@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).