본문 바로가기

Computer Engineering/LINUX

LINUX#2-Log Service

cd /var/log 에 들어가면 messages 라는 파일을 확인 할 수 있다.

여기가 가장 중요한 기록이 남는 곳이다.

예를 들어 DNS 와 관련된 기록을 보려면

# cat messages | grep DNS


해킹을 당했을 때 추적시에도 로그 파일을 확인하면 알 수 있다.

여기에서 기록이 없다면 서버를 제대로 운영을 할 수 없고, 찾아 낼 수 없을 것이다.

그래서 관리자는 로그파일을 제대로 관리해 주어야 될 것이다.

관리자가 서버를 따로 만들어서 각종 장비에 대한 내용을 한 쪽으로 넘겨줄 수 있다.

농협의 로그서버에는 기록이 남아 있을 것이다. 만약에 해킹을 당했는데 로그 조차 안남았으면

복구에 어려움을 얻을 것이다. 그것을 조금이라도 파악하기 위해서는 ... 로그 서버를 보니까

북한발 IP가 있다는 것. 해커들의 기본은 다른 IP를 경유해서 가기 때문에 ... 

그 만큼 로그 남기는 것이 중요한 것이라고 본다.

#pgrep -lf syslogd
// 이것을 통해서 syslog 를 확인할 수 있다.

#cd /etc 로 이동을 하면 syslog.conf 파일을 확인 할 수 있다.

중요한 파일이므로 syslog.conf 를 백업을 받아두다.

# cat /etc/syslog.conf
// 두 가지 필드가 보인다. 왼쪽 : selector , 오른쪽 : action 

이 두가지가 무엇일까?? 그 전에 로그서버가 로그를 만드는 것에 대해서 알아보자.

syslogd => d 가 붙어 있다는것은 server 라는 것이다. 이 syslogd 가 중요!!

selector 는 facility,level 로 나누어 진다.
=> facility ( 메세지 발생 who? ) , level ( 심각한 정도 ex> crit )

facility 는 크게 4가지로 나눌 수 있다.  
1.Kernel => ex ) Kernel panic (부팅안될시에 발생하는 메세지)
2.서비스
3.User Process => test.c 컴파일 시에 성공이나 에러시
 즉 구동자체에 발생하는 메세지는 user process가 메세지를 발생시켰다고 말하는 것이다.
4. log => 단순한 명령어 자체가 기록을 남길 수 있다.
log 서버 설정 후에 자신이 직접 확인을 하는 명령어. 즉,테스트하는 명령어

level 단계 ) Emergency >> Critical ... > warn > error > notice > info

syslogd 은 위의 메세지를 버리면 안된다. 어디에든 기록을 해야 된다. 메세지가 발생되면 관리자에게 메일을 보내던지 파일을 만들던지 해야된다. 이런 것을 처리하는 것이 syslogd 에서 action 에서 처리를 한다.

action 의 종류
1.Console 에서 바로 뿌려주기 : tty1, tty2 이런 식
2.file 로 남기는 것 : 영구적으로
3.특정계정에게만 메세지를 보여주는 것!!
4.다른 log 서버로 중계 : 다른 log 가 동작하고 있는 서버에 기존의 log를 전달

발생된 메세지를 수집해서 처리하는 것이다.

Kernel 이 메세지를 발생시키는 경우는 Klogd 가 받는다. 받은 klogd는 syslogd로 전달을 한다.
Kernel이 발생시킨 메세지를 제외한 나머지는 바로 syslogd로 올린다.

다른 서버로 전달하는 이유?? log 서버로만 사용해주기 위해서. 해커가 로그 파일을 지우고 나가면 관리자는 어떻게 해킹을 했는지 모르면 또 해킹을 당할 우려도 있고 실력이 있는 해커라면 흔적을 안남긴다. 관리자는 시스템이 해킹당했는지도 모른다. 그리고 모든 장비의 로그를 일일이 보기는 힘들다. 중계를 할 때에 A log, B log, .... 이런식으로 나누어서 구분시켜 둔 뒤 한대의 로그서버를 나두면 모든 로그를 로그서버로 보낸다. 그리고 해커가 로그를 삭제하려고 해도 다른 곳에 로그가 남는다. 흔적을 지우려면 로그서버까지 막아야 한다. 보안상으로도 안전을 높이기 위해 농협의 경우에도 한 쪽으로 몰아준 것이다. 그래서 시스템 해킹시에도 로그파일을 분석해서 알아보는 것이다.

이렇게 하려면 서로 통신이 되어야지 로그를 주고 받을 수 있을 것이다. 실습에서는 Master, Slave 와 같은 환경이 필요하다.

*********** vi 편집기에서 tab 인지 빈 칸인지 보는 것은 set list 를 치면 확인 할 수 있다. tab 의 경우에는 ^| 로 확인 가능  ***********
#logger -p daemon.info test message
//여러번 반복해 본다.

#tail -5 /var/log/messages
// 이렇게 확인하면 같은 메세지인 경우는 계속해서 나오는 것이 아니라 한 번만 보여준뒤  나중에 몇 번 반복되었다는 창을 보여준다.

#logger 12345
// 디폴트 값은 => # logger -p user.notice 12345 !!

# logger -p daemon.info -t TAG                //이렇게 태그를 붙일 수 있다.

# logger -p user.emerg test                     // emerg 는 모든 사용자에게 메세지를 보여준다.

# logger -p authpriv.notice "LOGIN FAIL" // /var/log/secure 에 남겨진다.

-메세지를 다른 서버로 보내기-

@SERVER
# logger -p  user.notice "REMOTE TEST"
// 
"REMOTE TEST"를 Jack2 에서 확인하려고 한다.
 

먼저 @Server 에서 # vi /etc/syslog.conf 
맨 아래 줄에 user.=notice         @Jack2 를 추가시켜준다.

여기서 문제가 생겼다!! 해당 클라이언트의 이름이 Jack2 라고 보여서 적었는데
# cat /etc/hosts 를 확인하니까 Jack2에 해당하는 IP 의 이름이 centOs2 라고 적혀있었다.
이러니까 통신이 안되지.... 그래서 # vi /etc/hosts 에 centOs2 => Jack2 라고 변경

그리고 변경된 뒤에는 양쪽에서 # service syslog restart

다시 
# logger -p  user.notice "REMOTE TEST"
이제 @Jack2
# tail -1 /var/log/messages
//REMOTE TEST를 확인할 수 있다.


























 

'Computer Engineering > LINUX' 카테고리의 다른 글

LINUX#2 - Apache  (0) 2011.07.27
LINUX#2 - Logrotate  (0) 2011.07.26
LINUX#2 - DNS(Slave)  (0) 2011.07.21
[LINUX] 연습문제2  (0) 2011.06.21
[LINUX] 연습문제1  (0) 2011.06.14