Skip to content

서버로그 관리

조회 수 22171 추천 수 0 2009.09.20 11:08:20

서버 관리

1. 로그

  • 로그의 종류
    • Solaris 2.X (11가지)
      • wtmpx/utmpx, wtmp/utmp, syslog, sulog, pacct, authlog, messages, loginlog, lastlog, access_log, error_log
    • HP-UX 9.X 이상 (9가지)
      • wtmp/utmp, btmp, syslog, sulog, pacct, messages, lastlog, access_log, error_log, shutdownlog
    • IBM AIX (9가지)
      • wtmp/utmp, syslog, sulog, pacct, messages, lastlog, access_log, error_log, failedlogin
    • Linux의 로그 (8가지)
      • wtmp/utmp, btmp, secure, pacct, messages, lastlog, access_log, error_log
    • Compaq Tru64 (9가지)
      • wtmp/utmp, syslog, pacct, messages, loginlog, lastlog, access_log, error_log, sialog
    • 1.1. utmp

      • utmp는 현재 로그인해 있는 사용자에 대한 현재 상태의 정보가 저장되어 있다.
      • wwho가 utmp를 참조한다.
        • w 명령

        $ w

         01:57:03 up 3 days, 15:03,  2 users,  load average: 0.02, 0.01, 0.00
         USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
         test     pts/0    192.168.1.25      00:27    1:07   0.21s  0.21s -bash
         test     pts/1    192.168.1.24      00:38    0.00s  0.29s  0.00s w
        • who 명령

        $ who

        test    pts/0        2008-10-31 00:27 (192.168.0.1)
        test    pts/1        2008-10-31 00:38 (192.168.0.1)

        1.2. wtmp

        • wtmp는 지금까지 사용자들의 로그인, 로그아웃 히스토리를 모두 누적 정보가 저장된다.
        • wtmp는 /var/log/wtmp 형태로 binary로 저장된다.
          • 시스템의 셧다운, 부팅 히스토리까지 포함한 중요한 로그.
          • wtmp는 last를 사용하여 확인할 수 있다.
          $  last | more
          
          유저        터미널/서비스  IP 주소                    로그인-로그아웃 시간 (기간)
          
          test       pts/17       192.168.1.25           4월  3일 09:14   로그인되어 있습니다
          test       pts/14       192.168.1.21           4월  3일 09:07 - 09:39  (00:32)
          test       pts/14       192.168.1.11           4월  2일 22:27 - 22:31  (00:04)
          test       pts/13       192.168.1.11           4월  2일 22:24 - 09:34  (11:09)
          test       pts/13       192.168.1.44           4월  1일 20:47 - 00:05  (03:18)
          test2      ftp          192.168.1.30           4월  1일 16:25 - 16:25  (00:00)
          test       ftp          192.168.1.30           4월  1일 16:25 - 16:25  (00:00)
          test2      ftp          192.168.1.30           4월  1일 16:25 - 16:25  (00:00)
          • 재부팅된 시간을 알아보려면… (id부분이 reboot로 되어 있기 때문)
          $ last reboot
          
          reboot    system boot                   Thu Feb  2 21:52
          reboot    system boot                   Thu Sep 22 17:55
          reboot    system boot                   Wed Jul 13 13:11
          reboot    system boot                   Sat Jun 25 11:38
          reboot    system boot                   Sat Jun 25 10:21
          reboot    system boot                   Thu Dec 23 19:08
          reboot    system boot                   Sun Dec  5 22:06
          • 그 밖에 last의 인자를 id, 서비스명 등으로 줄 수 있다. (뒤의 -5 는 5개까지 보이라는 의미이다.)
          $ last test2 -5

          1.3. btmp

          • 리눅스 시스템에서는 실패한 로그인 시도에 대해서 btmp 파일에 로그를 남긴다.
            • 로그인 실패에 대한 기록은 brute-force 공격과 같은 패스워드 시스템에 대한 공격에 대해 로그를 남길 수 있다.
            • /var/log/btmp로 저장되며, binary 형태의 파일이다.
            • 일반적으로 이 파일은 생성되어 있지 않은 관계로 직접 생성 시켜주어야 한다.
            • System V 계열의 유닉스에서는 로그인 시도의 실패 기록을 loginlog에 기록한다.
              • 이 파일도 생성해 주어야 한다.
              • lastb를 사용하여 확인 가능하다.
              $ lastb
              root pts/0 211.60.207.244 Sun May 13 00:47 - 00:47 (00:00)
              root pts/0 211.60.207.244 Sun May 13 00:47 - 00:47 (00:00)
              root pts/0 211.60.207.244 Sun May 13 00:47 - 00:47 (00:00)

              1.4. lastlog

              • lastlog에는 모든 사용자의 사용자이름, 포트번호(터미널), 최근 접근 시간이 저장된다.
                • lastlog은 /var/log/lastlog 파일로 저장되며, 바이너리 파일로 되어 있다.
              • lastlog 명령어을 통해 정보를 확인할 수 있다.
              • $ lastlog
                
                  Username     Port                    From          Latest
                 root          tty1                                 Fri May 11 00:50:03 +0900 2001
                 bin           **Never logged in**
                 daemon        **Never logged in**
                 .
                 .
                 overhead       tty2                                Fri May 11 03:08:30 +0900 2001
                • 옵션으로 -t (시간), -f (파일), -u (username) 등을 사용할 수 있다.

                1.5. message

                • 리눅스 로그 파일에서 가장 중요한 부분으로서 로그인 기록부터 디바이스 정보,시스템 설정오류, 파일 시스템, 네트워크 세션 기록 등 많은 다양한 정보를 포함하고 있다.
                • 또한 침입자의 공격 형태가 어느 정도 기록되어 진다.
                • /var/log/message에 저장된다.
                • May 14 20:07:28 localhost sshd[12943]: Did not receive identification string form 195.238.160.231.
                  May 14 20:16:49 localhost sshd[861]: Received signal 15; terminating.
                  May 15 03:16:54 localhost sshd[861]: Server listening on 0.0.0.0 prot 22
                  May 15 03:16:54 localhost sshd[861]: Gennerating 768 bit RSA key.
                  May 15 03:16;55 localhost sshd[861]: RSA key generation complete.
                  May 15 03:22:04 localhost xinetd[885]: START: telnet pid=1157 from=211.60.207.194
                  May 15 03:22:04 localhost sshd[1160]: Did not receive identification string form
                  May 15 04:35:27 localhost xinetd[885]: START: telnet pid=2088 from=152.142.100.2 
                  May 15 04:37:18 localhost xinetd[885]: START: telnet pid=2184 from=152.142.100.2
                  May 15 04:42:35 localhost xinetd[885]: START: telnet pid=2445 from=152.142.100.2
                  May 15 05:00:49 localhost xinetd[885]: START: telnet pid=2694 from=152.142.100.2
                  May 16 04:32:51 localhost proftpd[2763] localhost
                  • messages 파일에는 데몬들의 정보들이나 시스템의 다양한 에러 등 방대한 양의 정보들을 기록하게 된다.
                    • 그러므로 특정 정보를 grep으로 필터링해서 얻는 것이 편할 수 있다.
                  • ?- MARK ?- 라는 표시는 일정 시간 간격으로 출력하는 로그이다.
                  • 2. 모니터링 프로그램

                    • 시스템 모니터링 분야와 관련 유틸
                      • sar, iostat, nmap, netcat, ntop 등은 별도로 설치를 해야 하는 모니터링 프로그램이다.
                    • CPU : top, ps, uptime, vmstat, pstree, iostat, sar
                    • 메모리 : free, vmstat, sar
                    • 디스크 I/O : df, du, quota, iostat, sar
                    • 네트워크 : ping, netstat, traceroute, tcpdump, nmap, netcat, ntop
                    • 파일 : lsof
                    • 2.1. 부팅 후 경과 시간 및 프로세스 CPU 사용률 : uptime

                      • 리눅스/솔라리스 시스템의 부팅후 경과된 시간을 초단위로 얻어옵니다.
                      • 부팅시간은 /proc/uptime의 값을 이용해서 계산합니다.
                      • 부팅경과 시간은 단순히 시스템의 부팅 시간을 얻어오는 것 외에도 프로세스의 CPU사용율 등을 계산하기 위한 용도로도 사용됩니다.
                      • 2.2. 프로세스 모니터 : ps, top

                        • ps와 top을 이용하여 모니터링을 할 경우 먼저 살펴보아야 하는 것이 디스크 액세스나 페이징을 기다리고 있는 프로세스가 있는가이다.
                        • top
                          • S : 인터럽트가 허용되는 sleep 상태
                          • D : 인터럽트가 불가능한 sleep 상태로 page fault 등을 의미하며 page fault 등을 통해 I/O중인 상태
                          • W : 상주하는 페이지가 없다는 것을 의미하며 프로세스가 스왑아웃된 상태
                            • 프로세스의 메모리 구조는 텍스트, 데이터, 스택 등으로 이루어져 있다.
                              • SIZE 는 코드, 데이터, 스택을 합친 크기를 보여준다.
                              • 가상 메모리는 커널에서 자동으로 조절하기 때문에 문제가 생길 일은 없으며 RSS를 통해서 실제 물리적 메모리에서 사용하는 메모리 양을 보여준다.
                              • ps
                                • /proc/PID/status
                                • VmSize : 가상메모리를 포함한 전체 사용량
                                • VmRSS : 물리적 메모리 사용량
                                • 2.3. 시스템 성능의 자세한 정보 : vmstat

                                  • 시스템 성능에 대한 보다 자세한 정보 확인
                                  • 프로세스, 메모리, 스왑, 입출력, 시스템 및 CPU 활동 상황에 대한 정보를 한줄로 출력한다.
                                    • vmstat에서 나오는 첫 줄은 부팅 이후의 각 통계치에 대한 평균값을 보여 준다.
                                      • r은 현재 실행중인 프로세스 수
                                      • b는 인터럽트가 불가능한 sleep 상태에 있는 프로세스로 I/O 처리를 하는 동안 블럭 처리된 프로세스
                                      • w는 강제로 스왑아웃된 프로세스 수
                                      • si, so는 스왑인, 스왑아웃 (스왑아웃필드(so)는 항상 0에 가까워야 한다.)
                                        • 스왑아웃이 지속적으로 발생한다면 메모리가 부족한 것이다.
                                        • 그러나 일정 간격을 두고 주기적으로 스왑아웃이 발생하는 것은 정상적인 일이다.
                                        • b의 수치가 높은 경우 I/O작업을 위해 CPU가 계속 대기 상태로 있는 경우이다.
                                          • 이런 경우에는 디스크 I/O 문제를 확인해야 한다.

                                        2.4. 여유 메모리 확인 : free

                                        • 여유가 있는 메모리 :free+buffers+cached

                                        2.5. 열린 파일 확인 : lsof

                                        • LSOF는 'List Open File'의 약자로, 해당 System에서 구동되고 있는 프로세스들에 의해서 열려진 파일들을 확인 할 수 있는 툴이다.
                                        • 시스템의 의심스러운 프로세스에 대한 확인이 용이하고, 설치가 비교적 쉬워 많이 이용되고 있다.
                                        • 2.6. 상세 디스크 IO 확인 : iostat, sar

                                          (다운로드 : ftp://metalab.unc.edu/pub/Linux/system/status/sysstat-4.0.1-1.i386.rpm)

                                          • iostat
                                            • Tps : 해당 디바이스에 대한 초당 전송 숫자인데, 여기서는 디바이스에 대한 I/O 요청을 말한다
                                            • Blk_read/s : 해당 디바이스에서 초당 읽은 블럭 수
                                            • Blk_wrtn/s : 해당 디바이스에서 초당 기록한 블럭 수
                                            • Blk_read : 전체 읽은 총 블럭 수
                                            • Blk_wrtn : 전체 기록한 총 블럭 수
                                            • sar
                                              • 모니터링 할 수 있는 것들
                                                • I/O 전송량, 페이징, 프로세스 생성 숫자, 블락 디바이스 활동, 인터럽트, 네트워크 통계, run 큐 및 시스템 부하 평균, 메모리와 스왑 공간 활용 통계, 메모리 통계, CPU 이용도, 특정 프로세스에 대한 CPU 이용도, <inode, 파일, 기타 커널 테이블에 대한 상태>, 시스템 스위칭 활동(context switch), 스와핑 통계, 특정 프로세스 통계, 특정 프로세스의 자식 프로세스 통계, TTY 디바이스 활동
                                              • 메모리 규모에 맞게 최대 열 수 있는 파일 갯수 (file-max)와 아이노드 개수를 조정하는데 sar를 이용하여 실제 얼마나 파일 핸들을 사용했는지 최대 file-max와 실제 사용한 파일 핸들의 비율 등도 통계를 낼 수가 있다.
                                              • 이러한 통계를 주기적으로 내어 적절하게 활용하기 바란다.
                                                • 참고로 최대 파일 핸들의 경우 4M당 256개로 잡아주고 아이노드 개수는 이의 3-4배 정도로 설정을 한다.
                                                • file-max 는 /proc/sys/fs/file-max 를 이용하여 설정하며 /proc/sys/fs/file-nr 파일을 이용 현재 할당된 파일수를 확인할 수 있다.
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/2656/80a/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
227 rsync 에러 ADMINPLAY 2009-05-17 22345
226 리눅스에서 일정기간 이상된 파일 삭제하기 ADMINPLAY 2009-07-02 22312
225 FreeBSD CPU 개수 확인 등.(mptable, sysctl) ADMINPLAY 2012-01-16 22277
224 콘솔에 남는 메세지로그파일로 남기기 ADMINPLAY 2009-07-19 22229
223 vim 편집기 색상변경 ADMINPLAY 2009-05-17 22204
222 ethtool 사용법 ADMINPLAY 2009-06-04 22199
221 grep 옵션~! ADMINPLAY 2010-02-17 22183
220 find 찾아바꾸기 ADMINPLAY 2010-01-27 22174
» 서버로그 관리 ADMINPLAY 2009-09-20 22171
218 MRTG 로그 데이터 시간확인하기 ADMINPLAY 2009-05-08 22156
217 실시간 접근정보 확인 ADMINPLAY 2008-12-10 22061
216 iscsi-target 설정 에러 모음 ADMINPLAY 2011-04-24 22048
215 hdparm - 하드디스크의 자세한 정보 보기 ADMINPLAY 2009-06-16 22044
214 아파치 모듈 mod_status file ADMINPLAY 2009-07-01 22010
213 특정 디랙토리 인증걸기 htpasswd, htaccess ADMINPLAY 2009-03-04 21993
212 syslogd : 콘솔에 남는 메세지 로그파일로 남기기 ADMINPLAY 2009-06-04 21978
211 apm설치시 configure error ADMINPLAY 2009-06-01 21973
210 리눅스 언어 인코딩 설정 ADMINPLAY 2009-05-22 21925
209 sysctl 커널 파라미터 ADMINPLAY 2009-06-04 21920
208 제로보드4의 데이터를 XE 로 이전하는 방법 file ADMINPLAY 2009-11-23 21885

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234