SK shieldus Rookies/클라우드 기반 시스템 운영ㆍ구축 실무

Rsyslog 환경 구성 및 실습 (미완)

su. 2024. 1. 5. 10:27
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합보안 과정
클라우드기반 시스템 운영 구축 실무  #03

 

학습 내용


 

리눅스 로그 관리

 

rsyslog  개요

• rsyslogd 데몬이 동작하면서 로그를 기록한다.
• 데몬 동작은 /etc/rc.d/init.d/rsyslog라는 스크립트를 이용
• 환경 설정은 /etc/rsyslog.conf 파일을 통해서 제어

* 데몬: 백그라운드에서 돌아가는 프로세스

 

   
   
   
   
   

 

syslog/rsyslog

• 로그를 중앙 집중적으로 관리하는 패키지

    # 네트워크와는 관련 없이, 시스템적으로 중앙 집중적인 것이다.

    - rsyslogd 데몬은 /etc/rsyslog.conf 설정파일을 참조하여 로그를 남김
    - /etc/rsyslog.conf 파일에는“어디에서 로그가 생성이 되면 어디에 로그를 남겨라”설정

 

로그 중앙 집중 관리

 

[SplunkServer] - Power on

 

[WebServer]

gedit /etc/rsyslog.conf

 

/var/log

 

/etc/rsyslog.conf 파일 내용 구조

    [ facility].[priority]             [action]

❶ Facility
- 일종의 서비스를 의미, 메시지를 발생시키는 프로그램의 유형
❷ Priority
- 위험 정도를 나타냄, 설정한 수준보다 높아야 메시지를 보냄
❸ Action
- 메시지를 보낼 목적지나 행동들에 관한 설정으로 일반적으로 파일명을 적음

 

Facility 종류 (what)

 

Facility

 

Priority 종류 (심각수준,level)

 

Priority

 

Action 종류(where)

Action

 

예시

❶ *.=crit;kern.none /var/log/critical

    ➞ 모든 facility가 발생하는 메시지 중에 crit 수준의 메시지만 /var/log/critical에 기록
    ➞ 커널이 발생하는 메시지는 제외
❷ *.emerg *
     ➞ 모든 emerg 수준 이상의 문제가 발생하면 모든 사용자에게 메시지를 전달
❸ authpriv.* root,gildong
     ➞ 인증 관련 로그를 root 및 gildong 사용자의 터미널로 전송
❹ mail.*;mail.!=info /var/log/maillog
     ➞ mail 관련한 모든 정보는 /var/log/maillog에 기록하는데, info 수준의 로그는 제외

 

 

 

Rsyslog 환경 구성

클라이언트의 로그가 서버에게 들어가도록 환경을 설정한다.

1) [SplunkServer - Ubuntu]  rsyslog 서버 설치

2) [ZeekIDS - Ubuntu] rsyslog 클라이언트 설치

3) [WebServer - CentOS] rsyslog 클라이언트 설치

4) [Sysmon - Win10] rsyslog 클라이언트 설치

 

1) [SplunkServer - Ubuntu]  rsyslog 서버 설치

sudo su - root

 

❶  rsyslog 설치 확인 (리눅스는 기본 설치 되어있다)

# 데미안 패키지 내 확인 명령어 

dpkg -l *rsyslog*

# 없는 경우 설치

apt-get install –y rsyslog

 

환경 설정

nano /etc/rsyslog.conf

rsyslog가 udp/tcp를 모두 수신하도록, 주석이 있다면 지워준다.

 

 

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.*?remote-incoming-logs

%HOSTNAME% : 클라이언트 호스트

%PROGRAMNAME% : 로그를 저장할 파일명

 

마지막 줄에 작성. 외부에서 들어오는(우리 망에 대한) 로그를 어디에 저장할지 설정한다.

$template remote-incoming-logs,"/var/log/192.168.10.0/client.log" 
*.*?remote-incoming-logs

 

 

방화벽 활성화 (방화벽은 서버만)
ufw allow 514/tcp

ufw allow 514/udp

ufw reload

# 위에서 오류 날 경우 ufw enable

service ufw status

 

ufw status

 

❹ 서비스 활성화
systemctl restart rsyslog
systemctl status rsyslog

 

 

생성된 로그 디렉터리와 로그 확인 (클라이언트 세팅 이후)
cd /var/log/192.168.10.0

pwd

ls

tail client.log

# 특정 클라이언트의 로그 확인

cat client.log | grep zeekids

언제 / 몇 시에 / 누구로부터 / 어떤 프로세스에 의해 / 설명

 

 

 

2) [ZeekIDS - Ubuntu] rsyslog 클라이언트 설치

sudo su - root

 

rsyslog 설치 확인 (기본 설치 되어있다)

dpkg -l *rsyslog*

# 없는 경우 설치

apt-get install –y rsyslog


 환경 설정

nano /etc/rsyslog.conf

    *.* @@192.168.10.10:514    ➞ TCP

    *.* @192.168.10.10:514       ➞ UDP

•  시스템에서 발생하는 모든 종류의 로그를 192.168.10.10:514로 TCP/UDP를 이용해 전송한다.

•  서버는 모두 개방하지만, 클라이언트 측은 목적에 따라 둘 중 하나를 선택해서 설정해도 된다.

    - 꼭 보내야 하는 경우 TCP

    - 꼭 그렇진 않은 경우 UDP

 

 

서비스 활성화
systemctl restart rsyslog
systemctl status rsyslog

 

 

 

 

3) [WebServer - CentOS] rsyslog 클라이언트 설치

su - root

 

rsyslog 프로그램 설치 확인

rpm –qa | grep rsyslog

# 없다면 설치해준다

apt-get install –y rsyslog

 

 

환경 설정

gedit /etc/rsyslog.conf

아래에 다음 추가

*.* @@192.168.10.10:514

 

 

서비스 활성화

systemctl restart rsyslog

systemctl status rsyslog

 

 

 

 

+) hostname 확인 및 설정

hostname이 설정되지 않아 localhost로 뜨는 경우, 설정해주어 서버에서 구분할 수 있게 한다

# hostname 확인

hostname

# 변경 설정

hostnamectl set-hostname WebServer

➞ 재 로그인 후 다시 열었을 때 설정이 완료된 것을 확인할 수 있다.

➞ 이 방법에서는 대소문자를 구분하지 않는 것으로 보인다.

 

 

 

 

+) Rsyslog 룰 생성 과제

① 수집할 로그 rule 생성
② 생성된 rule이 적용되는지 이벤트 발생

③ 로그 화면 캡쳐
- 실습 과정 화면 캡쳐 및 설명

 

[ZeekIDS - Client_Ubuntu]

sudo su - root

 

① 수집할 로그 rule 생성

nano /etc/syslog.conf

# 아래 코드 수정

*.* @@192.168.10.10:514

authpriv.notice @@192.168.10.10.:514

# 인증 관련 유형이 발생한 경우, 특별한 주의가 필요하나 에러는 아닌 메시지 수준의 로그를 전달한다.

 

 

systemctl restart rsyslog

 

② 생성된 rule이 적용되는지 이벤트 발생

로그인 실패 5회 후 로그인 성공을 수행한다.

 

 

 

[SplunkServer - Server_Ubuntu]

root@splunk:/var/log/192.168.10.0# cat client.log | grep zeekids

# 로그인 실패 로그 5개, 로그인 성공 로그 1개가 확인된다.

 

 

 

4) [Sysmon - Win10] rsyslog 클라이언트 설치

< 윈도우 로그 포스팅 추가 >