서버/Linux III 2016. 4. 19. 11:46

Linux III - 15. Syslog 서버

 

 

 

login as: root
root@192.168.1.100's password:
Last login: Tue Apr 19 09:39:28 2016 from 192.168.1.1
[root@main /root]#

 

 

login as: root
root@192.168.1.101's password:
Last login: Tue Apr 19 09:47:50 2016 from 192.168.1.1
[root@clone1 /root]#

 

 

 

1. Syslog

 

Syslog는 시스템 또는 장비에서 발생하는 특정 상태에 대해서 메세지로 출력하는 서비스를 의미하며, 이 메세지는 별도로 저장 및 관리되어야 한다. 또한, 관리자는 로그 메세지를 분석하여 시스템 현재 상태와 이전 상태를 비교할 수 있으며, 시스템 공격 흔적 및 서버 장애 등을 파악할 수 있다.

 

 

 

 

2. Syslog 파일 종류

 

 - Syslog 관련 파일 및 데이터들은 '/var/log' 디렉로리에서 관리한다.

 

 파일

내용 

 /var/log/messages

(Text/ACSII)

 

 - 메일, 뉴스, 인증, cron 제외한 시스템 전반적인 메세지를 저장하는 로그 파일이다.     

 - 'cat' 명령어를 이용하여 확인할 수 있다.

 

 /var/log/secure

(Text/ACSII)

 

 - Telnet, SSH, su와 같은 개인 인증을 기록하는 로그 파일이다.

 - 'cat' 명령어를 이용하여 확인할 수 있다.

 

 /var/log/dmesg

(Text/ACSII)

 

 - 시스템 부팅시 메세지를 기록하는 로그 파일이다.

 - 'dmesg' 명령어를 이용하여 확인할 수 있다. 

 

 /var/log/maillog

(Text/ACSII)

 

 - Sendmail 메일 관련 작업을 기록하는 로그 파일이다.

 - 'cat' 명령어를 이용하여 확인할 수 있다.

 

 /var/log/xferlog

 

 - FTP 서버 업로드/다운로드를 기록하는 로그 파일이다.

 - 'cat' 명령어를 이용하여 확인할 수 있다.

 

 /var/log/cron

(Text/ACSII)

 

 - crontab, at 명령어를 이용하여 실행한 작업을 기록하는 로그 파일이다.

 - 'cat' 명령어를 이용하여 확인할 수 있다.

 

 /var/log/lastlog

(Data)

 

 - 사용자가 가장 마지막에 로그인한 시간을 기록하는 로그 파일이다.

 - 'lastlog' 명령어를 이용하여 확인할 수 있다.

 

 /var/log/wtmp

(Data)

 

 - 사용자의 로그인/로그아웃 시간을 기록하는 로그 파일이다.

 - 'last' 명령어를 이용하여 확인할 수 있다.

 

 /var/run/utmp

(Data)

 

 - 현재 로그인 사용자 정보를 기록하는 로그 파일이다.

 - 'who' 명령어를 이용하여 확인할 수 있다.

 

 

 

 

 - 다음은 '/var/log' 디렉토리에서 관리하고 있는 로그 파일들이다.

 

[root@main /root]# ls /var/log
ConsoleKit            cron-20160404      messages-20160404  spooler
Xorg.0.log            cron-20160410      messages-20160410  spooler-20160331
Xorg.0.log.old        cron-20160418      messages-20160418  spooler-20160404
Xorg.9.log            cups               mysqld.log         spooler-20160410
anaconda.ifcfg.log    dmesg              ntpstats           spooler-20160418
anaconda.log          dmesg.old          pm-powersave.log   sssd
anaconda.program.log  dracut.log         ppp                tallylog
anaconda.storage.log  gdm                prelink            tomcat6
anaconda.syslog       httpd              sa                 tomcat6-initd.log
anaconda.xlog         lastlog            sa-update.log      wpa_supplicant.log
anaconda.yum.log      maillog            samba              wtmp
audit                 maillog-20160331   secure             xferlog
boot.log              maillog-20160404   secure-20160331    xferlog-20160331
btmp                  maillog-20160410   secure-20160404    xferlog-20160404
btmp-20160401         maillog-20160418   secure-20160410    xferlog-20160410
cron                  messages           secure-20160418    xferlog-20160418
cron-20160331         messages-20160331  spice-vdagent.log  yum.log

 

 

 

 - 로그 파일 내용을 확인하는 방법은 다음과 같다.

 

[root@main /root]# tail -f /var/log/messages

 

 

[root@main /root]# tail -f /var/log/secure

 

 

 

 - Xwindow에서 'gnome-system-log'를 이용하여 GUI 기반으로도 로그를 확인할 수 있다.

 

[root@main /root/바탕화면]#rpm -qa | grep gnome-system-log

 

 

[root@main /root/바탕화면]# yum list gnome-system-log
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: centos.tt.co.kr
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
Available Packages
gnome-system-log.x86_64                   1:2.28.1-10.el6                   base

 


[root@main /root/바탕화면]# yum -y install gnome-system-log

~ 중간 생략 ~


Installed:
  gnome-system-log.x86_64 1:2.28.1-10.el6

 

Complete!

 

 

[root@main /root/바탕화면]# gnome-system-log &
[1] 12146

 

 

로그 파일을 추가 할 경우 : 파일(F) -> 열기(O) -> 로그 파일 선택 -> 열기(O)

 

 

 

 

 

3. Syslog 패키지 설치 및 활성화

 

 - main과 clone1에서 Syslog 패키지 설치 및 활성화를 실시한다.

 

[root@main /root]# yum -y install rsyslog

~ 중간 생략 ~


Updated:
  rsyslog.x86_64 0:5.8.10-10.el6_6

 

Complete!

 

 

[root@main /root]# rpm -qa | grep rsyslog
rsyslog-5.8.10-10.el6_6.x86_64

 

 

[root@main /root]# service rsyslog start
시스템 로거 시작 중:                                       [  OK  ]

 

 

 

 

4. '/etc/rsyslog.conf' 설정 파일

 

 - 로그 메세지를 기록하는 디렉토리 및 파일이 설정되어 있는 Syslog 설정 파일이다.

 - 구버전에서는 '/etc/syslog.conf' 파일을 사용한다.


[root@main /root]# vi /etc/rsyslog.conf

 

~ 중간 생략 ~

 

 33
 34 #### RULES ####
 35
 36 # Log all kernel messages to the console.
 37 # Logging much else clutters up the screen.
 38 #kern.*                                                    /dev/console

     커널에 관련된 모든 메세지를 콘솔창에 출력한다.


 39
 40 # Log anything (except mail) of level info or higher.
 41 # Don't log private authentication messages!
 42 *.info;mail.none;authpriv.none;cron.none           /var/log/messages

     메일, 뉴스, 개인인증, 크론 메세지를 제외한 모든 메세지를 '/var/log/messages'에 기록한다.

 
 43
 44 # The authpriv file has restricted access.
 45 authpriv.*                                                /var/log/secure

     개인 인증에 관련된 메세지를 '/var/log/secure'에 기록한다.


 46
 47 # Log all the mail messages in one place.
 48 mail.*                                                    -/var/log/maillog

    메일 관련 메세지를 '/var/log/maillog'에 기록한다.


 49
 50
 51 # Log cron stuff
 52 cron.*                                                    /var/log/cron

    크론 관련 메세지를  /var/log/cron'에 기록한다.


 53
 54 # Everybody gets emergency messages
 55 *.emerg                                                  *

     로그 레벨이 'Emergency'인 모든 메세지는 모든 사용자에게 제공한다.

 

 56
 57 # Save news errors of level crit and higher in a special file.
 58 uucp,news.crit                                          /var/log/spooler

    UUCP, 뉴스 관련 'Critical' 이상인 모든 메세지를 '/var/log/spooler'에 기록한다.


 59
 60 # Save boot messages also to boot.log
 61 local7.*                                                  /var/log/boot.log

    미리 예약된 Local7 종류에 대한 부팅시의 모든 메세지를 '/var/log/boot.log'에 기록한다.  


 62
 63
~ 중간 생략 ~

 

: q!

 

 

 

 

5. 로그 메세지

 

로그 메세지는 Selector와 Action으로 구성된다. 이때, Selector는 Facility(로그 종류)와 Level(로그 레벨)로 구분되며, Action은 로그가 기록되는 곳을 지정한다.

 

 

 1) 로그 메세지 종류(Facility)

 

 - 로그 메세지 종류를 'Facility(파실리티)'라고 한다. 종류는 다음과 같다.

 

 종류

내용 

 authpriv

 Telnet, SSH, su와 같은 개인 인증을 요구하는 프로그램이 발생한 메세지

 cron

 crontab, at 프로그램이 발생한 메세지

 daemon

 httpd, telned와 같은 시스템 데몬이 생성한 메세지

 kern

 커널이 발생한 메세지

 lpr

 프린트 유형이 프로그램이 발생한 메세지

 mail

 메일 시스템이 발생한 메세지

 mark

 Syslogd 데몬에 의해서 생성된 주기적인 메세지

 news

 유즈넷 뉴스 프로그램 유형이 발생한 메세지

 security(auth)

 login과 같은 인증 프로그램이 생성한 메세지

 syslog

 Syslog 프로그램이 발생한 메세지

 user

 top, gnome-system과 같은 사용자 프로그램에 의해서 생성된 메세지

 uucp

 UUCP(Unix to Unix Copy) 시스템이 발생한 메세지 

 local 0~7

 예약된 메세지, 0~7 영역이 제공됨

 *

 mark 메세지를 제외한 모든 메세지

 

 

 

 

 2) 로그 메세지 레벨(Level)

 

 - 로그 메세지 레벨은 8개이며, 값이 작을 수록 위험한 메세지로 취급한다.

 

 레벨

내용 

  0 - 비상 (Emergency)

 시스템을 사용할 수 없을 정도로 심각한 에러 상황

  1 - 경보 (Alert)

 신속한 주의가 요구되는 상황

  2 - 중요 (Critical)

 경보보다 덜 심각한 상황으로서 서비스 중단을 막기 위해 주력

  3 - 에러 (Error)

 시스템 에러 상황을 알림, 에러로 시스템이 사용 중지되지는 않음

  4 - 경고 (Warning)

 특정 오퍼레이션이 제대로 완료되지 않았음을 알림

  5 - 알림 (Notification) 

 에러는 없지만, 시스템 상태가 변경된 것을 알림

  6 - 정보 (Information)

 시스템 일반적인 오퍼레이션 관련 상세 정보

  7 - 디버깅 (Debuging)

 장애 처리용으로 사용되는 디버깅 메세지 정보

  8 - 제외 (none)

 Facility 뒤에 .none을 붙이면 해당 Facility를 제외함

 

 

 

 

 3) 로그 메세지 기록(Action)

 

 - 로그 메세지를 기록하는 위치는 다음과 같다.

 

 위치

내용 

 /var/log/messages

 로그 기록을 저장할 특정 로그 파일을 선택하는 방법

 /dev/console

 로그 기록을 콘솔에 남기는 방법

 user1, root, *

 로그 기록을 특정 사용자나 모든 사용자에게 남기는 방법

 @main, @172.20.1.1

 로그 기록을 특정 호스트나 서버에게 남기는 방법

 

 

 

 

 

6. Syslog 동작 확인

 

Ex1) 개인 인증 관련 로그 확인

 

 - main에서 개인 인증 관련 로그 저장 위치를 확인하고, 'tail' 명령어를 이용하여 로그 내용을 확인한다.

 

[root@main /root]# grep authpriv.* /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

 

[root@main /root]# tail -f /var/log/secure
~ 중간 생략 ~

 

 

 

 - clone1에서 main으로 텔넷 & SSH 접속 및 종료를 실시한다.

 

[root@clone1 /root]# telnet 172.20.1.1
Trying 172.20.1.1...
Connected to 172.20.1.1.
Escape character is '^]'.
CentOS release 6.6 (Final)
Kernel 2.6.32-504.el6.x86_64 on an x86_64
login: user1
Password: centos
Last login: Tue Apr 19 15:00:16 from clone1
[user1@main /home/user1]$
[user1@main /home/user1]$ exit
                              logout
Connection closed by foreign host.

 

[root@clone1 /root]# ssh 172.20.1.1
The authenticity of host '172.20.1.1 (172.20.1.1)' can't be established.
RSA key fingerprint is c9:35:45:d1:0b:ca:69:14:10:7d:de:5a:24:be:d7:ae.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.20.1.1' (RSA) to the list of known hosts.
root@172.20.1.1's password:
Last login: Tue Apr 19 11:02:22 2016 from 192.168.1.1
[root@main /root]#
[root@main /root]# exit
logout
Connection to 172.20.1.1 closed.

 

 

 - main에서 텔넷 & SSH 접속 및 종료 로그를 확인한다.


[root@main /root]# tail -f /var/log/secure
~ 중간 생략 ~

 

Apr 19 15:01:01 main login: LOGIN ON pts/2 BY user1 FROM clone1
Apr 19 15:01:07 main login: pam_unix(remote:session): session closed for user user1

 

Apr 19 15:01:47 main sshd[13149]: Connection closed by 172.20.1.101
Apr 19 15:01:54 main sshd[13150]: Accepted password for root from 172.20.1.101 port 52706 ssh2
Apr 19 15:01:54 main sshd[13150]: pam_unix(sshd:session): session opened for user root by (uid=0)
Apr 19 15:01:56 main sshd[13150]: Received disconnect from 172.20.1.101: 11: disconnected by user
Apr 19 15:01:56 main sshd[13150]: pam_unix(sshd:session): session closed for user root

(Cttrl + C)

 

 

 

 

Ex2) 메일 관련 로그 확인

 

 - main에서 메일 관련 로그 저장 위치를 확인하고, 'tail' 명령어를 이용하여 로그 내용을 확인한다.

 

[root@main /root]# grep mail /etc/rsyslog.conf
# Log anything (except mail) of level info or higher.
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog

 

[root@main /root]# tail -f /var/log/maillog
~ 중간 생략 ~

 

 

 

 - clone1에서 main으로 SSH 접속 이후, 'mailx' 명령어를 이용하여 메일 전송을 실시한다.

 

[root@clone1 /root]# ssh 172.20.1.1
root@172.20.1.1's password: centos
Last login: Tue Apr 19 15:01:54 2016 from clone1
[root@main /root]#
[root@main /root]# mailx root
Subject: Hello
test
. (엔터)
EOT
[root@main /root]#
[root@main /root]# exit
logout
Connection to 172.20.1.1 closed.

 

 

 

 - main에서 메일 로그를 확인한다.

 

[root@main /root]# tail -f /var/log/maillog
Apr 19 15:09:26 main postfix/pickup[12904]: E90841AC9: uid=0 from=<root>
Apr 19 15:09:27 main postfix/cleanup[13256]: E90841AC9: message-id=<20160419060926.E90841AC9@main.localdomain>
Apr 19 15:09:27 main postfix/qmgr[2572]: E90841AC9: from=<root@main.localdomain>, size=430, nrcpt=1 (queue active)
Apr 19 15:09:27 main postfix/local[13260]: E90841AC9: to=<root@main.localdomain>, orig_to=<root>, relay=local, delay=0.38, delays=0.27/0.09/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Apr 19 15:09:27 main postfix/qmgr[2572]: E90841AC9: removed

(Cttrl + C)

You have new mail in /var/spool/mail/root

 

 

 

 

Ex3) cron 관련 로그 확인

 

 - main에서 cron 관련 로그 저장 위치를 확인하고, 'tail' 명령어를 이용하여 로그 내용을 확인한다.

 

[root@main /root]# grep cron /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# Log cron stuff
cron.*                                                  /var/log/cron

 


[root@main /root]# tail -f /var/log/cron
Apr 19 14:30:01 main CROND[12840]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 14:40:01 main CROND[12910]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 14:50:01 main CROND[12970]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 15:00:01 main CROND[13038]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 15:01:01 main CROND[13085]: (root) CMD (run-parts /etc/cron.hourly)
Apr 19 15:01:01 main run-parts(/etc/cron.hourly)[13085]: starting 0anacron
Apr 19 15:01:01 main run-parts(/etc/cron.hourly)[13094]: finished 0anacron
Apr 19 15:01:01 main run-parts(/etc/cron.hourly)[13085]: starting mcelog.cron
Apr 19 15:01:01 main run-parts(/etc/cron.hourly)[13113]: finished mcelog.cron
Apr 19 15:10:01 main CROND[13267]: (root) CMD (/usr/lib64/sa/sa1 1 1)

 

 

 

 - clone1에서 main으로 SSH 접속 이후, 테스트를 하기 위한 cron 설정을 실시한다.

 

[root@clone1 /root]# ssh 172.20.1.1
root@172.20.1.1's password: centos
Last login: Tue Apr 19 15:09:01 2016 from clone1
[root@main /root]#

[root@main /root]# crontab -e

 1 * * * * *   /bin/date >> /tmp/date.log

 

: wq! 

 

 

[root@main /root]# crontab -l
* * * * *       /bin/date >> /tmp/date.log

 

 

[root@main /root]# crontab -r

 


[root@main /root]# exit
logout
Connection to 172.20.1.1 closed.
[root@clone1 /root]#

 

 

 

 - main에서 크론 로그를 확인한다.


[root@main /root]# tail -f /var/log/cron
Apr 19 14:30:01 main CROND[12840]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 14:40:01 main CROND[12910]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 14:50:01 main CROND[12970]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 15:00:01 main CROND[13038]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 15:01:01 main CROND[13085]: (root) CMD (run-parts /etc/cron.hourly)
Apr 19 15:01:01 main run-parts(/etc/cron.hourly)[13085]: starting 0anacron
Apr 19 15:01:01 main run-parts(/etc/cron.hourly)[13094]: finished 0anacron
Apr 19 15:01:01 main run-parts(/etc/cron.hourly)[13085]: starting mcelog.cron
Apr 19 15:01:01 main run-parts(/etc/cron.hourly)[13113]: finished mcelog.cron
Apr 19 15:10:01 main CROND[13267]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 19 15:14:38 main crontab[13324]: (root) BEGIN EDIT (root)
Apr 19 15:15:17 main crontab[13324]: (root) REPLACE (root)
Apr 19 15:15:17 main crontab[13324]: (root) END EDIT (root)
Apr 19 15:15:26 main crontab[13332]: (root) LIST (root)
Apr 19 15:16:01 main CROND[13339]: (root) CMD (/bin/date >> /tmp/date.log)
Apr 19 15:16:27 main crontab[13343]: (root) DELETE (root)

(Ctrl + C)

 

 

 

 

 

 

 

 

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q