[OT] amavisd-new-snmp und postfix-queues
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
HI Dealer aka p@rick,
nachdem Du mich zum Thema AMaViS und SNMP angefixt hast, habe ich mal eine grundsätzliche Frage, natürlich wieder etwas off-topic hier auf der Liste. ;)
Der amavisd-snmp-subagent stellt ja auch Informationen der Postfix-Queues dem SNMP-Daemon zur Verfügung. Die Rechte stehen hierzu wie folgt: # ll /var/spool/postfix/ total 16 drwx------. 2 postfix root 6 Oct 1 11:05 active drwx------. 2 postfix root 6 May 5 13:50 bounce drwx------. 2 postfix root 6 May 5 13:50 corrupt drwx------. 15 postfix root 4096 Oct 1 06:00 defer drwx------. 15 postfix root 4096 Oct 1 06:00 deferred drwx------. 2 postfix root 6 May 5 13:50 flush drwx------. 2 postfix root 6 May 5 13:50 hold drwx------. 2 postfix root 6 Oct 1 11:00 incoming drwx-wx---. 2 postfix postdrop 6 Oct 1 11:00 maildrop drwxr-xr-x. 2 root root 4096 Sep 30 20:55 pid drwx------. 2 postfix root 4096 Sep 30 20:55 private drwx--x---. 2 postfix postdrop 68 Sep 30 20:55 public drwx------. 2 postfix root 6 May 5 13:50 saved drwx------. 2 postfix root 6 May 5 13:50 trace
Damit kein unberechtigter Nutzer auf Inhalte der eMails zugreifen kann, "gehören" die Verzeichnisse dem User postfix - macht ja auch Sinn.
Unter CentOS 7 wird der amavisd-snmp-subagent mit den Rechten "amavis:amavis" gestartet; soweit so gut.
Frage ich nun den SNMP-Daemon nach Daten des AMaViS-Daemon erhalte ich lediglich: # snmpwalk -v 3 -l AuthNoPriv -u mailsupport \ -A c96tOp2SaqQFngE5ioGK+O2NjfMgmCmHgls \ 127.0.0.1 AMAVIS-MIB::inMsgsSizeOriginating
AMAVIS-MIB::inMsgsSizeOriginating = No Such Object available on this agent at this OID
Ich hatte im ersten Schritt den Unix-Socket des SNMP-Daemon in Verdacht, warum zum bennanten OID nichts zurückgemeldet wird. Nachdem ich zu Debug-Zwecken den amavisd-snmp-subagent im Vordergrund hab laufen lassen, kam ich aber der eigentlichen Ursache auf die Schliche:
got a Postfix queue directory: /var/spool/postfix can't open directory /var/spool/postfix/active: Permission denied amavis-agentx-1.7 (20140127) starting in foreground, perl 5.016003 Warning: Failed to connect to the agentx master agent ([NIL]): registering root OID 1.3.6.1.4.1.15312.2.1.1 for am.snmp registering root OID 1.3.6.1.4.1.15312.2.1.2 for am.nanny not registering root OID 1.3.6.1.4.1.15312.2.1.3.1.1 for pf.maildrop not registering root OID 1.3.6.1.4.1.15312.2.1.3.1.2 for pf.incoming not registering root OID 1.3.6.1.4.1.15312.2.1.3.1.3 for pf.active not registering root OID 1.3.6.1.4.1.15312.2.1.3.1.4 for pf.deferred
"can't open directory", tja, der Daemon läuft ja auch mit den rechten des Users *amavis*!
Starte ich den amavisd-snmp-subagent mit root-Rechten, sieht das natürlich anders aus:
got a Postfix queue directory: /var/spool/postfix amavis-agentx-1.7 (20140127) starting in foreground, perl 5.016003 NET-SNMP version 5.7.2 AgentX subagent connected registering root OID 1.3.6.1.4.1.15312.2.1.1 for am.snmp registering root OID 1.3.6.1.4.1.15312.2.1.2 for am.nanny registering root OID 1.3.6.1.4.1.15312.2.1.3.1.1 for pf.maildrop registering root OID 1.3.6.1.4.1.15312.2.1.3.1.2 for pf.incoming registering root OID 1.3.6.1.4.1.15312.2.1.3.1.3 for pf.active registering root OID 1.3.6.1.4.1.15312.2.1.3.1.4 for pf.deferred
Frage ich nun den SNMP-Daemon nach dem Wert inMsgsSizeOriginating im AMAVIS-MIB erhalte ich den gewünschten Wert:
# snmpwalk -v 3 -l AuthNoPriv -u mailsupport \ - -A c96tOp2SaqQFngE5ioGK+O2NjfMgmCmHgls \ 127.0.0.1 AMAVIS-MIB::inMsgsSizeOriginating
AMAVIS-MIB::inMsgsSizeOriginating.0 = Counter64: 200131
Tja, nun stellt sich für mich die Frage, gibt es einen anderen/besseren Weg als den amavisd-snmp-subagent mit Root-Rechten laufen zu lassen?
Servus Django
* Django django@nausch.org:
HI Dealer aka p@rick,
nachdem Du mich zum Thema AMaViS und SNMP angefixt hast, habe ich mal eine grundsätzliche Frage, natürlich wieder etwas off-topic hier auf der Liste. ;)
So, so: Angefixt. Warte, lass mich der NSA noch ein paar brauchbare Zusammenhänge liefern.
Patrick hat Django angefixt. Patrick ist ein Dealer. ;)
Am Ende glauben die noch, ich hätte Dir davon erzählt wie man mit amavis Postfix Mailqueues monitoren kann...
Zu Deiner Frage weiter unten:
Der amavisd-snmp-subagent stellt ja auch Informationen der Postfix-Queues dem SNMP-Daemon zur Verfügung. Die Rechte stehen hierzu wie folgt: # ll /var/spool/postfix/ total 16 drwx------. 2 postfix root 6 Oct 1 11:05 active drwx------. 2 postfix root 6 May 5 13:50 bounce drwx------. 2 postfix root 6 May 5 13:50 corrupt drwx------. 15 postfix root 4096 Oct 1 06:00 defer drwx------. 15 postfix root 4096 Oct 1 06:00 deferred drwx------. 2 postfix root 6 May 5 13:50 flush drwx------. 2 postfix root 6 May 5 13:50 hold drwx------. 2 postfix root 6 Oct 1 11:00 incoming drwx-wx---. 2 postfix postdrop 6 Oct 1 11:00 maildrop drwxr-xr-x. 2 root root 4096 Sep 30 20:55 pid drwx------. 2 postfix root 4096 Sep 30 20:55 private drwx--x---. 2 postfix postdrop 68 Sep 30 20:55 public drwx------. 2 postfix root 6 May 5 13:50 saved drwx------. 2 postfix root 6 May 5 13:50 trace
Damit kein unberechtigter Nutzer auf Inhalte der eMails zugreifen kann, "gehören" die Verzeichnisse dem User postfix - macht ja auch Sinn.
Unter CentOS 7 wird der amavisd-snmp-subagent mit den Rechten "amavis:amavis" gestartet; soweit so gut.
Klar. Das kann nicht gehen. Ich denke, auch der Maintainer des Paketes war/ist sich nicht bewußt, dass dieses Feature in amavis existiert.
Frage ich nun den SNMP-Daemon nach Daten des AMaViS-Daemon erhalte ich lediglich: # snmpwalk -v 3 -l AuthNoPriv -u mailsupport \ -A c96tOp2SaqQFngE5ioGK+O2NjfMgmCmHgls \ 127.0.0.1 AMAVIS-MIB::inMsgsSizeOriginating
AMAVIS-MIB::inMsgsSizeOriginating = No Such Object available on this agent at this OID
Ich hatte im ersten Schritt den Unix-Socket des SNMP-Daemon in Verdacht, warum zum bennanten OID nichts zurückgemeldet wird. Nachdem ich zu Debug-Zwecken den amavisd-snmp-subagent im Vordergrund hab laufen lassen, kam ich aber der eigentlichen Ursache auf die Schliche:
got a Postfix queue directory: /var/spool/postfix can't open directory /var/spool/postfix/active: Permission denied amavis-agentx-1.7 (20140127) starting in foreground, perl 5.016003 Warning: Failed to connect to the agentx master agent ([NIL]): registering root OID 1.3.6.1.4.1.15312.2.1.1 for am.snmp registering root OID 1.3.6.1.4.1.15312.2.1.2 for am.nanny not registering root OID 1.3.6.1.4.1.15312.2.1.3.1.1 for pf.maildrop not registering root OID 1.3.6.1.4.1.15312.2.1.3.1.2 for pf.incoming not registering root OID 1.3.6.1.4.1.15312.2.1.3.1.3 for pf.active not registering root OID 1.3.6.1.4.1.15312.2.1.3.1.4 for pf.deferred
"can't open directory", tja, der Daemon läuft ja auch mit den rechten des Users *amavis*!
So isses.
Tja, nun stellt sich für mich die Frage, gibt es einen anderen/besseren Weg als den amavisd-snmp-subagent mit Root-Rechten laufen zu lassen?
Mir ist im Moment keiner bekannt. Der subagent läuft allerdings (bei mir) so, dass er nur auf localhost lauscht:
~ # lsof -Pni :705 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME snmpd 8135 root 10u IPv4 145020791 0t0 TCP 127.0.0.1:705 (LISTEN) snmpd 8135 root 11u IPv6 145020792 0t0 TCP [::1]:705 (LISTEN) snmpd 8135 root 13u IPv6 145022163 0t0 TCP [::1]:705->[::1]:59144 (ESTABLISHED) amavisd-s 11383 root 21u IPv6 145022162 0t0 TCP [::1]:59144->[::1]:705 (ESTABLISHED)
Ein Angreifer muss also dann schon auf dem Rechner sein. Ob er dann root wird, indem der den subagent unter Kontrolle bekommt, ist IMO nicht mehr das drängende Problem.
Du kannst natürlich mit SELunix den Zugriff entsprechend regeln.
p@rick
participants (2)
-
Django
-
Patrick Ben Koetter