Rsyslog를 통한 원격 로그 구축
서버운영이나 IT or 네트워크 인프라운영에서 syslog는 매우 중요한 역활을 하게된다.
서버가 침해당했거나, 서비스가 중단되는 상황에서 원인을 분석하기위해서는 log가 꼭 필요하다.
하지만 모종의 이유로 로그가 삭제되거나 침해된 상황일경우 해커는 침입한 흔적을 없애기 위해 로그를 삭제하게 된다(심한경우는 예를들어 예전에 2018년에 집에서 PBX운영한다고 라즈베리파이에 공인IP를 활당해서 2시간정도 운영했는데 그 사이에 외부에서 brute-force공격으로 ssh로그인을 해서 시스템에서 데이터를 탈취하고 중요파일들을 삭제해버리는 바람에 재설치를 하게 엿을 먹이는 경우도 겪어봤다..)
서버를 운영해봤다면 알것이다. ssh포트를 open하면 하루에 10개가넘는 bruteforce공격이 시도된다. 중국,러시아쪽에서 심지어 한국에서도
물론 침해를 방지하려면 로그파일을 잘 유지하는것보다는 외부의 접근을 방어하는것이 우선시되어야 한다.
Rsyslog란 무엇인가? Rsyslog는 위에서 설명한 Syslog를 원격지 로그저장서버에 전송하므로서 Syslog client 장치의 원본 로그가 삭제되더라도 Syslog server에서는 보존된다.
원격 Syslog사용 예시
- IT기업에서 여러대의 서버 log를 통합적으로 관리하기 위해 syslog서버 사용
(대부분 syslog뿐만 아니라 ELK Stack등을 이용해 시각적으로 로그를 관리하기도 한다.
2. isp에서 다수의 NW장비의 로그를 한서버에 수집하여 통합관리하기 위해서
Rsyslog서버 구성(데비안 계열 리눅스)
$ vi /etc/rsyslog.conf (vi에디터로 rsyslog config file open)
ModLoad imudp 주석제거
UDPServerRun 514 주석제거
$ sudo service rsyslog restart
필자의경우 syslog서버를 host os직접 구축한게아니라 도커컨테이너 형식으로 구축했다.
참고로 흔히 오해하는게 도커로 어떠한 서비스를 구동시키면 외부에서 웹셀등을 통해 접근해도 host os에 접근이 불가하니 도커를 보안 수단으로 사용하는경우도 많은데 과연 도커를 사용하는게 완벽한 해킹방어 수단이라고 할수있을지는 모르겠다. 예전에 특정이미지에서 Docker escape 취약점이 발견이 된적이있다.
Rsyslog 원격 로깅 구성
$ vi /etc/rsyslog.conf
*.* @@serverip:514 (추가작성)
Note__ *.*은 전체로그를 syslog서버에 전송핱다는것을 의미한다.특정중요도의 로그만 보내려면 <log priority>.* 으로 수정하면 된다.
$sudo service rsyslog restart
네트워크 장비의경우 syslog명령어로 추가하면 된다.(벤더별로 명령어가 틀려서... 필자의경우 단지 패킷트레이서로 연습한거라 벤더별 명령어 매뉴얼을 참고해야한다)
Rsyslog는 syslog를 원격 중앙에서 관리하는것이고 서비스에대한 로그(예를들어 nginx같은 웹서버등)를 관리하는것은 elk를 사용하는게 효율적이라고 생각한다.