FROM:https://www.nri-secure.co.jp/ncsirt/2013/0218.html

SANSインターネットストームセンターのハンドラであるJohannes Ullrichが、rsyslogのrate-limiting機能について報告している。
(掲載日:米国時間 2013年2月6日)

(本稿は、Bill Parker氏に寄稿して頂いた)
/var/log/*配下のログファイルを参照しているが、重要あるいは重大になりうる情報を紛失している管理者はどのくらいいるだろうか?

あるテストマシン(VirtualBox 4.2.6の64ビット版CentOS 6.3)において、広く使われているIDS(Snort 2.9.x)を扱っていた時だ。/etc/init.dの起動スクリプト経由でsnortが初期化される際、筆者は普段目にしないメッセージに偶然気がついた。

メッセージの原因はこうだ。最近のLinuxディストリビューションであれば、その多くにsyslogdあるいはsysklogdを置き換えるrsyslogが付属している。しかし、rsyslogのバージョン5.7.1から、rate-limitingという機能が追加され、5秒間に/var/log/messagesへ200以上のメッセージ(rsyslogのデフォルト設定)を送信したプロセスID(PID)があれば、rsyslogはメッセージを捨て始め、/var/log/messagesに以下のような警告を出力する。

Feb 5 13:07:52 plugh rsyslogd-2177: imuxsock begins to drop messages from pid 12105 due to rate-limiting

そのため、/var/log/messages等にメッセージを出力するデーモンあるいはプロセスの場合、セキュリティ管理者/システム管理者にとって、多くの重要/重大なメッセージが紛失してしまう可能性がある。

ルータ/ファイアウォール/Webサーバから出力されるメッセージに対しrate-limitingを活用するのは、特定のネットワーク型攻撃を抑制する上で効果的な方法になる。その一方で、システム/アプリケーション・ロギングの場合、SIEM(注1)あるいは膨大なシステム/アプリケーション・ログを収集し解析するアプリケーションにとって、この機能は悪夢のような状況を作り出す可能性がある。ただ、rsyslogの仕様を調べたところ、解決策を2つ見つけたので以下に紹介したいと思う。

注意 - 先に進む前に対象ファイルのバックアップを取得する事!

1つ目の解決策は、単にrsyslogでrate-limitingが発生する前のメッセージ数上限を上げる、あるいは時間間隔を減らすというものだ。そのためには、rsyslog.confあるいはrsyslog.early.confを見つけ(通常は、/etc以下にある)、下記設定を追加する。

$SystemLogRateLimitInterval 10
$SystemLogRateLimitBurst 500

上記は、rsyslog.confあるいはrsyslog.early.confの$ModLoadディレクティブ以下に追加する。

この設定により、10秒間に500以上のメッセージを1つのPIDから受信した場合、rate-limitingが動作しメッセージを捨て始める(上記の値は絶対的なものではなく、システムに合わせ調整してほしい)。

2つ目の解決策は、単純にrsyslogのrate-limitingを無効にするというものだ。そのためには、下記設定をrsyslog.confあるいはrsyslog.early.confに追加する。

$SystemLogRateLimitInterval 0

上記は、rsyslog.confあるいはrsyslog.early.confの$ModLoadディレクティブ以下に追加する。

この設定により、rate-limiting自体が無効になる。ただ、この設定を投入する事で、制御できなくなったプロセスIDが使い道のないメッセージで/var/log/messagesを埋め尽くす可能性があるという事は、認識しておいて頂きたい(そういう訳で、rate-limitingがrsyslogにおいてデフォルトで有効になっているのだ)。

また、rsyslog.confあるいはrsyslog.early.confの設定変更を有効にする際には、rsyslogデーモンを忘れずに再起動してほしい。
なお、下記のLinuxディストリビューションでは、rsyslogをデフォルトのシステムロガーとして使用している。

CentOS 6.x
Debian 5.0
Fedora 13以上
OpenSuSE 11.x/12.x
Ubuntu 10.0以上

また、BSDベースのシステム(FreeBSD 8.x/9.0、OpenBSD 5.x、NetBSD 5.x/6.0)では、伝統的なsyslogdがデフォルトのシステムロガーとして使用されている。より詳細な情報が必要な場合、下記URLを参照してほしい。
http://www.rsyslog.com/doc 

注1:SIEMとはSecurity Information and Event Managementの略で、ネットワーク機器、サーバ機器等から出力されるログを集中的に保存・解析するソリューション

原文:https://isc.sans.edu/diary.html?storyid=15106 

Feb 5 13:07:52 plugh rsyslogd-2177: imuxsock begins to drop messages from pid 12105 due to rate-limiting的更多相关文章

  1. UVA 10392 (13.07.28)

    Problem F: Factoring Large Numbers One of the central ideas behind much cryptography is that factori ...

  2. ofbiz最新版13.07.01环境搭建、安装(linux环境下)

    一.软件必备: 1.jdk1.7 2.mysql5.6 3.安装tomcat 二.安装: 1.安装 JDK1.7 2.安装mysql数据库 3.下载apache-ofbiz-13.07.01.zip ...

  3. Saving James Bond - Easy Version 原创 2017年11月23日 13:07:33

    06-图2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the movie &q ...

  4. select document library from certain list 分类: Sharepoint 2015-07-05 07:52 6人阅读 评论(0) 收藏

    S using System; using Microsoft.SharePoint; namespace Test { class ConsoleApp { static void Main(str ...

  5. UVA 299 (13.07.30)

     Train Swapping  At an old railway station, you may still encounter one of the lastremaining ``train ...

  6. UVA 140 (13.07.29)

     Bandwidth  Given a graph (V,E) where V is a set of nodes and E is a set of arcsin VxV, and anorderi ...

  7. UVA 568 (13.07.28)

     Just the Facts  The expression N!, read as `` N factorial," denotes the product of the first N ...

  8. UVA 408 (13.07.28)

     Uniform Generator  Computer simulations often require random numbers. One way to generatepseudo-ran ...

  9. Hdu1896 Stones(优先队列) 2017-01-17 13:07 40人阅读 评论(0) 收藏

    Stones Time Limit : 5000/3000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submis ...

随机推荐

  1. verilog实现中值滤波

    前言 项目需要,想要实现算法中的其中一步即中值滤波,同时,因为图像处理部分中值滤波相对来说还是比较简单的,将中值滤波的硬件实现作为进入FPGA领域的第一次尝试.虽然说网上有较多关于中值滤波的文档,可是 ...

  2. Keepalived 进程无法关闭

    操作系统:SLES12sp2 keepalived版本:1.2.12 问题描述: 使用命令"systemctl stop keepalived" 无法关闭keepalived,使用 ...

  3. 将scrapy项目运行在pycharm中

    1.在scrapy项目中创建一个py脚本,且尽量在scrapy.cfg同级目录下.我创建的是begin.py 2.配置begin.py.写上这一句就相等于一点开始,就在终端上输入了scrapy cra ...

  4. 修改JAVA代码,需要重启Tomcat的原因

    准确的说只有修改方法中的内容才不需要重启,因为tomcat中对于方法的调用是动态的,调用方法的时候,方法的内容才会被加载 新增成员变量,方法,或修改静态方法和静态变量.创建新的类 这些都是需要重启的, ...

  5. P1373 小a和uim之大逃离(动态规划)

    题目链接:传送门 题目大意: 一个N行M列的矩阵,从任意点开始往右或者往下走,每走一格获得所到达的格子的分数. 要求总步数必须为偶数.问有多少种走法,使得奇数步得到的总分和偶数步得到的总分对K+1取模 ...

  6. Linux 命令的20个实用范例,入门必看!

    Tips: 达内Linux云计算免费课程火热抢报中,点击文末“阅读原文”快速抢! Linux中一个基本命令是ls.没有这个命令,我们会在浏览目录条目时会遇到困难.这个命令必须被每个学习Linux的人知 ...

  7. 服务器cpu负载过高问题排查

    https://blog.csdn.net/MrZhangXL/article/details/77711996 第一步 :执行top命令,查出当前机器线程情况 top - 09:14:36 up 1 ...

  8. mysql修改用户密码

    修改自己的密码(root用户,其它用户应该也差不多) 方法一: [root@localhost /]# mysqladmin -u root -p password "root" ...

  9. sql表连接方式

    表连接有几种? sql表连接分成外连接.内连接和交叉连接.   一.外连接 概述: 外连接包括三种,分别是左外连接.右外连接.全外连接. 对应的sql关键字:LEFT/RIGHT/FULL OUTER ...

  10. ksonnet 一个简化编写以及部署kubernetes的工具

    ksonnet 是一个基于jsonnet的快速简化kubernetes yaml 配置的工具,可以实现配置的复用 同时也包含一个registry 的概念,可以实现可复用组件的分发,同时支持helm 环 ...