允许用户读取日志文件的最安全方法是什么?


21

我的应用程序需要对的访问权限/var/log/messages,该访问权限属于用户和组root/var/log/messages我的应用程序可以读取的最低暴露水平是多少?

目前,我的计划是将的组所有权更改/var/log/messages为新的组,并向其中添加root和我的应用程序用户,但这也将赋予该应用程序写权限/var/log/messages

操作系统:Centos 5.5

Answers:


7

无需在该组中添加root用户,因为它无论如何都可以通过用户privs进行访问,只需将组读取到您决定的任何组即可。请记住也要使用logrotate进行更改,否则组更改将在每晚删除。


logrotate脚本位于哪里?
gAMBOOKa 2011年

1
/etc/logrotate.d/是已分解的logrotate脚本的文件夹。/ var / log / messages位于/etc/logrotate.d/syslog中。您需要将/ var / log / messages移到/etc/logrotate.conf中它自己的文件中,然后使用诸如“ create 0640 root new_group root”之类的命令告诉它正确创建文件。
rfelsburg

您需要将/ var / log / messages移至/etc/logrotate.d/中的自身文件中
Massimo,

17

只是在上面的答案上稍微扩展一下,这是一个真实的用例。我在Redhat框上运行企业日志分析应用程序Splunk。它在splunk用户和splunk组下运行。这可以防止splunk访问/ var / log中的日志,因为它们只能由root用户(或sudo admin)访问。

为了只允许对splunk进行只读访问,我使用了一些ACL并修改了logrotate使其持久化。

您可以通过以下方式手动设置ACL

sudo setfacl -m g:splunk:rx /var/log/messages

由于logrotate不会重新应用ACL设置,因此不会持续存在,因此对于更永久的解决方案,我添加了一条规则以logrotate重置ACL。我添加了文件。

/etc/logrotate.d/Splunk_ACLs

{
    postrotate
        /usr/bin/setfacl -m g:splunk:rx /var/log/cron
        /usr/bin/setfacl -m g:splunk:rx /var/log/maillog
        /usr/bin/setfacl -m g:splunk:rx /var/log/messages
        /usr/bin/setfacl -m g:splunk:rx /var/log/secure
        /usr/bin/setfacl -m g:splunk:rx /var/log/spooler
    endscript
}

使用以下命令检查文件的ACL状态

$ getfacl /var/log/messages

有关ACL的详细信息,请参阅 https://help.ubuntu.com/community/FilePermissionsACL http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/



1
请注意,splunk不需要对日志文件具有执行权限,只需读取即可。
rojs

@nickfox这就是/etc/logrotate.d/Splunk_ACLs您张贴在此处的全部内容吗?您实际上不需要为logrotate指定任何路径来处理postrotate位吗?
Dale Anderson

嗯,别这样。我不想修改系统日志的现有logrotate配置,也不想用我自己的配置替换它们。这样,针对splunk的自定义修改就独立存在。允许您使用程序包或人偶等进行部署,这就是/app.d/目录的作用。当然,我可能是错的,因为那是一年多以前以来的事情
尼克·福克斯

1
请注意,如果您使用X选项(例如,使用大写X而不是x),则仅当文件为目录或已经具有某些用户的执行权限时,它才会添加执行
Steoleary

5

您的计划是可以接受的,在“传统” Unix许可方案中,这是最好的选择。
另一个选择是让syslog将您感兴趣的消息转移到另一个文件中(这避免了使应用程序用户可以访问中可能包含的任何敏感信息/var/log/messages)。

如果您不希望受到传统的用户/组/其他权限方案的束缚,则还可以使用POSIX ACL(其他可能更好的howtos / info可通过Google获得)来为您的应用程序用户提供对/var/log/messages-这有点更细粒度,不会冒意外将其他人放入应用程序组中并让他们访问他们不应该看到的内容的风险。


2

是的,我曾经setfacl这样做是为了让mail.log客户访问该文件,而不是您还需要logrotate.conf在旋转日志后在文件中添加命令以重新设置ACL,例如:

postrotate
         /usr/bin/setfacl -m o::r /var/log/mail.log  
endscript

请注意,我只是进行了设置,还没有进行测试,但是尽管它会在此处发布,但无法了解为什么它不起作用,如果我错了,请有人纠正我。


0

您可以为此使用ACL。它允许您为特定用户和文件设置特定的其他访问规则。


-1

按照其他人的意见配置ACL之后,您无需将所有acl规则放入postrotate配置中,就可以使用logrotate来使用copytruncate,而不是每次都创建新的日志文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.