Lavoro per un commerciante di livello 1 con controlli annuali sul sito QSA, quindi questo è un enorme affare.
PCI DSS 10.5 richiede che l'entità sottoposta a test "Proteggi i percorsi di controllo in modo che non possano essere modificati". Nel nostro ambiente Unix e Linux questo richiede che la configurazione di syslog sia controllata per vedere se a) le autorizzazioni su tutti i file utilizzati localmente per memorizzare i log di controllo (definiti come auth, authpriv e le funzioni di sicurezza in syslog) sono limitati a root e b) queste strutture vengono anche esportate in un raccoglitore di log per ragioni di sicurezza.
In passato, con il classico syslog, l'abbiamo gestito con un test del file syslog.conf per determinare quali file controllare le autorizzazioni e quali server di raccolta sono in uso. Il problema è con le versioni più recenti di syslog, vale a dire rsyslog e syslog-ng.
I file di configurazione per questi componenti di registrazione sono molto più flessibili e leggibili dai loro predecessori. Tuttavia, stiamo andando silenziosamente a cercare di convalidare le configurazioni dei nuovi strumenti per i seguenti motivi:
In rsyslog (e syslog-ng) puoi indirizzare i messaggi praticamente su qualsiasi cosa tu possa pensare ... comprese le espressioni regolari. Non solo puoi seguire questi criteri, puoi anche scartare completamente determinati messaggi basati su di essi. Ad esempio, sarebbe abbastanza semplice configurare un sistema su look come se stesse loggando tutte le informazioni sulla sicurezza se si stesse semplicemente guardando attraverso i log, ma per tutto il tempo sta scartando in silenzio qualsiasi messaggio di log che conteneva un ID utente specifico. Facile da configurare, difficile da rilevare.
Con syslog-ng abbiamo provato a convalidare configurazioni "conosciute" con un checksum (questo potrebbe essere reso più sicuro con un HMAC corretto come SHA-256, ma questo non risolve il problema sottostante). Il problema è che le configurazioni valide tendono a proliferare e diventa impossibile tenere il passo.
Entrambi gli strumenti sono in grado di utilizzare i file include, e rsyslog in particolare usa questa funzionalità estesamente "out of the box", il che complica ulteriormente le cose perché ora devi eseguire il checksum / hash non solo il file originale ma ogni file che include.
Uno stopgap è di contrassegnare ogni sistema che esegue rsyslog o syslog-ng e richiede alla SA di attestare che i log vengono inviati alle posizioni corrette, ma con decine di migliaia di sistemi, tale approccio non scala, né lo fa fornire una buona prova per i revisori dei conti.
In breve, non abbiamo trovato alcuna soluzione tecnica al problema di sapere per certo dove ogni registro di autenticazione è stato memorizzato o trasmesso, eppure PCI DSS 10.5 lo richiede. Pertanto chiedo alla comunità di sicurezza cosa stanno facendo per facilitare questo.