[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
/etc/rsyslog.conf 파일 내용 구조
[ facility].[priority] [action]
❶ Facility
- 일종의 서비스를 의미, 메시지를 발생시키는 프로그램의 유형
❷ Priority
- 위험 정도를 나타냄, 설정한 수준보다 높아야 메시지를 보냄
❸ Action
- 메시지를 보낼 목적지나 행동들에 관한 설정으로 일반적으로 파일명을 적음
Facility 종류 (what)
Priority 종류 (심각수준,level)
Action 종류(where)
예시
❶ *.=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
❹ 서비스 활성화
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 클라이언트 설치
< 윈도우 로그 포스팅 추가 >
'SK shieldus Rookies > 클라우드 기반 시스템 운영ㆍ구축 실무' 카테고리의 다른 글
[SK shieldus Rookies 16기] Zeek 환경 구성 (0) | 2024.01.09 |
---|---|
Web 구조, HTTP 메시지 구조 (미완) (0) | 2024.01.09 |
[SK shieldus Rookies 16기] HTTPS 구성 실습 (0) | 2024.01.08 |
[SK shieldus Rookies 16기] 대칭키/비대칭키 암호화, 공개 키 기반 구조(PKI) (0) | 2024.01.05 |
실습 환경 구성 1 - 가상머신 생성 & 설정 (미완) (0) | 2024.01.05 |