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

为什么需要发送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免密登录真的安全吗?

    图形界面自动登录(适用于Ubuntu/CentOS等桌面版)打开系统设置Ubuntu:Settings → Users → 解锁后开启Automatic LoginGNOME桌面:gnome-control-center user-accounts → 选择用户启用自动登录配置文件修改(通用方法)sudo na……

    2025年6月27日
    5800
  • 准备不足会带来什么后果?

    充分的准备工作是成功的基础,它能有效提升效率、减少错误、增强信心,是确保任务顺利完成的关键。

    2025年8月6日
    4200
  • Linux系统锁屏有哪些方法?命令行和图形界面的操作步骤是什么?

    在Linux系统中,锁屏是保护用户隐私和数据安全的基本操作,无论是暂时离开电脑还是需要中断工作,锁屏都能防止未授权人员访问系统,Linux锁屏方式多样,可根据桌面环境、使用习惯和场景需求选择,本文将详细介绍图形界面、命令行、快捷键及自动化等锁屏方法,并涵盖不同发行版的适配方案,图形界面锁屏:直观易用的主流方式大……

    2025年9月22日
    2200
  • 如何查看Shell父进程PID?

    在Linux系统中,每个进程(除初始进程init外)都由另一个进程创建,创建者称为父进程,其唯一标识为PPID(Parent Process ID),查看父进程PID是诊断进程关系、排查异常进程或管理进程树的关键操作,以下是几种可靠的方法:使用 ps 命令(最常用)ps(Process Status)是基础工具……

    2025年8月4日
    3300
  • 如何深入理解Linux内核内存页表的构建、机制与查询方法?

    要深入了解Linux内核如何管理内存页表,需要从虚拟内存机制、页表结构、内核数据结构以及调试工具等多个维度展开分析,Linux采用分页机制实现虚拟内存到物理内存的映射,页表是这一机制的核心数据结构,以下从原理到实践详细阐述如何获取和分析Linux内核的页表信息,页表基础与Linux实现机制虚拟地址空间被划分为固……

    2025年8月30日
    3600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信