Auditování událostí zabezpečení
Aplikace vytvořené pomocí technologie Windows Communication Foundation (WCF) můžou protokolovat události zabezpečení (úspěch, selhání nebo obojí) pomocí funkce auditování. Události se zapisují do protokolu událostí systému Windows a lze je prozkoumat pomocí Prohlížeč událostí.
Auditování poskytuje správci způsob, jak zjistit útok, ke kterému už došlo nebo právě probíhá. Kromě toho může auditování pomoct vývojáři ladit problémy související se zabezpečením. Pokud například chyba v konfiguraci autorizace nebo kontrola zásad omylem odmítne přístup k autorizovanému uživateli, může vývojář rychle zjistit a izolovat příčinu této chyby prozkoumáním protokolu událostí.
Další informace o zabezpečení WCF naleznete v tématu Přehled zabezpečení. Další informace o programování WCF naleznete v tématu Základní programování WCF.
Úroveň a chování auditu
Existují dvě úrovně auditů zabezpečení:
Úroveň autorizace služby, ve které je volající autorizovaný.
Úroveň zpráv, ve které WCF kontroluje platnost zprávy a ověřuje volajícího.
Můžete zkontrolovat úspěšnost nebo selhání obou úrovní auditu, což se označuje jako chování auditu.
Umístění protokolu auditu
Jakmile určíte úroveň auditu a chování, můžete vy (nebo správce) zadat umístění pro protokol auditu. Mezi tři možnosti patří: Výchozí, Aplikace a Zabezpečení. Když zadáte výchozí, skutečný protokol závisí na tom, jaký systém používáte, a jestli systém podporuje zápis do protokolu zabezpečení. Další informace najdete v části Operační systém dále v tomto tématu.
K zápisu do protokolu zabezpečení se vyžaduje SeAuditPrivilege
. Ve výchozím nastavení mají tato oprávnění pouze účty místních systémů a síťových služeb. Ke správě funkcí read
protokolu zabezpečení a delete
vyžaduje SeSecurityPrivilege
Ve výchozím nastavení mají tato oprávnění jenom správci.
Naproti tomu ověření uživatelé mohou číst a zapisovat do protokolu aplikace. Systém Windows XP ve výchozím nastavení zapisuje události auditu do protokolu aplikace. Protokol může také obsahovat osobní údaje, které jsou viditelné všem ověřeným uživatelům.
Potlačení selhání auditu
Další možností při auditování je, jestli se má potlačit selhání auditu. Ve výchozím nastavení selhání auditu nemá vliv na aplikaci. V případě potřeby však můžete nastavit možnost , false
která způsobí vyvolání výjimky.
Auditování programování
Chování auditování můžete zadat prostřednictvím kódu programu nebo prostřednictvím konfigurace.
Třídy auditování
Následující tabulka popisuje třídy a vlastnosti používané k programování chování auditování.
Třída | Popis |
---|---|
ServiceSecurityAuditBehavior | Povolí nastavení možností auditování jako chování služby. |
AuditLogLocation | Výčet určující, do kterého protokolu se má zapisovat. Možné hodnoty jsou Výchozí, Aplikace a Zabezpečení. Když vyberete Výchozí, operační systém určuje skutečné umístění protokolu. Viz část Volba protokolu událostí aplikace nebo zabezpečení dále v tomto tématu. |
MessageAuthenticationAuditLevel | Určuje, které typy událostí ověřování zpráv jsou auditovány na úrovni zprávy. Možnosti jsou None , , Failure Success a SuccessOrFailure . |
ServiceAuthorizationAuditLevel | Určuje, které typy událostí autorizace služby jsou auditovány na úrovni služby. Možnosti jsou None , , Failure Success a SuccessOrFailure . |
SuppressAuditFailure | Určuje, co se stane s požadavkem klienta při selhání auditování. Například když se služba pokusí zapisovat do protokolu zabezpečení, ale nemá SeAuditPrivilege . Výchozí hodnota true značí, že selhání se ignorují a požadavek klienta se zpracovává normálně. |
Příklad nastavení aplikace pro protokolování událostí auditu najdete v tématu Postupy: Auditování událostí zabezpečení.
Konfigurace
Konfiguraci můžete také použít k určení chování auditování přidáním serviceSecurityAudit> pod <chování>.< Prvek musíte přidat pod <chování> , jak je znázorněno v následujícím kódu.
<configuration>
<system.serviceModel>
<behaviors>
<behavior>
<!-- auditLogLocation="Application" or "Security" -->
<serviceSecurityAudit
auditLogLocation="Application"
suppressAuditFailure="true"
serviceAuthorizationAuditLevel="Failure"
messageAuthenticationAuditLevel="SuccessOrFailure" />
</behavior>
</behaviors>
</system.serviceModel>
</configuration>
Pokud je auditování povolené a auditLogLocation
nezadáte ho, výchozí název protokolu je "Zabezpečení" pro platformu podporující zápis do protokolu zabezpečení. V opačném případě se jedná o protokol Aplikace. Zápis do protokolu zabezpečení podporují pouze operační systémy Windows Server 2003 a Windows Vista. Další informace najdete v části Operační systém dále v tomto tématu.
Aspekty zabezpečení
Pokud uživatel se zlými úmysly ví, že je auditování povolené, může útočník odeslat neplatné zprávy, které způsobí zápis položek auditu. Pokud se tímto způsobem vyplní protokol auditu, systém auditování selže. Pokud chcete tento problém zmírnit, nastavte SuppressAuditFailure vlastnost na true
vlastnosti Prohlížeč událostí a použijte ji k řízení chování auditování.
Události auditu zapsané do protokolu aplikací v systému Windows XP jsou viditelné pro všechny ověřené uživatele.
Volba mezi protokoly událostí aplikace a zabezpečení
Následující tabulky obsahují informace, které vám pomůžou zvolit, jestli se chcete přihlásit k aplikaci nebo do protokolu událostí zabezpečení.
Operační systém
Systémový | Protokol aplikace | Protokol zabezpečení |
---|---|---|
Windows XP SP2 nebo novější | Podporováno | Nepodporováno |
Windows Server 2003 SP1 a Windows Vista | Podporováno | Kontext vlákna musí mít SeAuditPrivilege |
Další faktory
Kromě operačního systému popisuje následující tabulka další nastavení, která řídí povolení protokolování.
Faktor | Protokol aplikace | Protokol zabezpečení |
---|---|---|
Správa zásad auditu | Nevztahuje se. | Kromě konfigurace se protokol zabezpečení řídí také zásadami místní autority zabezpečení (LSA). Musí být také povolená kategorie Auditovat přístup k objektům. |
Výchozí uživatelské prostředí | Všichni ověření uživatelé můžou zapisovat do protokolu aplikace, takže pro procesy aplikací není potřeba žádný další krok oprávnění. | Aplikační proces (kontext) musí obsahovat SeAuditPrivilege . |