A09: Security Logging and Monitoring Failures 보안 로깅 및 모니터링 실패 : 누군가 서버를 해킹하기 위해 수백 번의 에러를 발생시켜도, 이를 기록(로그)으로 남기지 않아 해킹 당한 사실조차 모르게 되는 심각한 관리적 결함 핵심 보안 용어 가이드 감사 로그 (Audit Log): 누가, 언제, 어디서, 무엇을 했는지 시스템에 일어난 모든 중요 사건을 꼼꼼하게 기록해 둔 블랙박스입니다. SIEM: 흩어져 있는 수많은 시스템의 로그를 한곳에 모아서 인공지능으로 실시간 해킹 징후를 찾아내는 보안 관제 시스템입니다. CWE-117: Improper Output Neutralization for Logs CWE-223: Omission of Security-relevant Information function login($userName,$password){ if(authenticate($userName,$password)){ return True; } else{ incrementLoginAttempts($userName); if(recentLoginAttempts($userName) > 5){ writeLog("Failed login attempt by User: " . $userName . " at " + date('r') ); } } } CWE-778: Insufficient Logging 보안상 중요한 이벤트가 발생했을 때, 제품은 해당 이벤트를 기록하지 않거나, 기록 시 이벤트에 대한 중요한 세부 정보를 누락합니다. 로그인 시도 실패와 같은 보안에 중요한 이벤트가 제대로 기록되지 않으면 악의적인 행위를 탐지하기가 더 어려워지고 공격 성공 후 포렌식 분석이 어려워질 수 있습니다. 조직에서 클라우드 스토리지 리소스를 도입함에 따라, 상세 로깅에는 추가 비용이 발생할 수 있으므로 상세 로깅 정보를 활성화하기 위해 구성 변경이 필요한 경우가 많습니다. 이로 인해 중요한 감사 로그에 원격 측정 데이터가 누락될 수 있습니다. 예를 들어 Azure에서는 로깅의 기본값이 비활성화되어 있습니다. <시스템.서비스모델> <행동> <서비스 동작> <행동 이름="NewBehavior"> ... --> 특정 문제에 대한 값은 있으나 분류의 기준(예:IP)를 남기지 않음 LoginUser()인 경우 // 로그인 성공 RunProgram(); } 또 다른 { // 로그인 실패 LoginRetry(); } ==> 개선 : 로그인 실패 시 로그를 기록 LoginUser()인 경우 // 로그인 성공 log.warn("사용자 로그인 성공."); RunProgram(); } 또 다른 { // 로그인 실패 log.warn("사용자의 로그인 시도가 실패했습니다. 다시 시도합니다."); LoginRetry(); } distribute-list 분배 리스트 특정 IP 대역의 광고를 차단한다. conf t router rip passive-interface s1/0 (s1/0 (특정 인터페이스)의 라우팅 테이블 업데이트를 차단하겠다.) passive-interface default (기본적으로 모든 인터페이스를 차단한다.) no passive-interface s1/0 (rip 정보를 보내는데 있어서 s1/0 인터페이스를 허용한다) R1(config)#access-list 1 deny 1.1.2.0 0.0.0.255 R1(config)#access-list 1 permit any offset-list 오프셋 리스트 특정 네트워크의 metric을 증가시킨다. R1(config)#access-list 2 permit 1.1.3.0 0.0.0.255 R1(config)#router rip R1(config-router)#offset-list 2 out 5 s1/0 redistribute 재분배 리스트 서로 다른 프로토콜의 정보를 변환해서 전달한다. R2 <-- 기본적으로 서로 다른 프로토콜 모두를 알고 있어야 한다. 번역의 개념 R2(config)#router rip R2(config-router)#redistribute connected metric 3