手机版
你好,游客 登录 注册
背景:
阅读新闻

iptables+rsyslog(syslog)+logrotate访问日志分析

[日期:2017-07-02] 来源:Linux社区  作者:jim123 [字体: ]

最近,因为相应的业务需求需要对服务器的相应服务做访问分析,在做之前大致思考了下,可以利用iptables的log日志功能用来做相应的日志分析,在此就以做ssh端口访问做日志分析来简单讲解下,在实际生产环境下也可以根据实际情况调整,可以用来做WEB服务等等的相应的访问日志分析。

首先,在使用日志分析之前最重要的就是iptables的log功能,至于iptables中的log功能使用 也很简单,在开启后会把日志写入/var/log/messages内核日志中,而iptables的日志功能使用的几个参数也很简单,如下:

--log-level level        记录级别
--log-prefix prefix      在纪录信息前加上特定的前缀:最多14个字母长,用来和记录中其他信息区别。
--log-tcp-sequence       记录TCP序列号。使用此日志会打印tcp的重要信息,要注意日志的相应权限,确保信息不泄露。
--log-tcp-options        记录来自TCP包头部的选项,tcp3次握手的一些具体信息。
--log-ip-options         记录来自IP包头部的选项,源ip目的ip的详细信息。

因为分析的服务是tcp的端口那么在这里就每一次的NEW的信息写入日志,而系统日志都是通过rsyslog进行管理日志的,rsyslog是syslog的升级版,在CentOS中的6.9及其以上版本和大部分的Ubuntu系统中都是使用rsyslog,而升级后的rsyslog在功能更强大后基本的配置同syslog差不多,当然如果是旧版的系统中使用syslog也是可以的,而syslog在以前有提过,在此就不做过多的说明了,需要的可以参看: http://www.linuxidc.com/Linux/2017-02/140474.htm,而在定义iptables的中日志级别的参数中日志级别就是使用rsyslog,如果没有定义默认级别是4,而主要的日志级别,大致如下:

等级等级名称说明
1 info 一些基本信息说明,这个级别日志也最为详细
2 notice 除了info级别外还多一些需要注意的信息
3 warning(warn) 警告信息,可能会出现的问题,还还不至于影响某个进程
4 err(error) 一些重大的错误信息,一般err信息就可以就可以排查相应的问题了
5 crit 比err更为重要的错误信息,一般到这个级别错误就很严重了
6 alart 警告比crit更为严重
7 emerg(panic) panic级别,快要死机的状态,很严重的错误信息

当然rsyslog日志中还有2个级别debug(错误检测等级)和none(不需要登录等级),一般很少使用,而在iptables的日志是写在内核日志中,那么为了便于收集日志用来分析,那么可以修改rsyslog日志的配置文件重新指定下iptables的日志,追加以下这一行,然后重启rsyslog,这里日志级别也可以使用warning级别,在此就用*代表收集所有日志

[root@localhost ~]# echo "kern.* /var/log/iptables.log" >> /etc/rsyslog.conf
[root@localhost ~]# /etc/init.d/rsyslog restart

当然,如果是做WEB的80端口分析,可能日志会非常多,那么就需要使用logrotate用来切割日志做分析,logrotate的配置以前也有提过此处就不做更多的赘述了,需要可以参看: http://www.linuxidc.com/Linux/2017-02/140261.htm

配置如下:

[root@localhost ~]# vim /etc/logrotate.d/iptables
/var/log/iptables.log {
          
        copytruncate
        daily
        rotate 7
        dateext
        missingok
        compress
        create 600 root root
}
[root@localhost ~]# echo "59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.conf" >> /var/spool/cron/root

在iptables中添加一条策略,把要做日志分析的服务端口做记录:

[root@localhost ~]# vim /etc/sysconfig/iptables
…略…
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j LOG --log-prefix "ssh_access-" --log-tcp-sequence --log-tcp-options --log-ip-options
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
[root@localhost ~]# /etc/init.d/iptables restart

最后在添加一条logrotate定时任务使日志切割生效即可,总之用这套日志分析方案可以解决很多需要分析日志的服务,不过要注意写好iptables的相应规则及logrotate日志切割日志,以免日志太大塞满磁盘。

更多iptables相关教程见以下内容

CentOS 7.0关闭默认防火墙启用iptables防火墙  http://www.linuxidc.com/Linux/2015-05/117473.htm

Iptables工作原理使用详解 http://www.linuxidc.com/Linux/2016-09/134945.htm

Ubuntu 14.04 配置iptables防火墙 http://www.linuxidc.com/Linux/2017-02/140556.htm

Linux下编译安装iptables  http://www.linuxidc.com/Linux/2017-04/142615.htm

iptables的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Iptables工作原理使用详解  http://www.linuxidc.com/Linux/2016-09/134945.htm

CentOS7下iptables配置过程 http://www.linuxidc.com/Linux/2017-01/139622.htm

Linux下iptables防火墙设置 http://www.linuxidc.com/Linux/2015-10/123843.htm

Linux防火墙iptables详解  http://www.linuxidc.com/Linux/2016-12/138474.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-07/145359.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款