LL-001 Linux SSH Auth Log
공격 행위 요약
SB-01에서 공격자는 Jenkins에서 확보한 배포 credential을 이용해 App 서버로 SSH 접속한다. auth.log는 이 이동이 실제로 발생했는지 확인하는 1차 증거다.
로그 발생 위치
| 구분 | 위치 | 설명 |
| App 서버 | /var/log/auth.log | SSH 인증 성공/실패, 세션 시작/종료 이벤트 |
| Jenkins 서버 | /var/jenkins_home/jobs/deploy-to-staging/builds/*/log | 배포 Job 실행 시간과 SSH 접속 시간 비교에 사용 |
| AWS | VPC Flow Log | Jenkins 서버에서 App 서버로 향한 SSH 네트워크 흐름 확인에 사용 |
수집 방식
| 구분 | 방식 |
| App 서버 | Filebeat 8.13.4 custom input으로 /var/log/auth.log 직접 수집 |
| Jenkins 서버 | Filebeat custom input으로 Jenkins access/build log 수집 |
| AWS | VPC Flow Log를 CloudWatch 및 SB-01 collector를 통해 ELK로 수집 |
실제 관측 로그 예시
May 08 13:25:41 sb01-app sshd[2841]: Accepted publickey for deploy from 10.10.40.21 port 51244 ssh2: RSA SHA256:...
May 08 13:25:41 sb01-app sshd[2841]: pam_unix(sshd:session): session opened for user deploy(uid=1001) by (uid=0)
May 08 13:27:02 sb01-app sshd[2841]: pam_unix(sshd:session): session closed for user deploy
주요 필드
| 필드 | 의미 | 예시 |
@timestamp | 인증 이벤트 발생 시간 | May 08 13:25:41 |
user.name | 접속 계정 | deploy |
source.ip | 접속 출발지 IP | 10.10.40.21 |
event.outcome | 성공 또는 실패 | success |
process.name | SSH 인증 프로세스 | sshd |
message | 원본 인증 로그 | Accepted publickey for deploy from 10.10.40.21 |
커버하는 Techniques Used
탐지 포인트
- App 서버
auth.log에서 Accepted publickey for deploy 이벤트가 발생했는지 확인한다.
source.ip가 Jenkins 서버인지, 또는 예상하지 못한 내부/외부 IP인지 확인한다.
- Jenkins 정상 배포 시간대와 SSH 접속 시간이 일치하는지 비교한다.
- SSH 성공 직후
LL-002에서 App 운영 경로 접근이나 staging 경로 생성이 이어졌는지 확인한다.
ELK Query 예시
host.name:"ip-172-31-4-70" AND log.file.path:"/var/log/auth.log" AND message:"Accepted publickey for deploy" AND message:"172.31.13.239"
sb01_server:app AND sb01_log_type:linux_auth AND message:"Accepted publickey for deploy"