顧客環境を偵察する
한국어 원문으로 표시합니다.
목표
문서도 대시보드도 없는 고객사 서버에 처음 들어가, 30분 안에 환경 지도 한 장을 그려 낼 수 있게 됩니다.
왜 중요한가
낯선 환경에서 가장 비싼 실수는 아무 로그나 열어 보는 것입니다. 로그는 바다이고, 크기도 형식도 모르는 채로 들어가면 시간만 사라집니다. 정찰의 목적은 답을 찾는 것이 아니라 탐색 범위를 확정하는 것입니다. 파일이 몇 줄인지 알면 grep 한 번이 몇 초인지 알고, 수집 구간을 알면 신고된 시각의 로그가 애초에 존재하는지 알 수 있습니다. 그리고 용량 확인에서는 반드시 두 가지를 함께 봅니다 — 블록과 inode 는 서로 다른 자원이라서, 용량이 남아도 inode 가 떨어지면 파일이 만들어지지 않습니다. df 만 보고 "디스크는 여유 있습니다" 라고 고객에게 답했다가 되돌아오는 일이 실제로 흔합니다.
단계
/root/recon디렉터리를 만드세요.- 이 시스템의 배포판 이름이 들어가도록
/root/recon/os.txt를 만드세요. /opt/data아래 파일 목록을 크기와 함께/root/recon/files.txt에 저장하세요./opt/data최상위에서 가장 용량이 큰 파일 이름만/root/recon/biggest.txt에 적으세요./opt/data/web.log의 전체 줄 수를/root/recon/weblog_lines.txt에 숫자로 적으세요.- 파일시스템 용량과 inode 사용량을 둘 다
/root/recon/disk.txt에 저장하세요. /opt/data/web.log에서 가장 이른 시각과 가장 늦은 시각을/root/recon/timerange.txt에 적으세요.- 위에서 알아낸 것을
/root/recon/map.md한 장으로 정리하세요. 배포판, 가장 큰 파일 이름, web.log 줄 수, 로그 수집 구간이 모두 들어가야 합니다.
참고
cat /etc/os-release,ls -lS,du -h,wc -l,df -h,df -i- 두 명령의 출력을 한 파일에 모으려면
>>로 이어 붙입니다. - 흔한 실수 1:
df만 확인하고 inode 를 빠뜨리는 것. 용량과 inode 는 별개 자원입니다. - 흔한 실수 2: 4번에서 경로까지 적는 것. 파일 이름만 필요합니다.
정찰 작업 디렉터리 만들기
/root/recon 디렉터리를 만드세요.
산출물을 한곳에 모아야 나중에 보고서로 묶입니다. mkdir 에 -p 를 붙이면 이미 있어도 오류가 나지 않습니다.
배포판 확인하기
이 시스템의 배포판 이름이 들어가도록 /root/recon/os.txt 를 만드세요.
배포판 정보는 /etc/os-release 에 key=value 로 들어 있습니다. 이 값이 로그 경로와 패키지 명령을 결정합니다.
데이터 인벤토리 만들기
/opt/data 아래 파일 목록을 크기와 함께 /root/recon/files.txt 에 저장하세요.
/opt/data 를 크기와 함께 나열하세요. ls -l 이나 du 의 출력을 그대로 파일로 넘기면 됩니다.
가장 큰 파일 찾기
/opt/data 최상위에서 가장 용량이 큰 파일 이름만 /root/recon/biggest.txt 에 적으세요.
눈으로 세지 말고 정렬하세요. ls 에는 크기순 정렬 옵션이 있고, du 는 sort 와 조합합니다. 파일 이름만 적습니다.
웹 로그 줄 수 세기
/opt/data/web.log 의 전체 줄 수를 /root/recon/weblog_lines.txt 에 숫자로 적으세요.
줄 수를 알아야 grep 한 번이 몇 초짜리인지 예측할 수 있습니다. wc 의 줄 세기 옵션을 쓰세요.
용량과 inode 함께 기록하기
파일시스템 용량과 inode 사용량을 둘 다 /root/recon/disk.txt 에 저장하세요.
df 는 기본으로 블록만 보여 줍니다. inode 를 보는 별도 옵션이 있고, 두 출력이 한 파일에 모두 있어야 합니다.
로그 수집 구간 알아내기
/opt/data/web.log 에서 가장 이른 시각과 가장 늦은 시각을 /root/recon/timerange.txt 에 적으세요.
web.log 의 두 번째 필드가 시각입니다. 그 필드만 뽑아 정렬하면 가장 이른 값과 늦은 값이 양 끝에 옵니다.
환경 지도 한 장으로 정리하기
위에서 알아낸 것을 /root/recon/map.md 한 장으로 정리하세요. 배포판, 가장 큰 파일 이름, web.log 줄 수, 로그 수집 구간이 모두 들어가야 합니다.
앞 단계에서 알아낸 값들을 마크다운 한 장에 모으세요. 배포판, 최대 파일, 로그 줄 수, 수집 구간이 모두 들어가야 합니다.