快速检查软件是否安装?轻松搞定!

为什么需要发送syslog?

  • 集中管理:将多台服务器的日志汇总到单一平台(如ELK、Graylog)。
  • 实时分析:快速检测安全事件(如入侵尝试)或系统错误。
  • 合规性:满足GDPR、等保等法规对日志存储的要求。

核心概念

  1. syslog协议
    Linux通过syslog守护进程(如rsyslog/syslog-ng)处理日志,支持:

    • 设施(Facility):标识日志来源(如auth认证、kern内核)。
    • 级别(Severity):从debug(最低)到emerg(最高)共8级。
  2. 传输协议
    • UDP 514:默认端口,速度快但不可靠。
    • TCP 514:可靠传输,防丢包。
    • TLS加密:通过证书加密数据(推荐生产环境使用)。

配置rsyslog发送日志(推荐方案)

rsyslog是大多数Linux发行版(如Ubuntu/CentOS)的默认日志服务。

步骤1:安装与检查

# 若未安装(极少情况)
sudo apt install rsyslog   # Debian/Ubuntu
sudo yum install rsyslog   # CentOS/RHEL

步骤2:配置发送远程日志

编辑配置文件/etc/rsyslog.conf

sudo vim /etc/rsyslog.conf
  • 发送所有日志到远程服务器(IP:192.168.1.100):
    *.* @192.168.1.100:514        # UDP发送
    *.* @@192.168.1.100:514       # TCP发送
  • 仅发送特定日志(例:发送auth认证日志):
    auth.* @@192.168.1.100:514

步骤3:启用加密传输(TLS)

  1. 生成证书(需CA机构或自签名):
    sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/rsyslog.key -out /etc/rsyslog.crt -days 365
  2. 配置TLS:
    # 在/etc/rsyslog.conf 添加
    $DefaultNetstreamDriver gtls
    $DefaultNetstreamDriverCAFile /etc/rsyslog.crt
    $DefaultNetstreamDriverCertFile /etc/rsyslog.crt
    $DefaultNetstreamDriverKeyFile /etc/rsyslog.key
    *.* @@(o)192.168.1.100:6514  # 6514为TLS端口

步骤4:重启服务

sudo systemctl restart rsyslog
sudo systemctl enable rsyslog

使用logger命令手动发送

通过命令行即时发送测试日志:

# 发送一条测试日志
logger "This is a test log from Server A"
# 指定设施和级别
logger -p auth.warning "Authentication failed for user root"
  • 日志将按rsyslog配置自动转发到远程服务器。

通过systemd-journald发送

若系统使用systemd(如Ubuntu 16.04+/CentOS 7+),可通过journald转发:

  1. 编辑/etc/systemd/journald.conf
    [Journal]
    ForwardToSyslog=yes        # 启用syslog转发
  2. 重启服务:
    sudo systemctl restart systemd-journald
  3. 日志将由rsyslog接管并发送到远程服务器。

安全与优化建议

  1. 防火墙规则
    开放远程服务器的514/TCP端口:

    sudo ufw allow 514/tcp   # Ubuntu
    sudo firewall-cmd --add-port=514/tcp --permanent  # CentOS
  2. 权限控制
    限制日志访问权限:

    chmod 600 /etc/rsyslog.key   # 保护私钥
  3. 日志轮转
    避免本地磁盘爆满,配置logrotate

    # /etc/logrotate.d/rsyslog
    /var/log/syslog {
       daily
       rotate 7
       compress
       delaycompress
       missingok
    }

验证与排错

  1. 检查本地队列
    sudo systemctl status rsyslog    # 查看服务状态
    tail -f /var/log/syslog          # 跟踪本地日志
  2. 测试远程接收
    在日志服务器用tcpdump抓包:

    sudo tcpdump -i eth0 port 514 -vv
  3. 常见错误
    • 连接拒绝:检查远程服务器防火墙和rsyslog是否监听。
    • TLS失败:确保证书路径正确且权限为600

替代方案:syslog-ng

若使用syslog-ng(更灵活的过滤功能):

  1. 安装:
    sudo apt install syslog-ng   # Debian/Ubuntu
  2. 配置发送日志(编辑/etc/syslog-ng/syslog-ng.conf):
    destination remote_server { tcp("192.168.1.100" port(514)); };
    log { source(s_src); destination(remote_server); };

  • 基础场景:通过rsyslog配置@@目标IP:514(TCP)即可完成日志发送。
  • 安全场景:务必启用TLS加密(端口通常为6514)。
  • 临时测试:使用logger命令快速验证。
  • 现代系统:结合systemd-journald实现无缝转发。

引用说明参考Linux官方文档(man rsyslog.conf)、RFC 5424(syslog协议标准),以及Red Hat/CentOS系统管理指南,TLS配置部分遵循OpenSSL官方安全实践。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7728.html

(0)
酷番叔酷番叔
上一篇 2025年7月17日 19:10
下一篇 2025年7月17日 19:23

相关推荐

  • Linux环境下如何编写C语言程序?

    在Linux环境下进行C语言开发是许多开发者和学习者的选择,Linux系统提供了强大的命令行工具和编译器,使得C语言开发流程高效且灵活,下面将详细介绍从环境搭建到代码编写、编译、运行及调试的全过程,开发环境准备在Linux下写C语言,首先需要安装必要的编译器和开发工具,Linux发行版通常自带GCC(GNU C……

    2025年9月21日
    8200
  • Linux系统安装NVIDIA显卡驱动失败?常见问题原因及解决方法详解

    在Linux系统中安装NVIDIA显卡驱动时,用户可能会遇到安装失败的问题,这通常由系统环境不匹配、依赖缺失、权限不足或硬件冲突等多种因素导致,以下是针对常见失败原因的详细排查与解决方法,帮助顺利完成驱动安装,系统版本与驱动不匹配不同Linux发行版(如Ubuntu、CentOS、Fedora等)的内核版本和包……

    2025年9月21日
    7700
  • linux如何看系统语言

    Linux 中,可通过 locale 命令查看系统语言相关信息,如执行 locale

    2025年8月16日
    8100
  • linux 编辑如何保存退出命令

    Linux 中,使用 vi 编辑器保存并退出的命令是 :wq

    2025年8月15日
    8000
  • Linux系统如何调整字体大小?具体方法有哪些?

    在Linux系统中,调整字体大小是提升使用体验的常见需求,但由于Linux发行版多样、桌面环境不同,调整方法也略有差异,本文将从桌面环境、终端、应用程序等多个场景出发,详细介绍如何改变Linux字体大小,帮助用户根据实际需求灵活操作,通过桌面环境调整字体大小(图形界面)不同桌面环境(如GNOME、KDE Pla……

    2025年10月6日
    6300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信