서버/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 커널에 관련된 모든 메세지를 콘솔창에 출력한다.
메일, 뉴스, 개인인증, 크론 메세지를 제외한 모든 메세지를 '/var/log/messages'에 기록한다. 개인 인증에 관련된 메세지를 '/var/log/secure'에 기록한다.
메일 관련 메세지를 '/var/log/maillog'에 기록한다.
크론 관련 메세지를 /var/log/cron'에 기록한다.
로그 레벨이 'Emergency'인 모든 메세지는 모든 사용자에게 제공한다.
56 UUCP, 뉴스 관련 'Critical' 이상인 모든 메세지를 '/var/log/spooler'에 기록한다.
미리 예약된 Local7 종류에 대한 부팅시의 모든 메세지를 '/var/log/boot.log'에 기록한다.
: q! |
5. 로그 메세지
로그 메세지는 Selector와 Action으로 구성된다. 이때, Selector는 Facility(로그 종류)와 Level(로그 레벨)로 구분되며, Action은 로그가 기록되는 곳을 지정한다.
1) 로그 메세지 종류(Facility)
- 로그 메세지 종류를 'Facility(파실리티)'라고 한다. 종류는 다음과 같다.
종류 |
내용 |
authpriv |
Telnet, SSH, su와 같은 개인 인증을 요구하는 프로그램이 발생한 메세지 |
cron |
crontab, at 프로그램이 발생한 메세지 |
daemon |
httpd, telned와 같은 시스템 데몬이 생성한 메세지 |
kern |
커널이 발생한 메세지 |
lpr |
프린트 유형이 프로그램이 발생한 메세지 |
|
메일 시스템이 발생한 메세지 |
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)
'서버 > Linux III' 카테고리의 다른 글
Linux III - 17. 리눅스 방화벽 (iptables) (0) | 2016.05.18 |
---|---|
Linux III - 16. Mail 서버 (Sendmail & Dovecot) (0) | 2016.05.18 |
Linux III - 14. NTP 서버 & 클라이언트 (0) | 2016.04.19 |
Linux III - 13. Samba 서버 (0) | 2016.04.08 |
Linux III - 12. Apache 웹-서버 (Tomcat & Tomcat-Connector) (0) | 2016.04.06 |