중화사전망 - 서예자전 - 리눅스 시스템에서 다양한 로그 파일을 보는 방법? 리눅스 시스템 로그 분석.

리눅스 시스템에서 다양한 로그 파일을 보는 방법? 리눅스 시스템 로그 분석.

로그 파일에는 시스템에서 매일 발생하는 다양한 이벤트가 자세히 기록됩니다. 사용자는 로그 파일을 통해 오류의 원인을 확인하거나 공격과 해커의 공격을 받을 때 공격자를 추적할 수 있습니다. 로그의 두 가지 중요한 기능은 감사와 모니터링입니다.

리눅스 시스템 로그는 크게 두 가지 유형으로 나뉩니다.

1. 프로세스 로그

사용자 프로세스 또는 다른 시스템 서비스 프로세스에서 생성된 로그 (예: 서버의 access_log 및 error_log 로그 파일).

2. 시스템 로그 메시지

시스템 시스템 로깅에 대한 로그입니다. 로깅을 원하는 모든 시스템 프로세스 또는 사용자 프로세스는 syslog 를 호출하여 로그를 기록할 수 있습니다.

로깅 시스템은 세 개의 하위 시스템으로 나눌 수 있습니다.

1. connectivity time log-여러 프로그램에서 실행, /var/log/wtmp 및 /var/run/utmp 에 레코드 쓰기, 로그인 및 기타 프로그램에서 wtmp 및 utmp 파일을 업데이트하여 시스템 관리자가 언제 로그인했는지 추적할 수 있도록 합니다

프로세스 통계-시스템 커널에 의해 실행됩니다. 프로세스가 종료되면 프로세스 통계 파일 (pacct 또는 acct) 에 각 프로세스에 대한 레코드를 작성합니다. 프로세스 통계의 목적은 시스템의 기본 서비스에 명령 사용 통계를 제공하는 것입니다.

3. 오류 로그-syslogd(8) 에 의해 실행됩니다. 다양한 시스템 데몬, 사용자 프로그램 및 커널이 syslog(3) 를 통해 /var/log/messages 파일에 주목할만한 이벤트를 보고합니다.

2. 로그 파일을 확인합니다

Linux 시스템의 모든 로그 파일은 /var/root 아래에 있으며 루트 권한이 있어야 볼 수 있습니다.

로그 파일은 실제로 일반 텍스트 파일이며 각 행은 메시지입니다. 볼 수 있는 여러 가지 방법이 있다.

1.cat 명령. 로그 파일은 항상 큽니다. Linux 를 처음 시작할 때부터 로그 파일에 메시지가 누적되기 때문입니다. 파일이 두 페이지 이상인 경우 화면이 너무 빨리 스크롤되므로 파일 내용이 명확하지 않을 수 있습니다.

2. 텍스트 편집기. 텍스트 편집기로 로그 파일을 열지 않는 것이 좋습니다. 한 쪽에서는 많은 메모리를 사용하고 다른 쪽에서는 로그 파일을 임의로 변경할 수 없기 때문입니다.

3. "많든 적든" 과 비슷한 페이지로 프로그램을 표시합니다.

4. grep 를 사용하여 특정 메일을 찾습니다.

각 행은 메시지를 나타내며 고정 형식의 네 개의 필드로 구성됩니다.

메시지를 보낸 날짜와 시간을 나타내는 n 시간 기록입니다.

N hostname (이 예제의 escher) 은 메시지를 생성한 컴퓨터의 이름을 나타냅니다. 시스템이 한 대뿐인 경우 호스트 이름이 필요하지 않을 수 있습니다. 그러나 네트워크 환경에서 syslog 를 사용하는 경우 중앙 처리를 위해 다른 호스트에서 서버로 메시지를 전송해야 할 수 있습니다.

N 메시지를 생성한 하위 시스템의 이름입니다. "커널" 일 수 있습니다. 즉, 메시지는 커널에서 온 것이거나 프로세스의 이름일 수 있습니다. 즉, 메시지를 보내는 프로그램의 이름을 의미합니다. 대괄호는 프로세스의 PID 입니다.

N 개의 메시지, 나머지는 메시지의 내용입니다.

예를 들면 다음과 같습니다.

[root @ localhostroot] # 프롬프트에 tail /var/log/messages 를 입력합니다.

1 월 5 일 2 1:55:5 1 로컬 호스트의 마지막 메시지가 3 회 반복되었습니다

1 월 5 일 2 1:55:5 1 로컬 호스트 커널: [DRM] 인텔 i810 @ 0xf000

B

1 월 5 일 21:55: 51localhost 커널: [DRM] 보조 서버에서 i8301초기화

Jan 05 21:55: 51localhost 커널: mtrr:base(0xf 000000) 가 siz 에서 정렬되지 않았습니다

E(0x 12c 000) 경계

1 월 5 일 2 1: 56: 35 로컬 호스트 65438+ 10 월 28 일 2 1: 56: 35 GDM

또는 루트 사용자 (uid=0)

1 월 5 일 21:56: 39 localhost1:56: 39 gconfd (root-4/kloc)

2.0), PID 4 162 사용자 "루트"

1 월 5 일 2 1: 56: 39 로컬 호스트 65438+ 10 월 28 일 21:56: 39 gconnect

Ad:/etc/gconf/gconf.xml.mandatory 전용' 0 에 있는 읽기 전용 구성 소스를 가리킵니다.

1 월 5 일 2 1: 56: 39 로컬 호스트 65438+ 10 월 28 일 21:56: 39 gconnect

Adwrite:/root/ 입니다. Gconf' 는 1 에 있는 쓰기 가능 구성 소스를 가리킵니다.

1 월 5 일 2 1: 56: 39 로컬 호스트 65438+ 10 월 28 일 21:56: 39 gconnect

Ad:/etc/gconf/gconf.xml.defaults' 만 2 에 있는 읽기 전용 구성 소스를 가리킵니다.

1 월 5 일 2 1:58:20 로컬 호스트 커널: MSDOS FS: IO 문자 세트 cp936

접속 시간 로그와 달리 프로세스 통계 하위 시스템은 기본적으로 활성화되지 않으며 시작해야 합니다. Linux 의 경우

시스템의 부트 프로세스 통계는 accton 명령을 사용하며 root 사용자로 실행해야 합니다. Accton 명령은 accton 형식입니다.

파일, 파일이 이미 있어야 합니다. 먼저 touch 명령을 사용하여 pacct 파일 touch 를 작성합니다.

/var/log/pacct 를 실행한 다음 accton:accton 을 실행합니다.

/var/log/pacct. Accton 이 활성화되면 lastcomm 명령을 사용하여 시스템에서 언제든지 실행되는 명령을 모니터링할 수 있습니다. 통계를 닫으려면 다음을 사용할 수 있습니다.

인수의 Accton 명령입니다.

로그 시스템 작동 원리 및 구성

3. 1 시스템 로그

Closelog 와 openlog * * * 를 사용하여 시스템 로거에 메시지를 보냅니다.

Linux 커널은 네트워크, 파일 액세스, 메모리 관리 등 많은 하위 시스템으로 구성됩니다. 서브시스템은 메시지의 출처와 중요도를 포함하여 사용자에게 메시지를 보내야 합니다. 모든 하위 시스템은 유지 관리 가능한 공용 메시지 영역에 메시지를 보내야 합니다. 그래서 Syslog 라는 프로그램이 있습니다.

이 프로그램은 메시지 (예: 오류 메시지, 경고 메시지, 시스템 코어 및 많은 시스템 프로그램에서 생성된 기타 정보, 각 정보에는 중요도 수준이 포함됨) 를 받고 적절한 위치에 메시지를 배포할 책임이 있습니다. 보통

모든 메시지는 특정 파일 로그 파일 (일반적으로 /var/adm 또는 /var/log 디렉토리의 메시지 파일) 에 기록되며 특히 중요한 메시지도 사용됩니다.

사용자 터미널 창에 표시됩니다.

Syslog 도구에는 syslogd 와 syslog 라는 두 가지 중요한 파일이 있습니다. 회의

액세스 시스템에 대한 로그 정보를 수락하고' /etc/syslog.conf' 구성 파일의 지침에 따라 처리할 수 있습니다. 데몬과 커널은 시스템에 액세스하기 위한 로그 정보를 제공합니다. 따라서 로그 정보를 생성하려는 모든 프로그램은 syslog 인터페이스를 호출하여 이 정보를 생성할 수 있습니다.

3.2 syslogd 데몬

다른 복잡한 운영 체제와 마찬가지로 Linux 는 다양한 하위 시스템으로 구성됩니다. 데몬이라는 일부 프로그램은 백그라운드에서 계속 실행됩니다. 즉

"알 수 없는" 것으로, 사용자와 상호 작용할 필요가 없습니다.) 인쇄, 이메일 보내기, 인터넷 연결 설정 등의 일상적인 작업을 처리합니다. 각 하위 시스템은 로그 메시지를 보낼 때 로그 메시지를 제공합니다.

이 메시지는 유형을 지정합니다. 메시지는' 시설' 과' 등급' 의 두 부분으로 나뉜다. "장치" 는 메시지를 전송하는 하위 시스템을 식별하고 동일한 유형의 메시지를 결합할 수 있습니다. 레벨은 디버그 (가장 중요하지 않음) 에서 긴급 (가장 중요) 까지 메시지의 중요도를 나타냅니다. 시설과 레벨의 조합을 우선 순위라고 합니다. (자세한 설명은 5.3 참조)

이는 /usr/include/sys/syslog.h 에 정의되어 있습니다.

데몬은 창과 사용자 인터페이스가 없기 때문에 사용자가 볼 수 없습니다. 그러나 이러한 프로그램은 때때로 사용자에게 몇 가지 정보를 전달해야 합니다. 이 목표를 달성하기 위해서는 특별한 메커니즘이 필요하다. 데몬의 좋은 예는 syslogd 가 백그라운드에서 실행되고 로그 영역에서 로그 파일로 메시지를 전송하는 것입니다.

기능인터페이스

# 포함

Void open log(char *, int, int)

여기서 는 다음 값의 또는 조합일 수 있습니다.

LOG_CONS: 메시지를 syslogd 로 보낼 수 없는 경우 시스템 콘솔에 직접 출력됩니다.

LOG_NDELAY: syslogd 에 대한 연결을 즉시 엽니다. 기본적으로 연결은 메시지를 처음 쓸 때만 열립니다.

LOG_PERROR: stderr 에 메시지를 동시에 보냅니다.

LOG_PID: 각 메시지의 PID 를 기록합니다.

Void syslog(int, char *)

시설과 수준의 OR 조합은 어디에 있습니까?

Void close log(void)

일반적으로 syslog () 함수만 사용하면 되고 다른 함수는 생략할 수 있습니다.

3.3 syslog.conf

이것은 매우 중요한 문건이다. /etc/' 디렉토리에 있습니다. Syslogd 에 디바이스 및 정보 심각도를 기준으로 정보를 보고하는 방법을 알려줍니다.

이 파일은 다음 형식을 사용합니다.

공장급 행동

Syslog.conf 의 첫 번째 열인 facility.level 은 로깅 기능과 로깅 레벨을 로 구분하여 지정합니다. , 그리고 * 를 통해 일치 할 수 있습니다.

모든 로그 기능 및 로그 레벨. 두 번째 열인 action 은 메시지의 배포 대상입니다.

빈 행과 # 로 시작하는 행은 주석이며 무시할 수 있습니다.

Facility.level 필드는 선택기라고도 합니다.

N 디바이스는 시스템 로그 기능을 지정하며 주로 다음을 포함합니다.

Pam_pwdb 가 보고하는 인증 활동입니다.

Authpriv 는 사용자 이름과 같은 권한 정보를 포함하는 인증 활동입니다.

Cron 과 at 에 대한 정보입니다.

데몬 및 inetd 데몬에 대한 정보입니다.

Kern 커널 정보는 먼저 klogd 를 통해 전송됩니다.

인쇄 서비스와 관련된 Lpr 정보입니다.

전자 메일 관련 메일 메시지

시스템 로그 표시 내부 함수는 타임스탬프를 생성하는 데 사용됩니다.

뉴스 서버의 뉴스 정보

시스템 로그에서 생성된 시스템 로그 정보입니다.

사용자 프로그램에서 생성한 사용자 정보입니다.

Uucp 에 의해 생성된 uucp 정보

로컬 0- 로컬 7 은 사용자 정의 프로그램에 사용됩니다 (예: 로컬 5 를 ssh 기능으로 사용).

* 와일드카드는 mark 를 제외한 모든 함수를 나타냅니다.

레벨 레벨은 메시지의 중요성을 결정합니다.

각 기능에 대한 우선 순위는 일정 순서, 긴급은 가장 높은 수준, 그 다음은 경고 등이다. 기본적으로 /etc/syslog.conf 레코드에 지정된 레벨은 해당 레벨 이상입니다. 레벨을 사용하려면 두 개의 연산자를 사용할 수 있습니다! (같지 않음) 및 =

예를 들면 사용자입니다. =info 는 syslog 에게 정보 수준의 모든 사용자 기능 정보를 받아들이도록 지시합니다.

N 다음 등급의 중요성이 점차 낮아진다.

비상 사태시 시스템을 사용할 수 없습니다.

즉시 수정해야 하는 경고 조건입니다.

Crit 는 특정 도구나 하위 시스템이 해당 기능을 구현하지 못하도록 하는 오류 조건입니다.

Err 은 도구나 일부 하위 시스템이 특정 기능을 구현하지 못하도록 차단하는 오류 조건입니다.

경고 경고 메시지

중요 통지의 일반 조건

정보를 제공하는 메시지.

디버깅에는 기능 조건이나 문제에 대한 추가 정보가 포함되어 있지 않습니다.

없음에는 중요도 레벨이 없으며 일반적으로 디버깅에 사용됩니다.

* 없음을 제외한 모든 수준

N 작업 필드는 매우 유연한 활동을 나타내는 작업 필드입니다. 특히 이름 파이프를 사용하여 syslogd 에서 사후 처리 정보를 생성할 수 있습니다.

시스템 로그는 주로 다음 활동을 지원합니다.

파일 지정된 파일 끝에 메시지를 추가합니다.

터미널 또는 인쇄 전체 직렬 또는 병렬 장치 식별자

@ 호스트 원격 로깅 서버

Username 은 지정된 사용자에게 메시지를 씁니다.

명명된 파이프 mkFIFO 명령을 사용하여 작성한 FIFO 파일의 절대 경로를 지정합니다.

* 모든 사용자에게 메시지를 씁니다.

메시지의 유형과 우선 순위를 나타내는 도메인을 선택하십시오. 작업 필드는 선택 조건과 일치하는 메시지를 수신할 때 syslogd 가 수행할 작업을 나타냅니다. 각 옵션은 장치와 우선 순위로 구성됩니다. 우선 순위를 나타낼 때 syslogd 는 동일하거나 더 높은 우선 순위를 가진 메시지를 기록합니다. 예를 들어 "crit" 를 지정하면 crit, alert 및 emerg 로 표시된 모든 메시지가 기록됩니다. 각 행의 작업 필드는 선택 필드에서 지정된 메시지를 선택할 때 메시지를 보내야 하는 위치를 나타냅니다.

다음은 실제 사이트의 구성 (syslog.conf) 파일입니다.

# 중요한 컨텐츠를 중요한 위치에 저장

#

*. = 폭행; Kern.none /var/adm/critical

이렇게 하면 일부 커널 정보를 제외한 /var/adm/critical 파일의 모든 정보가 우선적으로 저장됩니다.

# 커널 메시지는 커널에 먼저 저장됩니다

# 파일, 중요 메시지 및 고급 메시지도 삭제됩니다

# 다른 호스트 및 콘솔로 이동

#

케인. */var/ADM/커널

Kern.crit @finlandia

Kern. crit/dev/ 콘솔

Kern.info 입니다. ! 오류 /var/adm/kernel-info

첫 번째 코드는 일부 커널 장치가 /var/adm/kernel 파일의 정보에 액세스하도록 지시합니다.

두 번째 코드는 crit 및 우선 순위가 높은 모든 커널 정보를 직접 부팅하여 원격 호스트에 액세스합니다. 원격 호스트에도 저장되어 있다면 손상 원인을 찾아 볼 수 있습니다.

네 번째 줄은 syslogd 가 info 에서 warning 까지의 모든 커널 정보를 /var/adm/kernel-info 폴더에 저장하는 것을 보여줍니다. 모든 오류를 제거하고 우선 순위를 높입니다.

# mail.info 가 포함된 TCP 래퍼 로그를 표시합니다

# tty 12 의 모든 연결

#

우편물. =info /dev/tty 12

이렇게 하면 mail.info (insourcelog _ mail | log _ info) 를 사용하여 모든 정보를 /dev/tty 12, 번호/kloc-;

콘솔 한 개. 예를 들어 tcpwrapper 가 있습니다.

Tcpd

(8) 기본적으로 사용됩니다.

# 모든 자료 관련 메시지를 하나의 파일에 저장

우편물. *; 우편물. ! =info /var/adm/mail

이 패턴은 메시지 기능이 있는 모든 정보를 일치시킵니다 (정보 우선 순위가 있는 정보는 제외). 이들 파일은 /var/adm/mail 파일에 저장됩니다.

# 모든 mail.info 및 news.info 메시지를 info 에 기록합니다

#

메일 뉴스. =info /var/adm/info

Mail.info 또는 news.info 기능 우선 순위를 가진 모든 정보를 추출하여 /var/adm/info 파일에 저장합니다.

# 메시지 파일에 정보 및 알림 메시지 기록

#

*.= info*.= 알림; \

Mail. none/var/ 로그/메시지

Syslogd 로그에서 info 또는 notice 기능이 있는 모든 정보를 /var/log/messages 파일에 저장합니다 (mail 기능이 있는 모든 정보는 제외).

# 메시지 파일에 정보 메시지 기록

#

*.= info\

메일, 뉴스. 없음 /var/log/messages

이 선언은 syslogd 로그의 info 우선 순위가 있는 모든 정보를 /var/log/messages 파일에 저장합니다. 그러나 메일이나 뉴스 기능이 있는 일부 정보는 저장할 수 없습니다.

# 긴급 메시지는 벽 디스플레이를 사용합니다

#

*. = 긴급 *

이 코드 행은 syslogd 에게 현재 로그인된 모든 사용자 로그에 모든 긴급 정보를 기록하도록 지시합니다. 이것은 실현될 것이다.

# 우선 순위 경고 메시지가 전달됩니다

# 운영자에게

#

*. 조이, 롯에게 알려줘

*. * @ 핀란드 사람

이 코드는 경고 이상의 권한을 가진 모든 정보를 터미널 작업으로 안내합니다.

두 번째 코드 행은 모든 정보를 Finland 라는 원격 호스트로 보냅니다. 이 코드는 특히 모든 시스템 로그 정보가 한 시스템의 클러스터 컴퓨터에 저장될 때 유용합니다.

3.4 klogd 데몬

Klog 는 유닉스 커널로부터 메시지를 받는 장치입니다.

클로크드

데몬은 리눅스 커널 정보를 얻고 기록합니다. 보통 syslogd 는 klogd 를 기록합니다.

들어오는 모든 정보. 즉, klogd 는 커널 정보를 읽고 syslogd 프로세스에 전달합니다. 그러나 -f 파일 이름 변수를 사용하여 klogd 를 호출하면.

Klogd 는 모든 정보를 syslogd 에 전달하지 않고 filename 에 기록합니다. 로깅을 위해 다른 파일을 지정했을 때 klogd

모든 수준이나 우선 순위가 파일에 기록됩니다. Klogd 에 /etc/syslog.conf 와 비슷한 구성 파일이 없습니다. 그것을 사용하는 대신 klogd 를 사용하십시오.

Syslogd 의 장점은 많은 오류를 발견할 수 있다는 것이다.

요약

여기서 화살표는 대상 프로세스에 메시지를 보내거나 대상 파일에 정보를 기록한다는 것을 나타냅니다.

그림 1 Linux 로그 시스템

로그 관리 및 로그 보호

Logrotate 프로그램은 사용자가 로그 파일을 관리하는 데 사용됩니다. 그것은 자신의 데몬으로 일한다. Logrotate 는 정기적으로 로그 파일을 교체하며, 각 로그 파일은 정기적으로 이름을 바꿀 수 있습니다.

백업 이름을 만들고 해당 데몬이 로그 파일의 새 복사본을 사용하도록 합니다. /var/log/ 에서 maillog, maillog. 1 과 같이 ,

Maillog.2, boot.log. 1, boot.log.2 등. 구성 파일에 의해 구동됩니다

/etc/logroatate.conf 입니다.

다음은 logroatate.conf 파일의 예입니다.

# 자세한 정보는 man logrotate 를 참고하십시오

# 매주 로그 파일 회전

일주일

# 7 일 주기

# 4 주 백로그 유지

회전 4

# 4 주마다 로그 파일 백업

# 루트 사용자에게 오류 보내기

오류의 근본 원인

# 루트 사용자에게 오류 보고

# 이전 로그 파일 교체 후 새 (빈) 로그 파일 만들기

창조하다

# 이전 로그 파일을 전송한 후 새 로그 파일을 작성합니다.

# 로그 파일을 압축하려면 이 설명을 취소합니다

# 압축

# 로그 파일을 압축할지 여부를 지정합니다.

# RPM 패키지는 이 디렉토리에 로그 교체 정보를 배치합니다

/etc/logrotate.d 포함

# lastlog 또는 wtmp 를 소유한 패키지가 없습니다. 여기서 교체해 드리겠습니다

/var/log/wtmp {

매월

0664 개의 utmp 생성

회전 1

}

# 시스템별 로그를 구성할 수 있습니다

네트워크 응용 프로그램에는 로그를 보호하는 방법이 있습니다. 네트워크에 비밀 syslog 호스트가 설치되어 있는데, 이 호스트의 네트워크 카드는 서브넷의 모든 syslog 패킷을 모니터링하기 위해 혼합 모드로 설정되어 있습니다.

예를 들어, 로그를 전송해야 하는 모든 호스트는 존재하지 않는 호스트에 로그를 전송하도록 구성할 수 있습니다. 이렇게 하면 해커가 타겟 호스트를 캡처해도 syslog.conf 파일을 통해 백업 로그의 소유자를 찾을 수 없습니다.

기계, 그것은 단지 존재하지 않는 호스트일 뿐이다. 실제로 스위치 구성을 보완하여 백업 로그 호스트의 시스템 로그 프로세스가 시스템 로그 팩을 수용할 수 있도록 할 수 있습니다. 예를 들어

Syslog.conf 의 전송 로그 호스트는 다음과 같이 설정됩니다.

@192.168.0.13 하지만 이 로그 호스트는 실제 네트워크에 존재하지 않습니다. 실제로 192. 168.0.250 이거나 다른 호스트가 syslog 패킷을 수락하고 있을 수 있습니다.