在上一篇文章中,我解释了 什么是系统日志以及使用原因。在本文中,我将探讨如何在网络设备上配置系统日志。

这些解释和示例将针对Cisco进行一些具体说明,主要是因为这是我最熟悉的工具。但是,基本上每个现代网络设备都至少具有某些系统日志功能。不支持它的人直接拥有自己的日志控制台,通常可以将其配置为过滤日志并将日志转发到另一台集中式syslog服务器。

在Cisco设备上启用日志记录

syslog协议以其最基本的形式通过UDP端口514发送文本消息。您可以使用“ logging IP”命令在大多数Cisco设备上启用基本日志记录。在我的网络中,系统日志服务器的IP地址为192.168.2.47,因此我将输入以下内容:

!
 logging 192.168.2.47
 logging on
!

实际上,通常不需要“登录”(在某些设备上为“启用日志”)。此命令仅打开日志记录功能。如果它以前被禁用,我将其包括在这里。

默认情况下,Cisco设备使用系统日志 设施代码 他们的所有邮件均显示为“ local7”。正如我在上一篇文章中所解释的,设施代码只是一种将消息与不同类型的设备和不同服务分开的方法。否则,您会发现自己完全被消息淹没,无法有效使用它们。

阅读更多:网络工程师Kevin Dooley解释 syslog严重性和设施代码 以及它们如何工作。

在Linux系统上使用syslogd

我的syslog服务器是Linux系统,我仅使用Linux随附的默认“ syslogd”程序。由于我希望将来自Cisco设备的日志消息与Linux系统本身创建的消息分开排序,因此我对服务器的syslog配置进行了一些修改,方法是在/etc/syslog.conf文件中添加以下行:

#
local7.*		/var/log/cisco.log
#

这告诉syslogd守护程序,每当看到设施代码设置为“ local7”的日志消息时,无论优先级如何,都应将其放入指定的文件中。请注意,如果执行此操作,则需要确保使用适当的权限创建此文件,以便syslogd程序可以写入该文件。

在该配置命令中,您会看到“ *”,这是一个通配符,可匹配任何优先级的消息。因此,您可以进一步对消息进行排序,以便将所有调试消息发送到一个文件,将参考消息发送到第二个文件,将其他所有消息发送到第三个文件:

#
local7.notice		/var/log/cisco-notice.log
local7.info		/var/log/cisco-info.log
local7.debug		/var/log/cisco-debug.log
#

默认情况下,标准syslog.conf规则将匹配指定的优先级以及更高的优先级。因此,第一条规则匹配优先级5以及优先级0到4的“通知”。第二条规则匹配优先级6的“信息”消息。第三行匹配优先级7的“调试”消息。 。

更改思科设备上的默认日志记录级别

但是,假设我不想使用这些默认值。我要做的第一件事是将具有不同优先级值的邮件发送到服务器。

在前面的示例中,我的Cisco设备只是 配置为默认日志记录级别,即“信息”。这意味着设备会将所有级别为6或“更高”的消息发送到服务器(在这种情况下,较高的优先级意味着数值较低)。

如果我想查看调试消息以及所有更高优先级的消息,可以使用以下命令:

!
 logging trap debugging
!

同样,如果我只想查看警告消息(优先级4)或更高版本,可以使用以下命令:

!
 logging trap warning
!

我通常不建议将日志记录优先级配置为比此更高。您几乎永远不会看到优先级0或1的消息,因为它们通常表示灾难性的失败。以我的经验,优先级2、3和4消息的指定在很大程度上是任意的。我通常只保留默认值6或“ informational”。

有时您需要做的一件事是更改UDP端口号:

!
 logging trap 192.168.2.47 transport udp port 8514
!

此命令说,对于此服务器,我们要发送到UDP端口8514而不是默认端口514。这仅适用于指定的服务器。您可能配置了多个服务器,并且设备会将每个消息发送到所有已配置的服务器。

您还可以将设备配置为使用TCP而不是UDP。

!
 logging trap 192.168.2.47 transport tcp port 8514
!

请注意,默认情况下,许多Cisco设备上的TCP端口号是601。但是,有许多使用端口514的TCP syslog实现。您需要验证服务器期望使用哪个端口。

网络设备通常具有多个接口,并且每个接口可以具有不同的IP地址。您很容易遇到这样的情况,即设备使用一个IP地址发送“ link down”事件,并使用不同的IP地址发送相应的“ link up”事件。在日志文件中搜索这两条消息可能会造成混乱。因此,为系统日志消息指定特定的源地址或源接口非常有用:

!
interface loopback0
 ip address 192.168.10.1 255.255.255.255
 no shutdown
!
logging source-interface loopback0
!

在这种情况下,我指定了一个环回接口作为源。我这样做是因为当设备需要发送消息时,我选择的任何物理接口都可能会关闭。如果这样做,则需要确保创建环回界面,就像我在示例中所做的那样。

保护Cisco设备上的系统日志消息

使用syslog的缺点之一是消息(本质上可能是敏感的)以明文形式发送,并且容易被拦截或伪造。实际上,我没有听说过实际上发生过任何此类攻击,因为大多数IT专业人员都小心翼翼地将其syslog流量限制在受信任的网段内。但是有可能

至少在理论上,可以使用SSL加密保护Syslog。这要求在网络设备和服务器上都使用证书,以相互进行身份验证。我说“理论上”是因为 并非所有的思科设备都支持此功能。从9.2.1版开始,Cisco Nexus交换机支持syslog和 ASA防火墙 也支持SSL syslog,但其他Cisco产品系列似乎不支持。

阅读更多:Kevin Dooley解释 如何将Cisco ASA防火墙配置从旧语法迁移到新语法.

在大多数网络安装中并未使用此功能,原因是保持证书更新的管理开销,并且由于它消耗更多的系统资源来维护加密的会话。服务器支持通过UDP从大量远程设备进行日志记录要容易得多,其中唯一的开销就是接收单个数据包并将其丢到适当的文件或数据库表中。没有要维护的会话,也没有要验证的证书。

由于这些原因,我通常不建议您使用syslog的加密功能。相反,我更喜欢设计网络,以便将这些消息和其他管理流量与用户和其他生产流量隔离开。