대량의 SSH(Secure SHell) 접속 시도를 확인한 김에 접속을 시도한 IP와 ID 현황도 파악해보자. 일단 IP 먼저.
그런데 사실 정확하게 IP 주소만을 검사하려면 좀 복잡해진다. 3개의 .으로 구분되는 4개의 8 bit 단위(Octet) IP 주소는 각 옥텟이 0 ~ 255까지 총 256개의 숫자로 이루어지기 때문에, 각 옥텟을 구성하는 숫자가 255보다 크면 안 된다.
하지만 해당 로그에서 3개의 .으로 구분된 숫자 형태의 문자열은 IP 정보 밖에 없기 때문에 '(하나 이상의) 숫자.숫자.숫자.숫자'를 의미하는 단순한 정규표현식으로도 IP 정보만을 쉽게 추출할 수 있다. 검사 대상 문자열의 성격에 맞는 정규표현식을 사용하는 것이 중요하다는 얘기.
- \v\d+\.\d+\.\d+\.\d+
- \v(\d+\.){3}\d+
나머지 추출 과정이야 뻔하니 패스. 이제 SSH 접속 시도에 사용된 ID 정보를 추출해보자. ID 추출을 위해 사용한 정규표현식은 다음과 같다.
- \vfor\s\S+
모든 ID 문자열을 추출할 수 있는 정규표현식을 만들 수 있을 것도 같은데 잘 안 된다. 정규표현식은 많은 걸 할 수 있지만, 모든 걸 해주지는 않는다. 적당히 요령을 부려보자.
- .*\sfor\suser\s.*
정규표현식 '\vfor\s\S+'로 ID 문자열이 정확히 검사되지 않는 줄은 모두 지웠다. 물론 해당 정규표현식도 ID 문자열을 포함할 뿐, ID 만을 검사하지는 못한다. 그럼 어쩐다?
'VIM 사용 설명서(secure 로그 분석 - 2nd)' 편에서 살펴봤던 '후방탐색' 기능을 써먹을 때가 온 것. 해당 기능을 이용하면 'for공백ID' 문자열 중 'for공백'을 제외한 ID 문자열만 추출 가능.
'VIM 사용 설명서(secure 로그 분석 - 2nd)' 편에서 살펴봤던 '후방탐색' 기능을 써먹을 때가 온 것. 해당 기능을 이용하면 'for공백ID' 문자열 중 'for공백'을 제외한 ID 문자열만 추출 가능.
이제 앞서 삭제했던 줄에 포함된 ID 문자열만 추출하면 된다. 그런데 글이 너무 길어질 듯. 오늘 쫑낼 생각이었는데(..) 마무리는 다음에~
댓글 없음:
댓글 쓰기