写点什么

Redhat 持久化日志与实战练习

作者:阿柠xn
  • 2022-11-13
    陕西
  • 本文字数:1361 字

    阅读完需:约 4 分钟

持久化日志

默认情况下,Red Hat Enterprise Linux 7 将系统日志存储在/run/log/journal 中,该日志存储在 tmpfs(临时文件系统)上。这意味着在重新启动时,所有存储的信息都将丢失。如果目录/var/log/journal 存在,日志将存储在那里,从而在重新引导后启用持久日志。


可以通过使用以下步骤来启用持久性日志:


mkdir/var/log/journal
复制代码


chown root:systemd-journal  /var/log/journalchmod 2755   /var/log/journal
复制代码


通过向 systemd-journald 发送 USR1 信号,通知它应该使用新位置。当然你也是可以重启的:


 killall -USR1 systemd-journald
复制代码

指导练习:收集信息

在本实验中,我们呢将使用日志文件来排除 web 服务器的故障。


您的服务器一台机器正在运行一个 web 服务器,为文件 http://servera.lab.example.com/test.html.提供服务。您的测试经理刚刚发来一张通知,告知您不能从 web 浏览器访问该文件。通知中没有给出进一步的信息。


使用 servera 上的日志文件调查此问题,然后解决此问题。


为了重现这个问题,你可以在火狐上浏览这是个网页,也可以执行下面的命令:


elinks -dump http://servera.lab.example.com/test.html
复制代码


我们遇到 HTTP 403 的问题。这可能有很多原因:文件权限、Linux 类型、内部 httpd 配置等。


你知道 web 服务器本身正在运行,并且防火墙是打开的。


我们去 servera 服务器上看看日志呀:


那我们就应该知道,在服务器上的 httpd 的日志大多数是存储在:


/var/log/httpd/access_log   for all access attempts
/var/log/httpd/error_log for all errors.
复制代码


1.首先我们在**/var/log/httpd/access_log**这个地方查询关于 test.html 的任何消息。


grep test.html /var/log/httpd/access_log
复制代码


这个输出中的 403 是 HTTP 状态代码。除此之外,可以看到请求的 URL、请求的日期和时间,以及使用的用户代理,但是没有任何东西可以进一步帮助解决这个问题。


2.继续检查 /var/log/httpd/error_log


tail /var/log/httpd/error_log
复制代码



这条消息告诉您 httpd 被文件权限阻止读取 test.html 文件。这排除了 httpd 的内部配置错误,所以文件权限和 SELinux 是可能的原因。


  1. 检查/var/www/html/test.html 上的文件权限,并在必要时进行修复。


[root@servera ~]# ls -l /var/www/html/test.html
复制代码



第一组 rw-: 表示这个文件的拥有者对它的权限:可读可写第二组---: 表示这个文件的所属组对它的权限第三组---: 表示这个文件的其他用户(相对于上面两类用户)对它的权限


我们可以看到这个权限是不太对的。


chmod 644 /var/www/html/test.html
复制代码


我们让所有用户有可读权限。


我们使用 Firefox 或 elinks 再次测试对文件的访问,发现还是没有解决这个问题,那么说明文件权限问题不是全部问题。


那么就要去看看 SElinux 了:


SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux 历史上最杰出的新安全子系统。NSA 是在 Linux 社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。


  1. 检查 SELinux 日志,查看今天发生的任何拒绝,并修复您可能发现的任何问题。


查看 selinux 今天是否有拒绝:


 ausearch -i -m avc -ts today
复制代码



这表明 test.html 文件具有 tmp_t 的 SELinux 类型,所以 httpd 不允许打开它


通过在上运行递归 restorecon 修复此问题 /var/www


[root@servera ~]# restorecon -Rv /var/www
复制代码


此时我们再次运行那个网页就发现 OK 了。

发布于: 刚刚阅读数: 5
用户头像

阿柠xn

关注

还未添加个人签名 2022-08-29 加入

还未添加个人简介

评论

发布
暂无评论
Redhat持久化日志与实战练习_Linux_阿柠xn_InfoQ写作社区