카테고리 없음 / / 2025. 5. 13. 14:43

방화벽 시스로그(Firewall Syslog) 수집기 #1 - 우분투 서버로 로그 수집(Feat. BlueMaxNGF)

방화벽 시스로그(Firewall Syslog) 수집기 #1 - 우분투 서버로 로그 수집(Feat. BlueMaxNGF)

 

아무리 단순한 어플리케이션을 만들었다고 해도 이 어플리케이션을 서버에 올려서 서비스를 하는 순간부터는 로그에 의존할 수 밖에 없다. (따로 모니터링이 되지 않는 이상) 그 만큼 로그는 운영되고 있는 시스템에 아주 중요한 요소이다.

기업의 규모에 따라 차이가 있을 수 있겠지만 사내에서 사용하는 내부망(내부 네트워크)이나 외부망(외부 네트워크 - 인터넷) 등 으로 구분해서 사용하는 경우가 대부분이다. 따라서 통신을 하기 위해서 여러개의 Layer 장비가 있고 각각의 Layer가 계층적으로 네트워크를 구성하며 연결되어 있을 것이다. 

그렇다면 해당하는 레어어마다 각각의 로그들이 생길 것이고, 이 로그들을 토대로 누가 어떤 요청을 보냈고 어떤 오류가 발생했는지 어떤 설정이 변경됐는지 등의 많은 데이터가 각각의 시스템에 발생하게 되었을 때 어떻게 처리를 하고 관리를 해야될까 ? 이 질문에 대한 대답으로 방화벽과 같은 L4 장비나 라우터 등의 L3 장비(지원하지 않는 라우터도 있음)에선 syslog라는 표준화된 프로토콜을 제공한다. (RFC 5424)

 

🧩 syslog란 ?

 

syslog(System Logging Protocol)는 운영체제, 네트워크 장비, 애플리케이션 등에서 발생하는 로그 메시지를 중앙 서버로 전송하고 관리할 수 있게 도와주는 표준화된 프로토콜입니다.

가장 흔히 접하는 형태는 리눅스에서의 /var/log/syslog, 또는 /var/log/messages와 같은 파일이죠. 하지만 syslog는 단순한 텍스트 로그 이상입니다. 이를 네트워크로 전송하고, 우선순위를 지정하고, 필터링하고, 다른 시스템과 연동할 수 있습니다.

 

 

그러면 syslog를 사용하면 가질 수 있는 장점은 무엇이 있나 ?

 

  1. 중앙 집중형 로그 수집
  2. 실시간 감시와 자동화된 대응 가능
  3. 보안 감사와 추적에 최적화
  4. 표준화된 로그 포맷
  5. 네트워크 전반의 로그 통합

 

위와 같이 여러 이점이 있지만 처음에 로그 관리에 대한 의문과 연관되게 syslog는 중앙 집중형 로그 수집을 할 수 있다. 이 말은 여러대의 장비로 이루어진 네트워크에 모든 로그를 한 곳으로 모을 수 있다는 말이다. 각각의 시스템에서 발생한 로그를 중앙에서 통합적으로 처리할 수 있다.

 

 

🔍 syslog와 Wireshark ?

 

syslog와 wireshark가 유사하지 않은가 ? 라는 생각이 들었다. wireshark 또한 프로토콜(TCP, UDP, HTTP) 등의 네트워크 레벨의 패킷을 캡쳐한다. npcap과 같은 패킷 분석 소프트웨어를 통해서 캡쳐한 패킷들을 서버에서 가공해서 하나의 서비스로 제공할 수도 있다. 따라서 syslog와 wireshark의 특징과 차이점을 비교했다.

 

비교 항목 syslog Wireshark
분석 대상 로그 메시지 (시스템/애플리케이션 레벨) 패킷 (네트워크 레벨)
주요 용도 문제 진단, 보안 감사, 로그 수집 프로토콜 분석, 네트워크 트래픽 조사
실시간 수신 가능 (rsyslog, syslog-ng 등) 수동 캡처
데이터의 의미 누가 언제 무엇을 했는지 어떤 데이터가 오갔는지

 

 

이 syslog를 통해서 방화벽에서 발생한 로그 중에서도 정책 정보나 블랙리스트 정보를 주로 수집하고 관리할 것이다.

 

 


* 방화벽에서 syslog 발생 시키기

현 회사에 다수의 방화벽이 있지만 인터넷과 가장 앞선에 연결되어 있는 방화벽은 SECUI 사의 BlueMax이다. 이 방화벽에서 syslog를 설정할 것이다.

 

SECUI 방화벽 관리 화면

 

로그인하면 해당 메뉴에서 syslog를 수신하는 서버와 포트, 데이터 포맷을 설정할 수 있다.

 

추가로 로그 설정 메뉴에서 어떤 로그를 받을지에 대한 설정이 가능하다.

 


syslog 설정이 끝났다면 우분투 서버에서 로그를 수신하는 설정을 해주어야 한다. 여기서 rsyslog를 사용할건데 Ubuntu는 기본적으로 rsyslog가 설치되어 있다. 없다면 각 os의 install을 통해서 설치하도록 하자.

sudo apt update
sudo apt install rsyslog



rsyslog가 제대로 동작하고 있는지 확인하기 위해 service 또는 systemctl로 확인

systemctl status rsyslog.service



install을 하게되면 rsyslog의 설정 파일을 수정해야 한다.

# etc/rsyslog.conf

# 방화벽에서 오는 로그를 별도 로그 파일로 저장
if ($fromhost-ip == '수집하려는 서버 IP') then /var/log/firewall.log
& stop

...

module(load="imudp")        # UDP 모듈 로드
input(type="imudp" port="514")  # 포트 열기

...

 

tcp를 사용해도 되지만 syslog의 특성상 실시간으로 데이터를 전송하기 때문에 UDP를 기본적으로 사용한다.


설정이 끝나면 rsyslog 서비스 재시작

systemctl restart rsyslog



만약 514 포트가 닫혀있다면 열어줘야 함.

firewall-cmd --list-all
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload



로그 파일이 저장되는지 확인

tail -f /var/log/firewall.log

 

 

수집한 syslog

 

{
    "timestamp": "date",
    "tag": "string",
    "start_time": "date",
    "end_time": "date",
    "duration": "number",
    "machine_name": "string",
    "fw_rule_id": "number",
    "fw_rule_name": "string",
    "nat_rule_id": "number",
    "nat_rule_name": "string",
    "src_ip": "string",
    "user_id": "string",
    "src_port": "number",
    "dst_ip": "string",
    "dst_port": "number",
    "protocol": "number",
    "app_name": "string",
    "app_protocol": "string",
    "app_category": "string",
    "app_saas": "string",
    "ingres_if": "string",
    "input_interface": "string",
    "packets_forward": "number",
    "packets_backward": "number",
    "bytes_forward": "number",
    "bytes_backward": "number",
    "packets_total": "number",
    "bytes_total": "number",
    "fragment_info": "string",
    "flag_record": "string",
    "terminate_reason": "string",
    "is_ssl": "string",
    "is_sslvpn": "string",
    "host": "string",
    "src_country": "string",
    "dst_country": "string"
}

수집된 로그를 json 데이터 포맷으로 변경하면 이런 구조이다.

 


여기까지 실제 방화벽에서 로그 수집 서버로 syslog를 전달하고 파일로 저장하는 것까지 확인했다. 다음은 수집한 로그를 서버에서 가공해서 DB에 저장하는 작업을 할 것이다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유