Skip to main content

Syslogd Linux和Unix命令

資訊與網路安全概論:終端機密碼 – ssh 加密 (六月 2025)

資訊與網路安全概論:終端機密碼 – ssh 加密 (六月 2025)
Anonim

Sysklogd提供了两个系统实用程序,它们为系统日志记录和内核消息捕获提供支持。支持internet和unix域套接字使该实用程序包能够支持本地和远程日志记录。

系统日志记录由版本提供syslogd的(8)源自BSD的股票来源。支持内核日志记录由。提供klogd的(8)实用程序,它允许以独立方式或作为syslogd的客户端进行内核日志记录。

Syslogd提供了许多现代程序使用的日志记录。每条记录的消息至少包含一个时间和一个主机名字段,通常也是一个程序名称字段,但这取决于日志记录程序的可信度。

虽然syslogd的 消息来源已被大量修改,有几个笔记是有序的。首先,系统地尝试确保syslogd遵循其默认的标准BSD行为。需要注意的第二个重要概念是,此版本的syslogd与标准库中的syslog版本进行透明交互。如果链接到标准共享库的二进制文件无法正常运行,我们想要一个异常行为的示例。

主配置文件 /etc/syslog.conf文件 或者是一个替代文件-F 选项,在启动时读取。任何以井号(“#”)和空行开头的行都将被忽略。如果在解析期间发生错误,则忽略整行。

概要

syslogd的 -一个 插座 -d -F 配置文件 -H -l 主机列表 -m 间隔 -n -p 插座 -r -s 的domainlist -v -X

选项

-一个 插座

使用此参数,您可以从中指定其他套接字syslogd的 必须听。如果您要让一些守护进程在chroot()环境中运行,则需要这样做。您最多可以使用19个插座。如果您的环境需要更多,则必须增加符号MAXFUNIX 在syslogd.c源文件中。 OpenBSD的人员在http://www.psionic.com/papers/dns.html上描述了chroot()守护进程的示例。

-d

打开调试模式。使用此守护进程将不会继续叉子(2)将自己设置在后台,但与前景相反,并在当前tty上写入大量调试信息。有关详细信息,请参阅“调试”部分。

-F 配置文件

指定备用配置文件而不是 /etc/syslog.conf文件 ,这是默认值。

-H

默认情况下,syslogd不会转发从远程主机接收的消息。在命令行上指定此开关将使日志后台程序将其收到的任何远程消息转发到已定义的转发主机。

-l 主机列表

指定仅使用其简单主机名而不是fqdn记录的主机名。可以使用冒号(“:”)分隔符指定多个主机。

-m 间隔

syslogd的 定期记录标记时间戳。默认值 间隔 两个之间 - MARK - 线是20分钟。可以使用此选项更改此设置。设置 间隔 为零将其完全关闭。

-n

避免自动后台处理。特别是如果需要的话syslogd的 由…启动和控制在里面(8).

-p 插座

您可以指定替代的unix域套接字而不是 的/ dev /日志 .

-r

此选项将使工具能够使用带有syslog服务的Internet域套接字从网络接收消息(请参阅(5))。默认设置是不接收来自网络的任何消息。

此选项在sysklogd包的1.3版中引入。请注意,默认行为与旧版本的行为方式相反,因此您可能必须启用此功能。

-s 的domainlist

指定在记录之前应该删除的域名。可以使用冒号(“:”)分隔符指定多个域。请注意,不能指定子域,只能指定整个域。例如,如果-s north.de 指定并且主机日志记录解析为satu.infodrom.north.de不会删除任何域,您必须指定两个域,如:-s north.de:infodrom.north.de.

-v

打印版本并退出。

-X

接收远程消息时禁用名称查找。当名称服务器在运行syslog守护程序的同一台机器上运行时,这可以避免死锁。

信号

SYSLOGD 对一组信号做出反应。您可以轻松发送信号syslogd的 使用以下内容:

kill -SIGNAL`cat / var / run / syslogd.pid`

SIGHUP

这让我们syslogd的 执行重新初始化。关闭所有打开的文件,配置文件(默认为 /etc/syslog.conf文件 )将被重读和系统日志(3)设施再次启动。

SIGTERM

syslogd的 会死。

SIGINT, SIGQUIT

如果启用了调试,则会忽略这些调整syslogd的 会死。

SIGUSR1

打开/关闭调试。此选项仅在以下情况下使用syslogd的 是从…开始的-d 调试选项。

SIGCHLD

如果有些人出生,请等待孩子,因为墙上的消息。

配置文件语法差异

SYSLOGD 使用与原始BSD源略有不同的配置文件语法。最初所有特定优先级及以上的消息都被转发到日志文件中。

例如,以下行使用守护程序工具导致守护程序的所有输出(调试是最低优先级,因此每个更高级别也将匹配)进入 的/ usr / ADM /守护进程 :

#示例syslog.conf daemon.debug / usr / adm / daemons

根据新计划,这种行为保持不变。不同的是增加了四个新的说明符,星号(*)通配符,方程符号(=),感叹号(!)和减号(-).

* 指定将指定工具的所有消息定向到目标。请注意,通过指定调试的优先级,此行为是简并的。用户表示星号表示法更直观。

= wildcard用于将日志记录限制为指定的优先级。例如,这允许仅将调试消息路由到特定的日志记录源。

例如,以下行 syslog.conf的 将来自所有源的调试消息定向到 在/ usr / ADM /调试 文件。

#Sample syslog.conf *。= debug / usr / adm / debug

! 用于排除指定优先级的记录。这会影响指定优先级的所有(!)可能性。

例如,以下行将记录设施邮件的所有邮件,但具有优先级信息的邮件除外 在/ usr / ADM /邮件 文件。从news.info(包括)到news.crit(不包括)的所有消息都将被记录到 在/ usr / ADM /新闻 文件。

#Sample syslog.conf mail。*; mail。!= info / usr / adm / mail news.info; news。!crit / usr / adm / news

您可以直观地将其用作异常说明符。上面提到的解释是简单的倒置。这样你可以使用

mail.none

要么

邮件。!*

要么

邮件!调试

跳过邮件工具附带的每条消息。有很大的空间可以玩。 :-)

- 如果要在每次写入文件后省略同步文件,则只能用于为文件名添加前缀。

对于那些习惯于纯BSD行为的人来说,这可能需要适应一些环境,但测试人员已经表明这种语法比BSD行为更灵活。请注意,这些更改不应影响标准syslog.conf的(5)文件。您必须专门修改配置文件以获取增强的行为。

支持远程日志记录

这些修改为syslogd工具提供网络支持。网络支持意味着消息可以从运行syslogd的一个节点转发到另一个运行syslogd的节点,在那里它们将实际记录到磁盘文件中。

要启用此功能,您必须指定-r 命令行上的选项。默认行为是syslogd的 不会听网络。

策略是让syslogd在unix域套接字上侦听本地生成的日志消息。此行为将允许syslogd与标准C库中的syslog进行交互操作。同时,syslogd在标准syslog端口上侦听从其他主机转发的消息。让这个工作正常服务(5)文件(通常在 /等等 )必须具有以下条目:

syslog 514 / udp

如果缺少此条目syslogd的 既不能接收远程消息也不能发送它们,因为UDP端口不能打开。代替, syslogd的 将立即死亡,吹出错误信息。

要将邮件转发到另一台主机,请替换该邮件中的普通文件行 syslog.conf的 具有要以@发布消息的主机名称的文件。

例如,转发所有 使用以下内容将消息发送到远程主机 syslog.conf的 条目:

#示例syslogd配置文件到#消息到远程主机转发所有。 *。* @主机名

转发所有核心 消息到远程主机的配置文件如下:

#示例配置文件,用于将所有内核#消息转发到远程主机。 kern。* @hostname

如果在启动时无法解析远程主机名,因为可能无法访问名称服务器(可能在syslogd之后启动),您不必担心。SYSLOGD 将重试十次解析该名称,然后抱怨。避免这种情况的另一种可能性是将主机名放入 / etc / hosts文件 .

正常syslogd的如果您将从远程主机接收的消息发送到同一主机(或者更复杂到将其发送回第一个主机的第三个主机,等等),您将获得syslog-loops。在我的域名(Infodrom Oldenburg),我们偶然得到一个,我们的磁盘充满了相同的单个消息。 :-(

为了避免这种情况,不再将从远程主机接收的消息发送到另一个(或相同的)远程主机。如果有这种情况没有意义,请告诉我(乔伊)一行。

如果远程主机与主机位于同一域中,syslogd的 正在运行,只会记录简单的主机名而不是整个fqdn。

在本地网络中,您可以提供中央日志服务器,以便将所有重要信息保存在一台计算机上。如果网络由不同的域组成,则不必抱怨记录完全限定的名称而不是简单的主机名。您可能想要使用strip-domain功能-s 这个服务器。你可以告诉syslogd的 剥离除服务器所在域之外的几个域,并仅记录简单的主机名。

使用-l 选项还可以将单个主机定义为本地计算机。这也导致仅记录其简单的主机名而不记录fqdns。

用于将消息转发到远程主机或从它们接收消息的UDP套接字仅在需要时打开。在1.3-23之前的版本中,它每次都会打开,但不会分别打开或转发。

输出到命名管道(FIFO)

此版本的syslogd支持将输出记录到命名管道(fifos)。通过在文件名前加上一个pipy符号(“|”),可以使用fifo或命名管道作为日志消息的目标。这对于调试很方便。请注意,必须在启动syslogd之前使用mkfifo命令创建fifo。

以下配置文件将调试消息从内核路由到fifo:

#示例配置将内核调试#消息仅路由到/ usr / adm / debug这是一个#命名管道。 kern。= debug | / usr / adm / debug

安装问题

安装此版本的syslogd时可能有一个重要的考虑因素。此版本的syslogd取决于syslog函数对消息的正确格式。共享库中syslog函数的功能在libc.so.4区域的某处发生了变化。2-4 .n。具体的变化是在将消息传输到之前将消息空终止 的/ dev /日志 插座。此版本的syslogd的正常运行取决于消息的空终止。

如果在系统上使用旧的静态链接二进制文件,则此问题通常会显现。使用旧版syslog函数的二进制文件将导致记录空行,然后删除消息中第一个字符的消息。将这些二进制文件重新链接到较新版本的共享库将解决此问题。

这俩syslogd的(8)和klogd的(8)可以从init(8)运行或作为rc。*序列的一部分启动。如果它是从init启动选项 -n 必须设置,否则,你将获得大量的syslog守护进程启动。这是因为在里面(8)取决于进程ID。

安全威胁

syslogd守护程序有可能被用作拒绝服务攻击的管道。感谢John Morrison([email protected])提醒我这个潜力。流氓程序(mer)可以很容易地使syslogd消息泛滥syslogd守护进程,导致日志文件消耗文件系统上的所有剩余空间。激活对inet域套接字的日志记录当然会使系统面临本地计算机上的程序或个人之外的风险。

有许多保护机器的方法:

  1. 实施内核防火墙以限制哪些主机或网络可以访问514 / UDP套接字。
  2. 可以将记录定向到隔离或非根文件系统,如果填充,则不会损害机器。
  3. 可以使用ext2文件系统,可以将其配置为将文件系统的某个百分比限制为仅供root用户使用。注意 这将要求syslogd作为非root进程运行。 另请注意 这将阻止使用远程日志记录,因为syslogd将无法绑定到514 / UDP套接字。
  4. 禁用inet域套接字将限制本地计算机的风险。
  5. 使用步骤4,如果问题仍然存在并且不是流氓程序/守护进程的辅助,则获得一个3.5英尺(约1米)长的抽油杆*并与相关用户聊天。抽油杆def。 --- 3 / 4,7 / 8或1英寸。硬化钢棒,每端有螺纹。主要用于北达科他州西部和其他地区的石油工业,从油井中抽取“吮吸”石油。二次使用是用于建造牛饲料场以及处理偶尔顽固或好战的个体。

调试

使用时打开调试-d 那么选择syslogd的 通过在stdout上写下它的大部分内容,将会非常冗长。每当重新读取配置文件并重新解析时,您将看到与内部数据结构相对应的表格。该表格包含四个字段:

该字段包含从零开始的序列号。该数字表示内部数据结构(即阵列)中的位置。如果省略一个数字,则相应行中可能存在错误 /etc/syslog.conf文件 .

图案

这个领域很棘手,完全代表了内部结构。每列代表一个设施(参见系统日志(3))。正如您所看到的,仍然有一些设施可供以前免费使用,只使用最左边的设施。列中的每个字段代表优先级(参见系统日志(3)).

行动

此字段描述每当收到与模式匹配的消息时发生的特定操作。参考syslog.conf的(5)所有可能操作的联机帮助页。

参数

此字段显示最后一个字段中操作的其他参数。对于文件日志记录,这是日志文件的文件名;对于用户记录,这是一个用户列表;对于远程日志记录,这是要登录的计算机的主机名;对于控制台日志记录,这是使用过的控制台;对于tty-logging,这是指定的tty; wall没有其他参数。

也可以看看

记录仪(1), 系统日志(2), (5)

合作者

SYSLOGD 来自BSD的消息来源,Greg Wettstein([email protected])为Linux执行了端口,Martin Schulze([email protected])修复了一些错误并增加了一些新功能。KLOGD最初由Steve Lord([email protected])撰写,Greg Wettstein做出了重大改进。

Greg Wettstein博士Enjellic系统开发

肿瘤研究部计算设施罗杰马里斯癌症中心Fargo,ND[email protected]

斯蒂芬特威迪计算机科学系苏格兰爱丁堡大学[email protected]

Juha Virtanen[email protected]

Shane Alderton[email protected]

马丁舒尔茨Infodrom Oldenburg[email protected]

重要: 使用 人 命令( % 人 )查看特定计算机上如何使用命令。

相关文章

  • sysklogd - Linux命令 - Unix命令
  • rwall - 什么是rwa