141 lines
4.0 KiB
TypeScript
141 lines
4.0 KiB
TypeScript
/**
|
|
* Log level for security events
|
|
*/
|
|
export declare enum SecurityLogLevel {
|
|
INFO = "info",
|
|
WARN = "warn",
|
|
ERROR = "error",
|
|
CRITICAL = "critical"
|
|
}
|
|
/**
|
|
* Security event types for categorization
|
|
*/
|
|
export declare enum SecurityEventType {
|
|
AUTHENTICATION = "authentication",
|
|
ACCESS_CONTROL = "access_control",
|
|
EMAIL_VALIDATION = "email_validation",
|
|
EMAIL_PROCESSING = "email_processing",
|
|
EMAIL_FORWARDING = "email_forwarding",
|
|
EMAIL_DELIVERY = "email_delivery",
|
|
DKIM = "dkim",
|
|
SPF = "spf",
|
|
DMARC = "dmarc",
|
|
RATE_LIMIT = "rate_limit",
|
|
RATE_LIMITING = "rate_limiting",
|
|
SPAM = "spam",
|
|
MALWARE = "malware",
|
|
CONNECTION = "connection",
|
|
DATA_EXPOSURE = "data_exposure",
|
|
CONFIGURATION = "configuration",
|
|
IP_REPUTATION = "ip_reputation",
|
|
REJECTED_CONNECTION = "rejected_connection"
|
|
}
|
|
/**
|
|
* Security event interface
|
|
*/
|
|
export interface ISecurityEvent {
|
|
timestamp: number;
|
|
level: SecurityLogLevel;
|
|
type: SecurityEventType;
|
|
message: string;
|
|
details?: any;
|
|
ipAddress?: string;
|
|
userId?: string;
|
|
sessionId?: string;
|
|
emailId?: string;
|
|
domain?: string;
|
|
action?: string;
|
|
result?: string;
|
|
success?: boolean;
|
|
}
|
|
/**
|
|
* Security logger for enhanced security monitoring
|
|
*/
|
|
export declare class SecurityLogger {
|
|
private static instance;
|
|
private securityEvents;
|
|
private maxEventHistory;
|
|
private enableNotifications;
|
|
private constructor();
|
|
/**
|
|
* Get singleton instance
|
|
*/
|
|
static getInstance(options?: {
|
|
maxEventHistory?: number;
|
|
enableNotifications?: boolean;
|
|
}): SecurityLogger;
|
|
/**
|
|
* Log a security event
|
|
* @param event The security event to log
|
|
*/
|
|
logEvent(event: Omit<ISecurityEvent, 'timestamp'>): void;
|
|
/**
|
|
* Get recent security events
|
|
* @param limit Maximum number of events to return
|
|
* @param filter Filter for specific event types
|
|
* @returns Recent security events
|
|
*/
|
|
getRecentEvents(limit?: number, filter?: {
|
|
level?: SecurityLogLevel;
|
|
type?: SecurityEventType;
|
|
fromTimestamp?: number;
|
|
toTimestamp?: number;
|
|
}): ISecurityEvent[];
|
|
/**
|
|
* Get events by security level
|
|
* @param level The security level to filter by
|
|
* @param limit Maximum number of events to return
|
|
* @returns Security events matching the level
|
|
*/
|
|
getEventsByLevel(level: SecurityLogLevel, limit?: number): ISecurityEvent[];
|
|
/**
|
|
* Get events by security type
|
|
* @param type The event type to filter by
|
|
* @param limit Maximum number of events to return
|
|
* @returns Security events matching the type
|
|
*/
|
|
getEventsByType(type: SecurityEventType, limit?: number): ISecurityEvent[];
|
|
/**
|
|
* Get security events for a specific IP address
|
|
* @param ipAddress The IP address to filter by
|
|
* @param limit Maximum number of events to return
|
|
* @returns Security events for the IP address
|
|
*/
|
|
getEventsByIP(ipAddress: string, limit?: number): ISecurityEvent[];
|
|
/**
|
|
* Get security events for a specific domain
|
|
* @param domain The domain to filter by
|
|
* @param limit Maximum number of events to return
|
|
* @returns Security events for the domain
|
|
*/
|
|
getEventsByDomain(domain: string, limit?: number): ISecurityEvent[];
|
|
/**
|
|
* Send a notification for critical security events
|
|
* @param event The security event to notify about
|
|
* @private
|
|
*/
|
|
private sendNotification;
|
|
/**
|
|
* Clear event history
|
|
*/
|
|
clearEvents(): void;
|
|
/**
|
|
* Get statistical summary of security events
|
|
* @param timeWindow Optional time window in milliseconds
|
|
* @returns Summary of security events
|
|
*/
|
|
getEventsSummary(timeWindow?: number): {
|
|
total: number;
|
|
byLevel: Record<SecurityLogLevel, number>;
|
|
byType: Record<SecurityEventType, number>;
|
|
topIPs: Array<{
|
|
ip: string;
|
|
count: number;
|
|
}>;
|
|
topDomains: Array<{
|
|
domain: string;
|
|
count: number;
|
|
}>;
|
|
};
|
|
}
|