본문 바로가기

Server/Linux

IPS 장비 로그를 Linux 서버에서 받는 방법

OS : RockyLinux 8

보안장비 : AIPS장비

 

ips장비 로그를 snmp trap을 사용해서 받아오고 싶었는데 계속 실패해서 syslog로 받기로 했다..

 

1. Linux에서 rsyslog conf파일 수정

conf 파일에 내용 추가
# vi /etc/rsyslog.conf

# IPS 장비에서 오는 로그를 수신하기 위한 설정
# tcp 수신 설정
module(load="imtcp") # TCP 모듈 로드
input(type="imtcp" port="514") # TCP 포트 514 수신
$template IPSLogFormat,"/var/log/zabbix/ips.log"
# Action to forward logs from the IPS device
action(type="omfwd"
Target="10.10.30.36"       # IPS 장비의 IP
Port="514"                 # 기본 syslog 포트 (필요 시 변경)
Protocol="tcp"             # TCP를 사용하여 신뢰할 수 있는 전달
queue.filename="ipsQueue"  # 큐 파일 이름
queue.maxdiskspace="1g"    # 디스크 공간 한도
queue.saveonshutdown="on"   # 종료 시 메시지를 디스크에 저장
queue.type="LinkedList"     # 비동기 실행
action.resumeRetryCount="-1" # 호스트가 다운될 때 무한 재시도
# 특정 IP에서 로그 수신
if ($fromhost-ip == '10.10.30.36') then ?IPSLogFormat
& stop

 

2. 방화벽 설정

firewall-cmd --zone=public --add-port=514/tcp --permanent
firewall-cmd --reload

 

3. IPS장비 접속 

로그 서버 > 로그 받을 서버 IP주소 입력 > 514 tcp 등록

 

4. rsyslog 서비스 재시작

# systemctl restart rsyslog.service

 

해당 경로로 들어가서 로그가 쌓인 것을 확인 할 수 있다!

ips 장비 로그 정상적으로 수신되는 모습
SQL Injection 공격 관련해서 탐지/차단룰 설정한 것도 로그로 다 받아오는 것을 확인

 

 

근데 로그가 너무 많이 쌓여서 매일매일 로그 정리해주는 스크립트를 만들어서 사용중이다..


자동 삭제 스크립트

이 스크립트는 매일 실행되며 파일 크기가 일정 수준을 넘으면 오래된 로그를 삭제하도록 구성

#!/bin/bash

# 로그 파일 경로 설정
LOG_FILE="/var/log/zabbix/ips.log"

# 파일 크기 한도 (MB 단위) - 5000MB 초과 시 절반 삭제
MAX_SIZE=5000

# 현재 파일 크기(MB 단위) 계산
CURRENT_SIZE=$(du -m "$LOG_FILE" | cut -f1)

# 파일이 설정한 최대 크기보다 큰 경우 절반 삭제
if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; then
    echo "$(date) - $LOG_FILE 파일이 $CURRENT_SIZE MB 입니다. 오래된 로그 절반을 삭제합니다." >> /var/log/zabbix/ips_cleanup.log

    # 로그 파일의 절반을 남기고 나머지 삭제
    LINE_COUNT=$(wc -l < "$LOG_FILE")
    HALF_LINES=$((LINE_COUNT / 2))

    # 오래된 절반 로그 삭제
    tail -n "$HALF_LINES" "$LOG_FILE" > "$LOG_FILE.tmp" && mv "$LOG_FILE.tmp" "$LOG_FILE"

    echo "$(date) - 오래된 로그 절반 삭제 완료." >> /var/log/zabbix/ips_cleanup.log
else
    echo "$(date) - $LOG_FILE 파일 크기 $CURRENT_SIZE MB, 삭제 필요 없음." >> /var/log/zabbix/ips_cleanup.log
fi

 

현재 로그 파일의 크기가 4MB로, 설정한 최대 크기인 5000MB를 초과하지 않기 때문에 삭제 작업이 수행되지 않은 모습