Re: Allowing OpenDMARC to send mail

Matt Domsch <[email protected]> Mon, 12 Sep 2022 14:23:04 -0400
Newsgroups gmane.linux.redhat.fedora.selinux
Message-ID <CAKzD2+nmmTvjXXo1h8s2PXAb8vAz8iZLXoEv_UuAe0zhgnb+sA@mail.gmail.com>
selinux-policy-3.14.3-106.el8.noarch on Centos 8 Stream. So that may be out
of date in this instance.

On Mon, Sep 12, 2022 at 4:58 AM Zdenek Pytela <[email protected]> wrote:

> Matt,
>
> which selinux-policy package version is in place? In current Fedoras, we
> have these rules
>
> optional_policy(`
>        mta_manage_queue(dkim_milter_t)
>        mta_sendmail_exec(dkim_milter_t)
> ')
>
> which allow milter manage mqueue_spool_t and execute sendmail in
> dkim_milter_t domain.
>
> See also
> https://bugzilla.redhat.com/show_bug.cgi?id=1770570
>
> On Sat, Sep 10, 2022 at 7:42 PM Matt Domsch <[email protected]> wrote:
>
>> Thanks David. I believe that is a figment of my attempts to solve this,
>> where I had that line on my local policy file.  The fact that it's getting
>> that far in domain dkim_milter_t is the problem, I believe.
>>
>>
>> On Sat, Sep 10, 2022 at 1:21 PM David Sastre <[email protected]>
>> wrote:
>>
>>> I'm not answering your question, but for what is worth, that AVC denial
>>> log run through audit2allow in Fedora 36 seems to be allowed by policy,
>>> i.e. the AVC denial should not trigger.
>>>
>>> $ echo 'type=AVC msg=audit(1662776560.507:10521833): avc:  denied  {
>>> create } for  pid=1385220 comm="sendmail" name="df28A2Meeh1385220"
>>> scontext=system_u:system_r:dkim_milter_t:s0
>>> tcontext=system_u:object_r:mqueue_spool_t:s0 tclass=file permissive=0' |
>>> sudo audit2allow
>>>
>>> #============= dkim_milter_t ==============
>>>
>>> #!!!! This avc is allowed in the current policy
>>> allow dkim_milter_t mqueue_spool_t:file create;
>>>
>>>
>>>
>>>
>>> On Sat, Sep 10, 2022 at 3:37 PM Matt Domsch <[email protected]> wrote:
>>>
>>>> OpenDMARC (Domain-based Message Authentication, Reporting & Conformance)
>>>> provides an open source library that implements the DMARC verification
>>>> service plus a milter-based filter application that can plug in to any
>>>> milter-aware MTA, including sendmail, Postfix, or any other MTA that
>>>> supports
>>>> the milter protocol.
>>>>
>>>> One feature of OpenDMARC is that i can send email to domains who have
>>>> specified in their DMARC DNS record that they wish to receive reports
>>>> (either aggregate or forensic) from mail servers when a message claiming to
>>>> originate from their mail domain has been received. This allows sending
>>>> mail servers to possibly adjust their mail sending practices to ensure all
>>>> mail they legitimately send are marked as such, and all mail sent as a
>>>> spoof of their domain then be blocked by filters.
>>>>
>>>> opendmarc runs in selinux domain dkim_milter_t (I never got around to
>>>> asking for a separate dmarc_milter_t domain), and uses
>>>> popen("/usr/sbin/sendmail -t ...") to send its aggregate or forensic
>>>> report.  selinux policy currently prohibits this behavior.
>>>>
>>>> I have been trying to write a custom policy that would allow opendmarc
>>>> to make the transition to sendmail_t, but have been unsuccessful, hence
>>>> this plea for help.
>>>>
>>>> #============= dkim_milter_t ==============
>>>> allow dkim_milter_t self:process setrlimit;  # opendmarc calls
>>>> setrlimit()
>>>> allow dkim_milter_t shell_exec_t:file { execute_no_trans map entrypoint
>>>> }; # opendmarc calls popen() which invokes /bin/sh
>>>> allow dkim_milter_t sendmail_exec_t:file { entrypoint execute getattr
>>>> open read map }; # invokes sendmail which has this file type
>>>> allow dkim_milter_t sendmail_t : process transition; # allow the
>>>> transition to sendmail_t
>>>> type_transition dkim_milter_t sendmail_exec_t : process sendmail_t; #
>>>>
>>>> However, once sendmail is running and tries to create its queue files
>>>> in /var/spool/mqueue which has type mqueue_spool_t, the audit logs indicate
>>>> it's still running as dkim_milter_t which doesn't have permissions to
>>>> manage that directory (nor should it - that's sendmail's job).
>>>>
>>>> type=AVC msg=audit(1662776560.507:10521833): avc:  denied  { create }
>>>> for  pid=1385220 comm="sendmail" name="df28A2Meeh1385220"
>>>> scontext=system_u:system_r:dkim_milter_t:s0
>>>> tcontext=system_u:object_r:mqueue_spool_t:s0 tclass=file permissive=0
>>>>
>>>> What do I need to do to get opendmarc to be running in sendmail_t
>>>> automatically following the popen()?
>>>>
>>>> Also filed in
>>>> https://bugzilla.redhat.com/show_bug.cgi?id=2125030
>>>>
>>>> Thanks,
>>>> Matt
>>>>
>>>> _______________________________________________
>>>> selinux mailing list -- [email protected]
>>>> To unsubscribe send an email to [email protected]
>>>> Fedora Code of Conduct:
>>>> https://docs.fedoraproject.org/en-US/project/code-of-conduct/
>>>> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
>>>> List Archives:
>>>> https://lists.fedoraproject.org/archives/list/[email protected]
>>>> Do not reply to spam, report it:
>>>> https://pagure.io/fedora-infrastructure/new_issue
>>>>
>>> _______________________________________________
>> selinux mailing list -- [email protected]
>> To unsubscribe send an email to [email protected]
>> Fedora Code of Conduct:
>> https://docs.fedoraproject.org/en-US/project/code-of-conduct/
>> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
>> List Archives:
>> https://lists.fedoraproject.org/archives/list/[email protected]
>> Do not reply to spam, report it:
>> https://pagure.io/fedora-infrastructure/new_issue
>>
>
>
> --
>
> Zdenek Pytela
> Security SELinux team
>

_______________________________________________
selinux mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/[email protected]
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue