WEB页面日志集中审计

一.日志审计基本结构图。



二.构建环境:操作系统采用CentOS 6.5 x86_64 操作系统,构建rsyslog + loganalyzer,日志集中存储在数据库服务器。

运维人员的排错很多都是靠分析日志来解决问题的,但是日志过于分散会耽误排错时间,对于线上的服务器要尽快的查找问题,及时给出解决方案。当面临群集环境时候,很可能几十台服务器一组群集,排错就会相当痛苦,这时候就需要把日志集中化管理,不仅能解决磁盘I/O能力,还可以通过WEB应用页面来直观的显示出错位置。如果有条件的话,也可以做日志服务器群集,保证一台日志服务器挂掉而不会丢失信息。



四.开始构建日志审计服务器。

1.)首先安装php,鉴于之前安装的LAMP不支持gd模块,又不会二次编译。只能重新编译php。

# yum-y groupinstall "Desktop Platform Development"
# yum-y install bzip2-devel libmcrypt-devel
# tarxf php-5.4.26.tar.bz2 
# cdphp-5.4.26
# ./configure--prefix=/usr/local/php5 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd--with-mysqli=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir--with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr--enable-xml  --enable-sockets--enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d--with-bz2 --with-gd
#--with-gd支持图片处理功
 
# make&& make install #编译安装
# mkdir-pv /var/www/log #创建loganalyzer存放路径
#vim /var/www/log/index.php #创建测试页
#cp php.ini-production /etc/php.ini #复制php配置文件an
#cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm #复制php启动脚本
#cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf #复制php主配置文件
#cd /usr/local/php5/var/run/
#vim /usr/local/php5/etc/php-fpm.conf #编辑配置文件
pid = /usr/local/php5/var/run/php-fpm.pid  #修改pid路径
listen = 172.16.32.12:9000 #修改监听端口
 
#chmod +x /etc/init.d/php-fpm #给php启动脚本执行权限
#/etc/init.d/php-fpm start #启动php


启动php后,就可以结合apache了,测试新编译的—with-gd模块.

日志方面也比较私密,就使用https加密传输。

本来有个主机phpadmin也是使用加密传输的,就在下面创建一个虚拟主机

2.)http主机操作。

# mkdir /var/www/log #创建网站目录

# vim /etc/httpd/extra/httpd-ssl.conf #编辑httpd配置文件
<VirtualHost _default_:443>        #基于域名的https虚拟主机
 
  DocumentRoot "/var/www/log/"     #网站根目录
   ServerNamelog.zhang.com:443     #域名及端口
  ProxyRequests Off #关闭正向代理
  ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.32.12:9000/var/www/log/$1 #反向代理指向php主机及目录
          <Directory "/var/www/log"> #访问控制
              Options none
              AllowOverride none
              Require all granted
          </Directory>
SSLCertificateFile"/etc/httpd/ssl/https.crt" #证书目录
SSLCertificateKeyFile"/etc/httpd/ssl/https.key" #密钥目录
</VirtualHost>
 
#service httpd restart #重启http


3.)测试http结合php。

https生效,新加入的模块也生效了。由于是自建的CA服务器,浏览器说这个认证不合法。

 

数据库也是提前构建好的,这里就直接把日志集中一台服务器了。

4.)切换到数据库服务器。

安装数据库驱动。

# yum -y install rsyslog-mysql


rsyslog-mysql生成三个文件。ommysql.so 这个是驱动模块,createDB.sql这个是安装rsyslog-mysql时候生成的数据库

# rpm -ql rsyslog-mysql #查看rsyslog-mysql 生成的文件
/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

 

5.)编辑配置文件。

# Provides UDP syslog reception
$ModLoad imudp #开启upd传输模块
$UDPServerRun 514 #udp传输端口
 
# Provides TCP syslog reception
$ModLoad imtcp #tcp传输模块
$InputTCPServerRun 514 #upd端口
 
$ModLoad ommysql #指定新添加的模块,默认是没有的
 
#指定数据库,并且添加要授权的ip,账户等信息
*.info;mail.none;authpriv.none;cron.none:ommysql:172.16.32.10,Syslog,logadmin,123456


6.)http php主机如下相同操作。

指定日志集中管理的服务器IP地址

*.info;mail.none;authpriv.none;cron.none                @172.16.32.10

 

7.)重启三台主机的rsyslog。

#service rsyslog restart


8.)将数据导入到数据库。

/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
MariaDB [(none)]> source/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql #使用source导入安装rsyslog-mysql生成的数据库
Query OK, 1 row affected (0.00 sec)
 
Database changed
Query OK, 0 rows affected (0.03 sec)
 
Query OK, 0 rows affected (0.04 sec)
 
MariaDB [Syslog]> SHOW DATABASES; #查看新增加的数据库
+--------------------+
| Database          |
+--------------------+
| information_schema |
| Syslog            |
| bbsdb             |
| mysql             |
| performance_schema |
| test              |
| wpdb              |
+--------------------+
7 rows in set (0.05 sec)
 
MariaDB [Syslog]> USE Syslog; #切换进Syslog数据库
Database changed
MariaDB [Syslog]> SHOW TABLES; #查看Syslog的表
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.00 sec)
MariaDB [Syslog]> GRANT ALL ON Syslog.*TO‘logadmin‘@‘172.16.32.12‘ IDENTIFIED BY ‘123456‘; # 授权php主机
 
Query OK, 0 rows affected (0.01 sec)
 
MariaDB [Syslog]>  FLUSH PRIVILEGES; #刷新权限
Query OK, 0 rows affected (0.00 sec)


9.)出来后重启rsyslog,使日志开始记录到数据库。

# service rsyslog restart


10.)查看数据库记录日志。

MariaDB [Syslog]> SELECT * FROM SystemEvents; # 查看日志
+----+------------+---------------------+---------------------+----------+----------+----------+-----------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+-----------+--------------+-----------------+----------+
| ID | CustomerID | ReceivedAt          | DeviceReportedTime  | Facility | Priority | FromHost |Message                                                                                            |NTSeverity | Importance | EventSource | EventUser | EventCategory | EventID |EventBinaryData | MaxAvailable | CurrUsage | MinUsage | MaxUsage | InfoUnitID |SysLogTag | EventLogType | GenericFileName | SystemID |
+----+------------+---------------------+---------------------+----------+----------+----------+-----------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+-----------+--------------+-----------------+----------+
|  1 |       NULL | 2014-08-20 15:14:30 | 2014-08-2015:14:30 |        0 |        6 | Server   | imklog 5.8.10, log source = /proc/kmsgstarted.                                                    |       NULL |       NULL | NULL        | NULL      |         NULL |    NULL | NULL            |         NULL |      NULL |    NULL |     NULL |          1 | kernel:   | NULL        | NULL            |     NULL |
|  2 |       NULL | 2014-08-20 15:14:30 | 2014-08-2015:14:30 |        5 |        6 | Server   | [origin software="rsyslogd" swVersion="5.8.10"x-pid="1929" x-info="http://www.rsyslog.com"] start |       NULL |       NULL | NULL        | NULL      |         NULL |    NULL | NULL            |         NULL |      NULL |    NULL |     NULL |          1 | rsyslogd: | NULL         | NULL            |     NULL |
+----+------------+---------------------+---------------------+----------+----------+----------+-----------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+-----------+--------------+-----------------+----------+
2 rows in set (0.00 sec)


11.)数据库这边完成后回到php主机。

# pwd
/var/www
# mkdir log 
# cp -rf loganalyzer-3.6.5/src/* /var/www/log #将需要用到的文件复制到log目录下
# cp -rf loganalyzer-3.6.5/contrib/* /var/www/log
# cd log
# chmod +x configure.sh secure.sh #给configure.sh执行权限,生成config.php文件
# ./configure.sh ; ./secure.sh 
# chmod 666 config.php  #给config.php 可写入权限
# scp -r log/ 172.16.32.11:/var/www/log  #将图片相关复制到http主机网站目录下


12.)输入地址,开始安装。

 


既然都使用https传输了,通过https://log.zhang.com直接访问,就设置个密码吧。


13.)回到http主机,给网站加密。

创建用户认证相关文件

# ./htpasswd -c -m /etc/httpd/.httpdpasswd zhang
New password: 
Re-type new password: 
Adding password for user zhang


14.)编辑http-ssl.conf配置文件,指定加密目录。

# vim /etc/httpd/extra/httpd-ssl.conf 
<Directory "/var/www/log">          #指定加密目录
    Optionsnone                     #用户访问时无任何选项
   AllowOverride AuthConfig         #认证相关
    AuthTypeBasic                   #认证类型
    AuthName"system log!"           #提示信息
   AuthBasicProvider file           #文件方式存储用户 密码
   AuthUserFile "/etc/httpd/.httpdpasswd" #指定用户加密文件路径
           Require valid-user       #合法用户可以访问
</Directory>
# /etc/init.d/httpd restart


15.)测试加密效果。


好了 加密完成。


总结:createDB.sql导入数据库之后,不会立即看到日志,如果这个时候查看表中的数据,会显示不存在。需要重启rsyslog才会看到日志的记录。


本文出自 “你对谁都微笑” 博客,请务必保留此出处http://54276311.blog.51cto.com/9130197/1543297

WEB页面日志集中审计,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。