Logwatch の rooo宛てメールを
ホームページとして簡単にみられるプログラム一式

---------------------------------------------------------------------------------

Logwatch の rooo宛てメールをホームページに表示するためのプログラムは、四つの
プログラムで構成されています。
プログラム(A),(B)は、cron で定時実行させて使用します。
プログラム(C)は、ホームページに組込む SSI で読みたいメールの日付を指定します。
プログラム(D)は、プログラム(C)で指定された日付のメールを表示する cgi です。

=============================================================================
(A) Logwatch の rooo宛てメールをホームページとして見られる様に
    するためのシェルスクリプト
    下記設定でcron で毎日 4時30分に実行させています。
    30 4 * * * /var/www/○○○○/root_mail_del.sh > /dev/null 2>&1
    root_mail_del.sh は、下記のプログラム名です。
    ( ○○○○は、ユーザー名です。)

   このプログラムの処理機能
  @ rooo宛てメールをホームディレクトリへ転送する。
   A 11日前のメールを削除する。
   B spool/mail/root のメールデータを削除する。

   下記プログラムが使用するフォルダの設定

   mkdir -p /home/○○○○/root_mail; \
   chown -R ○○○○:○○○○ /home/○○○○/root_mail; \
   chmod -R 644 /home/○○○○/root_mail

=============================================================================
#!/bin/sh
#----------------------------------------
#	root宛てのメールを保存する。
#----------------------------------------
DAY_1AGO=`/bin/date --date '1day ago' +%Y%m%d`		# yyyymmdd
#
LOGNAME1=/home/○○○○/root_mail/root$DAY_1AGO         # rootyyyymmdd
#
# root メールをコード変換してホームページディレクトリへコピーする。
/var/www/○○○○/convert.pl /var/spool/mail/root > $LOGNAME1
#
#       11日前のメールファイルは削除する。
DAY_11AGO=`/bin/date --date '11day ago' +%Y%m%d`	# yyyymmdd
AGO_11File="root$DAY_11AGO"
#
rm -rf /home/○○○○/root_mail/$AGO_11File  > /dev/null 2>&1
#
# 移動したので root 宛てのメールを削除する。
#
rm -rf /var/spool/mail/root > /dev/null 2>&1
#
# 所有者を○○○○に変更
#
chown -R ○○○○:○○○○ /home/○○○○/root_mail
chmod 644 $LOGNAME1
#
# 空のrootファイルを作る
#
touch /var/spool/mail/root > /dev/null 2>&1
#


=============================================================================
(B) DiCE のイベントログの rooo宛メールとして送るシェルスクリプト

    下記設定でcron で土曜日の 23時58分に実行させています。
    58 23 * * 6 /var/www/○○○○/dice_mail_send.sh
    dice_mail_send.sh は、下記のプログラム名です。
=============================================================================
#!/bin/sh
#
# DiCEの実行結果を root 宛にメールを送る。
#
   cat /usr/local/DiCE/log/events.log | mail -s "**** DiCE events ****" root 


=============================================================================
(C) ホームページ上の option リストをアクセス時の日付から、
    10日分作成する SSI プログラム( 下記のようなフォームを作成する。 )


この様なオプションボタンの フォームを作る
A
オプションリストを開いた時
B


    パスワードのかかったページから、
  $lt;!--#exec cmd="./log_day_get.pl"--> > で実行させる。
    log_day_get.pl は、下記のプログラム名です。
=============================================================================
#!/usr/bin/perl
#---------------------------------------------------------------------
# root mail のログ日を指定する SSI
#---------------------------------------------------------------------
# option リスト 1日前の年月日作成
$Ago_day = 1;
($sec,$min,$hour,$day,$mon,$year) = localtime(time-24*60*60*$Ago_day);
$year += 1900;          # 年を西暦にする。
$mon++;                 # 1月のデータが 0 なので +1 する。
&yyyymmdd;              # $today = yyyymmdd
$Mday = $mon." 月 ".$day." 日";		# n 日前の月日
#--------------------------------------------------------------------
$Fmsg =<<"msg";
<!-- ここから、log_day_get.cgi start -->
      <form method="get" action="root_log.cgi">
      <font color="black" size="2">指定日</font><select name="logday">
      <option selected value="$today">$Mday</option>
msg
	print "$Fmsg";
#--------------------------------------------------------------------
# option リスト 2 〜 10日前の年月日作成
$i = 2; 
while ($i < 11){
    ($sec,$min,$hour,$day,$mon,$year) = localtime(time-24*60*60*$i);
    $year += 1900;          # 年を西暦にする。
    $mon++;                 # 1月のデータが 0 なので +1 する。
    &yyyymmdd;              # $today = yyyymmdd
    $Mday = $mon." 月 ".$day." 日";		# n 日前の月日
#        print "<option value=\"$today\">$Mday</option>\n";
    $i++;
$Fmsg =<<"msg";

      <option value="$today">$Mday</option>
msg
	print "$Fmsg";
}
#--------------------------------------------------------------------
$Fmsg =<<"msg";
</select>
        <input type=submit value="root Mail\x95\x5C示"></form>
<!-- ここで、log_day_get.cgi end -->
msg
	print "$Fmsg";
#--------------------------------------------------------------------
exit(0);
#--------------------------------------------------------------------
sub yyyymmdd {
# yyyymmddをつくる。
#
$Nmon = sprintf ("%02d",$mon);		# mm表記にする。
$Nday = sprintf ("%02d",$day);		# dd表記にする。
$today = $year.$Nmon.$Nday;		# yyyymmdd
#
return;
}

=============================================================================
(D-1)下記の cgi プログラムをセンター表示するための
                         CSS プログラム style.css で保存してください。
=============================================================================
#container{
 width:1000px;
 margin-left:auto;
 margin-right:auto;
 border-style: none;
}

=============================================================================
(D-2)Logwatch の rooo宛てメールをホームページとして表示する cgi プログラム
    log_day_get.pl のプログラムの<form method="get" action="root_log.cgi">
    から、実行されるプログラム
    root_log.cgi は、下記のプログラム名です。

    root宛てのログのテキストには、HTML では、特殊文字になる &,<,>," が
    含んでいるので、 文字置換をしています。
=============================================================================

#!/usr/bin/perl
#
print "Content-type: text/html\n";
print "\n";
$Fmsg =<<"msg";
<!DOCTYPE くかもり>
<html lang="ja">
<head><title>Logwatchのroot宛てメール</title>
<link rel="shortcut icon" href="favicon.ico">
<meta content="text/html; charset=Shift_JIS" http-equiv="Content-Type">
<meta content="text/css" http-equiv="Content-Style-Type">
<meta content="text/javascript" http-equiv="Content-Script-Type">
<link rel="stylesheet" href="style.css" type="text/css" media="all">
</head>
<body>
<div id="container">
<table border="0"><col width="100"><col width="100"><col width="100">
<tr>
<td></td>
<td align="right">
	<form action="../../index.html" method="GET">
        <input type="submit" name="sub1" value="index.htmlへ戻る">
       </form></td>
<td align="left">
	<form action="myloglist.html" method="GET">
        <input type="submit" name="sub2" value="元のページへ戻る">
        </form></td>
</tr>
</table>
msg
	print "$Fmsg<br>";
#----------------------------------------------------------------

#---------------------------------------------------------------
$form_data = GET_form();
$form_data =~ s/logday=//;
#
$logfile = "root$form_data";
$logfiledir_in = "/home/○○○○/root_mail/$logfile";
#
# 1文字目から4文字を取り出す
  $yyyy = substr($form_data, 0, 4); # 年
# 5文字目から2文字を取り出す
  $mm = substr($form_data, 4, 2);    # 月
# 7文字目から2文字を取り出す
  $dd = substr($form_data, 6, 2);    # 日
#---------------------------------------------------------------
if (-f $logfiledir_in) {
	}else{
		print "<br><p><b>$logfileのメールは、ありません。</b></p>\n";
		exit;
}
#
# 読取モードで $logfiledir_in のファイルを開く
#
open( get_data, "<$logfiledir_in");
#
# root宛てメールデータのHTML出力
#
	print "<b><p>$yyyy年$mm月$dd日のroot宛てメールデータ</p></b>";
        print "<p><pre>\n";
        while(<get_data>) {
              ~ s/&/&amp;/gi;    <----  & を &amp; に変換する。
              ~s/</&lt;/gi;      <----  < を &lt; に変換する。 
              ~s/>/&gt;/gi;      <----  > を &gt; に変換する。
              ~s/"/&quot;/gi;    <----  " を &quot; に変換する。  
              print "$_";
  	}
        print "</p></div></body></html>\n";
#
close(get_data);
# 終了
exit(0);
#---------------------------------------------------------------
#  form action="○○○" method="GET" のデータを取得する。
#
sub GET_form{
	local $form_data;
	$form_data = $ENV{'QUERY_STRING'};
	return $form_data;
}
#---------------------------------------------------------------
#  form action="○○○" method="POST" のデータを取得する。
#
sub POST_form{
	local $form_data;
#       STDIN :	標準入力
	read(STDIN, $form_data, $ENV{'CONTENT_LENGTH'});
	return $form_data;
}
#---------------------------------------------------------------


=============================================================================
    Logwatch で分かるサーバ機の動作情報の項目と概要
    ( このセクションのつづきに、Logwatch のログの表示例を掲載しています。)
    Logwatch のログの詳細度(Detail)は、中(Med)にしています。
=============================================================================

---------------------clam-update Begin ------------------------
・clamのアップデート情報が分かります。
 ----------------------clam-update End -------------------------

 --------------------- Clamav Begin ------------------------
・1日のうちにclamavのデータベースチェックの何回実行されたかが分かります。
  標準では、10分間隔で一日に144回になります。
 ---------------------- Clamav End -------------------------

 --------------------- Cron Begin ------------------------
・定時に行われているCron処理内容
  1日のうちにどのプログラムが、何回実行されたかが分かります。
---------------------- Cron End -------------------------

 --------------------- ftpd-xferlog Begin ------------------------
・1日のうちにサーバーからどれだけの容量のデータが入出力されたのか
  が分かったります。
 ---------------------- ftpd-xferlog End -------------------------

 --------------------- Kernel Begin ------------------------
・kernelにおける起動またはエラー情報が分かります。
 ---------------------- Kernel End -------------------------

 --------------------- pam_unix Begin ------------------------
・Linuxのpam認証においての認証成功または失敗
  つまり、Tera Termでアクセスした履歴が確認できます。
 ---------------------- pam_unix End -------------------------

 --------------------- proftpd-messages Begin ------------------------
・proftpdへのログイン履歴が確認できます。
  つまり、ffftp でアクセスした履歴が確認できます。
 ---------------------- proftpd-messages End -------------------------

 --------------------- Connections (secure-log) Begin ------------------------
・Connections (ecure-log) ユーザー追加時など
 ---------------------- Connections (secure-log) End -------------------------

 --------------------- sendmail Begin (detail=3) ------------------------
・メール送信サーバに関するログです。
  メールの回数・容量が確認できます。
 ---------------------- sendmail End -------------------------

 --------------------- SSHD Begin ------------------------
・接続が成功した場合は、そのIPアドレス(またはホスト名)が確認できます。
  つまり、Tera Termでアクセスした履歴が確認できます。
 ---------------------- SSHD End -------------------------

 --------------------- yum Begin ------------------------
・yum -y updateでアップデートされたパッケージ名が確認できます。
 ---------------------- yum End -------------------------

 --------------------- Disk Space Begin ------------------------
・Disk Space Linuxのディスクスペース使用状況が確認できます。
 ---------------------- Disk Space End ------------------------- 

=============================================================================
      root宛てmailの表示例
=============================================================================

2013年09月04日のroot宛てメールデータ

From root@LeoMiya  Thu Sep  5 02:01:13 2013
Return-Path: <root@LeoMiya>
Received: from LeoMiya (localhost [127.0.0.1])
	by LeoMiya (8.14.4/8.14.4) with ESMTP id r84H1DpP011700
	for <root@LeoMiya>; Thu, 5 Sep 2013 02:01:13 +0900
Received: (from root@localhost)
	by LeoMiya (8.14.4/8.14.4/Submit) id r84H1DO1011677
	for root; Thu, 5 Sep 2013 02:01:13 +0900
From: root <root@LeoMiya>
Message-Id: <201309041701.r84H1DO1011677@LeoMiya>
Date: Thu, 05 Sep 2013 02:00:12 +0900
To: root@LeoMiya
Subject: ** rootkit check **
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

**** rootkit check OK ****

From root@LeoMiya  Thu Sep  5 03:30:09 2013
Return-Path: <root@LeoMiya>
Received: from LeoMiya (localhost [127.0.0.1])
	by LeoMiya (8.14.4/8.14.4) with ESMTP id r84IU9TF013476
	for <root@LeoMiya>; Thu, 5 Sep 2013 03:30:09 +0900
Received: (from root@localhost)
	by LeoMiya (8.14.4/8.14.4/Submit) id r84IU9LR013140;
	Thu, 5 Sep 2013 03:30:09 +0900
Date: Thu, 5 Sep 2013 03:30:09 +0900
Message-Id: <201309041830.r84IU9LR013140@LeoMiya>
To: root@LeoMiya
From: logwatch@LeoMiya
Subject: Logwatch for leomiya (Linux)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="iso-8859-1"


 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Thu Sep  5 03:29:10 2013
        Date Range Processed: yesterday
                              ( 2013-Sep-04 )
                              Period is day.
      Detail Level of Output: 5
              Type of Output: unformatted
           Logfiles for Host: leomiya
  ################################################################## 
 
 --------------------- clam-update Begin ------------------------ 

 The ClamAV update process was started 1 time(s)
 
 Last ClamAV update process started at Wed Sep  4 03:24:09 2013
 
 Last Status:
    WARNING: Your ClamAV installation is OUTDATED!
    WARNING: Local version: 0.97.7 Recommended version: 0.97.8
    DON'T PANIC! Read http://www.clamav.net/support/faq
    main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
    nonblock_recv: recv timing out (30 secs)
    WARNING: getfile: Error while reading database from db.jp.clamav.net (IP: ……
    WARNING: getpatch: Can't download daily-17793.cdiff from db.jp.clamav.net
    Downloading daily-17793.cdiff [100%]
    Downloading daily-17794.cdiff [100%]
    Downloading daily-17795.cdiff [100%]
    Downloading daily-17796.cdiff [100%]
    Downloading daily-17797.cdiff [100%]
    Downloading daily-17798.cdiff [100%]
    Downloading daily-17799.cdiff [100%]
    Downloading daily-17800.cdiff [100%]
    daily.cld updated (version: 17800, sigs: 1685012, f-level: 63, builder: neo)
    bytecode.cld is up to date (version: 225, sigs: 42, f-level: 63, builder:  ……
    [LibClamAV] Detected duplicate databases /var/clamav/main.cvd and /var/ ……
    Database updated (2729441 signatures) from db.jp.clamav.net (IP: 120.29.176.126)
    Clamd successfully notified about the update.
 
 ---------------------- clam-update End ------------------------- 

 
 --------------------- Clamav Begin ------------------------ 

 
 Daemon check list:
    Database status OK: 48 Time(s)
 
 ---------------------- Clamav End ------------------------- 

 
 --------------------- Cron Begin ------------------------ 

 
 
 Commands Run:
    User nobody:
       personal crontab listed: 1 Time(s)
    User root:
       /usr/lib/sa/sa1 1 1: 144 Time(s)
       /usr/lib/sa/sa2 -A: 1 Time(s)
       /usr/local/src/rootkit.sh: 1 Time(s)
       /var/www/html/www.smiyasaka.com/hdd_smart_get.pl > /dev/null 2>&1: 48 Time(s)
       /var/www/html/www.smiyasaka.com/webcam/webcam.sh > /dev/null 2>&1: 780 Time(s)
       /var/www/system/JPGdata_del.sh > /dev/null 2>&1: 1 Time(s)
       /var/www/system/accesslogdel.sh > /dev/null 2>&1: 1 Time(s)
       /var/www/system/apachelogdel.sh > /dev/null 2>&1: 1 Time(s)
       /var/www/system/backup_all.sh > /dev/null 2>& 1: 1 Time(s)
       /var/www/system/check_process.pl > /dev/null 2>&1: 1440 Time(s)
       /var/www/system/root_mail_del.sh > /dev/null 2>&1: 1 Time(s)
       /var/www/system/webalizer_jpn.sh > /dev/null 2>&1: 1 Time(s)
       /var/www/system/weblog.pl > /dev/null 2>&1: 1 Time(s)
       personal crontab edited: 1 Time(s)
       personal crontab listed: 2 Time(s)
       personal crontab reloaded: 1 Time(s)
       personal crontab replaced: 1 Time(s)
       run-parts /etc/cron.hourly: 24 Time(s)
       yum -y update > /dev/null 2>&1: 1 Time(s)
 
 ---------------------- Cron End ------------------------- 

 
 --------------------- pam_unix Begin ------------------------ 

 sshd:
    Sessions Opened:
       miyasaka: 3 Time(s)
 
 su-l:
    Sessions Opened:
       root -> root: 3 Time(s)
 
 
 ---------------------- pam_unix End ------------------------- 

 
 --------------------- proftpd-messages Begin ------------------------ 

 
 User FTP Logins:
    192.168.0.199: miyasaka - 1 Time(s)
    192.168.0.2: miyasaka - 6 Time(s)
 
 **Unmatched Entries**
 127.0.0.1 (192.168.0.199[192.168.0.199]) - Client session idle timeout, disconnected
 
 ---------------------- proftpd-messages End ------------------------- 

 
 --------------------- Connections (secure-log) Begin ------------------------ 

 
 Userhelper executed applications:
    root -> chkrootkit.sh  as root:  1 Time(s)
 
 ---------------------- Connections (secure-log) End ------------------------- 

 
 --------------------- sendmail Begin (detail=3) ------------------------ 

 
 
 STATISTICS
 ----------
 
 Messages To Recipients:  4
 Addressed Recipients:    4
 Bytes Transferred:       12245
 Messages No Valid Rcpts: 0
 
 **Unmatched Entries**
    My unqualified host name (LeoMiya) unknown; sleeping for retry: 2 Time(s)
    unable to qualify my own domain name (LeoMiya) -- using short name: 2 Time(s)
 
 ---------------------- sendmail End ------------------------- 

 
 --------------------- SSHD Begin ------------------------ 

 
 Users logging in through sshd:
    miyasaka:
       192.168.0.2: 3 times
 
 ---------------------- SSHD End ------------------------- 

 
 --------------------- yum Begin ------------------------ 

 
 Packages Updated:
    neon-0.29.3-3.el6_4.i686
 
 ---------------------- yum End ------------------------- 

 
 --------------------- Disk Space Begin ------------------------ 

 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg_leomiya-lv_root
                        50G  7.2G   40G  16% /
 /dev/sda1             485M   72M  388M  16% /boot
 /dev/mapper/vg_leomiya-lv_home
                       178G  255M  169G   1% /home
 
 
 ---------------------- Disk Space End ------------------------- 

 
 ###################### Logwatch End #########################