Skip to main content

Syslogd 리눅스 및 유닉스 명령

리눅스동영상강의 26장 syslogd (유월 2025)

리눅스동영상강의 26장 syslogd (유월 2025)
Anonim

Sysklogd는 시스템 로깅 및 커널 메시지 트래핑을 지원하는 두 가지 시스템 유틸리티를 제공합니다. 인터넷 및 유닉스 도메인 소켓을 모두 지원하므로이 유틸리티 패키지는 로컬 및 원격 로깅을 모두 지원할 수 있습니다.

시스템 로깅은 다음 버전에서 제공됩니다.syslogd(8) 주식 BSD 소스에서 파생 된. 커널 로깅 지원은klogd(8) 커널 로깅을 독립 실행 형 또는 syslogd의 클라이언트로 수행 할 수있는 유틸리티.

Syslogd는 많은 현대 프로그램에서 사용하는 일종의 로깅을 제공합니다. 기록 된 모든 메시지에는 적어도 시간과 호스트 이름 필드 (일반적으로 프로그램 이름 필드)가 포함되지만 로깅 프로그램이 얼마나 신뢰할 수 있는지에 따라 달라집니다.

동안syslogd 소스가 무겁게 수정되었습니다. 몇 가지 노트가 순서에 있습니다. 우선 syslogd가 기본 표준 BSD 동작을 따르도록 체계적으로 시도했습니다. 두 번째 중요한 개념은이 버전의 syslogd가 표준 라이브러리에있는 syslog 버전과 투명하게 상호 작용한다는 점입니다. 표준 공유 라이브러리에 링크 된 바이너리가 올바르게 작동하지 않으면 우리는 비정상적인 동작의 예를 원합니다.

기본 구성 파일 /etc/syslog.conf 또는 대체 파일-에프 옵션은 시작시 읽습니다. 해쉬 마크 (``# '')로 시작하고 빈 줄은 무시됩니다. 파싱하는 동안 오류가 발생하면 전체 줄이 무시됩니다.

개요

syslogd -에이 소켓 -디 -에프 설정 파일 -h -엘 주인 목록 -엠 간격 -엔 -피 소켓 -아르 자형 -에스 도메인 목록 -V -엑스

옵션

-에이 소켓

이 인수를 사용하면 추가 소켓을 지정할 수 있습니다.syslogd 들어야 해. chroot () 환경에서 데몬을 실행 시키려면이 작업이 필요합니다. 최대 19 개의 추가 소켓을 사용할 수 있습니다. 자신의 환경이 더 많이 필요하면 기호를 늘려야합니다.MAXFUNIX syslogd.c 소스 파일 내. chroot () 데몬의 예제는 OpenBSD (http://www.psionic.com/papers/dns.html)의 사람들이 설명합니다.

-디

디버그 모드를 켭니다. 이 데몬을 사용하면포크(2) 백그라운드에서 자신을 설정하지만 포 그라운드에 머물러있는 것과 반대가되며 현재 tty에 대한 많은 디버그 정보를 작성합니다. 자세한 정보는 DEBUGGING 섹션을 참조하십시오.

-에프 설정 파일

대체 구성 파일 대신 /etc/syslog.conf 이는 기본값입니다.

-h

기본적으로 syslogd는 원격 호스트에서받은 메시지를 전달하지 않습니다. 명령 행에서이 스위치를 지정하면 로그 디먼은 수신 된 모든 원격 메시지를 전달 호스트에 전달합니다.

-엘 주인 목록

fqdn이 아닌 간단한 호스트 이름으로 만 기록되어야하는 호스트 이름을 지정하십시오. 콜론 (``: '') 구분 기호를 사용하여 여러 호스트를 지정할 수 있습니다.

-엠 간격

그만큼syslogd 정기적으로 마크 타임 스탬프를 기록합니다. 기본값은 간격 두 사람 사이 - MARK - 라인은 20 분입니다. 이 옵션으로 변경할 수 있습니다. 설정 간격 0으로 설정하면 완전히 해제됩니다.

-엔

자동 backgrounding을 피하십시오. 이것은 특히 필요한 경우syslogd 에 의해 시작되고 제어된다.초기화(8).

-피 소켓

대체 UNIX 도메인 소켓을 대신 지정할 수 있습니다. / dev / log .

-아르 자형

이 옵션을 사용하면 시설에서 syslog 서비스가있는 인터넷 도메인 소켓을 사용하여 네트워크에서 메시지를 수신 할 수 있습니다 ((5) 참조). 기본값은 네트워크에서 메시지를받지 않는 것입니다.

이 옵션은 sysklogd 패키지의 버전 1.3에 도입되었습니다. 기본 동작은 이전 버전의 동작 방식과 반대이므로이 기능을 켜야 할 수도 있습니다.

-에스 도메인 목록

로깅하기 전에 제거해야 할 도메인 이름을 지정하십시오. 여러 도메인은 콜론 (``: '') 구분 기호를 사용하여 지정할 수 있습니다. 하위 도메인은 지정하지 않고 전체 도메인 만 지정할 수 있습니다. 예를 들어-s north.de 호스트 로깅이 satu.infodrom.north.de로 해석되지 않으면 도메인을 삭제할 수 없으므로 다음과 같은 두 도메인을 지정해야합니다.-s north.de:infodrom.north.de.

-V

버전을 인쇄하고 종료하십시오.

-엑스

원격 메시지를받을 때 이름 조회를 사용하지 않습니다. 이렇게하면 syslog 데몬을 실행하는 동일한 시스템에서 네임 서버가 실행될 때 교착 상태가 발생하지 않습니다.

신호

syslogd 신호 세트에 반응합니다. 신호를 쉽게 보낼 수 있습니다.syslogd 다음을 사용하십시오.

kill - 시그널`cat / var / run / syslogd.pid`

Sighup

이것으로syslogd 재 초기화를 수행하십시오. 열려있는 모든 파일이 닫히고 구성 파일 (기본값은 /etc/syslog.conf )가 다시 읽혀지고syslog(3) 시설이 다시 시작됩니다.

시걸

그만큼syslogd 죽을 것이다.

SIGINT, SIGQUIT

디버깅이 활성화 된 경우 무시되며 그렇지 않으면 무시됩니다.syslogd 죽을 것이다.

SIGUSR1

디버깅을 켜고 끕니다. 이 옵션은 다음 경우에만 사용할 수 있습니다.syslogd 시작은-디 디버그 옵션.

SIGCHLD

벽에 걸린 메시지 때문에 태어난 아기가있을 때까지 기다리십시오.

구성 파일 구문 차이점

syslogd 원래의 BSD 소스와 약간 다른 구문을 사용합니다. 원래 특정 우선 순위 이상의 모든 메시지가 로그 파일로 전달되었습니다.

예를 들어, 다음 행은 데몬 기능을 사용하는 데몬에서 모든 출력을 발생 시켰습니다 (디버그가 가장 낮은 우선 순위이므로 모든 상위 항목도 일치 함). / usr / adm / daemons :

# 예제 syslog.conf daemon.debug / usr / adm / daemons

새로운 계획 하에서,이 행동은 동일하게 유지됩니다. 차이점은 4 개의 새로운 지정자 인 별표 (*) 와일드 카드, 수식 기호 (=), 느낌표 (!) 및 빼기 부호 (-).

그만큼* 지정된 기능에 대한 모든 메시지를 대상으로 지정하도록 지정합니다. 이 동작은 우선 순위 수준의 디버그를 지정하면 저하됩니다. 사용자는 별표 표기법이 더 직관적임을 나타냅니다.

그만큼= 와일드 카드는 지정된 우선 순위 클래스로 로깅을 제한하는 데 사용됩니다. 예를 들어, 디버그 메시지 만 특정 로깅 소스로 라우팅 할 수 있습니다.

예를 들어, syslog.conf 모든 소스의 디버그 메시지를 / usr / adm / debug 파일.

# 샘플 syslog.conf *. = 디버그 / usr / adm / debug

그만큼! 지정된 우선 순위의 로깅을 제외하는 데 사용됩니다. 이는 우선 순위를 지정할 수있는 모든 (!) 가능성에 영향을 미칩니다.

예를 들어, 다음 줄은 우선 순위 정보가있는 메시지를 제외하고 시설 메일의 모든 메시지를 / usr / adm / mail 파일. news.info (포함)에서 news.crit (제외)까지의 모든 메시지는 / usr / adm / news 파일.

# 예제 syslog.conf 메일. *; 메일.! = 정보 / usr / adm / mail news.info; news.! crit / usr / adm / news

직관적으로 예외 지정자로 사용할 수 있습니다. 위에서 언급 한 해석은 단순히 반전됩니다. 그렇게하면

mail.none

또는

우편.!*

또는

메일!

메일 기능과 함께 제공되는 모든 메시지를 건너 뜁니다. 그것으로 놀 수있는 많은 공간이 있습니다. :-)

그만큼- 파일에 쓸 때마다 파일을 동기화하지 않으려면 파일 이름의 접두사로만 사용할 수 있습니다.

순수한 BSD 동작에 익숙한 사람들에게는 약간의 적응이 필요할 수 있지만 테스터는이 구문이 BSD 동작보다 다소 유연하다는 것을 나타 냈습니다. 이러한 변경 사항은 표준에 영향을 미치지 않아야합니다.syslog.conf(5) 파일. 향상된 동작을 얻으려면 구성 파일을 특별히 수정해야합니다.

원격 로깅 지원

이러한 수정은 syslogd 기능에 대한 네트워크 지원을 제공합니다. 네트워크 지원은 syslogd를 실행하는 한 노드에서 syslogd를 실행하는 다른 노드로 메시지를 전달할 수 있음을 의미합니다. syslogd가 실제로 디스크 파일에 기록됩니다.

이 기능을 사용하려면-아르 자형 옵션을 사용하십시오. 기본 동작은 다음과 같습니다.syslogd 네트워크를 경청하지 않습니다.

이 전략은 syslogd가 로컬로 생성 된 로그 메시지에 대해 유닉스 도메인 소켓에서 청취하도록하는 것입니다. 이 동작으로 인해 syslogd는 표준 C 라이브러리에있는 syslog와 상호 작동 할 수 있습니다. 동시에 syslogd는 다른 호스트에서 전달 된 메시지의 표준 syslog 포트를 수신합니다. 이 작업을 올바르게 수행하려면서비스(5) 파일 (일반적으로 /기타 )에는 다음 항목이 있어야합니다.

syslog 514 / udp

이 항목이 누락 된 경우syslogd UDP 포트를 열 수 없으므로 원격 메시지를 수신하거나 보낼 수 없습니다. 대신, syslogd 즉시 죽고 오류 메시지가 나옵니다.

메시지를 다른 호스트로 전달하려면 syslog.conf 메시지 앞에 @가 붙은 메시지를 보낼 호스트의 이름을 가진 파일.

예를 들어, 전달하려면모든 다음을 사용하여 원격 호스트에 메시지 보내기 syslog.conf 기입:

# syslogd 구성 파일을 # 원격 호스트에 보내는 메시지를 모두 전달합니다. *. * @hostname

모두 전달하려면핵심 메시지를 원격 호스트에 보내면 구성 파일은 다음과 같습니다.

# 모든 커널 # 메시지를 원격 호스트로 전달하는 샘플 구성 파일. kern. * @hostname

시작할 때 원격 호스트 이름을 확인할 수 없으면 이름 서버에 액세스 할 수 없으므로 (syslogd 이후에 시작할 수 있음) 걱정할 필요가 없습니다.syslogd 이름을 열 번 해결하고 불평을 다시 시도 할 것입니다. 이것을 피할 수있는 또 다른 방법은 호스트 이름을 / etc / hosts .

정상적으로syslogd원격 호스트에서 수신 한 메시지를 동일한 호스트로 보내거나 (세 번째 호스트에서 더 복잡한 경우 첫 번째 호스트로 다시 보내는 등) syslog 루프가 발생합니다. 내 도메인 (Infodrom Oldenburg)에서는 우발적으로 하나의 디스크를 얻었고 디스크에는 동일한 단일 메시지가 채워졌습니다. :-(

이 시간을 피하기 위해 원격 호스트에서 수신 된 메시지는 더 이상 다른 (또는 동일한) 원격 호스트로 전송되지 않습니다. 시나리오가 이치에 맞지 않으면 저를 (조이) 한 줄을 떨어 뜨리십시오.

원격 호스트가 호스트와 동일한 도메인에있는 경우,syslogd 가 실행되고 있으면 전체 fqdn 대신 간단한 호스트 이름 만 기록됩니다.

로컬 네트워크에서 모든 중요한 정보를 하나의 시스템에 보관할 수 있도록 중앙 로그 서버를 제공 할 수 있습니다. 네트워크가 서로 다른 도메인으로 구성되어 있으면 간단한 호스트 이름 대신 완전한 이름을 기록하는 것에 대해 불평하지 않아도됩니다. 스트립 도메인 기능을 사용할 수도 있습니다.-에스 이 서버의 당신은syslogd 서버가 위치한 도메인 이외의 여러 도메인을 제거하고 간단한 호스트 이름 만 기록합니다.

사용-엘 옵션을 사용하면 단일 호스트를 로컬 시스템으로 정의 할 수도 있습니다. 이것 역시 fqdns가 아닌 단순한 호스트 이름 만 로깅합니다.

원격 호스트에 메시지를 전달하거나 메시지를 수신하기 위해 사용되는 UDP 소켓은 필요한 경우에만 열립니다. 1.3-23 이전의 릴리스에서는 매번 열렸지 만 읽기 또는 전달을 위해 열리지 않았습니다.

Named Pipe (FIFO) 로의 출력

이 버전의 syslogd는 명명 된 파이프 (fifo)로 출력을 로깅 할 수 있습니다. fifo 또는 명명 된 파이프는 파일 이름에 파이프 기호 (``| '')를 추가하여 로그 메시지의 대상으로 사용할 수 있습니다. 이것은 디버깅에 편리합니다. syslogd를 시작하기 전에 FIFO를 mkfifo 명령으로 작성해야합니다.

다음 구성 파일은 커널의 디버그 메시지를 fifo로 라우팅합니다.

# 커널 디버깅 # 메시지를 # named pipe 인 / usr / adm / debug로만 라우트하는 예제 설정. 커널. = 디버그 | / usr / adm / debug

설치 문제

이 버전의 syslogd를 설치할 때 중요한 고려 사항이 하나 있습니다. syslogd의이 버전은 syslog 기능에 의한 메시지의 적절한 형식에 따라 다릅니다. 공유 라이브러리의 syslog 기능의 기능은 libc.so.4. 2-4 .n의 어딘가에서 변경되었습니다. 구체적인 변경 사항은 메시지를 Null로 전송하기 전에 메시지를 Null 종료하는 것이 었습니다. / dev / log 소켓. 이 버전의 syslogd의 올바른 작동은 메시지의 null-termination에 달려 있습니다.

이 문제는 일반적으로 오래된 정적으로 링크 된 바이너리가 시스템에서 사용되는 경우 자체적으로 나타납니다. syslog 함수의 이전 버전을 사용하는 바이너리는 빈 줄이 기록되고 그 뒤에 메시지의 첫 번째 문자가 제거 된 메시지가 기록됩니다. 이러한 바이너리를 새로운 버전의 공유 라이브러리에 다시 링크하면이 문제가 해결됩니다.

둘 다syslogd(8)과klogd(8)은 init (8)에서 실행되거나 rc. * 시퀀스의 일부로 시작될 수 있습니다. init에서 시작되면 옵션 -엔 설정해야합니다. 그렇지 않으면 많은 수의 syslog 데몬이 시작됩니다. 이 때문입니다초기화(8)은 프로세스 ID에 따라 다릅니다.

보안 위협

syslogd 데몬이 서비스 거부 공격의 도관으로 사용될 가능성이 있습니다. John Morrison ([email protected])에게이 잠재력에 대해 알려 주신 것에 감사드립니다. 악의적 인 프로그램 (mer)은 syslogd 데몬을 syslog 메시지로 매우 쉽게 범람시킬 수 있습니다. 그 결과 로그 파일은 파일 시스템의 나머지 모든 공간을 소모합니다. inet 도메인 소켓을 통한 로깅 활성화는 물론 시스템을 로컬 시스템의 프로그램이나 개인 외부의 위험에 노출시킵니다.

컴퓨터를 보호하는 데는 여러 가지 방법이 있습니다.

  1. 커널 방화벽을 구현하여 어느 호스트 또는 네트워크가 514 / UDP 소켓에 액세스 할 수 있는지 제한하십시오.
  2. 로깅은 고립 된 파일 시스템이나 루트가 아닌 파일 시스템으로 보내질 수 있으며, 파일 시스템이 가득차면 시스템을 손상시키지 않습니다.
  3. ext2 파일 시스템을 사용하여 특정 비율의 파일 시스템을 루트에 의한 사용으로 제한하도록 구성 할 수 있습니다.노트 syslogd가 비 루트 프로세스로 실행되어야합니다. 또한 참고 이것은 syslogd가 514 / UDP 소켓에 바인드 할 수 없으므로 원격 로깅 사용을 방지합니다.
  4. inet 도메인 소켓을 비활성화하면 로컬 시스템의 위험이 제한됩니다.
  5. 4 단계를 사용하고 문제가 지속되고 불량 프로그램 / 데몬이 2 차가 아닌 경우 3.5 피트 (약 1 미터) 길이의 빨판 막대 *를 가져 와서 해당 사용자와 채팅하십시오. 빨판 막대 def. --- 3/4, 7/8 또는 1in. 경화 된 강철 막대, 양쪽 끝에 나사산이있는 남성. Western North Dakota 및 기타 지역의 석유 산업에서 유정에서 오일을 빨아들입니다. 2 차 용도는 가축 사료 제비를 만들고 가끔 난폭 한 또는 호전적 인 개인을 다루는 것입니다.

디버깅

다음을 사용하여 디버깅이 켜져있을 때-디 옵션을 누른 다음syslogd stdout에서 수행하는 작업의 상당 부분을 작성하여 매우 자세한 정보를 얻을 수 있습니다. 구성 파일을 다시 읽고 다시 구문 분석 할 때마다 내부 데이터 구조에 해당하는 표가 나타납니다. 이 도표는 4 개의 필드로 구성됩니다.

번호

이 필드에는 0으로 시작하는 일련 번호가 있습니다. 이 숫자는 내부 데이터 구조 (즉, 배열)의 위치를 ​​나타냅니다. 한 번호가 생략되면 해당 행에 오류가있을 수 있습니다. /etc/syslog.conf .

무늬

이 필드는 까다 롭고 내부 구조를 정확하게 나타냅니다. 모든 열은 시설을 나타냅니다 (syslog(삼)). 보시다시피, 이전 시설로 남아있는 시설이 아직 남아 있습니다. 가장 왼쪽의 것만 사용됩니다. 열의 모든 필드는 우선 순위를 나타냅니다 (syslog(3)).

동작

이 필드는 패턴과 일치하는 메시지를받을 때마다 발생하는 특정 작업을 설명합니다. 자세한 내용은syslog.conf(5) 맨 페이지를 참조하십시오.

인수들

이 필드는 마지막 필드의 활동에 대한 추가 인수를 표시합니다. 파일 로깅의 경우 이것은 로그 파일의 파일 이름입니다. 사용자 로깅의 경우 이는 사용자 목록입니다. 원격 로깅의 경우 이것은 로그온 할 시스템의 호스트 이름입니다. 콘솔 로깅의 경우 이것은 사용 된 콘솔입니다. tty-logging의 경우 이것은 지정된 tty입니다. 벽에는 추가 인수가 없습니다.

참고 사항

나무꾼(1), syslog(2), (5)

공동 작업자

syslogd Greg Wettstein ([email protected])이 BSD 소스에서 가져온 것이고, Martin Schulze ([email protected])는 몇 가지 버그를 수정하고 몇 가지 새로운 기능을 추가했습니다.Klogd원래 Steve Lord ([email protected])가 작성한 그렉 웨트 슈타인 (Greg Wettstein)은 큰 발전을 이루었습니다.

Dr. Greg WettsteinEnjellic 시스템 개발

종양학 연구실 컴퓨터 시설로저 마리스 암 센터파고, 노스 다코타 주[email protected]

스티븐 트위디컴퓨터 과학과에딘버러 대학교, 스코틀랜드[email protected]

주하 비르 타넨[email protected]

쉐인 알더턴[email protected]

마틴 슐츠인포 트롬 올덴 부르크[email protected]

중대한: 사용 남자 명령 ( % man )를 사용하여 특정 컴퓨터에서 명령이 어떻게 사용되는지 확인하십시오.

관련 기사

  • sysklogd - 리눅스 명령 - 유닉스 명령
  • rwall - rwa 란 무엇입니까?