macOS开启远程日志服务器

    在macOS中开启日志服务器,接收来自内网设备的日志消息打印到系统控制台,首先需要关闭系统的SIP功能,SIP功能是macOS 10.11系统以后引入的一种新的系统保护机制,防止系统意外遭到破坏。

关闭SIP(系统完整保护)

1.进入Recovery模式,

重启macOS,按下Command+R 直到出现系统进度条后松开组合键;

2.打开终端

选择“实用工具-终端”,如图;

image

3.关闭SIP

输入csrutil disable命令,

image

4.重启系统,即可完成SIP关闭,然后就可以继续执行如下操作:

打开 UDP 日志接收端口:

输入以下命令

sudo mount +uw /
cd /System/Library/LaunchDaemons/
sudo cp com.apple.syslogd.plist com.apple.syslogd.plist.bak
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener dict" com.apple.syslogd.plist
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener:SockServiceName string syslog" com.apple.syslogd.plist
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener:SockType string dgram" com.apple.syslogd.plist
sudo launchctl unload com.apple.syslogd.plist
sudo launchctl load com.apple.syslogd.plist

如下图所示;

-w1065

检查 UDP 端口状态:

输入以下命令检查端口是否已经处于监听状态;

sudo lsof -i :514 -P

-w801

日志过滤配置

编辑配置文件,推荐直接在/etc/asl/ 目录下新建一个配置文件,
vi /etc/asl/Mikrotik

添加如下内容;

? [= Host MikroTik] [= Facility local1] file /var/log/Mikrotik.log

    这里需要注意的是,上面的规则需要准确地找到远程主机发送过来的消息,消息写在Host和Facility字段中。为此,运行命令syslog -F raw,从命令结果中可以看到原始数据输出格式如下;

[ASLMessageID 115] [Time 1592480896] [TimeNanoSec 0] [Level 6] [PID 4294967125] [UID 4294964289] [GID 4294967294] [ReadGID 80] [Host MikroTik] [Sender router] [Facility local1] [Message user user1 logged out from 192.168.1.102 via telnet]

需要说明的是,上面的[= Host MikroTik] [= Facility local7] 需要改成在syslog -F raw命令中输出的你的设备的Host和Facility,当然,也可以添加其他内容做为过滤。

重启服务

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist

sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

注: 如果sudo launchctl unload报错 可以使用sudo killall syslogd命令强制杀掉进程。

以上测试在macOS 10.15.5 下测试通过。

你可能感兴趣的:(macOS开启远程日志服务器)