Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,12 @@ const getAuthenticationColumns = (): [
}),
},
{
name: i18n.FAILURES,
name: i18n.SUCCESSES,
truncateText: false,
hideForMobile: false,
render: ({ node }) => {
const id = escapeDataProviderId(
`authentications-table-${node._id}-failures-${node.failures}`
`authentications-table-${node._id}-node-successes-${node.successes}`
);
return (
<DraggableWrapper
Expand All @@ -149,12 +149,12 @@ const getAuthenticationColumns = (): [
and: [],
enabled: true,
id,
name: 'authentication_failure',
name: 'authentication_success',
excluded: false,
kqlQuery: '',
queryMatch: {
field: 'event.type',
value: 'authentication_failure',
value: 'authentication_success',
operator: IS_OPERATOR,
},
}}
Expand All @@ -164,67 +164,20 @@ const getAuthenticationColumns = (): [
<Provider dataProvider={dataProvider} />
</DragEffects>
) : (
node.failures
node.successes
)
}
/>
);
},
},
{
name: i18n.LAST_FAILED_TIME,
truncateText: false,
hideForMobile: false,
render: ({ node }) =>
has('lastFailure.timestamp', node) && node.lastFailure!.timestamp != null ? (
<EuiToolTip position="bottom" content={node.lastFailure!.timestamp!}>
<FormattedRelative value={new Date(node.lastFailure!.timestamp!)} />
</EuiToolTip>
) : (
getEmptyTagValue()
),
},
{
name: i18n.LAST_FAILED_SOURCE,
truncateText: false,
hideForMobile: false,
render: ({ node }) =>
getRowItemDraggables({
rowItems:
node.lastFailure != null &&
node.lastFailure.source != null &&
node.lastFailure.source.ip != null
? node.lastFailure.source.ip
: null,
attrName: 'source.ip',
idPrefix: `authentications-table-${node._id}-lastFailureSource`,
render: item => <IPDetailsLink ip={item} />,
}),
},
{
name: i18n.LAST_FAILED_DESTINATION,
truncateText: false,
hideForMobile: false,
render: ({ node }) =>
getRowItemDraggables({
rowItems:
node.lastFailure != null &&
node.lastFailure.host != null &&
node.lastFailure.host.name != null
? node.lastFailure.host.name
: null,
attrName: 'host.name',
idPrefix: `authentications-table-${node._id}-lastFailureDestination`,
render: item => <HostDetailsLink hostName={item} />,
}),
},
{
name: i18n.SUCCESSES,
name: i18n.FAILURES,
truncateText: false,
hideForMobile: false,
render: ({ node }) => {
const id = escapeDataProviderId(
`authentications-table-${node._id}-node-successes-${node.successes}`
`authentications-table-${node._id}-failures-${node.failures}`
);
return (
<DraggableWrapper
Expand All @@ -233,12 +186,12 @@ const getAuthenticationColumns = (): [
and: [],
enabled: true,
id,
name: 'authentication_success',
name: 'authentication_failure',
excluded: false,
kqlQuery: '',
queryMatch: {
field: 'event.type',
value: 'authentication_success',
value: 'authentication_failure',
operator: IS_OPERATOR,
},
}}
Expand All @@ -248,7 +201,7 @@ const getAuthenticationColumns = (): [
<Provider dataProvider={dataProvider} />
</DragEffects>
) : (
node.successes
node.failures
)
}
/>
Expand Down Expand Up @@ -302,4 +255,51 @@ const getAuthenticationColumns = (): [
render: item => <HostDetailsLink hostName={item} />,
}),
},
{
name: i18n.LAST_FAILED_TIME,
truncateText: false,
hideForMobile: false,
render: ({ node }) =>
has('lastFailure.timestamp', node) && node.lastFailure!.timestamp != null ? (
<EuiToolTip position="bottom" content={node.lastFailure!.timestamp!}>
<FormattedRelative value={new Date(node.lastFailure!.timestamp!)} />
</EuiToolTip>
) : (
getEmptyTagValue()
),
},
{
name: i18n.LAST_FAILED_SOURCE,
truncateText: false,
hideForMobile: false,
render: ({ node }) =>
getRowItemDraggables({
rowItems:
node.lastFailure != null &&
node.lastFailure.source != null &&
node.lastFailure.source.ip != null
? node.lastFailure.source.ip
: null,
attrName: 'source.ip',
idPrefix: `authentications-table-${node._id}-lastFailureSource`,
render: item => <IPDetailsLink ip={item} />,
}),
},
{
name: i18n.LAST_FAILED_DESTINATION,
truncateText: false,
hideForMobile: false,
render: ({ node }) =>
getRowItemDraggables({
rowItems:
node.lastFailure != null &&
node.lastFailure.host != null &&
node.lastFailure.host.name != null
? node.lastFailure.host.name
: null,
attrName: 'host.name',
idPrefix: `authentications-table-${node._id}-lastFailureDestination`,
render: item => <HostDetailsLink hostName={item} />,
}),
},
];
36 changes: 18 additions & 18 deletions x-pack/plugins/siem/public/pages/hosts/hosts.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -111,61 +111,61 @@ const HostsComponent = pure<HostsComponentProps>(({ filterQuery }) => (

<EuiSpacer />

<UncommonProcessesQuery
<AuthenticationsQuery
endDate={to}
filterQuery={filterQuery}
sourceId="default"
startDate={from}
type={hostsModel.HostsType.page}
>
{({
uncommonProcesses,
totalCount,
loading,
pageInfo,
loadMore,
id,
refetch,
}) => (
<UncommonProcessTableManage
{({ authentications, totalCount, loading, pageInfo, loadMore, id, refetch }) => (
<AuthenticationTableManage
id={id}
refetch={refetch}
setQuery={setQuery}
loading={loading}
data={uncommonProcesses}
data={authentications}
totalCount={totalCount}
nextCursor={getOr(null, 'endCursor.value', pageInfo)}
hasNextPage={getOr(false, 'hasNextPage', pageInfo)!}
loadMore={loadMore}
type={hostsModel.HostsType.page}
/>
)}
</UncommonProcessesQuery>
</AuthenticationsQuery>

<EuiSpacer />

<AuthenticationsQuery
<UncommonProcessesQuery
endDate={to}
filterQuery={filterQuery}
sourceId="default"
startDate={from}
type={hostsModel.HostsType.page}
>
{({ authentications, totalCount, loading, pageInfo, loadMore, id, refetch }) => (
<AuthenticationTableManage
{({
uncommonProcesses,
totalCount,
loading,
pageInfo,
loadMore,
id,
refetch,
}) => (
<UncommonProcessTableManage
id={id}
refetch={refetch}
setQuery={setQuery}
loading={loading}
data={authentications}
data={uncommonProcesses}
totalCount={totalCount}
nextCursor={getOr(null, 'endCursor.value', pageInfo)}
hasNextPage={getOr(false, 'hasNextPage', pageInfo)!}
loadMore={loadMore}
type={hostsModel.HostsType.page}
/>
)}
</AuthenticationsQuery>
</UncommonProcessesQuery>

<EuiSpacer />

Expand Down
3 changes: 1 addition & 2 deletions x-pack/plugins/siem/server/lib/authentications/query.dsl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ export const buildQuery = ({

const filter = [
...createQueryFilterClauses(filterQuery),
{ term: { 'event.module': 'system' } },
{ term: { 'event.category': 'authentication' } },
{
range: {
Expand Down Expand Up @@ -65,7 +64,7 @@ export const buildQuery = ({
terms: {
size: limit + 1,
field: 'user.name',
order: { 'failures.doc_count': 'desc' },
order: [{ 'successes.doc_count': 'desc' }, { 'failures.doc_count': 'desc' }],
},
aggs: {
failures: {
Expand Down