웹사이트 검색

RHEL 7에서 시스템 로그를 관리하는 방법(구성, 회전 및 데이터베이스로 가져오기) - 5부


RHEL 7 시스템을 안전하게 유지하려면 로그 파일을 검사하여 해당 시스템에서 발생하는 모든 활동을 모니터링하는 방법을 알아야 합니다. 따라서 비정상적이거나 잠재적으로 악의적인 활동을 감지하고 시스템 문제 해결을 수행하거나 다른 적절한 조치를 취할 수 있습니다.

RHEL 7에서 rsyslogd 데몬은 시스템 로깅을 담당하고 /etc/rsyslog.conf에서 해당 구성을 읽습니다(이 파일은 모든 시스템 로그의 기본 위치를 지정합니다). /etc/rsyslog.d 내부 파일에서(있는 경우)

Rsyslogd 구성

rsyslog.conf를 빠르게 검사하면 시작하는 데 도움이 됩니다. 이 파일은 모듈(rsyslog가 모듈식 설계를 따르기 때문에), 전역 지시문(rsyslogd 데몬의 전역 속성을 설정하는 데 사용됨) 및 의 3가지 주요 섹션으로 나뉩니다. >규칙. 짐작할 수 있듯이 이 마지막 섹션은 기록되거나 표시되는 내용(선택기라고도 함)과 위치를 나타내며 이 기사 전체에서 중점을 둘 것입니다.

rsyslog.conf의 일반적인 줄은 다음과 같습니다.

위 이미지에서 선택기는 세미콜론으로 구분된 하나 이상의 Facility:Priority 쌍으로 구성되어 있음을 알 수 있습니다. 여기서 Facility는 메시지 유형을 설명합니다. 자세한 내용은 RFC 3164의 섹션 4.1.1을 참조하세요. rsyslog에 사용할 수 있는 기능의 전체 목록) 및 우선 순위는 해당 심각도를 나타내며 다음 자체 설명 단어 중 하나일 수 있습니다.

  1. 디버그
  2. 정보
  3. 알아채다
  4. 경고
  5. 실수
  6. 치명타
  7. 알리다
  8. 출현하다

우선순위 자체는 아니지만 키워드 none은 해당 기능 전체에 우선순위가 없음을 의미합니다.

참고: 특정 우선순위는 해당 우선순위 이상의 모든 메시지가 기록되어야 함을 나타냅니다. 따라서 위 예의 행은 mail에 속하는 메시지를 제외하고 (시설에 상관없이) 우선순위 정보 이상의 모든 메시지를 기록하도록 rsyslogd 데몬에 지시합니다. authpriv 및 cron 서비스(이 기능에서 오는 메시지는 고려되지 않음)를 /var/log/messages에 저장합니다.

콜론 기호를 사용하여 여러 시설을 그룹화하여 모든 시설에 동일한 우선순위를 적용할 수도 있습니다. 따라서 다음 줄은 다음과 같습니다.

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

다음과 같이 다시 작성할 수 있습니다.

*.info;mail,authpriv,cron.none                /var/log/messages

즉, mail, authpriv, cron 기능을 그룹화하고 키워드 none을 적용합니다. 그 중 세 개.

사용자 정의 로그 파일 만들기

모든 데몬 메시지를 /var/log/tecmint.log에 기록하려면 rsyslog.conf 또는 별도의 파일에 다음 줄을 추가해야 합니다(관리하기 더 쉽습니다). ) /etc/rsyslog.d 내부:

daemon.*    /var/log/tecmint.log

데몬을 다시 시작해 보겠습니다(서비스 이름은 d로 끝나지 않습니다).

systemctl restart rsyslog

그리고 두 개의 임의 데몬을 다시 시작하기 전후에 사용자 정의 로그의 내용을 확인하십시오.

자율 학습 연습으로 시설과 우선순위를 시험해 보고 기존 로그 파일에 추가 메시지를 기록하거나 이전 예에서처럼 새 메시지를 생성하는 것이 좋습니다.

Logrotate를 사용하여 로그 회전

로그 파일이 끝없이 늘어나는 것을 방지하기 위해 logrotate 유틸리티를 사용하여 로그를 회전, 압축, 제거하고 메일로 보내므로 많은 수의 로그 파일을 생성하는 시스템 관리가 쉬워집니다.

권장 읽기: Linux에서 Logrotate를 사용하여 로그 회전을 설정하고 관리하는 방법

Logrotatecron 작업(/etc/cron.daily/logrotate)으로 매일 실행되며 /etc/logrotate에서 해당 구성을 읽습니다. .conf/etc/logrotate.d에 있는 파일(있는 경우)에서.

rsyslog의 경우와 마찬가지로 특정 서비스에 대한 설정을 기본 파일에 포함할 수 있는 경우에도 각 서비스에 대해 별도의 구성 파일을 생성하면 설정을 더 잘 구성하는 데 도움이 됩니다.

일반적인 logrotate.conf를 살펴보겠습니다.

위의 예에서 logrotate/var/loh/wtmp에 대해 다음 작업을 수행합니다. 한 달에 한 번만 회전을 시도하지만 파일이 < 크기가 Strong>1MB인 경우 권한이 0664로 설정되고 소유권이 사용자 루트 및 그룹 utmp에 부여된 새로운 로그 파일을 생성합니다. 다음으로, 회전 지시어에 지정된 대로 하나의 보관된 로그만 유지합니다.

이제 /etc/logrotate.d/httpd에 있는 또 다른 예를 살펴보겠습니다.

매뉴얼 페이지(man logrotate 및 man logrotate.conf)에서 logrotate 설정에 대한 자세한 내용을 읽을 수 있습니다. 두 파일 모두 읽기 편의를 위해 이 기사와 함께 PDF 형식으로 제공됩니다.

/var가 별도의 파티션 /<에 있는지 여부에 따라 로그를 저장할 기간과 형식을 결정하는 것은 시스템 엔지니어의 몫입니다. 논리 볼륨. 그렇지 않으면 저장 공간을 절약하기 위해 오래된 로그를 제거하는 것이 좋습니다. 한편, 회사나 고객의 내부 정책에 따라 향후 보안 감사를 위해 여러 개의 로그를 보관해야 할 수도 있습니다.

데이터베이스에 로그 저장

물론 로그를 검사하는 것은 (grep 및 정규 표현식과 같은 도구를 사용하더라도) 다소 지루한 작업이 될 수 있습니다. 이러한 이유로 rsyslog를 사용하면 이를 데이터베이스로 내보낼 수 있습니다(OTB 지원 RDBMS에는 MySQL, MariaDB, PostgreSQL 및 Oracle이 포함됩니다.

튜토리얼의 이 섹션에서는 로그가 관리되는 동일한 RHEL 7 상자에 MariaDB 서버와 클라이언트를 이미 설치했다고 가정합니다.

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

그런 다음 mysql_secure_installation 유틸리티를 사용하여 루트 사용자의 비밀번호와 기타 보안 고려 사항을 설정합니다.

참고: MariaDB 루트 사용자를 사용하여 데이터베이스에 로그 메시지를 삽입하지 않으려는 경우 다른 사용자 계정을 구성할 수 있습니다. 그렇게 하려면. 이를 수행하는 방법을 설명하는 것은 이 튜토리얼의 범위를 벗어나지만 MariaDB 지식 기반에서 자세히 설명됩니다. 이 튜토리얼에서는 단순화를 위해 루트 계정을 사용합니다.

다음으로 GitHub에서 createDB.sql 스크립트를 다운로드하여 데이터베이스 서버로 가져옵니다.

mysql -u root -p < createDB.sql

마지막으로 /etc/rsyslog.conf에 다음 줄을 추가합니다.

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

rsyslog 및 데이터베이스 서버를 다시 시작합니다.

systemctl restart rsyslog 
systemctl restart mariadb

SQL 구문을 사용하여 로그 쿼리

이제 로그를 수정하는 몇 가지 작업(예: 서비스 중지 및 시작)을 수행한 다음 DB 서버에 로그인하고 표준 SQL 명령을 사용하여 로그를 표시하고 검색합니다.

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

요약

이 문서에서는 시스템 로깅을 설정하는 방법, 로그를 교체하는 방법, 더 쉬운 검색을 위해 메시지를 데이터베이스로 리디렉션하는 방법을 설명했습니다. 이러한 기술이 귀하가 RHCE 시험을 준비하고 일상 업무를 수행하는 데 도움이 되기를 바랍니다.

언제나 그렇듯, 여러분의 피드백은 언제나 환영입니다. 아래 양식을 사용하여 언제든지 문의해 주세요.