linux log: syslog.service, /var/log

markyang92·2021년 6월 28일
0

linux (ubuntu/debian)

목록 보기
13/36
post-thumbnail

linux log

  1. kernel log: 커널 메시지. klogd라는 대몬에 의해 생성
    1.1. 현재는 아래 서술할 rsyslog에 스며 듦
  2. system log: 시스템 로그. syslogd 대몬에 의해 생성되는 서비스 로그

rsyslog: Ubuntu의 시스템 로거

  • Ubuntu 20.04 LTS에서는 systemd에 의해 syslog service가 동작한다.
    • syslog 중 rsyslog를 사용하고 결국, rsyslog.service 가 동작한다.


  • 기존의 syslogd 대몬은 메시지를 기다렸다가 받은 메시지의 종류에 따라 파일, 스크린, 사용자 또는 이들 중 여러 곳에 그 출력을 보내거나 무시한다.
    • Ubuntu 20.04 LTS 에서는 이 syslogd 대몬을 rsyslogd 를 사용한다.
      • rsyslogd는 로그 메시지를 데이터베이스로 전송하는 모듈을 로딩한다.

rsyslog의 설정 파일

1. /etc/rsyslog.conf

  • /etc/rsyslog.conf
    본인 Ubuntu 20.04 시스템 내의 /etc/rsyslog.conf 파일

  • rsyslog 확장 문법

    • rsyslogd의 문법은 전통적인 syslogd문법을 확장한 것이다.
    • 설정 확장자는 지시자(directives)라고 불리는 보통 $로 시작된다.

  • 아래는 /etc/rsyslog.conf에서 /etc/rsyslog.d/*.conf를 include하는 확장 문법이다.
$IncludeConfig /etc/rsyslog.d/*.conf

  • 다음 지시자들은 사용자와 접근권한을 다루고 있다.
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 022

2. /etc/rsyslog.d

  • /etc/rsyslog.d/ 디렉토리내 conf 파일
    본인 Ubuntu 20.04 시스템 내의 /etc/rsyslog.d/*.conf 파일들

  • 걔 중, 50-default.conf를 보면 아래와 같다.

selector: 퍼실리티의 이름 자체가 기능을 나타낸다.    action: 옆의 selector에서 받은걸로 어떤 행위를 할 것인지 지정한다.                                        
1. cron.*: cron에 관련된 모든 퍼실리티와 관련있는 출력 결과는 포착1. /dev/console :로그를 시스템 콘솔로 보낸다.
2. .none: rsyslog.conf 파일의 퍼실리티에서 보내진 로그 메시지를 제외시키려면 none 으로 명시한다.2. * : 현재 시스템 상에 있는 모든 사용자에게 보낸다.
-3. @host : 로 메시지를 다른 네트워크 호스트에 보낼 수 있다.

우선순위: 퍼실리티 뒤에 점(.) 다음에 표시한다. (낮은 것 부터 높은 곳으로 표기)
1. debug
2. info
3. notice
4. warning
5. err
6. crit
7. alert || emerge

  • selector에 구체적인 우선순위를 명시할 때, rsyslogd는 명시된 우선순위 및 그보다 상위의 우선순위에 해당하는 메시지를 해당 라인의 목적지로 보낸다.
    • 리스팅에서 *.info는 info가 상대적으로 낮은 우선순위이기 때문에 사실상 거의 모든 로그 메시지를 포착하고 그 메시지를 /var/log/messages에 저장한다.

문제 해결

시스템 로거를 테스트하는 가장 쉬운 방법은 다음과 같이 logger 명령으로 직접 로그 메시지를 전달해보는 것이다.

$ logger -p daemon.info something bad just happened

  • 대부분의 배포판들은 자동적으로 logrotate 또는 그와 유사한 유틸리티를 자동 실행하여 /var/log의 파일들을 잘라낸다.

log 디렉토리: /var/log

리눅스에서는 /var/log 디렉토리에서 시스템의 모든 로그를 기록, 관리한다.


1. dmesg

  1. /var/log/dmesg
  • 리눅스가 부팅이 된 후 부터 출력되는 모든 메시지를 기록한다.
  • 부팅 시의 에러나 조치사항을 살펴보려면 이 파일을 참조해야한다.
  • 시스템 부팅메시지만 확인하고 싶을 때는 dmesg라는 명령어도 있다.
$ ls -l /var/log/dmesg

2. cron

  1. /var/log/cron
  • 정기적인 작업을 하는 cron 대몬에 대한 로그 파일이다.(요즘은 잘 안씀)


3. /messages

  1. /var/log/messages
  • 리눅스 시스템의 가장 기본적인 시스템로그 파일로서, 시스템 운영에에 대한 전반적인 메시지를 저장하고 있다.
    주로 시스템 대몬들의 실행상황과 내역, 사용자들의 접속 정보 로그기록내역을 기록한다.

4. secure

  1. /var/log/secure
  • 사용자들의 원격접속 즉, 원격로그인 정보를 기록하고있는 로그 파일로서 서버 보안에 아주 민감하고 중요하다.
    특히 tcp_wrapper(xinetd)의 접속제어 관한 로그 파일로서, 언제 누가 어디서 어떻게 접속했는가에 대한 로그를 기록하고 있다.
  • 시스템에 대한 불법침입등이 있었다고 의심될 때에는 반드시 이 로그 파일을 확인한다.
  • sshd, su 관련 실행, telnet, gmd 관련 실행내용들이 기록된다.

5. xferlog

  1. /var/log/xferlog
  • 리눅스의 FTP로그 파일로서 proftpd, vsftpd 대몬들의 서비스 내역을 기록한다.
    즉, ftp로 로그인하는 사용자에 대한 로그를 기록과 어떤 파일을 업/다운하였는지 상세하게 기록한다.
    어떤 특정한 파일이 시스템으로 FTP 서비스에 의해 업로드/ 시스템 외부로 다운로드 되었을 때 이 파일의 기록 내역을 살펴보면 날짜, 파일명, 디렉토리 명등 주요 정보가 나온다.

6. maillog

  1. /var/log/maillog
  • sendmail, qmail과 같은 메일 송수신 관련 내역들과 ipop,imap과 같은 수신 내역들에 대하여 기록한다.
    메일 로그 파일이라고도 하면, 메일과 관련된 모든것을 기록하는 로그 파일이기 때문에 만약 시스템에서 메일 서비스를 한다면 이 로그 파일의 용량이 갑자기 커지는 경우가 발생할 수 있다.

7. mail

  1. /var/spool/mail/
  • 사용자들에 대한 메일을 보관하고 있는 디렉토리로, 메일을 한번이상 사용한 사용자는 사용자 계정 ID와 동일한 파일이 이 디렉토리 내에 존재한다.
    일반 사용자들은 mail이라는 명령어를 이용해 자기 자신의 mail 내용확인이 가능하며, root 사용자는 모든 사용자의 메일 확인이 가능하다.
root@os1 ~]# ls -l /var/spool/mail/

total 32

-rw------- 1 root     root 22576 2013-01-31 06:00 root
-rw-rw---- 1 rpc      mail     0 2012-12-31 02:31 rpc
-rw-rw---- 1 user1    mail     0 2013-01-08 06:07 user1
-rw-rw---- 1 user2    mail     0 2013-01-08 06:19 user2
-rw-rw---- 1 youngjae mail     0 2013-01-03 23:43 youngjae
profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글