WEB頁面日誌集中審計

一.日誌審計基本結構圖。


wKioL1P13EOTSYJ6AAFhYwy-wt4188.jpg


二.構建環境:操作系統採用CentOS 6.5 x86_64 操作系統,構建rsyslog + loganalyzer,日誌集中存儲在數據庫服務器。

運維人員的排錯很多都是靠分析日誌來解決問題的,但是日誌過於分散會耽誤排錯時間,對於線上的服務器要儘快的查找問題,及時給出解決方案。當面臨羣集環境時候,很可能幾十臺服務器一組羣集,排錯就會相當痛苦,這時候就需要把日誌集中化管理,不僅能解決磁盤I/O能力,還可以通過WEB應用頁面來直觀的顯示出錯位置。如果有條件的話,也可以做日誌服務器羣集,保證一臺日誌服務器掛掉而不會丟失信息。


wKiom1P122Khgng0AAE07KDIRuE014.jpg

wKiom1P128nRTZqyAAFL8ti1Ms0978.jpg


四.開始構建日誌審計服務器。

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。

wKioL1P13W-yZQKHAAKTnQc4-UA566.jpg

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.)輸入地址,開始安裝。

 

wKioL1P131Wys62VAAF-IOX27Lg274.jpg

wKiom1P13j-geVjjAALkrcgMGE8255.jpg

wKioL1P131mSj3RPAAMiIOFWGOA274.jpg

wKiom1P13kPDTS5cAAPXmECijpA043.jpg

wKioL1P1312zaVS5AAQ2NwkLLHQ807.jpg

wKiom1P13keCqF1NAALwkQp1udQ865.jpg

wKioL1P132GA6KPmAAScWDXJu9k026.jpg

wKiom1P13kvA7QocAAP5X0Rg3kw796.jpg


既然都使用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.)測試加密效果。

wKioL1P14BDQ6XrjAAF1aGdYlvg615.jpg

wKiom1P13v-zGHqsAAS1bS_bzVQ640.jpg


好了 加密完成。


總結:createDB.sql導入數據庫之後,不會立即看到日誌,如果這個時候查看錶中的數據,會顯示不存在。需要重啓rsyslog纔會看到日誌的記錄。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章