Am 01.05.19 um 09:56 schrieb L. van Belle:

Hello Louis,

@intrigeri: Could you please give me a hint?

TL;DR: The path to the ntp_signd socket in the current AppArmor profile
for ntp is wrong ( /{,var/}run/samba/ntp_signd/socket rw, but it is now
in /var/lib/samba/ntp_signd ) . I'm trying to reproduce the bug, but I
can see ntp accessing this socket although the (unfixed) AA-policy is
loaded and in enforce mode.

> We got reports on the samba list of this.
> See:  https://www.spinics.net/lists/samba/msg156739.html

Thanks for the link. According to that one the only necessary change
would be for the path to the ntp_signd socket, but in this bug you requested

-  # samba4 ntp signing socket
-  /{,var/}run/samba/ntp_signd/socket rw,
+  # To sign replies to MS-SNTP clients by the smbd daemon /var/lib/samba
+  /var/lib/samba/ntp_signd r,
+  /var/lib/samba/ntp_signd/{,*} rw,

-  # samba4 winbindd pipe
-  /run/samba/winbindd/pipe rw,
+  # samba4 winbindd pipe
+  /{,var/}run/samba/winbindd r,
+  /{,var/}run/samba/winbindd/pipe rw,
+
+  # samba4 winbindd privileged pipe ?
+  /var/lib/samba/winbindd/ r,
+  /var/lib/samba/winbindd/pipe rw,

Don't get me wrong, I'm sure you understand all this a lot better than I
do, but Debian is in Deep Freeze right now, and I have to run all
changes by the release team for approval. Adding access to the
privileged pipe is new, and even you added a '?' in there.

> And i verified the user his problem and also noticed the wrong path also,
> and reported it as fix with the change. 
> 
> You said you did follow the wiki, which part? 

That one

https://wiki.samba.org/index.php/Time_Synchronisation#With_ntpd

> Is windows in you test case syncing time over AD? Or ntp protocol? 

I didn't set anything, so I assume based on
https://wiki.samba.org/index.php/Time_Synchronisation#Default_Time_Source it
would be using NT5DS?

I also tried
https://wiki.samba.org/index.php/Time_Synchronisation#Setting_User_Defined_Time_Sources_and_Options
with the NTP server set to the DC and Type being NT5DS, I don't see a deny.

I see the client sending NTP towards the (only) DC, with a

Network Time Protocol (NTP Version 3, client)
    Flags: 0xdb, Leap Indicator: unknown (clock unsynchronized), Version
number: NTP Version 3, Mode: client
        11.. .... = Leap Indicator: unknown (clock unsynchronized) (3)
        ..01 1... = Version number: NTP Version 3 (3)
        .... .011 = Mode: client (3)
    Peer Clock Stratum: unspecified or invalid (0)
    Peer Polling Interval: 10 (1024 sec)
    Peer Clock Precision: 0,015625 sec
    Root Delay: 0,063690185546875 seconds
    Root Dispersion: 8,79443359375 seconds
    Reference ID: NULL
    Reference Timestamp: May  3, 2019 21:45:14.372999999 UTC
    Origin Timestamp: Jan  1, 1970 00:00:00.000000000 UTC
    Receive Timestamp: Jan  1, 1970 00:00:00.000000000 UTC
    Transmit Timestamp: May  3, 2019 21:45:14.372999999 UTC
    Key ID: 50040000
    Message Authentication Code: 00000000000000000000000000000000

The ntp server responds with some sort of MAC

Network Time Protocol (NTP Version 3, server)
    Flags: 0x1c, Leap Indicator: no warning, Version number: NTP Version
3, Mode: server
        00.. .... = Leap Indicator: no warning (0)
        ..01 1... = Version number: NTP Version 3 (3)
        .... .100 = Mode: server (4)
    Peer Clock Stratum: secondary reference (3)
    Peer Polling Interval: 10 (1024 sec)
    Peer Clock Precision: 0,000000 sec
    Root Delay: 0,032440185546875 seconds
    Root Dispersion: 0,00323486328125 seconds
    Reference ID: 223.239.245.186
    Reference Timestamp: May  3, 2019 21:43:24.502068323 UTC
    Origin Timestamp: May  3, 2019 21:45:14.372999999 UTC
    Receive Timestamp: May  3, 2019 21:45:14.450592547 UTC
    Transmit Timestamp: May  3, 2019 21:45:14.450703072 UTC
    Key ID: 50040000
    Message Authentication Code: ed6722b3527e89be1a5ff779623b30e2

The client sets the time (I had manually changed it to be 20h off)
correctly upon reception. But I SHOULD definitely be getting a deny
since the path in the AppArmor profile is obviously wrong.

> The PC's get the time always from ad, so that that works is correct, 
> but if the time offsets and it needs to correct it, then you should see the
> deny message of apparmor.

I don't, during the whole process my ntpd with the unchanged AppArmor
profile did not log a single deny :-(

I'm utterly confused why. I DO see ntpd

---
root@dc01:~# aa-status
apparmor module is loaded.
8 profiles are loaded.
8 profiles are in enforce mode.
   /usr/bin/man
   /usr/sbin/named
   /usr/sbin/ntpd
   /usr/sbin/tcpdump
   man_filter
   man_groff
   nvidia_modprobe
   nvidia_modprobe//kmod
0 profiles are in complain mode.
2 processes have profiles defined.
2 processes are in enforce mode.
   /usr/sbin/named (28770)
   /usr/sbin/ntpd (31329)
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
---

root@dc01:~# grep samba /etc/apparmor.d/usr.sbin.ntpd
  # samba4 ntp signing socket
  /{,var/}run/samba/ntp_signd/socket rw,
  # samba4 winbindd pipe
  /run/samba/winbindd/pipe rw,

/etc/apparmor.d/local/usr.sbin.ntpd is empty

still I do see ntpd accessing the socket in strace when the windows box
makes a NTP query

connect(4, {sa_family=AF_UNIX,
sun_path="/var/lib/samba/ntp_signd//socket"}, 110) = 0

That appears to work despite the profile not containing it.

Bernhard

Reply via email to