Inspekcja zdarzeń dotyczących zabezpieczeń
Aplikacje utworzone za pomocą programu Windows Communication Foundation (WCF) mogą rejestrować zdarzenia zabezpieczeń (powodzenie, niepowodzenie lub oba te aplikacje) za pomocą funkcji inspekcji. Zdarzenia są zapisywane w dzienniku zdarzeń systemu Windows i można je zbadać przy użyciu Podgląd zdarzeń.
Inspekcja umożliwia administratorowi wykrywanie ataku, który już wystąpił lub jest w toku. Ponadto inspekcja może pomóc deweloperowi w debugowaniu problemów związanych z zabezpieczeniami. Jeśli na przykład błąd w konfiguracji autoryzacji lub sprawdzania zasad przypadkowo odmówi dostępu do autoryzowanego użytkownika, deweloper może szybko odnaleźć i wyizolować przyczynę tego błędu, sprawdzając dziennik zdarzeń.
Aby uzyskać więcej informacji na temat zabezpieczeń WCF, zobacz Omówienie zabezpieczeń. Aby uzyskać więcej informacji na temat programowania WCF, zobacz Podstawowe programowanie WCF.
Poziom inspekcji i zachowanie
Istnieją dwa poziomy inspekcji zabezpieczeń:
Poziom autoryzacji usługi, w którym obiekt wywołujący jest autoryzowany.
Poziom komunikatu, w którym program WCF sprawdza poprawność komunikatu i uwierzytelnia obiekt wywołujący.
Możesz sprawdzić oba poziomy inspekcji pod kątem powodzenia lub niepowodzenia, co jest nazywane zachowaniem inspekcji.
Lokalizacja dziennika inspekcji
Po ustaleniu poziomu inspekcji i zachowania użytkownik (lub administrator) może określić lokalizację dziennika inspekcji. Trzy opcje to: Domyślne, Aplikacja i Zabezpieczenia. Po określeniu wartości Domyślne rzeczywisty dziennik zależy od używanego systemu i tego, czy system obsługuje zapisywanie w dzienniku zabezpieczeń. Aby uzyskać więcej informacji, zobacz sekcję "System operacyjny" w dalszej części tego tematu.
Aby zapisać dane w dzienniku zabezpieczeń, wymagany jest parametr SeAuditPrivilege
. Domyślnie tylko konta systemu lokalnego i usługi sieciowej mają te uprawnienia. Aby zarządzać funkcjami read
dziennika zabezpieczeń i delete
wymaga elementu SeSecurityPrivilege
. Domyślnie tylko administratorzy mają te uprawnienia.
Natomiast uwierzytelnieni użytkownicy mogą odczytywać i zapisywać dane w dzienniku aplikacji. System Windows XP domyślnie zapisuje zdarzenia inspekcji w dzienniku aplikacji. Dziennik może również zawierać dane osobowe widoczne dla wszystkich uwierzytelnionych użytkowników.
Pomijanie błędów inspekcji
Inną opcją podczas inspekcji jest to, czy pominąć wszelkie błędy inspekcji. Domyślnie błąd inspekcji nie ma wpływu na aplikację. Jeśli jest to wymagane, można jednak ustawić opcję na false
, co powoduje zgłoszenie wyjątku.
Inspekcja programowania
Zachowanie inspekcji można określić programowo lub za pomocą konfiguracji.
Klasy inspekcji
W poniższej tabeli opisano klasy i właściwości używane do programowania zachowania inspekcji.
Klasa | opis |
---|---|
ServiceSecurityAuditBehavior | Włącza opcje ustawień inspekcji jako zachowanie usługi. |
AuditLogLocation | Wyliczenie określające, do którego dziennika ma być zapisywany. Możliwe wartości to Default, Application i Security. Po wybraniu pozycji Domyślne system operacyjny określa rzeczywistą lokalizację dziennika. Zobacz sekcję "Wybór dziennika zdarzeń aplikacji lub zabezpieczeń" w dalszej części tego tematu. |
MessageAuthenticationAuditLevel | Określa typy zdarzeń uwierzytelniania komunikatów są poddawane inspekcji na poziomie komunikatu. Dostępne opcje to None , Failure , Success i SuccessOrFailure . |
ServiceAuthorizationAuditLevel | Określa typy zdarzeń autoryzacji usługi są poddawane inspekcji na poziomie usługi. Dostępne opcje to None , Failure , Success i SuccessOrFailure . |
SuppressAuditFailure | Określa, co się stanie z żądaniem klienta w przypadku niepowodzenia inspekcji. Na przykład gdy usługa próbuje zapisać w dzienniku zabezpieczeń, ale nie ma SeAuditPrivilege elementu . Wartość domyślna wskazuje true , że błędy są ignorowane, a żądanie klienta jest przetwarzane normalnie. |
Przykład konfigurowania aplikacji w celu rejestrowania zdarzeń inspekcji można znaleźć w temacie Instrukcje: inspekcja zdarzeń zabezpieczeń.
Konfigurowanie
Możesz również użyć konfiguracji, aby określić zachowanie inspekcji, dodając usługęSecurityAudit><w ramach <zachowań.> Należy dodać element w ramach <zachowania> , jak pokazano w poniższym kodzie.
<configuration>
<system.serviceModel>
<behaviors>
<behavior>
<!-- auditLogLocation="Application" or "Security" -->
<serviceSecurityAudit
auditLogLocation="Application"
suppressAuditFailure="true"
serviceAuthorizationAuditLevel="Failure"
messageAuthenticationAuditLevel="SuccessOrFailure" />
</behavior>
</behaviors>
</system.serviceModel>
</configuration>
Jeśli inspekcja jest włączona i auditLogLocation
nie jest określona, domyślna nazwa dziennika to "Zabezpieczenia" dla platformy obsługującej zapisywanie w dzienniku zabezpieczeń. W przeciwnym razie jest to dziennik "Aplikacja". Tylko systemy operacyjne Windows Server 2003 i Windows Vista obsługują zapisywanie w dzienniku zabezpieczeń. Aby uzyskać więcej informacji, zobacz sekcję "System operacyjny" w dalszej części tego tematu.
Zagadnienia związane z zabezpieczeniami
Jeśli złośliwy użytkownik wie, że inspekcja jest włączona, osoba atakująca może wysyłać nieprawidłowe komunikaty, które powodują zapisanie wpisów inspekcji. Jeśli dziennik inspekcji zostanie wypełniony w ten sposób, system inspekcji zakończy się niepowodzeniem. Aby temu zapobiec, ustaw SuppressAuditFailure właściwość na true
i użyj właściwości Podgląd zdarzeń, aby kontrolować zachowanie inspekcji.
Zdarzenia inspekcji zapisywane w dzienniku aplikacji w systemie Windows XP są widoczne dla dowolnego uwierzytelnionego użytkownika.
Wybieranie między dziennikami zdarzeń aplikacji i zabezpieczeń
Poniższe tabele zawierają informacje ułatwiające wybranie, czy zalogować się do aplikacji, czy dziennika zdarzeń zabezpieczeń.
System operacyjny
System | Dziennik aplikacji | Dziennik zabezpieczeń |
---|---|---|
Windows XP z dodatkiem SP2 lub nowszym | Obsługiwane | Nieobsługiwane |
Windows Server 2003 z dodatkiem SP1 i Windows Vista | Obsługiwane | Kontekst wątku musi zawierać SeAuditPrivilege |
Inne czynniki
Oprócz systemu operacyjnego w poniższej tabeli opisano inne ustawienia kontrolujące włączanie rejestrowania.
Współczynnik | Dziennik aplikacji | Dziennik zabezpieczeń |
---|---|---|
Zarządzanie zasadami inspekcji | Nie dotyczy. | Wraz z konfiguracją dziennik zabezpieczeń jest również kontrolowany przez zasady lokalnego urzędu zabezpieczeń (LSA). Należy również włączyć kategorię "Inspekcja dostępu do obiektów". |
Domyślne środowisko użytkownika | Wszyscy uwierzytelnieni użytkownicy mogą zapisywać w dzienniku aplikacji, więc nie jest wymagany dodatkowy krok uprawnień dla procesów aplikacji. | Proces aplikacji (kontekst) musi mieć wartość SeAuditPrivilege . |