ClamAVの最新版「version: 0.91」のインストール

※ Fedora7
Cron Daemon から以下のようなメールが届いたのでClamAVを 0.91 にバージョンアップします。

WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.90.3 Recommended version: 0.91

■古いバージョンをアンインストール
ソースコードからインストールした場合はアンインストール用にバックアップしてあったモジュールを展開してアンインストールします。

モジュールを展開
[root@linux ~]# tar zxvf clamav-0.90.3_self.tar.gz
clamav-0.90.3のディレクトリへ移動
[root@linux ~]# cd clamav-0.90.3
clamav-0.90.3のアンインストール
[root@linux clamav-0.90.3]# make uninstall

古いバージョンのディレクトリーが残ってた場合はディレクトリーも削除

[root@linux ~]# rm -rf /usr/local/clamav
[root@linux ~]# rm -rf clamav-0.90.3

ClamAVをダウンロードします。 最新版は公式サイトで確認できます。

[root@linux ~]# wget http://freshmeat.net/redir/clamav/29355/url_tgz/clamav-0.91.tar.gz

clamavはインストールする前に
「clamav」という名前のユーザとグループを作成しておく必要があります。

[root@linux ~]# groupadd clamav
[root@linux ~]# useradd -g clamav -s /bin/false clamav

それではインストールです。

clamav-0.91を展開
[root@linux ~]# tar zxvf clamav-0.91.tar.gz
ダウンロードしたファイルを削除
[root@linux ~]# rm -f clamav-0.91.tar.gz
clamav-0.91ディレクトリーへ移動
[root@linux ~]# cd clamav-0.91
Makefileを自動作成するためのツール「configure」を実行。
「configure」を実行することにより、使用されるべきコンパイラ、コンパイラに与えるオプション、リンクすべきライブラリ等、
その他諸々の情報が自動的に収集され、環境に応じたMakefileが作成される。
[root@linux clamav-0.91]# ./configure --prefix=/usr/local/clamav
makeを実行し、clamavをインストール
[root@linux clamav-0.91]# make
[root@linux clamav-0.91]# make install

アンインストール用にバックアップしておきます。

[root@linux ~]# tar cvf clamav-0.91_self.tar ./clamav-0.91
[root@linux ~]# gzip clamav-0.91_self.tar

インストールが正常に完了したらまず、二つの設定ファイル
/usr/local/clamav/etc/freshclam.conf
/usr/local/clamav/etc/clamd.conf
をエディタで開きExampleと書かれた行をコメントアウトし、保存します。

[root@linux clamav-0.91]# vi /usr/local/clamav/etc/freshclam.conf
# Comment or remove the line below.
Example
↓
#Example
[root@linux clamav-0.91]# vi /usr/local/clamav/etc/clamd.conf
# Comment or remove the line below.
Example
↓
#Example

「freshclam」を使用してVirusDBをアップデート。

[root@linux clamav-0.91]# /usr/local/clamav/bin/freshclam
ClamAV update process started at Thu Jul 12 12:12:31 2007
main.cvd is up to date (version: 43, sigs: 104500, f-level: 14, builder: sven)
Downloading daily-3631.cdiff [100%]
Downloading daily-3632.cdiff [100%]
Downloading daily-3633.cdiff [100%]
Downloading daily-3634.cdiff [100%]
Downloading daily-3635.cdiff [100%]
Downloading daily-3636.cdiff [100%]
Downloading daily-3637.cdiff [100%]
Downloading daily-3638.cdiff [100%]
Downloading daily-3639.cdiff [100%]
Downloading daily-3640.cdiff [100%]
Downloading daily-3641.cdiff [100%]
daily.cvd updated (version: 3641, sigs: 31211, f-level: 16, builder: ccordes)
Database updated (135711 signatures) from database.clamav.net (IP: 61.205.61.201)

ウィルススキャン確認(/etc/passwdをスキャンしてみる)

[root@linux clamav-0.91]# /usr/local/clamav/bin/clamscan --infected --remove --recursive /etc/passwd
----------- SCAN SUMMARY -----------
Known viruses: 135711
Engine version: 0.91
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Time: 2.468 sec (0 m 2 s)
[root@linux clamav-0.91]#

version: 0.91でスキャンされてることを確認
■Clam AntiVirusの定期自動実行設定

毎日自動的にウィルス定義ファイル最新化して、全てのファイルのウィルススキャンを行うスプリクトの作成
[root@linux ~]# vi clamav.sh
#!/bin/bash
PATH=/usr/bin:/bin
# excludelist
excludelist=/root/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo "$i"|grep \/$) ]; then
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
excludeopt="${excludeopt} --exclude-dir=$i"
else
excludeopt="${excludeopt} --exclude=$i"
fi
done
fi
CLAMSCANTMP=`mktemp`
/usr/local/clamav/bin/freshclam > /dev/null
/usr/local/clamav/bin/clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP
Clam AntiVirus定期自動実行スクリプトに実行権限付加
[root@linux ~]# chmod 700 clamav.sh
cron編集
[root@linux ~]# crontab -e
00 03 * * * /root/clamav.sh ← 追加(毎日3:00にClam AntiVirusの定期自動実行)

■スキャン除外設定
backupディレクトリをスキャン対象外にするように設定

[root@linux ~]# echo "/backup/" >> clamscan.exclude

追記
全てのファイルのウィルススキャンをAM3:00に実行するようにしてますが、AM3:50分に以下のようなメールが届きました。clamav-0.91のtestディレクトリーに入ってる6個のウィルスをしっかり検出して削除してます。

//root/clamav-0.91/test/clam-v2.rar: ClamAV-Test-File FOUND
//root/clamav-0.91/test/clam-v3.rar: ClamAV-Test-File FOUND
//root/clamav-0.91/test/clam.cab: ClamAV-Test-File FOUND
//root/clamav-0.91/test/clam.zip: ClamAV-Test-File FOUND
//root/clamav-0.91/test/clam.exe.bz2: ClamAV-Test-File FOUND
//root/clamav-0.91/test/clam.exe: ClamAV-Test-File FOUND

ClamAVの最新版をソースからインストール

※ Fedora7
yumで最新版の「version: 0.90.3」になかなかアップデートされないのでwgetでソースからインストールすることにしました。
■ 最初にyumでインストールした「version: 0.90.2」のclamavとclamav-updateをアンインストールしておきます。

[root@linux ~]# yum -y remove clamav clamav-update

■ ソースからインストールする場合は、clamavというグループおよびユーザーを作成します。

[root@linux ~]# groupadd clamav
[root@linux ~]# useradd -g clamav -s /bin/false clamav ←clamavユーザー(clamavグループ、ログイン不可) 

■ ClamAVのインストール
ClamAVを公式サイトからダウンロードします。

[root@linux ~]# wget http://freshmeat.net/redir/clamav/29355/url_tgz/clamav-0.90.3.tar.gz
展開して、インストールします
[root@linux ~]# tar zxvf clamav-0.90.3.tar.gz
clamavディレクトリーへ移動します
[root@linux ~]# cd clamav-0.90.3
[root@linux clamav-0.90.3]# ./configure --prefix=/usr/local/clamav
[root@linux clamav-0.90.3]# make
[root@linux clamav-0.90.3]# make install

■ アンインストール用のバックアップとアンインストール方法

アンインストール用のバックアップ
[root@linux clamav-0.90.3]# cd
[root@linux~]# tar cvf clamav-0.90.3_self.tar ./clamav-0.90.3
[root@linux ~]# gzip clamav-0.90.3_self.tar
アンインストール方法
アンインストール用にバックアップしてあったモジュールを展開。
[root@linux ~]# tar zxvf clamav-0.90.3_self.tar.gz
clamav-0.90.3のディレクトリへ移動
[root@linux ~]# cd clamav-0.90.3
clamav-0.90.3のアンインストール
[root@linux clamav-0.90.3]# make uninstall

■Clam AntiVirusの設定

[root@linux ~]# vi /usr/local/clamav/etc/freshclam.conf
# Comment or remove the line below.
Example
↓
#Example
[root@linux ~]# vi /usr/local/clamav/etc/clamd.conf
# Comment or remove the line below.
Example
↓
#Example

■ウィルス定義ファイルの最新化

[root@linux ~]# /usr/local/clamav/bin/freshclam
ClamAV update process started at Thu Jun 28 18:41:35 2007
main.cvd is up to date (version: 43, sigs: 104500, f-level: 14, builder: sven)
Downloading daily-3567.cdiff [100%]
Downloading daily-3568.cdiff [100%]
Downloading daily-3569.cdiff [100%]
Downloading daily-3570.cdiff [100%]
daily.inc updated (version: 3570, sigs: 27119, f-level: 16, builder: ccordes)
Database updated (131619 signatures) from database.clamav.net (IP: 203.212.42.128)

最新版がアップされた時は、freshclam を実行すると自サーバーのバージョンと会わないので以下のような警告が出ます。(この場合は自サーバーのバージョンが 0.90.2 に対して最新バージョンが 0.90.3)この警告が出たら最新版にバージョンアップする必要があります。

WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.90.2 Recommended version: 0.90.3

■Clam AntiVirusの確認

ウィルススキャン確認(/etc/passwdをスキャンしてみる)
[root@linux ~]# /usr/local/clamav/bin/clamscan --infected --remove --recursive /etc/passwd
----------- SCAN SUMMARY -----------
Known viruses: 130699
Engine version: 0.90.3
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Time: 64.979 sec (1 m 4 s)

■Clam AntiVirusの定期自動実行設定

毎日自動的にウィルス定義ファイル最新化して、全てのファイルのウィルススキャンを行うスプリクトの作成
[root@linux ~]# vi clamav.sh
#!/bin/bash
PATH=/usr/bin:/bin
# excludelist
excludelist=/root/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo "$i"|grep \/$) ]; then
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
excludeopt="${excludeopt} --exclude-dir=$i"
else
excludeopt="${excludeopt} --exclude=$i"
fi
done
fi
CLAMSCANTMP=`mktemp`
/usr/local/clamav/bin/freshclam > /dev/null
/usr/local/clamav/bin/clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP
Clam AntiVirus定期自動実行スクリプトに実行権限付加
[root@linux ~]# chmod 700 clamav.sh
cron編集
[root@linux ~]# crontab -e
00 03 * * * /root/clamav.sh ← 追加(毎日3:00にClam AntiVirusの定期自動実行)

■スキャン除外設定
backupディレクトリをスキャン対象外にするように設定

[root@linux ~]# echo "/backup/" >> clamscan.exclude

DiCE強制終了

■ Fedora7
topコマンドでプロセスのCPU使用率を見てみるとDiCEが常に高い使用率になってます。何が原因なのか今のところはっきりしませんが、IPアドレスの自動更新はDynamic DO!.jpwgetを使ってIPの自動更新でやるようにしてとりあえずDiCEは強制終了することにします。
* Dynamic DO!.jpだとIPアドレスが変更になってもすぐに反映されません。10分おきにチェックするように設定しましたので、IPアドレスが変わったとき最大で10分間サーバーに繫がらなくなる事もあります。
topコマンドでCPU使用率を確認

[root@server ~]# top
top - 20:44:48 up 5 days, 22:40,  1 user,  load average: 0.16, 0.08, 0.05
Tasks: 114 total,  10 running, 104 sleeping,   0 stopped,   0 zombie
Cpu(s): 42.9%us, 27.2%sy,  0.0%ni, 29.6%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    499036k total,   490300k used,     8736k free,    61660k buffers
Swap:  1015800k total,       36k used,  1015764k free,   298524k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
7630 root      15   0  5216  416  292 R 38.2  0.1   0:05.03 diced
2050 mysql     15   0  137m  21m 4768 S 12.6  4.3  36:05.57 mysqld
2070 apache    15   0 29372 9.9m 4440 S  6.0  2.0   1:11.88 httpd
7638 apache    18   0  4268 1936 1156 R  5.3  0.4   0:00.16 regist.cgi
23377 apache    15   0 30396  10m 4344 S  4.0  2.2   0:30.86 httpd
7631 root      15   0  2204 1028  796 R  0.7  0.2   0:00.11 top
23703 apache    15   0 30204  10m 4368 S  0.3  2.2   0:31.47 httpd
1 root      15   0  2136  672  580 S  0.0  0.1   0:01.55 init
2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
3 root      34  19     0    0    0 S  0.0  0.0   0:00.04 ksoftirqd/0

とりあえずDiCEを強制終了する事にします。

Killシグナルによるプロセスの「-9」とDiCEのプロセスID「7630」を入力して強制終了させます。
[root@server ~]# kill -9 7630

再度topコマンドで確認

[root@server ~]# top
top - 20:50:41 up 5 days, 22:46,  1 user,  load average: 0.18, 0.12, 0.06
Tasks: 116 total,   2 running, 114 sleeping,   0 stopped,   0 zombie
Cpu(s): 15.7%us,  2.3%sy,  0.0%ni, 81.7%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    499036k total,   491160k used,     7876k free,    61948k buffers
Swap:  1015800k total,       36k used,  1015764k free,   298736k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
23209 apache    15   0 30208  10m 4384 S  5.7  2.2   0:30.67 httpd
2050 mysql     15   0  137m  21m 4768 S  4.7  4.3  36:06.81 mysqld
23695 apache    15   0 29144 9.9m 4520 S  4.7  2.0   0:31.80 httpd
23702 apache    15   0 30224  10m 4380 S  2.3  2.2   0:28.83 httpd
7652 root      15   0  2204 1028  796 R  0.7  0.2   0:00.51 top
23704 apache    15   0 30224  10m 4348 S  0.3  2.2   0:31.00 httpd
1 root      15   0  2136  672  580 S  0.0  0.1   0:01.55 init
2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
3 root      34  19     0    0    0 S  0.0  0.0   0:00.04 ksoftirqd/0

DiCEを強制終了したら、掲示板やブログの表示速度も速くなりました。

メインサーバーも Fedora 7

Fedora 7 は通信が不通になったり異常な程応答が遅くなるというような報告もあるようですが、当方は予備サーバーで1週間ぐらい運用してましたが、特に問題もなく安定してるようなので、メインサーバーも Fedora 7 にしました。Fedora 7 では、Fedora Core と Fedora Extras(OSを補足するアドオン)の両方を1つのパッケージに収容し、統合されたので名称も今までの Fedora Core 6 から Fedora 7 と短くなってます。Fedoraの特長であるブルーの背景はそのままですが、 Fedora 7 では熱気球が描かれ、「冒険心と探求心」を意味するデザインになってます。テーマは「飛躍」だそうです。

ソースの書き方

このブログではソースのスペースや改行をそのまま表示するようにして書いてますが、どうするんですかっていう質問がありましたので私がやってる方法を書きます。
私はソースやスプリクトなどを書く時はソースのスペースや改行をそのまま表示する<pre>~</pre>を使って書いてます。ただし、”<” とか “>” とか “&” は特殊文字として認識されてしまうので、”&lt;” や “&gt;” や “&amp;” に置き換えなければなりません。それについては前にも書いてますのでそちらを参考にしてください。それと、ほとんどのブログツールは改行を自動変換して表示しますので、二重に改行されてしまいます。そこで、改行を自動変換しない部分を指定できるプラグイン「NP_StripBR」を使って、改行を自動変換してほしくない部分を<%nobr%>~<%/nobr%>で括って書いてます。あとソースの横幅はブログの記事を表示する横幅より長いのでスクロールして見れるようにスタイルシートで表示方法を指定してます。
記述例
■ 何もしないで書いた場合
ブログの表示幅にあわせて改行され、スペース等はつめられる

[root@linux ~]# rpm -Uvh http://www.fedorafaq.org/yum http://rpm.livna.org/livna-release-6.rpm
http://www.fedorafaq.org/yum を取得中
http://rpm.livna.org/livna-release-6.rpm を取得中
警告: /var/tmp/rpm-xfer.4X6tSX: ヘッダ V3 DSA signature: NOKEY, key ID a109b1ec
準備中… ########################################### [100%]
パッケージ livna-release-6-1 は既にインストールされています。

■ <pre>~</pre>で括った場合
ブログの幅で改行されなくなり、スペースもそのまま表示されるが、二重改行される

[root@linux ~]# rpm -Uvh http://www.fedorafaq.org/yum http://rpm.livna.org/livna-release-6.rpm
http://www.fedorafaq.org/yum を取得中
http://rpm.livna.org/livna-release-6.rpm を取得中
警告: /var/tmp/rpm-xfer.4X6tSX: ヘッダ V3 DSA signature: NOKEY, key ID a109b1ec
準備中...                   ########################################### [100%]
パッケージ livna-release-6-1 は既にインストールされています。

■ 更に<pre><%nobr%>~<%/nobr%></pre>で括った場合
改行もスペースもそのまま表示される

[root@linux ~]# rpm -Uvh http://www.fedorafaq.org/yum http://rpm.livna.org/livna-release-6.rpm
http://www.fedorafaq.org/yum を取得中
http://rpm.livna.org/livna-release-6.rpm を取得中
警告: /var/tmp/rpm-xfer.4X6tSX: ヘッダ V3 DSA signature: NOKEY, key ID a109b1ec
準備中...                   ########################################### [100%]
パッケージ livna-release-6-1 は既にインストールされています。

■ 枠の中に表示して、はみ出た部分はスクロールするようにスタイルシートに以下のように記述

pre
{
width: 550px;
overflow-x: scroll;
font-family: sans-serif;
font-size: small;
border-style:dotted;
border-color:gray;
border-width:thin;
padding: 5px;
margin: 2px;
background-color:#F7F7F7;
}

Fedora 7 にバージョンアップ

自宅サーバーの予備機に Fedora 7 をインストールしました。
暫く様子見て安定してるようならメインサーバーも Fedora 7 にしようと思ってます。
という事で現在は予備サーバー機で運用してます。 記事も Fedora 7 用に書き換えましたが、現段階ではSnortのみがうまくいってません。他は順調にいきました。
ログイン画面とデスクトップ画面です。
20070612-f7~.jpg

ウィルス対策(Clam Antivirus)

■ FC6 / Fedora7
Clam AntivirusはGPLライセンスに従って利用することができるオープンソースのソフトウェアであり、LinuxやBSD、Mac OS Xなど各種UNIX系のシステムで動作するアンチウイルスソフトです。
■Clam AntiVirusのインストール

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

■clamav-updateのインストール

[root@linux ~]# yum -y install clamav-update

■Clam AntiVirusの設定

ウィルス定義ファイル最新化の有効化
[root@linux ~]# sed -i 's/Example/#Example/g' /etc/freshclam.conf
[root@linux ~]# sed -i 's/^FRESHCLAM_DELAY\([^ ]*\)/#FRESHCLAM_DELAY\1/g' /etc/sysconfig/freshclam
ウィルス定義ファイルの最新化
[root@linux ~]# freshclam
ClamAV update process started at Mon Jun 11 00:26:46 2007
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.90.2 Recommended version: 0.90.3
DON'T PANIC! Read http://www.clamav.net/support/faq
main.cvd is up to date (version: 43, sigs: 104500, f-level: 14, builder: sven)
WARNING: Removing corrupted incremental directory daily.inc
WARNING: Removing obsolete daily.cvd
Downloading daily.cvd [100%]
daily.cvd updated (version: 3397, sigs: 19932, f-level: 16, builder: arnaud)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 15, recommended = 16
DON'T PANIC! Read http://www.clamav.net/support/faq
Database updated (124432 signatures) from database.clamav.net (IP: 61.205.61.201)

※ yumで「clamav」をインストールすると今のところversion: 0.90.2がインストールされます。ところが最新版はversion: 0.90.3ですので「freshclam」を実行すると上記のようなメッセージが出力されます。どうしても最新版を使いたいのであればソースから最新版をダウンロードしてインストールすればいいのですが、とりあえずyumでアップデートされるのを待つことにします。
■Clam AntiVirusの確認

ウィルススキャン確認(/etc/passwdをスキャンしてみる)
[root@linux ~]# clamscan --infected --remove --recursive /etc/passwd
LibClamAV Warning: ***********************************************************
LibClamAV Warning: ***  This version of the ClamAV engine is outdated.     ***
LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/support/faq ***
LibClamAV Warning: ***********************************************************
----------- SCAN SUMMARY -----------
Known viruses: 124432
Engine version: 0.90.2
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Time: 59.594 sec (0 m 59 s)

■Clam AntiVirusの定期自動実行設定

毎日自動的にウィルス定義ファイル最新化して、全てのファイルのウィルススキャンを行うスプリクトの作成
[root@linux ~]# vi clamav.sh
#!/bin/bash
PATH=/usr/bin:/bin
CLAMSCANTMP=`mktemp`
freshclam > /dev/null
clamscan --recursive --remove / 2>/dev/null > $CLAMSCANTMP
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP
Clam AntiVirus定期自動実行スクリプトに実行権限付加
[root@linux ~]# chmod 700 clamav.sh
cron編集
[root@linux ~]# crontab -e
00 03 * * * /root/clamav.sh ← 追加(毎日3:00にClam AntiVirusの定期自動実行)
デフォルトでインストールされるウィルス定義ファイル自動最新化スクリプトを削除
[root@linux ~]# rm -f /etc/cron.d/clamav-update

※これで、毎日自動的に定義ファイルの更新とウィルス検知作業を実施できます。 ウィルスを検知した場合のみroot宛にメールが送られてくるようになる。
■Cron Daemonからのエラーメール対策
Cron Daemonから以下のようなエラーメールが届く場合の対処方法

WARNING: update of clamav database is disabled; please see
'/etc/sysconfig/freshclam'
for information how to enable the periodic update resp. how to turn
off this message.

ウィルス定義ファイルの更新が無効になっていると上記のようなエラーメールが届きます。以下のようにコメントアウトすることでチェックを行うようになります。

[root@linux ~]# vi /etc/sysconfig/freshclam
### !!!!! REMOVE ME !!!!!!
### REMOVE ME: By default, the freshclam update is disabled to avoid
### REMOVE ME: network access without prior activation
FRESHCLAM_DELAY=disabled-warn   # REMOVE ME
↓
#FRESHCLAM_DELAY=disabled-warn   # REMOVE ME ← #を追加してコメントアウトする

FTPサーバ(vsFTPD)

■ FC2~FC6 ※ Fedora7以降 FTP 使用停止
FTPとは、ネットワーク経由でファイルを転送するためのプロトコルです。インターネットにあるサーバから、ファイルをダウンロードしたりすることがあると思いますが、その場合はFTPデーモンがサーバー上で起動しています。 FTPを使用する場合はLinuxに登録したユーザーでアクセスするのが基本ですが、ユーザーに関係なく、アクセスする仕組みとしてAnonymous(匿名)FTPサービスというのも存在します。
■FTPサーバのインストール
FTPサーバを構築するには、vsftpd パッケージをインストールします。
PuTTYでSSH方式のリモート接続による操作で今後進めます

Using username "higo".
Authenticating with public key "imported-openssh-key"
Passphrase for key "imported-openssh-key":  ← 一般ユーザーのパスワードを入力
Last login: Thu Sep 21 22:57:31 2006
[higo@linux ~]$ su -  ← スーパーユーザになる
パスワード(P): ← スーパーユーザのパスワードを入力
[root@linux ~]# yum install vsftpd
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                      100% |=========================| 1.1 kB    00:00
extras                    100% |=========================| 1.1 kB    00:00
updates                   100% |=========================| 1.2 kB    00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for vsftpd to pack into transaction set.
vsftpd-2.0.5-8.i386.rpm   100% |=========================|  16 kB    00:00
---> Package vsftpd.i386 0:2.0.5-8 set to be updated
--> Running transaction check
Dependencies Resolved
============================================================
Package                 Arch       Version          Repository        Size
============================================================
Installing:
vsftpd                  i386       2.0.5-8          core              137 k
Transaction Summary
============================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 137 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): vsftpd-2.0.5-8.i38 100% |=========================| 137 kB    00:00
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Importing GPG key 0x4F2A6FD2 "Fedora Project "
Is this ok [y/N]: y
Importing GPG key 0xDB42A60E "Red Hat, Inc "
Is this ok [y/N]: y
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: vsftpd                       ######################### [1/1]
Installed: vsftpd.i386 0:2.0.5-8
Complete!
FTPサーバを起動させます
[root@linux ~]# /etc/rc.d/init.d/vsftpd start
vsftpd 用の vsftpd を起動中:                               [  OK  ]

■FTPサーバの設定ファイル変更

vsftpd.conf ファイルを編集
[root@linux ~]# vi /etc/vsftpd/vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
匿名ユーザ(anonymous)はログイン禁止(YES→NO)
anonymous_enable=NO
ユーザが打ち込んだ詳細なログを残す
xferlog_std_format=NO  (YES→NO)
log_ftp_protocol=YES   (次の行へ追加)
アイドル時のタイムアウトを設定(#を削除)
idle_session_timeout=600
接続時のタイムアウトを設定(#を削除、120→60)
data_connection_timeout=60
アスキーモードでのアップロードを許可する(#を削除)
ascii_upload_enable=YES
アスキーモードでのダウンロードを許可する(#を削除)
ascii_download_enable=YES
一般ユーザはホームディレクトリーより上へアクセスさせない(#を削除)
chroot_list_enable=YES
ホームディレクトリーより上へアクセスさせないユーザリスト(#を削除)
chroot_list_file=/etc/vsftpd/chroot_list
ディレクトリを削除できるようにする(#を削除)
ls_recurse_enable=YES
パッシブモードを有効にする(最下行へ追加)
pasv_promiscuous=YES
タイムスタンプ時間を日本時間に変更(最下行へ追加)
use_localtime=YES

■FTP接続ユーザ設定

ホームディレクトリーより上へアクセスさせないユーザリスト
[root@linux ~]# vi /etc/vsftpd/chroot_list
ユーザ「fedora」は、自ホームディレクトリーより上にアクセスさせない
fedora
FTP接続させないユーザリスト
[root@linux ~]# vi /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
fedora  ←ユーザ「fedora」をFTP接続させないようにリストに追加

■FTPログインできるクライアントを設定

[root@linux ~]# vi /etc/hosts.allow
#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
プライベートアドレス「192.168.1.」とサーバ自身「127.0.0.1」は許可するので以下を追加します
vsftpd : 192.168.1. 127.0.0.1
/etc/hosts.allow で指定したアドレス以外は全て拒否
[root@linux ~]# vi /etc/hosts.deny
#
# hosts.deny    This file describes the names of the hosts which are
#               *not* allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!
指定したアドレス以外は全て拒否するので以下を追加します
vsftpd : ALL

■FTPサーバの起動

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

■FTPサーバの自動起動設定

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

■FTPサーバの動作確認
クライアント(IP:192.168.1.3)のコマンドプロンプトより行います。

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
ユーザ「fedora」が拒否されるか?の確認
C:\WIMDOWS\system32>ftp
ftp> op
To 192.168.1.2
Connected to 192.168.1.2.
220 (vsFTPd 2.0.1)
User (192.168.1.2:(none)): fedora
ログインが拒否された
530 Permission denied.
Login failed.
FTP接続を終了します
ftp> bye
221 Goodbye.
ユーザ「higo」がログインできるか?の確認
C:\WIMDOWS\system32>ftp
ftp> op
To 192.168.1.2
Connected to 192.168.1.2.
220 (vsFTPd 2.0.1)
User (192.168.1.2:(none)): higo
ログインできた
331 Please specify the password.
Password:
230 Login successful.
ftp>
サーバへファイルをアップロードする
ftp> put c:\test.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 File receive OK.   アップロードできた
ftp: 19 bytes sent in 0.00Seconds 19000.00Kbytes/sec.
サーバよりファイルをダウンロードする
ftp> get test.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test.txt (19 bytes).
226 File send OK.   ダウンロードできた
ftp: 19 bytes received in 0.00Seconds 19000.00Kbytes/sec.
FTP接続を終了します
ftp> bye
221 Goodbye.

■接続エラー対策
【現象】
ftpコマンドを使用してサーバーに接続を行うと、以下のようなメッセージが出力され
ます。

[root@linux ~]# ftp ftp.turbolinux.gr.jp
Connected to ftp.turbolinux.gr.jp.
220 ftp.turbolinux.gr.jp FTP server ready.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (ftp.turbolinux.gr.jp:root): 

【原因】
“Kerberos認証”をサポートするkrb5-workstationパッケージをインストールすると、各ユーザの$PATHが変更されます。これにより、ftpコマンド実行時に呼び出されるプログラムが、/usr/bin/ftpから/usr/kerberos/bin/ftpに変更になります。/usr/kerberos/bin/ftpはKerberos認証をサポートするコマンドなので、サーバーがKerberos認証をサポートしていない場合には、このようなメッセージが表示されます。
【対策】
Kerberos認証を使用しない場合には、krb5-workstationパッケージをアンインストールしてください。または、環境変数PATHを変更するかaliasコマンドでftpを定義するなどして、/usr/bin/ftpが実行されるようにしてください。
【実行例】

[root@linux ~]# export PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/usr/X11R6/bin:/usr/lib/qt/bin
または
[root@linux ~]# alias ftp=/usr/bin/ftp

■krb5-workstationパッケージのアンインストール

[root@linux ~]# yum remove krb5-workstation
Loading "fastestmirror" plugin
Loading "installonlyn" plugin
Setting up Remove Process
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package krb5-workstation.i386 0:1.5-7 set to be erased
--> Running transaction check
Dependencies Resolved
============================================================
Package                 Arch       Version          Repository        Size
============================================================
Removing:
krb5-workstation        i386       1.5-7            installed         1.7 M
Transaction Summary
============================================================
Install      0 Package(s)
Update       0 Package(s)
Remove       1 Package(s)
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Removing  : krb5-workstation             ######################### [1/1]
Removed: krb5-workstation.i386 0:1.5-7
Complete!

■外部からの接続
外部からの接続には、ルーターの設定が必要です。
ルーターの設定で20番と21番のポートを開けてください。
ドメイン名での接続は事前にドメイン名の取得を行っている必要があります。
■FTPサーバの停止

[root@linux ~]# /etc/rc.d/init.d/vsftpd stop
vsftpd を停止中:                                           [  OK  ]
起動時にFTPサーバを起動しない
[root@linux ~]# chkconfig vsftpd off
[root@linux ~]# chkconfig --list vsftpd
vsftpd          0:off  1:off  2:off  3:off  4:off  5:off  6:off
[root@linux ~]#

※vsftpd を停止したらルーターの設定で20番と21番のポートを閉じてください。
■その他のサービス状態の表示

[root@linux ~]# service --status-all
jserverは停止しています
httは停止しています
・
・
・
ypbindは停止しています
[root@linux ~]#

Fedora 7 のインストール

■Fedora 7 の取得
「FedoraCore」の名称が「Fedora」になり Fedora 7 となりました。今回から、ディスクイメージは DVD版のみとなってます。Fedora Projectから(F-7-i386-DVD.iso)をダウンロードします。ダウンロードしたファイルは、ISOイメージファイルですので、別途DVD-Writerソフト等でDVD-Rに焼いて準備します。CPUの種類によってダウンロードする物が違ってきますから環境に合わせてください。
i386
x86_64
PPC
■Fedora 7 のインストール
グラフィカルモード(GUI)でインストール作業を進めますが、サーバー用途で linux を使用する際には、X Window Systemを利用することをあまり推薦していません。なぜならGUIが余計なリソースを使用するからです。もし常にX Window Systemを利用する必要が無いのであれば、後で /etc/inittab を編集し、 “id:5:initdefault:” を “id:3:initdefault:” に変更します。そうする事で次回起動時よりランレベル3(CUI)で起動します。また、ランレベル3でX Window Systemを起動したい場合には、 startx コマンドを実行します。
1.インストーラーの起動
Fedora 7 のインストールDVDをDVD-ドライブに挿入し、電源を入れます。
※BIOSの設定で1番最初にDVDからブートできるようになっている必要があります。
* Install or upgrade an existing system を選択してエンターをキーを押します。
2.CDメディアのテスト
* Skip にあわせて Enter を押します。
3.Welcomeメッセージ
* Next を押します。
4.インストール時の言語の選択
* Japanese(日本語) を選び、 Next を押します。
* ここでの言語の選択は、あくまでインストール作業を進めていくときに使用する言語の選択です。 実際にシステムを使用するときの言語選択に関しては、後で設定を行います。
5.キーボード設定
* 日本語 になっていることを確認して、 を押します。
* キーボードに「半角/全角」キーが無い場合は、「U.S.English」を選択します。
6.ディスクパーティションの作成
* 選択したドライブ上のすべてのパーテーションを削除してデフォルトのレイアウトを作成します。を選択
*パーティションを自動設定にして を押します。
* 本当にすべてを削除しますか?と言う警告が出ますが はい を押します。
7.ネットワークの設定
* 編集ボタン をクリックして、ネットワークデバイスを編集します。
* Enable IPv4 support: チェックを入れる
* Manual configuration: チェックを入れる
* IP Address: 192.168.1.2 / Prefix(Netmask):24
を入力
* Enable IPv6 support: チェックを外す
チェックを外したらOK をクリック
8. ホスト名・その他の設定
* ホスト名を設定は 手動設定 を選択して linux.yokensaka.com と入力
* ゲートウェイ : 192.168.1.1
* 1番目のDNS : 192.168.1.1
1番目のDNSは通常サーバー自身をDNSサーバーとして設定するときにサーバー自身に割り当てた 192.168.1.2 をDNSサーバーアドレスとして設定します。 しかし、ここで 192.168.1.2 に設定するとインターネットに繋がらなくなり、wgetによるダウンロードができなくなる為、この段階では1番目のDNSは 192.168.1.1 とします。
9.タイムゾーンの選択
* アジア/東京 を選択して、 を押します。
10.Rootパスワードを設定
* Root パスワード : xxxxxxxx
* 確認 : xxxxxxxx
スーパーユーザ(Root)のパスワードを入力します。確認の為にもう一回同じパスワードを入力します。
注意 : このパスワードは絶対に忘れない様に! 何もできなくなってしまいます。
11.ソフトウェアセットの選択
* チェックボックスは全て外す
* 「今すぐカスタマイズする」を選択して を押します
12.ソフトウェアセットの選択
* デスクトップ環境  デフォルト
* アプリケーション  デフォルト
* 開発 開発ツール、開発ライブラリ を選択
* サーバ  デフォルト
* ベースシステム  デフォルト 
* 言語  デフォルト
サーバーを構築する際は極力不要なパッケージはインストールせず、すべてのチェックをはずして必要になったときにその都度インストールすべきですが、 ここでは、作業の行いやすさを考え、「開発」以外はデフォルトにして ボタンを押します。
13.インストールの準備完了
* を押してインストールを開始します。
14.パッケージのインストール
* インストール完了したらDVDドライブよりDVD-Rが自動的に排出されます。
15.インストール作業の終了
* 再起動 を押してインストールを終了します。
16.Fedora 7 の起動
* コンピューターの再起動が行われ、しばらくすると Fedora 7 が起動し、初期設定を行う画面が表示されます。
17.インストール後の初期設定
* ようこそ画面では 進む を押します。
18.ライセンスの同意書
* はい、私はライセンス同意書に同意します を選択して、 進む を押します。
19.ファイアーウォールの設定
* 無効 を選択して 進む を押します。
ファイアーウォールは先に有効にしておくと、各サーバの設定が正しいにも関わらず、ファイアウォールによって通信が遮断されてしまうことがありますので、 セキュリティーに関しては後から設定することとします。
20.SELinuxの設定
* 無効 を選択して 進む を押します。
SELinux を有効にすると、LInux の全てのユーザー(rootも含む)にさまざまな制限をかけることができ、 万が一rootが乗っ取られても影響を最小限にすることが出来ます。本来はSELinuxを有効にするべきですが、 トラブル時の対応が複雑になる為、ここでは無効にします。
21.日付と時刻
* 日付と時刻を 正しい設定 に変更して 進む を押します。
22.Hardware Profile
* ハードウェアーの情報を送信しても良い方は「Send Profile」を、送信したくない方は「Do not send profile」を選択して、進む を押します。
  *「Do not send profile」を選択した場合は再メッセージが出てきますので、「No,do not send」ボタンをクリック して、進む を押します。
23.ユーザーの作成
* ここではそのまま 進む ボタンを押します。警告が表示されますので 続ける ボタンを押します。
ユーザーの追加は後でコマンドを使った方法で追加します。
24.サウンドカード
* サウンドカードが認識された場合に表示されます。 終了 を押して再起動します。
25.ログイン
* ログイン画面が表示されたら、rootユーザーでログインしますので root と入力します。
* rootユーザーのパスワード ******** を入力し、 Enter を押します。
パスワードが正しければそのユーザーで作業が出来るように Fedora 7 のデスクトップ画面が表示されます。

プラグイン「NP_ArchiveIndex」をインストール

あにょのブログの記事数が多くなってきたので、カテゴリー別に一覧表示できるようにしました。前は記事の一覧表示させるのに「NP_Title List」を入れてたんですが、「NP_ArchiveIndex」に変更しました。
「NP_ArchiveIndex」はアーカイブ一覧画面に、カテゴリー別に記事一覧を分かりやすく表示する為のプラグインです。
プラグインをインストールしたら、アーカイブ一覧画面にカテゴリー別に記事の一覧を作成するため、スキンにプラグイン変数を記述します。
■スキンへの記述
スキン編集から「月別アーカイブ一覧ページ」の表示させたいところに記述
第1パラメータはインデックス(全カテゴリー表示時)のカテゴリー別記事数、第2パラメータはカテゴリー別表示時の一覧記事数、第3はカテゴリー詳細文の表示、非表示です。

<%archivelist(mtemplate)%>
↓
<%ArchiveIndex(10,50,none)%>

■スタイルシートに追記

/*-------------------------------------------------
NP_ArchiveIndex
-------------------------------------------------*/
.archiveindex table { /*テーブルのスタイル指定*/
width: 70%;
margin: 1em 0 2em;
padding: 0;
border-collapse: collapse;
};
.archiveindex th { /*カテゴリー名*/
margin: 0;
padding: 2px 5px;
text-align: left;
};
.archiveindex tr.more { /*Moreリンク行*/
background: none;
font-size: small;
}
.archiveindex td { /*セル表示のスタイル指定*/
margin: 0;
padding: 2px 5px;
border-top: 1px dotted gray;
text-align: left;
vertical-align: top;
}
.archiveindex td.detail { /*日付表示セル*/
white-space: nowrap;
text-align: right;
}
.archiveindex td span.title{ /*記事タイトル*/
}
.archiveindex td span.title-up { /*更新された記事*/
color: red;
}
.archiveindex td span.catdesc { /*カテゴリー詳細*/
font-size: small;
color: gray;
}
.archiveindex td span.nomore { /*Moreリンク無効*/
color: #ccc;
}

■NP_ArchiveIndex.phpの編集
カテゴリーの名前の前に<00>、<01>等の数字を入力して、順番を自由に設定できるようにしてますので、その数字を表示させないように変更します。

255行目
$icatName = $b->getCategoryName($icat);
↓
$icatName = strip_tags($b->getCategoryName($icat));

NP_ArchiveIndexはカテゴリーの順番をNP_ContentsListを使って並べ替えするような仕様になってますが、当ブログではNP_ContentsListを使ってないのでうまく並べ替えされません。そこで、新着記事順にカテゴリーも並べ替えされるようにsort by categoryの部分をコメントアウトします。

378行目~396行目をコメントアウト
/*	//sort by category
if ($manager->pluginInstalled('NP_ContentsList')) {
$plugin =& $manager->getPlugin('NP_ContentsList');
if ($plugin) {
$query = 'SELECT rid as catid FROM '. sql_table('plug_contentslist_rank') .' WHERE blog=0 AND rank<20 ORDER BY rank ASC'; // you can delete 'AND rank<20'
$cl_res = sql_query($query);
$arr_out2 = $arr_out;
$arr_out = array();
while ($clrank = mysql_fetch_object($cl_res)) {
$icatName = $b->getCategoryName($clrank->catid);
$arr_out[] = $arr_out2[$icatName];
}
$arr_out2 = '';
}
}
else {
ksort($arr_out);
}*/

■オプション設定
カテゴリーの名前をオレンジ色に変更しました。

<table><thead title="%catdesc%"><tr><th><a href="%caturl%">%catname%</a></th><th></th></tr></thead><tbody>
       ↓
<table><thead title="%catdesc%"><tr><th><a href="%caturl%"><span style="color: #FF6600;">%catname%</span></a></th><th></th></tr></thead><tbody>