ファイル改竄検知システム(Tripwire)

■ FC2~FC6 / Fedora7 / Fedora8 / Fedora9
Tripwireはサーバーのファイルの改竄を検知するシステム。 Tripwireを使用すると、重要なシステムファイルとディレクトリに対する変更をすべて検出することで、それらの保全性を確保することができる。セキュリティを万全にするために、ファイルが改竄される前に、Tripwireをインストールして基準データベースを作成しておく。基準データベースが作成されると、Tripwireは現在のファイルをこれと比較し、変更、追加、削除のいずれかがあれば報告するようにする。
■Tripwireのインストール
* Fedora7 / Fedora8 / Fedora9

[root@linux ~]# yum -y install tripwire

* FC2~FC6
Tripwireをダウンロード (最新版 をダウンロード

[root@linux ~]# wget http://keihanna.dl.sourceforge.net/sourceforge/tripwire/tripwire-2.4.0.1-x86-bin.tar.bz2
ダウンロードしたtripwireを展開
[root@linux ~]# tar jxvf tripwire-2.4.0.1-x86-bin.tar.bz2
Tripwireの展開先ディレクトリへ移動
[root@linux ~]# cd tripwire-2.4.0.1-x86-bin
Tripwireの実行コマンドを/usr/sbin/へコピー
[root@linux tripwire-2.4.0.1-x86-bin]# cp bin/* /usr/sbin/
Tripwireの設定ファイルのディレクトリを作成[root@linux tripwire-2.4.0.1-x86-bin]# mkdir /etc/tripwire
ポリシーファイルをTripwireの設定ファイルのディレクトリへコピー[root@linux tripwire-2.4.0.1-x86-bin]# cp policy/twpol-Linux.txt /etc/tripwire/twpol.txt
データベースのディレクトリを作成
[root@linux tripwire-2.4.0.1-x86-bin]# mkdir -p /var/lib/tripwire/report
Tripwireの展開先ディレクトリを削除
[root@linux tripwire-2.4.0.1-x86-bin]# cd
[root@linux ~]# rm -rf tripwire-2.4.0.1-x86-bin
ダウンロードしたファイルを削除
[root@linux ~]# rm -f tripwire-2.4.0.1-x86-bin.tar.bz2

■Tripwireの設定

サイトキーを作成
[root@linux ~]# twadmin -m G -S /etc/tripwire/site.key
(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)
Enter the site keyfile passphrase: ← サイトパスフレーズを設定
Verify the site keyfile passphrase: ← サイトパスフレーズを再度入力
Generating key (this may take several minutes)...Key generation complete.
ローカルキーを作成
[root@linux ~]# twadmin -m G -L /etc/tripwire/`hostname`-local.key
(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)
Enter the local keyfile passphrase: ← ローカルパスフレーズを設定
Verify the local keyfile passphrase: ← ローカルパスフレーズを再度入力
Generating key (this may take several minutes)...Key generation complete.
設定ファイル(テキスト版)を作成
[root@linux ~]# vi /etc/tripwire/twcfg.txt
ROOT                   =/usr/sbin
POLFILE                =/etc/tripwire/tw.pol
DBFILE                 =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE             =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE            =/etc/tripwire/site.key
LOCALKEYFILE           =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR                 =/bin/vi
LATEPROMPTING          =false
LOOSEDIRECTORYCHECKING =false
↓
LOOSEDIRECTORYCHECKING =true
MAILNOVIOLATIONS       =true
EMAILREPORTLEVEL       =3
REPORTLEVEL            =3
↓
REPORTLEVEL            =4
MAILMETHOD             =SENDMAIL
SYSLOGREPORTING        =false
↓
SYSLOGREPORTING        =true
MAILPROGRAM            =/usr/sbin/sendmail -oi -t
設定ファイル(テキスト版⇒暗号署名版)を作成
[root@linux ~]# twadmin -m F -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase: ← サイトパスフレーズを入力
Wrote configuration file: /etc/tripwire/tw.cfg
セキュリティ確保のため設定ファイル(テキスト版)を削除
[root@linux ~]# rm -f /etc/tripwire/twcfg.txt
設定ファイル(テキスト版)を復活させる場合は以下のコマンドで復活できる
[root@linux ~]# twadmin --print-cfgfile > /etc/tripwire/twcfg.txt

■ポリシーファイルの設定

ポリシーファイル(テキスト版)を編集
[root@linux ~]# vi /etc/tripwire/twpol.txt
各変数のパスを設定
TWROOT="/usr/sbin";
TWBIN="/usr/sbin";
TWPOL="/etc/tripwire";
TWDB="/var/lib/tripwire";
TWSKEY="/etc/tripwire";
TWLKEY="/etc/tripwire";
TWREPORT="/var/lib/tripwire/report";
HOSTNAME=linux.yokensaka.com;
ポリシーファイルの最適化スクリプトを作成
[root@linux ~]# vi /etc/tripwire/twpolmake.pl
#!/usr/bin/perl
# Tripwire Policy File customize tool
# ----------------------------------------------------------------------
# Copyright (C) 2003 Hiroaki Izumi
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
# ----------------------------------------------------------------------
# Usage:
#    perl twpolmake.pl {Pol file}
# ----------------------------------------------------------------------
#
$POLFILE=$ARGV[0];
open(POL,"$POLFILE") or die "open error: $POLFILE" ;
my($myhost,$thost) ;
my($sharp,$tpath,$cond) ;
my($INRULE) = 0 ;
while (<POL>) {
chomp;
if (($thost) = /^HOSTNAME\s*=\s*(.*)\s*;/) {
$myhost = `hostname` ; chomp($myhost) ;
if ($thost ne $myhost) {
$_="HOSTNAME=\"$myhost\";" ;
}
}
elsif ( /^{/ ) {
$INRULE=1 ;
}
elsif ( /^}/ ) {
$INRULE=0 ;
}
elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+->\s+.+)$/) {
$ret = ($sharp =~ s/\#//g) ;
if ($tpath eq '/sbin/e2fsadm' ) {
$cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ;
}
if (! -s $tpath) {
$_ = "$sharp#$tpath$cond" if ($ret == 0) ;
}
else {
$_ = "$sharp$tpath$cond" ;
}
}
print "$_\n" ;
}
close(POL) ;
ポリシーファイルの最適化
[root@linux ~]# perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new
ポリシーファイル(暗号署名版)を作成
[root@linux ~]# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt.new
Please enter your site passphrase: ← サイトパスフレーズを入力
Wrote policy file: /etc/tripwire/tw.pol
ポリシーファイル(テキスト版)を削除
[root@linux ~]# rm -f /etc/tripwire/twpol.txt*
ポリシーファイル(テキスト版)を復活させる場合は以下のコマンドで復活できる
[root@linux ~]# twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt

■Tripwireのデータベース作成

ポリシーファイルよりデータベースを作成
[root@linux ~]# tripwire -m i -s -c /etc/tripwire/tw.cfg
Please enter your local passphrase: ← ローカルパスフレーズを入力
※データベースを作成するには結構時間がかかる

■Tripwireの確認

ファイル変更をチェック ※結構時間がかかる
[root@linux ~]# tripwire -m c -s -c /etc/tripwire/tw.cfg
Tripwire(R) 2.4.1 Integrity Check Report
Report generated by:          root
Report created on:            2008年05月17日 00時06分35秒
Database last updated on:     Never
===============================================================================
Report Summary:
===============================================================================
Host name:                    linux.yokensaka.com
Host IP address:              60.46.228.222
Host ID:                      None
Policy file used:             /etc/tripwire/tw.pol
Configuration file used:      /etc/tripwire/tw.cfg
Database file used:           /var/lib/tripwire/linux.yokensaka.com.twd
Command line used:            tripwire -m c -s -c /etc/tripwire/tw.cfg
===============================================================================
Rule Summary:
===============================================================================
-------------------------------------------------------------------------------
Section: Unix File System
-------------------------------------------------------------------------------
Rule Name                       Severity Level    Added    Removed  Modified
---------                       --------------    -----    -------  --------
* Tripwire Data Files             0                 1        0        0
* Monitor Filesystems             0                 0        0        4
OS Binaries and Libraries       0                 0        0        0
Tripwire Binaries               0                 0        0        0
User Binaries and Libraries     0                 0        0        0
Temporary Directories           0                 0        0        0
RPM Checksum Files              0                 0        0        0
System Boot Changes             0                 0        0        0
Global Configuration Files      0                 0        0        0
OS Boot Files and Mount Points  0                 0        0        0
OS Devices and Misc Directories 0                 0        0        0
Root Directory and Files        0                 0        0        0
Total objects scanned:  126788
Total violations found:  5
===============================================================================
Object Summary:
===============================================================================
-------------------------------------------------------------------------------
# Section: Unix File System
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Rule Name: Monitor Filesystems (/var)
Severity Level: 0
-------------------------------------------------------------------------------
Modified:
"/var/lib/awstats/awstats062007.localhost.localdomain.txt"
"/var/lib/ntp/drift"
"/var/spool/postfix/public/pickup"
"/var/spool/postfix/public/qmgr"
-------------------------------------------------------------------------------
Rule Name: Tripwire Data Files (/var/lib/tripwire)
Severity Level: 0
-------------------------------------------------------------------------------
Added:
"/var/lib/tripwire/linux.yokensaka.com.twd"
===============================================================================
Error Report:
===============================================================================
No Errors
-------------------------------------------------------------------------------
*** End of report ***
Tripwire 2.4 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered
trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY;
for details use --version. This is free software which may be redistributed
or modified only under certain conditions; see COPYING for details.
All rights reserved.

■Tripwireの定期自動実行設定

Tripwireの定期実行スクリプトを作成
[root@linux ~]# vi tripwire.sh
#!/bin/bash
PATH=/usr/sbin:/usr/bin:/bin
# パスフレーズの設定
LOCALPASS=xxxxxxxx # ローカルパスフレーズを入力
SITEPASS=xxxxxxxx  # サイトパスフレーズを入力
cd /etc/tripwire
# Tripwireのチェック
tripwire -m c -s -c tw.cfg|mail -s "Tripwire(R) Integrity Check Report `hostname`" root
# ポリシーファイルの最新化
twadmin -m p -c tw.cfg -p tw.pol -S site.key > twpol.txt
perl twpolmake.pl twpol.txt > twpol.txt.new
twadmin -m P -c tw.cfg -p tw.pol -S site.key -Q $SITEPASS twpol.txt.new > /dev/null
rm -f twpol.txt*
rm -f *.bak
# データベースの最新化
rm -f /var/lib/tripwire/*.twd*
tripwire -m i -s -c tw.cfg -P $LOCALPASS
実行スクリプトに実行権を与える
[root@linux ~]# chmod 700 tripwire.sh
cronを編集
[root@linux ~]# crontab -e
00 01 * * * /root/tripwire.sh
毎日1:00にTripwireの定期実行スクリプトを実行

MySQL管理(phpMyAdmin)

■ Fedora7 / Fedora8 / Fedora9
phpMyAdminはWebブラウザからMySQLデータベースを管理するためのPHPで記述されたソフトウェアです。WebブラウザからMySQLのテーブル操作、インポート・エクスポートすることが出来ます。
■phpMyAdminインストール
こちらで最新版 を確認すること (↓ Fedora9 インストール時点の最新版)

[root@linux ~]# wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.11.6-all-languages.tar.bz2
ダウンロードしたphpMyAdminを展開
[root@linux ~]# tar jxvf phpMyAdmin-2.11.6-all-languages.tar.bz2
phpMyAdmin展開先ディレクトリを所定の場所へコピー
[root@linux ~]# mv phpMyAdmin-2.11.6-all-languages/ /var/www/phpmyadmin
ダウンロードしたphpMyAdminを削除
[root@linux ~]# rm -f phpMyAdmin-2.11.6-all-languages.tar.bz2
■php-mysqlインストール
phpMyAdminはPHPで動作するため、PHPからMySQLデータベースへアクセスするためのパッケージ「php-mysql」をインストールする
[root@linux ~]# yum -y install php-mysql

■mbstringモジュールインストール
phpMyAdmin は mbstring 拡張なしでは文字列を正確に分割することができないのでmbstringモジュールをインストールします

[root@linux ~]# yum -y install php-mbstring

■phpMyAdmin設定

[root@linux ~]# cp /var/www/phpmyadmin/libraries/config.default.php /var/www/phpmyadmin/config.inc.php
設定ファイルのパーミッションを変更
[root@linux ~]# chmod 660 /var/www/phpmyadmin/config.inc.php
設定ファイル編集
[root@linux ~]# vi /var/www/phpmyadmin/config.inc.php
$cfg['blowfish_secret'] = 'xxxxxxxxxxxx'; ← 46文字以内の適当な文字列を指定
※上記はロiグイン時のパスワード暗号化の際に内部的に利用されるパスフレーズであり、ユーザに入力要求されるものではない
$cfg['Servers'][$i]['auth_type']     = 'config';
↓認証モードを「クッキー」にする
$cfg['Servers'][$i]['auth_type']     = 'cookie';
phpMyAdminの所有者を変更
[root@linux ~]# chown -R root.apache /var/www/phpmyadmin/

■Apache設定

phpMyAdmin用Apache設定ファイル作成
[root@linux ~]# vi /etc/httpd/conf.d/phpmyadmin.conf
Alias /phpmyadmin /var/www/phpmyadmin
以下は内部からのみアクセスできるようにする場合のみ指定する
<Location /phpmyadmin>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1 ← 内部ネットワークアドレスを指定
</Location>
[root@linux ~]# /etc/rc.d/init.d/httpd reload ← Apache設定反映
httpd を再読み込み中:                                      [  OK  ]

■phpMyAdmin確認
http://サーバー名/phpmyadmin/へアクセスして、phpMyAdminのログイン画面が表示されること
MySQLに登録されているアカウントでログインできること
■PHP の初期設定の変更
リストアで利用できるバックアップデータの最大サイズは2,048KB と書かれているとおり、 デフォルト では2 MB になっています。
これはphpMyAdminの制限ではなく、 PHP の初期設定での制限です。
これを変更するには、 “/etc/php.ini” を開き、 “upload_max_filesize” ディレクティブ を修正します。
/etc/php.iniを cp コマンドでバックアップを作成してから作業するようにします。

[root@server ~]# cp -p /etc/php.ini /etc/php.ini.org
[root@server ~]# vi /etc/php.ini
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
↓
upload_max_filesize = 30M ← 30Mに変更

データベースサーバ(MySQL)

■ FC2~FC6 / Fedora7 / Fedora8 / Fedora9
MySQL は高速性と堅牢性を追及したマルチユーザ・マルチスレッドのSQLデータベースで、 世界で最も人気のあるフリーのリレーショナルデータベースサーバーです。 Movable TypeとかNucleus等を利用する場合は各種データをMySQLデータベースに保存するようになっていますので、ここではMySQLを使ったデータベースサーバを構築します。
■MySQLインストール

mysql-serverをインストールします
[root@linux ~]# yum -y install mysql-server

■MySQL起動

MySQLの起動
[root@linux ~]# /etc/init.d/mysqld start
MySQL データベースを初期化中:  Installing all prepared tables
Fill help tables
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h linux.yokensaka.com password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[  OK  ]
MySQL を起動中:                                            [  OK  ]

■MySQL自動起動設定

MySQLの自動起動設定
[root@linux ~]# chkconfig mysqld on
MySQLの自動起動設定確認
[root@linux ~]# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
           ランレベル2~5がオンの状態であることを確認

■rootユーザへのパスワード設定
MySQLのrootユーザにはデフォルトではパスワードが設定されていないため、安全のためにパスワードを設定します。

MySQLサーバーへrootユーザでログインします
[root@linux ~]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
登録済ユーザ及びパスワードの確認をします
mysql> select user,host,password from mysql.user;
+------+---------------------+----------+
| user | host                | password |
+------+---------------------+----------+
| root | localhost           |          | ← パスワードが設定されていない
| root | linux.yokensaka.com |          | ← パスワードが設定されていない
|      | linux.yokensaka.com |          |
|      | localhost           |          |
+------+---------------------+----------+
4 rows in set (0.00 sec)
localhostのrootユーザにパスワードを設定します
mysql> set password for root@localhost=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
linux.yokensaka.comのrootユーザにパスワードを設定します
mysql> set password for root@linux.yokensaka.com=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
mysql> exit ← いったんログアウトします
Bye
rootユーザでパスワードありでMySQLサーバーへログインします
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
登録済ユーザ及びパスワードの確認をします
mysql> select user,host,password from mysql.user;
+------+---------------------+------------------+
| user | host                | password         |
+------+---------------------+------------------+
| root | localhost           | 1fd201a955bab306 | ← パスワードが設定された
| root | linux.yokensaka.com | 1e6055bd75163e03 | ← パスワードが設定された
|      | linux.yokensaka.com |                  |
|      | localhost           |                  |
+------+---------------------+------------------+
4 rows in set (0.00 sec)
mysql> exit ← いったんログアウトします
Bye

■匿名ユーザの削除
MySQLには匿名ユーザがデフォルトで登録されており、ユーザ名とパスワードなしでMySQLサーバーへログインできてしまうため、安全のためにこのユーザを削除します。

rootユーザでパスワードありでMySQLサーバーへログインします
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
登録ユーザの確認をします
mysql> select user,host from mysql.user;
+------+---------------------+
| user | host                |
+------+---------------------+
|      | linux.yokensaka.com |
| root | linux.yokensaka.com |
|      | localhost           |
| root | localhost           |
+------+---------------------+
4 rows in set (0.00 sec)
匿名ユーザを削除します
mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.00 sec)
匿名ユーザが削除されてるか確認します
mysql> select user,host from mysql.user;
+------+---------------------+
| user | host                |
+------+---------------------+
| root | linux.yokensaka.com |
| root | localhost           |
+------+---------------------+
2 rows in set (0.00 sec)
mysql> exit ← いったんログアウトします
Bye
匿名ユーザでMySQLサーバーへログインできないことを確認します
[root@linux ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

■testデータベースの削除
MySQLにはデフォルトでtestという空のデータベースが登録されていますが、不要のため、このデータベースを削除します。

rootユーザでMySQLサーバーへログインします
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
登録データベースを確認します
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)
testデータベースを削除します
mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)
testデータベースが削除されてるか確認します
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)
mysql> exit ← ログアウト
Bye

■MySQL確認

rootでMySQLサーバーへログイン
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
takaデータベースへの全てのアクセス権限を持った、新規ユーザtakaを登録
mysql> grant all privileges on taka.* to taka@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.00 sec)
mysql> select user from mysql.user where user='taka'; ← takaユーザ登録確認
+--------+
| user   |
+--------+
| taka   |
+--------+
1 row in set (0.00 sec)
mysql> exit ← ログアウト
Bye
takaユーザでMySQLサーバーへログイン
[root@linux ~]# mysql -u taka -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database taka; ← takaデータベース作成
Query OK, 1 row affected (0.00 sec)
mysql> show databases; ← データベース作成確認
+--------------------+
| Database           |
+--------------------+
| information_schema |
| taka               |
+--------------------+
2 rows in set (0.00 sec)
mysql> use taka ← takaデータベースへ接続
Database changed
mysql> create table taka(num int, name varchar(50)); ← takaテーブル作成
Query OK, 0 rows affected (0.01 sec)
mysql> show tables; ← テーブル作成確認
+----------------+
| Tables_in_test |
+----------------+
| taka           |
+----------------+
1 row in set (0.00 sec)
mysql> insert into taka values(1,'データAB'); ← takaテーブルへデータ登録
Query OK, 1 row affected (0.00 sec)
mysql> select * from taka; ← データ登録確認
+------+----------+
| num  | name     |
+------+----------+
|    1 | データAB |
+------+----------+
1 row in set (0.01 sec)
mysql> update taka set name='データAB'; ← takaテーブル内データ更新
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0
mysql> select * from taka; ← データ更新確認
+------+----------+
| num  | name     |
+------+----------+
|    1 | データAB |
+------+----------+
1 row in set (0.00 sec)
mysql> delete from taka where num=1; ← takaテーブル内データ削除
Query OK, 1 row affected (0.02 sec)
mysql> select * from taka; ← データ削除確認
Empty set (0.00 sec)
mysql> drop table taka; ← testテーブル削除
Query OK, 0 rows affected (0.00 sec)
mysql> show tables; ← テーブル削除確認
Empty set (0.00 sec)
mysql> drop database taka; ← データベースtaka削除
Query OK, 0 rows affected (0.00 sec)
mysql> show databases; ← データベース削除確認
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
mysql> exit ← ログアウト
Bye
rootでMySQLサーバーへログイン
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
takaユーザから全てのデータベースへのアクセス権限を剥奪
mysql> revoke all privileges on *.* from taka@localhost;
Query OK, 0 rows affected (0.00 sec)
takaユーザ削除
mysql> delete from mysql.user where user='taka' and host='localhost';
Query OK, 1 row affected (0.03 sec)
takaユーザ削除確認
mysql> select user from mysql.user where user='taka';
Empty set (0.00 sec)
mysql> flush privileges; ← takaユーザの削除をMySQLサーバーへ反映
Query OK, 0 rows affected (0.02 sec)
mysql> exit ← ログアウト
Bye

■Movable Typeの初期設定
Movable Typeのブログデータを保存するデータベースの初期設定を行います。

rootでMySQLサーバーへログイン
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
「mt」というデータベースを作成
mysql> create database mt;
Query OK, 1 row affected (0.01 sec)
管理DBをデフォルト(管理をカレント)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
「mt」というデータベースにログインするユーザー名とパスワードを設定
mysql> grant usage on mt.* to admin@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.00 sec)
「mt」というデータベースに対してすべての権限を「admin」に許す
mysql> grant all on mt.* to admin@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> exit ← ログアウト
Bye

POP/IMAPサーバ(Dovecot)

■ FC2~FC6 / Fedora7 /Fedora8 /Fedora9
Postfixをインストールしただけでは、メールの読み出しは出来ません。 Postfixはメールを配信するためのSMTPサーバーとしての機能しか持たないからです。ここではdovecotをインストールすることにより、POP3/IMAP4どちらでもメールを読み出せるようにします。
■dovecotのインストール
dovecotは高セキュリティー性を重要視して開発されたPOP3/IMAP4サーバーソフトウェアーです。

[root@linux ~]# yum -y install dovecot

■dovecotの設定ファイルの編集
※ Fedora7 / Fedora8 /Fedora9
dovecotはPOP3/IMAP4どちらにも対応しています。しかしインストールした時点では、IMAP4サーバーとしてしか動作できません。そこでPOP3サーバーとしてもメールが読み出せるように、設定ファイルを編集します。

[root@linux ~]# vi /etc/dovecot.conf ← dovecot.confを開きます
# Base directory where to store runtime data.
#base_dir = /var/run/dovecot/
# Protocols we want to be serving: imap imaps pop3 pop3s
# If you only want to use dovecot-auth, you can set this to "none".
#protocols = imap imaps pop3 pop3s
↓
protocols = imap imaps pop3 pop3s ← #を外します
メールボックス格納形式をMaildir形式とします
#   mail_location = maildir:~/Maildir
#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# <doc/wiki/MailLocation.txt>
#
#mail_location =
↓
mail_location = maildir:~/Maildir ← #を外し maildir:~/Maildirを追記します

■dovecotの設定ファイルの編集
※ FC2~FC6
dovecotはPOP3/IMAP4どちらにも対応しています。しかしインストールした時点では、IMAP4サーバーとしてしか動作できません。そこでPOP3サーバーとしてもメールが読み出せるように、設定ファイルを編集します。

[root@linux ~]# vi /etc/dovecot.conf ← dovecot.confを開きます
# Base directory where to store runtime data.
#base_dir = /var/run/dovecot/
# Protocols we want to be serving:
#  imap imaps pop3 pop3s
#protocols = imap imaps pop3 pop3s
↓
protocols = imap imaps pop3 pop3s ← #を外します
メールボックス格納形式をMaildir形式とします
#   default_mail_env = maildir:/var/mail/%1u/%u/Maildir
#   default_mail_env = mbox:~/mail/:INBOX=/var/mail/%u
#   default_mail_env = mbox:/var/mail/%d/%n/:INDEX=/var/indexes/%d/%n
#
#default_mail_env =
↓
default_mail_env = maildir:~/Maildir ← #を外し maildir:~/Maildirを追記します

■dovecotの起動

[root@linux ~]# /etc/rc.d/init.d/dovecot start
Dovecot Imap を起動中:                                     [  OK  ]
dovecotの自動起動設定
[root@linux ~]# chkconfig dovecot on
dovecotの自動起動設定確認
[root@linux ~]# chkconfig --list dovecot
dovecot         0:off   1:off   2:on    3:on    4:on    5:on    6:off
                (ランレベル2~5のonを確認)

POP/IMAPサーバを使うには、ルーターの設定が必要です。
ルータの設定で110番(POPの場合)または143番(IMAPの場合)のポートを開けてください。
■メールアドレスの作成
メールアドレスは新しくユーザーを追加することにより作成可能ですが、メールのみ使用するユーザーが telnetやsshを使える状態にしておくのは望ましいことではありません。 useraddに -sオプションを付けてシェルを/sbin/nologinに設定することでログインできなくなります。
t-higoというメールアドレスを追加したい場合は、以下のコマンドを実行します。

[root@linux ~]# useradd -s /sbin/nologin t-higo

■ユーザーt-higoのパスワードを設定します

[root@linux ~]# passwd t-higo
Changing password for user t-higo.
New UNIX password: ← パスワードを入力します(表示されません)
BAD PASSWORD: it is based on a (reversed) dictionary word
Retype new UNIX password: ← 再度同じパスワードを入力します
passwd: all authentication tokens updated successfully.

これで以下のようなメールアドレスが使用可能となります。
メールアドレス   t-higo@yokensaka.com
■セキュリティレベルの設定
Fedora Coreのインストールに時ファイアウォールを有効にした場合は、メールサーバーへのアクセスは出来ません。そこで、セキュリティーレベルを変更して、SMTPサーバー及びPOPサーバー、IMAPサーバーへアクセスできるようにします。 X Window Systemで起動し「アプリケーション・メニュー」から「システム設定」-「セキュリティレベル」を選択して「セキュリティレベルの設定ツール」を起動します。メールの送受信を可能にするには、「セキュリティレベル」で「ファイアウォールを有効にする」を選択し、「信頼できるサービス」の「メール(SMTP)」にチェックをし、「他のポート」に「110:tcp,110:udp,143:udp,993:tcp,993:udp,995:tcp,995:udp」と入力します。

SMTPサーバ(Postfix)

■ FC2~FC6 / Fedora7 / Fedora8 / Fedora9
メールサーバーを構築するためには、まずメール配送を行うためのSMTPサーバーが必要となります。 SMTPサーバーとして動作するソフトウェアの代表的なものにはPostfix、sendmail、qmailがあります。 Postfixはsendmailやqmailより後に開発されたため、それぞれの良い部分を反映して開発されており、簡単に設定することが可能ですので、ここではsendmailとの互換性が優れているPostfixを使用します。
■sendmailを停止する
デフォルトでインストールされているsendmailをPostfixをインストールする前に停止しておきます。

[root@linux ~]# /etc/rc.d/init.d/sendmail stop
sendmail を停止中:                                         [  OK  ]
sm-client を停止中:                                        [  OK  ]

■Postfixのインストール

[root@linux ~]# yum -y install postfix

■sendmail環境からPostfix環境へ移行する
Fedora coreでは、利用するMTAプログラムの選択にalternativesという仕組みを利用しており、このalternativesコマンドを実行することにより、簡単にsendmail環境からPostfix環境へ移行することが出来ます。

[root@linux ~]# alternatives --config mta
2 プログラムがあり 'mta' を提供します。
選択       コマンド
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
2           /usr/sbin/sendmail.postfix
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
postfixを使うので選択番号[2]を入力します

■Postfixの設定
Postfixの基本的な設定は、/etc/postfix/main.cfで行います。

[root@linux ~]# vi /etc/postfix/main.cf ← viエディタでmain.cfを開きます
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
#myhostname = host.domain.tld
↓
myhostname = linux.yokensaka.com ← #を外して、サーバーのホスト名を設定します
#myhostname = virtual.domain.tld
# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld
↓
mydomain = yokensaka.com ← #を外して、ドメイン名を設定します
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
#myorigin = $myhostname
#myorigin = $mydomain
↓
myorigin = $mydomain ← #を外して、設定を有効にします
      (メールアドレスの「@」以下に付加する文字列を指定します)
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
メールの受信を許可するネットワークインターフェースを設定します
#inet_interfaces = all
↓
inet_interfaces = all ← #を外して、設定を有効にします
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
↓
#inet_interfaces = localhost ← 行頭に#を追加します
# Specify a list of host or domain names, /file/name or type:table
# patterns, separated by commas and/or whitespace. A /file/name
# pattern is replaced by its contents; a type:table is matched when
# a name matches a lookup key (the right-hand side is ignored).
# Continue long lines by starting the next line with whitespace.
#
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
受信したメールを拒否するかどうかを設定します
mydestination = $myhostname, localhost.$mydomain, localhost
↓
#mydestination = $myhostname, localhost.$mydomain, localhost ← 行頭に#を追加します
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
↓
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ← #を外します
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
# Specify "mynetworks_style = host" when Postfix should "trust"
# only the local machine.
#
#mynetworks_style = class
#mynetworks_style = subnet
↓
mynetworks_style = subnet ← #を外します
#mynetworks_style = host
# You can also specify the absolute pathname of a pattern file instead
# of listing the patterns here. Specify type:table for table-based lookups
# (the value on the table right-hand side is not used).
#
内部ネットワークアドレスとローカルホストアドレスを指定します
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
↓
mynetworks = 192.168.1.0/24, 127.0.0.0/8 ← #を外して書き換えます
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
# NOTE: Postfix will not automatically forward mail for domains that
# list this system as their primary or backup MX host. See the
# permit_mx_backup restriction description in postconf(5).
#
#relay_domains = $mydestination
↓
relay_domains = $mydestination ← #を外す
# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
↓
home_mailbox = Maildir/ ← #を外してメールボックス格納形式をMaildir形式にします
SMTP Authを有効にします。設定ファイルの最終行まで移動して、以下のように設定を追記します。
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
メール不正中継ホストからの接続を拒否する場合以下を最終行へ追加します。
smtpd_client_restrictions = reject_rbl_client relays.ordb.org
送信するメール1通当たりのサイズはデフォルトで10MByte、
受信するメール合計の総容量はデフォルトで50MByteに設定されています。
それぞれ100MByteと500MByteに変更するには以下を最終行へ追加します。
message_size_limit = 102400000
mailbox_size_limit = 512000000
変更を有効にする為、postfixを再起動します。
[root@server ~]# /etc/rc.d/init.d/postfix reload
postfix を再読み込み中:                                    [  OK  ]

■SMTP Auth設定
SMTP AuthではCyrus SASLと呼ばれる認証プログラムを利用しています。 PostfixでCyrus SASLを利用出来るように設定する必要があります。

[root@linux ~]# vi /usr/lib/sasl2/smtpd.conf ← smtpd.confを開きます
設定ファイルの最後に追記します。
mech_list: plain login cram-md5 digest-md5
saslauthdの起動
[root@linux ~]# /etc/init.d/saslauthd start
saslauthd を起動中:                                        [  OK  ]
saslauthdの自動起動設定
[root@linux ~]# chkconfig saslauthd on
saslauthdの自動起動設定確認
[root@linux ~]# chkconfig --list saslauthd
saslauthd       0:off   1:off   2:on    3:on    4:on    5:on    6:off
                (ランレベル2~5のonを確認)

■root宛メールを一般ユーザ(webmaster)へ転送
システムからroot宛に送られてくるメールを、一般ユーザ(webmaster)へ転送するようにします。

管理者ユーザ宛メールのroot宛転送設定を解除します
[root@linux ~]# sed -i 's/^webmaster/#webmaster/g' /etc/aliases
管理者ユーザ宛メールのroot宛転送設定解除を確認します
[root@linux ~]# grep ^webmaster /etc/aliases ← 結果がなにも表示されないことを確認します
root宛メールを管理者ユーザ(webmaster)へ転送するように設定します
[root@linux ~]# sed -i 's/^root/#root/g' /etc/aliases
root宛メールを管理者ユーザ(webmaster)へ転送するように設定します
[root@linux ~]# echo "root: webmaster" >> /etc/aliases
root宛メールが管理者ユーザ(webmaster)宛へ転送されるかの確認をします
[root@linux ~]# grep ^root /etc/aliases
root: webmaster ← root宛メールが管理者ユーザ(webmaster)へ転送されるように設定されている
転送先を反映させます
[root@linux ~]# postalias /etc/aliases

■一般ユーザー(webmaster)の作成
webmasterへメールが届くようにするためには一般ユーザー(webmaster)の作成が必要です。

一般ユーザ(webmaster)を追加します。
[root@linux ~]# useradd webmaster
一般ユーザーでログインするためにはパスワードを設定する必要があります
[root@linux ~]# passwd webmaster
パスワードの入力(入力したパスワードは表示されません)
Changing password for user webmaster.
New UNIX password:パスワード
再入力を促されるので、もう一度入力します。(上記のパスワードと同じ物を入れる)
Retype new UNIX password:パスワード
passwd: all authentication tokens updated successfully.

■Postfixの起動

Postfixの起動
[root@linux ~]# /etc/rc.d/init.d/postfix start
postfix を起動中:                                          [  OK  ]

■Postfixの自動起動設定

Postfixの自動起動設定
[root@linux ~]# chkconfig postfix on
Postfixの自動起動設定確認
[root@linux ~]# chkconfig --list postfix
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
                (ランレベル2~5のonを確認)

■sendmailパスの確認
掲示板などで投稿があったらメール通知する設定をしている時は CGIのsendmailパスの設定を変更しないと送信エラーになる場合があります。

一般ユーザーでsendmailパスの確認をします
[root@linex ~]# su - higo
[higo@linux ~]$ which sendmail ← sendmailパスの確認
/usr/bin/which: no sendmail in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/higo/bin)
sendmailパスが見つからないときは
以下のようにすれば一般ユーザーでもsendmailパスがみえるようになるはずです。
[higo@linux ~]$ su - ← ルートになる
パスワード(P): ← ルートのパスワードを入力
[root@linux ~]# ln -s /usr/sbin/sendmail /usr/bin/sendmail
[root@linux ~]# su - higo ← 一般ユーザーになる
[higo@linux ~]$ which sendmail ← sendmailパスの確認
/usr/bin/sendmail

当サイトのjoyful.cgiではsendmailパスがデフォルトで「/usr/lib/sendmail」になってますので、上記で確認したsendmailパス「/usr/bin/sendmail」に直さないと投稿時に送信エラーになります。

# sendmailパス(メール通知する時)
$sendmail = '/usr/lib/sendmail';
 ↓
# sendmailパス(メール通知する時)
$sendmail = '/usr/bin/sendmail'; ← libをbinに変更

SMTPサーバーを使うには、ルーターの設定が必要です。
ルータの設定で25番のポートを開けてください。
■エラー対策
メールの送信をした際に以下のようなエラーメッセージが表示される場合は、メール送信のセキュリティ制限にかかってしまっている可能性があります。
【OutlookExpressの場合】
受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。
拒否された電子メールアドレス: xxxx@xxxx.xxxxxx.xx.xx 件名 ‘送信テスト’, アカウント : ‘xxxx@xxxxxxx.xxx’, サーバー : ‘yokensaka.com’,プロトコル : SMTP, サーバーの応答 : ‘554 : Relay access denied’, ポート : 25, セキュリティ (SSL): なし, サーバー エラー : 554, エラー番号 : 0x800CCC79
メールソフトで「SMTP-AUTH」の設定をします。
——————————————————————————
[Windows Outlook 2000 ・ Outlook Express 5.0/6.0 のSMTP-AUTH設定方法]

  1. メニューバーの「ツール」→「アカウント」を選択して下さい。
  2. 「メール」タブをクリックして、エラーになったアカウントを選択、「プロパティ」をクリックして下さい。
  3. 「サーバー」タブをクリックして開いて下さい。
  4. 「送信メールサーバー」欄の「このサーバーは認証が必要」にチェックを付けて「設定」をクリックして下さい。
  5. 表示された画面で「受信メールサーバーと同じ設定を使用する」にチェックが付いている事を確認して、「OK」をクリックして下さい。
  6. 「OK」をクリックして設定画面を閉じて下さい。

※社内LANなどの場合 受信メール (POP3) が「localhost」になってる事がありますので正式な受信メールサーバーを設定してください。
Postfixをインストールしただけでは、メールの読み出しは出来ません。 Postfixはメールを配信するためのSMTPサーバーとしての機能しか持たないからです。 次はdovecotをインストールすることにより、POP3/IMAP4どちらでもメールを読み出せるようにします。

画像処理(ImageMagick)

■ FC2~FC6 / Fedora7 / Fedora8 / Fedora9
このサイトでは、「Exif 情報対応版 Joyful Note」を使い、デジカメの元画像をそのままアップできる掲示板がありますが、サムネイル作成にはImageMagickとPerlMagickをサポートしたサーバーが必要で、サポートしてないサーバーでは元画像が縮小表示で表示され重くなります。そこで自宅サーバーでもImageMagickとPerlMagickをインストールして、サムネイルを作れるようにしたいと思います。
■ ImageMagickのインストール * F7以降はデフォルトでインストールされています。

[root@linux ~]# yum -y install ImageMagick

■ PerlMagickのインストール

[root@linux ~]# yum -y install ImageMagick-perl

これで、「Exif 情報対応版 Joyful Note」でもサムネイルが作成されるようになってるはずです。画像のプロパティで joyful_exif/img/thumb/・・・という風に「thumb」の文字が表示されればサムネイルは作成されています。
■Nucleusでサムネイルを作成するには
Nucleusでサムネイルを作成するのに必要なphp-gdをインストールします。

[root@linux ~]# yum -y install php-gd

httpd を再起動させます

[root@linux ~]# service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

※Exif 情報対応版 Joyful NoteがFC5でInternal Server Errorになったときの対応策
Exif 情報対応版 Joyful NoteがInternal Server Errorになり使えない状態になり、いろいろ調べてたらどうもPerlMagickがImageMagick.i386 0:6.2.5.4-4.2.1.fc5.4になったことが原因のようです。
エラー内容

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@yokensaka.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.

とりあえずImageMagick-perlをアンインストール

[root@linux ~]# yum remove ImageMagick-perl

このままでも掲示板としては機能しますが、元画像が縮小表示になるだけでかなり重くなります。そこでZZ-RさんのHPで紹介されてる方法でサムネイル作成を可能にすることにしました。
PerlMagick をサポートしていないサーバ編
check.cgiで調べたら、i386_linux_standardのrepng2jpegが使えそうでしたので、repng2jpeg.zipをダウンロード、解凍して、i386_linux_staticフォルダの中のrepng2jpegをjoyful.cgiと同じフォルダに置き、joyful.cgiのサムネイルに関する設定のところを下記のように変更。

$ThumbMake = -1; となってるところを4に変更。
$ThumbMake = 4;

これで、「Exif 情報対応版 Joyful Note」でもサムネイルが作成されるようになりました。

アクセスログ解析(Awstats)

■ FC6 / Fedora7 / Fedora8 / Fedora9
Awstats は視覚的に綺麗で、見やすいログ解析ツールです。日別・時間別・アクセス先など様々な統計情報を把握することが出来ます。
■Awstatsのインストール
以下のコマンドでAwstatsをインストールします。

[root@linux ~]# yum -y install awstats

awstatsを使うには、perlも必要です。perl -vと入力して、
以下のような情報が返ってくれば、perlはインストールされています。

[root@linux ~]# perl -v
This is perl, v5.8.8 built for i386-linux-thread-multi
Copyright 1987-2006, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

■ Awstatsの設定ファイルの編集

まず不要な設定ファイルを削除しておきます
[root@linux ~]# rm -f /etc/awstats/awstats.localhost.localdomain.conf
awstatsへ移動します。
[root@linux ~]# cd /etc/awstats
etc/awstats/のawstats.server.yokensaka.com.conf を awstats.conf に変更します。
[root@linux awstats]# mv awstats.linux.yokensaka.com.conf awstats.conf
続いて、root権限で、このawstats.confを編集します。
[root@linux awstats]# su -
[root@linux ~]# vi /etc/awstats/awstats.conf
SiteDomain="linux.yokensaka.com"
↓
SiteDomain="yokensaka.com" ←独自ドメイン名に変更
DNSLookup=2
↓
DNSLookup=1   ← 1に変更(DNSの逆引きにする設定に変更)
DirIcons="/awstatsicons"
↓
DirIcons="/icon" ← アイコンのディレクトリー名を変更
SkipHosts="127.0.0.1"
↓ 内部のクライアントはスキップするように変更
SkipHosts="127.0.0.1 REGEX[^192\.168\.1\.]"
Lang="auto"
↓
Lang="jp" ← jpに変更
#LoadPlugin="tooltips"
↓ #を削除(該当する部分にマウスを当てるとヘルプが表示されます。)
LoadPlugin="tooltips"
※ 最後にこのままだとアイコンが表示されないので、アイコンの入ってるフォルダ
/usr/share/awstats/wwwroot/icon を /var/www/html へコピーしておきます。

■ awstats.plアクセス制限(内部からのみアクセス可)

[root@linux ~]# vi /etc/httpd/conf.d/awstats.conf
最終行へ追加します
<Files "awstats.pl">
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1 ← 内部のネットワークアドレスを指定
</Files>
Apache設定反映
[root@linux ~]# /etc/rc.d/init.d/httpd reload 
httpd を再読み込み中: [ OK ]

■ httpdの設定ファイルの編集

httpdの設定ファイルの編集
[root@linux ~]# vi /etc/httpd/conf/httpd.conf
長すぎるURI(414 Error)はログに記録しない
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
         ↓
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
ログの記録内容変更
# logged therein and *not* in this file.
#
#CustomLog logs/access_log common
この下に以下を追加
SetEnvIf Request_URI "default\.ida" no_log
SetEnvIf Request_URI "cmd\.exe" no_log
SetEnvIf Request_URI "root\.exe" no_log
SetEnvIf Request_URI "Admin\.dll" no_log
SetEnvIf Request_URI "NULL\.IDA" no_log
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(css)$" no_log
SetEnvIf Remote_Addr 192.168. no_log
CustomLog logs/access_log combined env=!no_log
以上で設定は完了ですので、一度httpdを再起動させます。
[root@linux ~]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

■ ログファイルからデータファイルの作成

続いて、ログファイルからデータファイルの作成をします。
[root@linux ~]# /usr/share/awstats/tools/awstats_updateall.pl now
Running '"/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" -update -config=default -configdir="/etc/aw    stats"' to update config default
Create/Update database for config "/etc/awstats/awstats.conf" by AWStats version 6.6 (build 1.887)
From data in log file "/var/log/httpd/access_log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 0
Found 0 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 0 new qualified records.
Running '"/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" -update -config=localhost.localdomain -conf    igdir="/etc/awstats"' to update config localhost.localdomain
Create/Update database for config "/etc/awstats/awstats.localhost.localdomain.conf" by AWStats versi    on 6.6 (build 1.887)
From data in log file "/var/log/httpd/access_log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 0
Found 0 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 0 new qualified records.

これで、/etc/cron.hourly/awstats が一時間毎に実行されます。セットアップしてから、1時間たってから、 http://サーバーアドレス/awstats/awstats.pl にアクセスすれば、解析結果が見れるはずです. Fedora Core6 のインストールのときに SELinux を無効にしなかった場合は、awstats を利用する事ができません。 そのときは、メニューのアプリケーション→システム設定→セキュリティレベルをクリックしてSELinuxのタブの中のDisable SELinux protection for httpd daemonにチェックをいれてコンピューターを再起動してください。
■ 文字化け対策
このままでも閲覧は可能なんですが、Awstatsが出力するHTMLファイルの文字コードはデフォルトでUTF-8ですので、その他の文字コードで検索された単語などは文字化けしてしまいます。文字化けの対応としてaccess_logの検索文字列をUTF-8に変換してやる必要があります。私はこのUTF-8に変換してくれるスクリプトをダウンロードして、/root以下に置きました。(最新版はこちらで確認してください

[root@linux ~]# wget http://www.ganaware.jp/viewcvs.cgi/*checkout*/conv_weblog_to_utf8/conv_weblog_to_utf8.pl?rev=1.6
警告: HTTPはワイルドカードに対応していません。
--21:00:18--  http://www.ganaware.jp/viewcvs.cgi/*checkout*/conv_weblog_to_utf8/conv_weblog_to_utf8.    pl?rev=1.6
=> `conv_weblog_to_utf8.pl?rev=1.6'
www.ganaware.jp をDNSに問いあわせています... 221.249.35.2
www.ganaware.jp|221.249.35.2|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/x-perl]
[ <=>                                                     ] 2,248         --.--K/s
21:00:18 (105.69 MB/s) - `conv_weblog_to_utf8.pl?rev=1.6' を保存しました [2248]
ファイル名の変更conv_weblog_to_utf8.pl?rev=1.6 → conv_weblog_to_utf8.pl
[root@linux ~]# mv conv_weblog_to_utf8.pl?rev=1.6 conv_weblog_to_utf8.pl

access_logの変換

スクリプトに実行権限を与えておきます。(/rootディレクトリで)
[root@linux ~]# chmod +x conv_weblog_to_utf8.pl
このスクリプトを使用して、access_logを変換します。
[root@linux ~]# ./conv_weblog_to_utf8.pl < /var/log/httpd/access_log > /var/log/httpd/access_log.utf

access_logをUTF-8に変換すると、access_log.utfというファイルが、/var/log/httpd/以下に新しく出来上がります。
awstats.confの設定変更
変換したaccess_logを読み込むようにawstats.confの設定を変更します。

[root@fedora ~]# vi /etc/awstats/awstats.conf
LogFile="/var/log/httpd/access_log"
↓
LogFile="/var/log/httpd/access_log.utf" ← 変換したaccess_logを読み込むように指定

以上で、UTF-8以外の文字コードで検索された文字列も文字化けしないようになります。
URL http://サーバーアドレス/awstats/awstats.pl を指定してアクセスしてみましょう。
■ awstatsの自動実行

自動で実行する為にcronに登録します。
[root@linux ~]# crontab -e
MAILTO=""
15 0-23/3 * * * /root/conv_weblog_to_utf8.pl < /var/log/httpd/access_log > /var/log/httpd/access_log.utf ; /usr/share/awstats/tools/awstats_updateall.pl now

毎日3時間おきの15分にaccess_logの変換をして、そのあとでデータファイルの作成をするようにしています。また、結果をメールしないように「MAILTO=””」と先頭行に書き加える。

ファイル転送(WinSCP)

■ FC2~FC6 / Fedora7 / Fedora8 / Fedora9
WinSCPはSSH (Secure Shell)を使用してファイルを転送するプログラムです。 Telnetによるリモートコンピュータへの接続ではパスワードが暗号化されませんので、SSH(暗号化シェル)でのリモート接続をお勧めします。 WinSCPを導入するに当って事前にSSHサーバの構築を行っている必要があります。
■秘密鍵のジェネレート
・秘密鍵をWinSCPで使用するには PuTTYgenによるジェネレート が必要です。
■WinSCPをインストールする
WinSCP のダウンロードページから Installation packageをダウンロードして、実行します。(最新版を確認してダウロードしてください 08/05/16 時点ではWinSCP 4.1.2 betaです)
■WinSCPの設定

  1. winscp412setup.exeをダウンロードして、実行すると、WinSCP ログイン画面になります。
  2. Languagesボタンを押して[Japanese – 日本語]を選択します。
  3. [セッション]でホスト名かサーバーのIPアドレスを入力します。(例 192.168.1.2 )
  4. [セッション]でユーザー名を入力します。(例 higo )
  5. [セッション]で秘密鍵の入力欄にある「 … 」ボタンを押して、保存した秘密鍵「 **.ppk 」ファイルを指定します。
  6. カテゴリ[SSH]でプロトコルの優先順位を[2]に選択します。
  7. 保存ボタンを押します。
  8. セッションの保存名に、適当な名前を付けてOKボタンを押します。(例 自宅サーバー)

■接続前の準備
外部からの接続には、ルータの設定が必要です。
ルータの設定で22番のポートを開けてください。
■WinSCPの起動

  1. WinSCPを起動し、保存したセッションを選択してログインします。
  2. パスワードの入力画面が出ますので、パスワードを入力し、OKボタンを押します。

Webサーバ(Apache)

■ FC2~FC6 / Fedora7 / Fedora8 / Fedora9
Apache はインターネットで最も普及しているオープンソースの Web サーバソフトウェアーです。Apache は標準でインストールされていますのでサーバーの設定に移ります。
■Apache がインストールされてるかどうか確認します。

[root@server ~]# rpm -q httpd
httpd-2.2.8-3.i386  ← パッケージ情報が表示された
パッケージ情報が表示されなければインストールします。
[root@linux ~]# yum -y install httpd 

■PHPをインストール

[root@linux ~]# yum -y install php

■Apacheの設定

Apacheの設定ファイルの編集
[root@linux root]# vi /etc/httpd/conf/httpd.conf
エラーページ等でOS名を表示しないようにする
ServerTokens OS
↓
ServerTokens Prod
エラーページ等でApacheのバージョンを表示しないようにする
ServerSignature On
↓
ServerSignature Off
管理者のメールアドレスを設定する
ServerAdmin root@localhost
↓
ServerAdmin webmaster@yokensaka.com ← 独自ドメインに変更
サーバー名を指定
#ServerName www.example.com:80
↓
ServerName yokensaka.com:80 ← #をはずして独自ドメインに変更
CGIスクリプトを実行できる様にする
#AddHandler cgi-script .cgi
         ↓
AddHandler cgi-script .cgi .pl ← #をはずして.plを追加
デフォルトキャラセットを無効にする
AddDefaultCharset UTF-8
         ↓
#AddDefaultCharset UTF-8 ← #を付ける
CGIの許可、SSIの許可、シンボリックリンク許可
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
         ↓
Options Includes ExecCGI FollowSymLinks
.htaccessの許可
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
AllowOverride None
         ↓
AllowOverride All
長すぎるURI(414 Error)はログに記録しない
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
         ↓
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
ログの記録内容変更
# logged therein and *not* in this file.
#
#CustomLog logs/access_log common
この下に以下を追加
SetEnvIf Request_URI "default\.ida" no_log
SetEnvIf Request_URI "cmd\.exe" no_log
SetEnvIf Request_URI "root\.exe" no_log
SetEnvIf Request_URI "Admin\.dll" no_log
SetEnvIf Request_URI "NULL\.IDA" no_log
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(css)$" no_log
SetEnvIf Remote_Addr 192.168. no_log
CustomLog logs/access_log combined env=!no_log

■Perlのパスが/usr/local/bin/perlでもCGIを実行出来るようにする。

現在のPerlの位置
[root@linux ~]# which perl
/usr/bin/perl
シンボリックリンク設定(/usr/local/bin/perlから/usr/bin/perlへリンクをはる)
[root@linux ~]# ln -s /usr/bin/perl /usr/local/bin/perl
変更後のPerlの位置
[root@linux ~]# which perl
/usr/local/bin/perl

■ドキュメントルートの所有者変更

[root@linux ~]# chown higo:higo /var/www/html/ ← ドキュメントルート所有者変更
[root@linux ~]# ll /var/www/ ← ドキュメントルート所有者変更確認
合計 32
drwxr-xr-x 2 root root 4096 2007-05-09 19:28 cgi-bin
drwxr-xr-x 3 root root 4096 2007-06-10 23:53 error
drwxr-xr-x 2 higo higo 4096 2007-05-09 19:28 html
drwxr-xr-x 3 root root 4096 2007-06-10 20:26 icons

■Apacheの起動

Apache(httpd)を起動する
[root@linux ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]

■Apacheの自動起動設定

[root@linux ~]# chkconfig httpd on
[root@linux ~]# chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
           ランレベル2~5がオンの状態であることを確認

■Apacheの動作確認
クライアントより http://192.168.1.2/ でアクセスして「Fedora Core Test Page」画面が表示されればOKです。
■各機能の動作確認
1.テスト用のHTMLの表示確認を行う。

テスト用のhtmlを作成
[root@linux ~]# vi /var/www/html/index.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>テストページ</title>
</head>
<body>
テストページ
</body>
</html>

クライアントより http://192.168.1.2/index.html でアクセスして、「テストページ」と表示されればOKです。
2.SSIの動作確認を行なう。

テスト用のshtmlを作成
[root@linux ~]# vi /var/www/html/index.shtml
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>テスト</title>
<body>
SSIテスト
<!--#config timefmt="%Y/%m/%d %H:%M:%S" -->
<!--#echo var="DATE_LOCAL" -->
</body>
</html>

クライアントより http://192.168.1.2/index.shtml でアクセスして、現在の日付が表示されればOKです。
3.CGIの動作確認を行なう。

テスト用のcgiを作成
[root@linux ~]# vi /var/www/html/test.cgi
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-jp\">";
print "<title>テストページ</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n";
cgiのパーミッション変更
[root@linux ~]# chmod 755 /var/www/html/test.cgi

クライアントより http://192.168.1.2/test.cgi でアクセスして、「CGIテスト」と表示されればOKです。
4.PHPの動作確認を行なう。

テスト用のphpを作成
[root@linux ~]# vi /var/www/html/test.php
<?php
phpinfo();
?>

クライアントより http://192.168.1.2/test.php でアクセスして、PHPインフォメーション画面が表示されればOKです。
■公開前の準備
ホームページを外部に公開するに当たって、ルータの設定が必要です。
ルータの設定でポート番号80番を開けてください。

リモート接続(PuTTY)

■ FC2~FC6 / Fedora7 / Fedora8 / Fedora9
PuTTYはWindowsで動作するSSH方式のリモート接続ソフトウェアです。 Telnetによるリモートコンピュータへの接続ではパスワードが暗号化されませんので、SSH(暗号化シェル)でのリモート接続をお勧めします。 PuTTYを導入するに当って事前にSSHサーバの構築を行っている必要があります。
■PuTTY の入手

  1. PuTTY Download Page より PuTTYgen をダウンロードします。
  2. PuTTY日本語化ダウンロードサイト から 日本語に対応した PuTTY をダウンロードします。
  3. ダウンロードした日本語に対応した PuTTY を適当な場所に解凍します。
    (最新版を確認してからダウンロードしてください)

■秘密鍵のジェネレート

  1. ダウンロードした PuTTYgen を実行します。
  2. 「Load ボタン」を押します。
  3. サーバよりコピーした秘密鍵を選択します。
  4. ファイルの種類は、「All Files(*.*)」を選択します。
  5. サブウィンドウが開きますので、鍵を作成した時のパスワードを入力します。
  6. 「Save privte key ボタン」押します。
  7. ジェネレートされた秘密鍵を適当な場所(PuTTYのフォルダ等)に名前(higo)を付けて保存します。
  8. メニューより[File]-[Exit]をクリックし PuTTYgen を終了します。

■PuTTY の設定

  1. 「 日本語に対応した PuTTY 」のフォルダの中の「 puttyjp.exe 」を実行します。
  2. [ホスト名]の欄にホスト名かサーバーのIPアドレスを入力します。(例 192.168.1.2 )
  3. プロトコルを[SSH]にします。
  4. 次に[接続→データ]を選択し、[自動ログインのユーザ名]にユーザー名入力します。(例 higo )
  5. 次に[接続→SSH]のプロトコルオプションで、[優先するSSHプロトコルバージョン]を[2]に設定します。
  6. 次に[ウィンドウ→変換]で受信されるデータの文字セット変換をEUC-JPに選択します。
  7. 次に[接続→SSH→認証]で参照ボタンを押して、保存した秘密鍵「 **.ppk 」ファイルを指定します。
  8. 次に[セッション]に戻り、「保存されたセッション」に分かりやすい名前(例192.168.1.2)を入力して保存します。
  9. 保存したセッションを選択して「開く」をクリックすると、別ウインドウが開きますのでパスワードを入力するとサーバーに接続できます。

※PuTTY の設定が終わってからPuTTYのフォルダを移動するとサーバーに接続できなくなりますので、改めて[接続→SSH→認証]で参照ボタンを押して、保存した秘密鍵「 **.ppk 」ファイルを指定する必要があります。
■接続前の準備
外部からの接続には、ルータの設定が必要です。
ルータの設定で22番のポートを開けてください。
■PuTTY によるリモート接続
PuTTY を起動して、保存されたセッションにある「自宅サーバ」をダブルクリックします。

Using username "higo".
Authenticating with public key "imported-openssh-key"
Passphrase for key "imported-openssh-key":        ← パスワードを入力します
Last login: Wed Feb 23 00:35:41 2005 from 3.1.168.192.in-addr.arpa
[higo@linux ~]$                            ← SSHによるログインができた

■PuTTY のカスタマイズ

  1. PuTTY を起動して、保存されたセッションにある「自宅サーバ」を選択して「読込」をクリックします。
  2. 端末ウィンドウの大きさを変更したいときは、ウィンドウ カテゴリーの「行」「列」で設定します。 デフォルトは 80×24 になっていまので、「行」を53、「列」を100、に変更します。 「行」53は、キーボードの「PaguUp」「PageDown」で50行ずつスクロールするので大体の行を把握できるようにするためです。 「列」は好みで変更してください。わたしは 100 に変更しました。
  3. ウィンドウ カテゴリーの「スクロールバッファの行数」が基本では「200」になってます。 これだと以前に行った設定等の確認ができないで困る場合がありますので、 わたしはスクロールバッファサイズを「2000」に変更しました。 サイト構築のための覚書を書くために、設定したことをスクロールバックして確認する必要があるためです。
  4. プロバイダーによっては、一定時間入力がないと自動的に接続を切断してしまう場合があります。 接続が切れないようにしたい場合には、接続 カテゴリーの「セッションをアクティブに保つための null パケットの送信」で、 null パケットを自動送信する時間間隔 (単位: 秒) を設定します。 デフォルトは 0 (null パケットは送信しない) です。わたしは 60 秒 = 1 分おきに null パケットを送信するようにしました。