[python] Fabric으로 원격 서버 SSH 접속 로그 분석하기

Fabric은 파이썬의 라이브러리로, SSH를 통해 원격 서버에 접속하여 명령어를 실행하고 제어할 수 있도록 도와주는 도구입니다. 이번 글에서는 Fabric을 사용하여 원격 서버의 SSH 접속 로그를 분석하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치

먼저 Fabric을 설치해야 합니다. 아래의 명령어를 사용하여 Fabric을 설치합니다.

pip install fabric

접속 로그 파일 다운로드

Fabric으로 원격 서버에 SSH 접속하여 접속 로그 파일을 다운로드해야 합니다. 접속 로그 파일은 일반적으로 /var/log/auth.log 경로에 위치합니다. Fabric을 사용하여 해당 파일을 다운로드할 수 있습니다.

from fabric import Connection

c = Connection('your-server-ip')
c.get('/var/log/auth.log', 'auth.log')

위의 코드에서 your-server-ip는 접속할 서버의 IP 주소로 변경해주어야 합니다. auth.log는 다운로드한 로그 파일을 저장할 로컬 경로입니다.

로그 분석하기

다운로드한 접속 로그 파일을 분석하여 원하는 정보를 추출할 수 있습니다. 예를 들어, 로그 파일에서 특정 사용자의 로그인 시간과 IP 주소를 출력하는 코드를 작성해보겠습니다.

import re

user = 'your-username'
log_file = 'auth.log'

with open(log_file, 'r') as f:
    for line in f:
        if re.search(fr'sshd.*Accepted.*{user}', line):
            login_time = re.findall(r'\w+\s+\d+\s+\d+:\d+:\d+', line)[0]
            ip_address = re.findall(r'\d+\.\d+\.\d+\.\d+', line)[0]
            print(f"{user} logged in at {login_time} from {ip_address}")

위의 코드에서 your-username은 분석할 사용자의 이름으로 변경해주어야 합니다. auth.log은 다운로드한 로그 파일의 경로입니다.

정규표현식을 사용하여 로그 파일에서 로그인 시간과 IP 주소를 추출합니다. 해당 정보를 표시하는 예시 코드이므로, 필요한 정보에 따라 코드를 수정할 수 있습니다.

결론

Fabric을 사용하여 원격 서버에 SSH로 접속하고, 접속 로그 파일을 다운로드하여 분석하는 방법에 대해 알아보았습니다. 이를 통해 서버의 접속 로그를 유용한 정보로 활용할 수 있습니다. 필요에 따라 코드를 수정하고 다양한 분석 기능을 추가하여 원하는 결과를 얻을 수 있습니다.

참고 자료