이제부터 학원에서 배우는 내용을 복습도 할 겸 직접 포스팅하며 정리해 볼까 합니다.
일일이 이미지 캡쳐하며 작성하자니 시간도 많이 걸리고 만만치 않군요. ^^;;
첫 순서로 리눅스에서 간단하게 원격 로그 서버 구축하는 방법에 대해 올립니다.
리눅스에서 로그 정보는 /var/log 디렉토리 안에 messages, cron, maillog 등의 파일로 저장됩니다.
그런데 외부에서 리눅스 시스템에 크래커가 침입했을 경우 이들은 할 거 다 한 뒤에 자신의 침입 정보를 고스란히 담고 있는 로그 파일들을 삭제하고 유유히 빠져 나갑니다.
이렇게 되면 크래커를 적발했다고 하더라도 심증만 있을 뿐 침입 정보를 담고 있는 로그 파일이 로컬 시스템 내에 삭제되고 남아 있지 않기 때문에 물증을 제대로 확보하지 못하는 불상사가 발생하게 됩니다.
필드에서는 당연히 위처럼 허술하게 로그 파일을 관리하지 않죠. 원격 로그 서버란 것을 두어 로컬에서 생성되는 로그 파일들을 실시간으로 전송받아 저장합니다. 이러면 로컬 서버에서 크래커에 의해 로그 정보가 삭제되었다고 하더라도 원격 로그 서버에 이미 모두 전송이 된 상태이기 때문에 크래커는 빼도 박도 못하겠죠. ^^
원격 로그 서버를 한 번 구축해 보도록 하겠습니다.
저는 vmware를 이용하여 두 대의 가상 머신을 생성, 둘 다 페도라코어4를 설치해 보았습니다.
한 대의 리눅스머신을 원격 로그 서버로 세팅하고 다른 하나의 서버에서 생성되는 로그 정보가 원격 로그 서버로 전송되게끔 세팅합니다.
가장 먼저 해 주어야 할 작업은 두 시스템의 시간을 정확히 맞게 설정하는 것입니다. 실시간으로 로그 정보가 원격으로 전송되어야 하기 때문에 시간을 일치시키는 작업은 매우 중요합니다.
일단 date 명령어를 입력하여 시간이 현재 시간과 맞지 않다면 rdate 명령어를 이용하여 바로 잡아 주면 됩니다.
[root@work ~]# rdate -s time.bora.net
두 시스템 모두 위 명령어를 입력하여 보라넷 타임 서버와 시간을 동기화해 주면 됩니다.
시스템을 매번 부팅할 때마다 타임 서버와 시간을 동기화해주는 방법은 알고들 계실 겁니다.
/etc/rc.d/rc.local 파일을 수정해 주면 됩니다. vi 편집기로 열어서
rdate -s time.bora.net
위 내용을 한 줄 추가해 주면 됩니다.
이제 시간 설정을 마쳤습니다. 본격적으로 원격 로그 서버 구축 작업에 들어가 봅시다.
원격 로그 서버로 쓸 컴퓨터를 봅시다. 이 컴퓨터의 호스트명을 저는 work로 설정해 보았습니다. 프롬프트 보고 헷갈리지 마시길...
일단 로그 서버가 항상 로그 정보를 받을 수 있는 상태가 되어 있는지 확인해 봐야 합니다.
[root@work ~]# service syslog status

그러면 잘 작동하고 있다고 나옵니다.
다음으로 아래와 같이 입력해 봅시다.
[root@work ~]# netstat -nulp

netstat 명령어는 라우팅 테이블 및 네트워크 연결상태를 확인하는 명령어입니다. 해당 서비스를 열었을 때 해당 포트가 열려 있는지 닫혀 있는지 확인해 볼 때 사용하는 명령어죠.
service 데몬을 start 시킨 다음 가장 먼저 해봐야 할 것은 포트의 개폐 여부입니다.
netstat 명령어에 -nulp 옵션을 주고 입력했더니 udp 포트를 사용하는 현재 구동 중인 서비스 리스트가 나옵니다.
service syslog status 명령어로 syslogd 데몬이 작동하고 있다고 나오더라도 netstat -nulp 명령어로 리스트를 보면 처음에는 나오지 않습니다.
아래 파일을 vi 편집기로 엽니다.
[root@work ~]# vi /etc/sysconfig/syslog

6행을 보시면 SYSLOGD_OPTION="-m 0" 라고 나옵니다. 아래와 같이 변경해 줍니다.
SYSLOGD_OPTIONS="-m 0 -r"
상단의 주석 부분을 보면 아시겠지만 -r 옵션은 원격 머신으로부터 로깅을 활성화시키는 옵션입니다.
수정한 뒤 저장하고 편집기에서 빠져나옵니다.
다음으로 syslog 데몬을 리스타트하고 netstat 명령어로 확인해 봅니다.
[root@serv ~]# service syslog restart
[root@serv ~]# netstat -nulp

이제 syslogd 서비스가 보이죠? 원격 로그 서버 설정은 이것으로 끝났습니다.
이제 원격 로그 서버로 로그 정보를 전송할 다른 서버를 조금 만져주면 됩니다.
다른 컴으로 넘어옵니다. 이 컴의 호스트명은 serv 라고 해 보았습니다.
아래와 같이 입력합니다.
[root@serv ~]# vi /etc/syslog.conf

각종 로그 정보가 저장되는 위치를 이 파일에서 설정할 수 있습니다.
원격 로그 서버로 전송하려면 원격 서버 IP 정보를 입력해 주면 됩니다.
메일 관련 로그를 원격 서버인 work에 저장되도록 해 보겠습니다.
13행을 아래와 같이 수정하면 되겠죠. 참고로 work의 IP 주소는 여기선 192.168.10.130 입니다.

다음은 응용을 좀 해볼까요? 모든 서비스와 관련된 로그 정보를 원격 로그 서버로 다 받아보고 싶다면 어떻게 해야 할까요?

위와 같이 설정하면 되겠죠. 어느 행에 넣어 두든지 상관 없습니다. 위 내용도 저는 추가해 보았습니다.
파일을 수정하였으면 데몬을 리스타트합니다.

자, 그럼 원격 로그 서버로 제대로 정보가 전송되는지 확인해 봅시다. 아까 메일 관련 로그 설정을 건드렸으니 serv에서 메일 전송 작업을 해서 원격 로그 서버인 work에서 serv 의 메일 전송 작업 기록이 담긴 로그를 확인해 보도록 하겠습니다. 여기서 다시 중요한 것!!! 두 서버의 시간이 잘 맞추어져 있는지 확인하기 바랍니다.
센드메일 서비스가 제대로 작동하고 있는지 확인부터 해 보겠습니다. 센드메일은 25번 tcp 포트를 사용합니다.

LISTEN 상태로 포트가 제대로 열려 있습니다. 메일 서비스가 이상없이 작동하고 있습니다.
메일 테스트를 해 볼 계정을 하나 준비해야겠죠. 저는 mailtest라는 계정을 생성해 보았습니다.

메일 전송을 해 봅니다.

이제 원격 로그 서버인 work로 가서 로그를 확인해 봅시다.
[root@work ~]# tail /var/log/maillog

serv에서 했던 작업 내용이 나와 있죠? ^^