[파이썬] 리눅스 서버 감사 로그 관리 자동화

리눅스 서버의 감사 로그는 중요한 보안 정보와 시스템 활동 정보를 포함하고 있습니다. 이 로그들은 보안 검토, 문제 해결 및 일반적인 시스템 모니터링에 필요합니다. 그러나 로그 분석 및 관리는 수동으로 작업하면 많은 시간과 노력이 소요됩니다. 이에 대한 해결책으로 파이썬을 사용하여 리눅스 서버 감사 로그 관리 작업을 자동화할 수 있습니다.

필요한 라이브러리 설치

먼저, 파이썬에서 감사 로그를 처리할 수 있는 필요한 라이브러리를 설치해야 합니다. 대표적인 라이브러리인 paramikopandas를 설치해보도록 하겠습니다. 아래의 명령어를 이용해 라이브러리를 설치합니다.

pip install paramiko pandas

서버 접속 설정

감사 로그를 가져오기 위해서는 리눅스 서버에 접속해야 합니다. paramiko 라이브러리를 사용하여 SSH로 서버에 접속하도록 하겠습니다. 아래는 리눅스 서버에 연결하는 간단한 예제입니다.

import paramiko

def connect_to_server(hostname, username, password):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname, username=username, password=password)

    return ssh

# 사용 예시
ssh = connect_to_server('hostname', 'username', 'password')

감사 로그 가져오기

서버에 접속했다면, 이제 감사 로그를 가져오는 함수를 작성할 수 있습니다. 예를 들어, /var/log/audit/audit.log 경로에 있는 감사 로그 파일을 가져오는 함수를 작성해보도록 하겠습니다.

def get_audit_logs(ssh, log_file_path):
    sftp = ssh.open_sftp()
    remote_file = sftp.open(log_file_path)

    logs = []
    for line in remote_file:
        logs.append(line.strip())

    remote_file.close()
    sftp.close()

    return logs

# 사용 예시
audit_logs = get_audit_logs(ssh, '/var/log/audit/audit.log')

감사 로그 분석

감사 로그를 가져왔다면, 이제 가져온 로그를 분석하여 원하는 정보를 추출할 수 있습니다. pandas 라이브러리를 사용하여 감사 로그를 DataFrame 형태로 변환하고, 필요한 정보를 쉽게 추출할 수 있습니다.

import pandas as pd

def analyze_audit_logs(logs):
    df = pd.DataFrame(logs, columns=['log_line'])
    # 분석 및 필요한 정보 추출 코드 작성

    return df

# 사용 예시
audit_logs_df = analyze_audit_logs(audit_logs)

분석 결과 저장 및 알림

감사 로그를 분석한 후에는 결과를 저장하고 필요에 따라 알림을 보낼 수 있습니다. 예를 들어, pandasto_csv 메소드를 사용하여 분석 결과를 CSV 파일로 저장하고, 이를 이메일로 전송하는 함수를 작성해보도록 하겠습니다.

import smtplib
from email.mime.text import MIMEText

def save_and_send_results(df, email):
    # 분석 결과를 CSV 파일로 저장
    df.to_csv('audit_logs_analysis.csv', index=False)

    # 이메일 전송
    with open('audit_logs_analysis.csv', 'rb') as attachment:
        msg = MIMEText(attachment.read())
        msg['Subject'] = '감사 로그 분석 결과'
        msg['From'] = 'sender@example.com'
        msg['To'] = email

        smtp = smtplib.SMTP('smtp.gmail.com', 587)
        smtp.starttls()
        smtp.login('sender@example.com', 'password')
        smtp.send_message(msg)

        smtp.quit()

# 사용 예시
save_and_send_results(audit_logs_df, 'recipient@example.com')

이제 필요한 함수들을 생성하여 감사 로그 관리 작업을 자동화하였습니다. 이를 스케줄러나 이벤트 트리거와 연결하여 주기적으로 실행하거나 특정 이벤트가 발생했을 때 실행할 수 있습니다. 이를 통해 보안 검토 및 시스템 모니터링 작업이 자동화되어 효율적으로 관리할 수 있습니다.

이렇게 파이썬을 사용하여 리눅스 서버의 감사 로그 관리 작업을 자동화하는 방법에 대해 알아보았습니다. 파이썬을 활용하면 복잡한 작업도 간편하게 처리할 수 있으므로, 보안 및 시스템 관리 작업에 유용하게 활용할 수 있습니다.