Re: [PATCH] audit: listen in all network namespaces

From: Gao feng
Date: Thu Dec 19 2013 - 20:35:04 EST


On 12/20/2013 02:40 AM, Eric Paris wrote:
> On Thu, 2013-12-19 at 11:59 +0800, Gao feng wrote:
>> On 07/17/2013 04:32 AM, Richard Guy Briggs wrote:
>>> Convert audit from only listening in init_net to use register_pernet_subsys()
>>> to dynamically manage the netlink socket list.
>>>
>>> Signed-off-by: Richard Guy Briggs <rgb@xxxxxxxxxx>
>>> ---
>>
>> I think it's the time for us to discuss if we should revert this
>> commit, since this one prevent me from continuing to achieve
>> audit namespace.
>>
>>
>> The major problem is in kaudit_send_skb, we have no idea which
>> audit sock the skb should send to.
>
> right, we have problems here no matter what...
>
> If we stick with the current approach you will need to know socket +
> portid. With your approach one only needs to know portid. Since these
> are can both be part of the audit_ns structure I don't see a huge
> difference...
>
>> we have to store audit_sock
>> into auditns(auditns will be passed to kauditd_send_skb),
>> this will cause auditns have to get a reference of netns.
>> and for some reason(netfilter audit target), netns will
>> get reference of auditns too. this is terrible...
>
> I'm not sure I agree/understand this entirely...
>

My brain must be destroyed, I need to think about if auditns
should get reference of netns. it's not clear to me now. :(
but I intend to think you are right.

>> So why not we revert this one, and use a very simple one to
>> replace it? the below patch will save us from the refer to
>> each other case, achieve the same effect.
>>
>> what's your opinion?
>
> Help me go all the way back to the beginning. What's our end goal here
> again?
>
> When thinking about this I realized we have another problem that I don't
> think we've considered. Which makes me lean away from the single
> socket/kauditd :(
>
> I we have one socket and one kauditd ANY auditd can completely freeze
> the audit system. Which seems problematic, especially if there isn't
> equal levels of trust between the different namespaces... If one auditd
> gets hung (intentionally or not) the kernel will never send another
> audit message....
>
> Makes me think we really need a kauditd thread per namespace, possibly
> an skb queue per namespace. At which point an audit socket per
> namespace makes a lot of sense too....
>

You are right, and My prototype supports per kauditd/auditd/sbk queue per
audit namespace. one auditd freeze in one auditns will not affect audit
subsystem in another auditns.

Thanks!
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/