LOGWATCH & CENTOS (SELinux) & COURIER MTA
setuid: Operation not permitted sendmail: ERR: submitclient: EOF from submit. 432 Service temporarily unavailable.

Logwatch to kolejna aplikacja zwiększająca naszą świadomość nie tylko w kwestii bezpieczeństwa systemu, ale również dająca szczegółowy raport w temacie wykorzystanie usług. Instalacja i konfiguracja są bardzo proste, ale mimo to standardowo przy włączonym SELinux-e zamiast codziennego raportu otrzymujemy wiadomość:

/etc/cron.daily/0logwatch:
You have old files in your logwatch tmpdir (/var/cache/logwatch):
	logwatch.ARqbbW2Q
The directories listed above were most likely created by a
logwatch run that failed to complete successfully.  If so, you
may delete these directories.
setuid: Operation not permitted
sendmail: ERR: submitclient: EOF from submit.
432 Service temporarily unavailable.

Rozwiązanie problemu polega na wykonaniu:

grep logwatch /var/log/audit/audit.log | audit2allow -M logwatch2 > logwatch2.te

z czystej ciekawości możemy zajrzeć do efektów powyższego rozkazu komendą:

cat logwatch2.te

oraz zobaczywszy:

******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i logwatch2.pp

logwatch_t self:capability setuid;

możemy z czystym sumieniem:

semodule -i logwatch2.pp

Zamykając temat należy jeszcze usunąć podkatalogi tymczasowe z  katalogu /var/cache/logwatch. Opracowane na podstawie blogu Dan Walsh (https://danwalsh.livejournal.com/24750.html) oraz dokumentacji RedHat (https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-fixing_problems-allowing_access_audit2allow) i opisu w Wiki Centosa (rozdz. 7 - https://wiki.centos.org/HowTos/SELinux) .

P.S.

Jedno naprawiając okazuje się, że drugie pospuliśmy.;P

/etc/cron.daily/0logwatch:

sendmail: Unable to submit message.

rozwiązanie leży w konfiguracji logwatch-a, gdzie w pliku /etc/logwatch/conf/logwatch.conf modyfikujemy stałą mailer do następującej wartości:

mailer = /usr/sbin/sendmail

oraz po raz koleiny wracamy do SELinuxa:

grep logwatch /var/log/audit/audit.log | audit2allow -M logwatch4 > logwatch4.te
cat ./logwatch4.te
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i logwatch4.pp

=======
allow logwatch_t courier_etc_t:file open;
semodule -i logwatch4.pp

i jeszcze raz po kolejnym wywołaniu logwatch-a przez cron-a po błędzie:

/etc/cron.hourly/0logwatch:
sendmail: ERR: submitclient: EOF from submit.
432 Service temporarily unavailable.
sendmail: Unable to submit message.

wykonujemy:

grep logwatch /var/log/audit/audit.log | audit2allow -M logwatch5 > logwatch5.te
cat logwatch5.te
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i logwatch5.pp


}

#============= logwatch_t ==============
allow logwatch_t courier_spool_t:dir remove_name;
allow logwatch_t courier_spool_t:file { append open };
semodule -i logwatch5.pp

i jeszcze raz po kolejnym uruchomieniu tym razem w odpowiedzi na komunikat  błędu:

/etc/cron.hourly/0logwatch:
sendmail: Unable to submit message.

wykonujemy analogiczne komendy:

grep logwatch /var/log/audit/audit.log | audit2allow -M logwatch6 > logwatch6.te
cat logwatch6.te
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i logwatch6.pp

logwatch_t ==============
allow logwatch_t courier_spool_t:file { read unlink write };
semodule -i logwatch6.pp

Nie poddajemy się i jeszcze po kolejnym uruchomieniu logwatch-a przez cron-a tym razem w odpowiedzi na komunikat  błędu:

/etc/cron.hourly/0logwatch:
ERR: authdaemon: s_connect() failed: Permission denied
450-Service temporarily unavailable.
450 Headers specify no receipients.
sendmail: Unable to submit message.

wykonujemy analogiczne komendy:

grep logwatch /var/log/audit/audit.log | audit2allow -M logwatch7 > logwatch7.te
cat logwatch7.te
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i logwatch7.pp

ite };
}

#============= logwatch_t ==============

#!!!! This avc is allowed in the current policy allow logwatch_t courier_spool_t:file { read unlink write };
allow logwatch_t courier_spool_t:sock_file write;
semodule -i logwatch7.pp

Nie przejmujemy się otrzymaniem ponownie tego samego błędu po kolejnym uruchomieniu logwatch-a przez cron-a:

/etc/cron.hourly/0logwatch:
sendmail: ERR: submitclient: EOF from submit.
432 Service temporarily unavailable.
sendmail: Unable to submit message.

i wykonujemy analogiczne komendy do powniższych:

grep logwatch /var/log/audit/audit.log | audit2allow -M logwatch8 > logwatch8.te
cat logwatch8.te
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i logwatch8.pp

===========
allow logwatch_t courier_spool_t:file rename;
semodule -i logwatch8.pp

By w końcu nasz upór został nagrodzony długo oczekiwanym raportem w postaci:

################### Logwatch 7.4.0 (03/01/11) #################### 
        Processing Initiated: Sat Jul 28 15:01:04 2018
        Date Range Processed: yesterday
                              ( 2018-Jul-27 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: bit.sos.pl
 ################################################################## 
 --------------------- courier mail services Begin ------------------------ 
 Unexpected SSL connection shutdowns: 5 Times
 Errors in remote to local connections: 646 Times
   because "502 ESMTP command error",cmd: DATA - 12 Times
   ...


SPAM
Usuwanie adresu IP z list antyspamowych