소소한 IT이야기/클라우드

[Linux_30] 원격 로그(rsyslog)서버 구축 (feat. CentOS 9)

Klaus 2023. 2. 10. 17:00

1. 원격 로그서버(rsyslog) 구성

- 로그 기록은 로컬 서버에 저장되지만, 여러 서버를 관리하는 관리자 측에서 생각하면 여러 서버의 로그 기록을 한 곳에서 관리하는 목적

- 악의적으로 서버에 접근하고 기록을 삭제하는 등의 행위를 하였을 경우 로컬이 아닌 백업용(A-A)으로 구성을 하는 것이 좋다.

 

[+] rsyslog 구성

- 로그 서버 구성 (CentOS_9_13)

- 로그 클라이언트 구성(Ubuntu)

 

[+] 로그서버 설치 (rsyslog install)

> Centos의 경우 기본으로 설치되어 있다.

dnf -y install rsyslog

 

[+] 설정파일 수정 (/etc/rsyslog.conf)

- rsyslog는 UDP 514를 사용하여 전송을 수신받습니다.

> UDP의 경우 TCP보다 전송속도가 빠르다는 장점이 있지만 신뢰성을 보장하지 않습니다.

- 로그 기록

> vim /etc/rsyslog.conf 수정
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

<!-- 추가로 로그가 기록될 장소를 기입 -->
$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log"

 

[+] 방화벽 설정 및 보안 설정

firewall-cmd --permanent --zone=public --add-service=rsyslog --add-port=514/udp
firewall-cmd --reload

 

[+] rsyslog 확인 및 재시작

chkconfig rsyslog on && service rsyslog restart

[+] 소켓 확인

netstat -tulpn | grep rsyslog

 

[+] rsyslog 트래픽 허용

- semanage 명령을 하였을 때 아래와 같은 에러가 발생한다면, semanage를 설치

semanage port -a -t syslogd_port_t -p udp 514
semanage port -a -t syslogd_port_t -p tcp 514

 

 

2.  클라이언트 서버 설정

[+] 설정파일 수정

- etc/rsyslog.conf파일 수정 (맨 아래 임의로 추가)

모든 파일(*.*)을 설정하였으나, (OR *.warn;mail.none;authpriv.*;cron.none)으로 원하는 로그만 지정 가능
*.* @@192.168.100.13:514

 

[+] 포트 추가 및 확인

iptables -I INPUT -p udp --dport 514 -j ACCEPT
iptables -I OUTPUT -p udp --sport 514 -j ACCEPT
netstat -na | grep -i udp 

 

3. 테스트

[+] 클라이언트 서버에서 여러 로그가 남을 작업 진행

- nmap install, ssh login 등등 작업을 진행

- 로그파일이 centos에 있는 것을 확인할 수 있다.