2006.01.25

apache2.1版以降のhttpd.confと.htaccess・・・(Apache)

以前に.htaccessの仕様がapache2.0と2.1以降で異なるので2.0を使うと書いた。

しかし、将来を考えると何時までも古い版数のapacheを使い続けるのも問題なので、色々調べてみた。apacheのサイトのDocumentを読んだが分かり難いので、ここに自分の言葉で書いておくことにした。

ざっと、見たところ基本的な方針はrootになれる人は全てhttpd.confで設定すべきで、rootになれない人のために最低限許すとの考えで貫かれているようだ。

それで、いままで気安くAllowOverride Allなどと書いてたのが許されなくなったようだ。

1. htaccessを許す場合

もし、CGIの実行とユーザ認証をDocument Root内において.htaccessでの指定を許すなら(このケースが多いと思う) Document Rootのディレクティブで

AllowOverride Options AuthConfig

となる。 記述は実行名でなくカテゴリーなのが要注意で、ExecCGIではなくOptionsとなる。 そしてディれクティブ内の

#    AddHandler cgi-script .cgi

のコメントアウトの#を除いて有効にする。

2. 全てhttpd.confで設定する場合(こちらが正統)

もし、rootで何時も設定するとの方針ならDocument Rootディレクティブで

    Options Indexes FollowSymLinks ExecCGI
    AllowOverride None

そして、認証を行うページ(仮にabcdとする)に対して新しいディレクティブを作り次のように記述する。

<Directory "/web/data/abcd"> ・・・・ /web/dataがDocument Rootのケース
AuthType Basic
AuthUserFile 設定ファイル
AuthName "メンバーのグループ名"  ・・・これは好きな名前でよい
<Limit POST GET>
 require valid-user
</Limit>
</Directory>

となる。


2006.01.19

ウイルスチェックソフト(clamAV)のインストール・・・(mail)

WindowsのクライアントPCにはNorton Anti Virusを入れているが、ウイルスはサーバで阻止した方が好ましい。
特にMLを運用していると、誰かがウイルスに感染すると急速に広がる危険性を帯びており、以前から何とかしたいと考えていた。
しかし、個人のクライアント用は数千円で買えるのにサーバ用は数十万円もするので二の足を踏んでいた。 個人使用は無料のものもあるが、試してみたがどうもしっくりこないので、本格的な導入は見合わせていた。
ところが、最近Clam Antivirus (略称ClamAV)というソフトが見つかり、フリーとは言うもののApple, IBM, SunMicroなどでも採用していて営利目的でも使えるとして評判が良いので入れることとした。
インストール方法の下記に手順を書いておく。
FreeBSDにはportsにclamavがあるので、/usr/ports/security/clamavでインストールする。

# cd /usr/ports/security/clamav
# make WITH_MILTER=yes clean

clean動作が終わったら、次にインストールです。

# make WITH_MILTER=yes install

インストールが終わると、/usr/local/etcにclamd.confというファイルが出来ていて、/usr/local/etc/rc.d
に clamav-clamd.sh, clamav-freshclam.sh, clamav-milter.shの3つのファイルが出来る。
ここで、/etc/mailに移動しsendmail.cfのバックアップを取って、freebsd2.mcに次の赤字部を追加してsendmai.cfを作り直す。

dnl Enable for both IPv4 and IPv6 (optional)
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')
INPUT_MAIL_FILTER(`clmilter', `S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m')dnl
define(`confINPUT_MAIL_FILTERS', `clmilter')dnl
define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')

そして、インストール

# make all install restart

次に/etc/rc.confに次の3行を追加。

clamav_clamd_enable="YES"
clamav_milter_enable="YES"
clamav_freshclam_enable="YES"

ここで、サーバをリブートすれば有効になって立ち上がるはず。
ところが、3つの起動ファイルで # xxxxx.sh startとすると、clamav-clamd.sh以外はalready runnningと出るのにclamav-clamd.shのときは/var/log/clamav/clamd.logがPermissionが許容されていないとして立ち上がらない。

# chown clamav /var/log/clamav/*

として再度起動したら、うまく起動できたようだ。
あとは、動いていることの確認だがWindowsのメーラから自分宛にメールを出して、届いたメールのヘッダをみると、以下の2行が追加されいている。 これでOKだ。
X-Virus-Scanned: ClamAV version 0.87, clamav-milter version 0.87 on uls.fam.cx
X-Virus-Status: Clean


Portsを最新版にする・・・(FreeBSD)

昨日、clamAVのインストールを書いた。
うまく動いているようだが、freshclamコマンドを実行するとお前の使っているバージョンは古いと以下のようなメッセージがでる。

WARNING: Your ClamAV installation is OUTDATED
WARNING: Local version: 0.87 Recommended version: 0.88

それでは、最新版を入れ直そう思い、まずportsを最新版にすることにした。
このためにcvsupを動かす必要があるのでcvsupをportsで入れる。

# cd /usr/ports/net/cvsup-without-gui
# make install clean

だいぶ時間が掛かるが、終了したら、/usr/share/examples/cvsupにあるports-supfileを/etcにコピーする。

# cp /usr/share/examples/cvsup/ports-supfile /etc

このファイルはRead-Onlyになっているので chmod 644 ports-supfileで編集可能としてから、中身を編集する。
編集個所は *default hostの指定のみで、ここに記述したhostと同期を取ることになる。
私は *default host=cvsup.jp.freebsd.org とした。

*default host=cvsup.jp.freebsd.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix

これで、updateする準備が出来たが、要らないports/chineseやports/vietnameseなどもupdateされるので /var/db/supにrefuseというファイルを作り、要らないportsを列記しておく。

# mkdir /var/db/sup
vi /var/db/sup/refuse
ports/arabic
ports/chinese
ports/french
ports/german
ports/hebrew
ports/hungarian
ports/korean
ports/polish
ports/portuguese
ports/russian
ports/ukrainian
ports/vietnamese

あとは、cvsup -g -L2 /etc/ports-supfile で同期が始まる。

# cvsup -g -L2 /etc/ports-supfile

かなり時間が掛かる。 終わったら、clamAVの入れ直しだ。

# cd /usr/ports/security/clamav
# make WITH_MILTER=yes clean
# make WITH_MILTER=yes install

これで、サーバをrebootして最新版を起動する。
freshclamコマンドでもWarningは出なくなった。
なお、例えばclamscan -r /home とすると/home以下のウイルスをチェックしてくれる。
延々とファイルリストの表示が続いたあと結果が以下のように出力される。

# clamscan -r /home
Known viruses: 42492
Engine version: 0.88
Scanned directories: 558
Scanned files: 14193
Infected files: 0
Data scanned: 1092.54 MB
Time: 1108.554 sec (18 m 28 s)

2006.01.16

Firewallの設定・・・(FreeBSD)

韓国からの不正浸入を試みようとするアクセスが異様に多い。 そんなに簡単には破られる事は無いと思うが、無気味であり、もしものことを考えてFirewallでサーバを守ることとにした。
FreeBSD 6.0で運用しているが、設定は簡単で /etc/rc.conf に次の2行を追加する。

firewall_enable="YES"
firewall_type="/etc/ipfw.conf"

しかし、ここでサーバを再起動すると私のようにWindowsからTera Termでアクセスしていると、その後一切アクセスできなくなるので要注意です。
理由は、defaultで
65535 0 0 deny ip from any to any
が設定されているからです。 この意味は全てのipパケットを禁止するとなる。
そこで、/etcに ipfw.confの名前のファイルを作り、最低次の1行を書いておく。
add 65000 allow all from any to any
ipfwのルールは番号の若い順に評価されるので、65535番より若い65000で全てのパケットを通すと指定しておく。 これでサーバをrebootして、

# ipfw -a list  と入力して設定ルールを見ると、
65000 354796 84007947 allow ip from any to any
65535      0        0 deny ip from any to any
となる。

後は、中国・韓国のIPアドレスを拒否するからipアドレス一覧をダウンロードし、Editorで開いて全選択してコピーし/etc/ipfw.conf の 6500 all allow ip from any to anyの行の前に貼り付ける。
これで、再度サーバをrebootすれば公式に韓国に割り当てられたip addressからのパケットは全て拒否できる。

            ・
            ・
            ・
add deny log all from 222.120.0.0/15 to any
add deny log all from 222.122.0.0/16 to any
add deny log all from 222.231.0.0/18 to any
add deny log all from 222.232.0.0/13 to any
add deny log all from 222.251.128.0/17 to any
add 65000 allow all from any to any

それでも、proxy経由でアクセスされたら防げないが、90%程度は阻止できるとのことである。


2006.01.15

sshの設定・・・(FreeBSD)

ほとんど、自宅内からしかアクセスしないからとssh接続の設定を行っていなくて通常のtelnetを使っていたが、使ってみようと設定することにした。
設定と言っても/etc/rc.confにsshd_enable=”YES”が入っていればsshdは既に起動しているので、もっぱらWindowsのクライアント側の作業となる。
最初、使っていたTeraTerm ProにTSSHをダウンロードして入れて設定しようとしたが、この組み合わせではSSH1しか使えず、最近のSSH2は使えないのでもっと新しいTeraTerm Pro UTF-8 対応版をダウンロードして新しく入れた。
ダウンロードするのはteratermj_utf8_425.exeで、ダウンロード後これをクリックするとインストールが始まる。
インストールしたら、起動すると図-1のような画面が現れるので、最初はまず通常のtelnetモードでloginする。
tterm01.jpg
      (図-1 )
loginできたら、設定のSSH KeyGeneratorを選ぶと図-2のような画面が現れるのでKey TypeにRSAを選んでKey Passphraseを入れてGenerateを押してKeyを生成する。
tterm03.jpg
      (図-2)
keyはpublic key(公開鍵)とprivate key(秘密鍵)の2つがそれぞれid_rsa.pubとid_rsaの名前で出来上がるので、この2つを保存しておく。
次に自分のhome directoryに .sshというDirectoryを作りftpでid_rsa.pubを送り込み、authorized_keysとファイル名を変える。
これで準備が出来たので、Tera Termを一度終わらせて再度Tera Termを起動し今度はsshを選んでOKボタンを押す。
(図-3)のような画面になるのでUse RSA/DSA Key to loginを選びPrivate Key fileを押して先に保存したid_rsaを選択してPassphraseにKey生成で用いたのと同じPassphraseを入れOKを押すと、見事にlogin出来る。

これで準備が出来たので、Tera Termを一度終わらせて再度Tera Termを起動し今度はsshを選んでOKボタンを押す。
(図-3)のような画面になるのでUse RSA/DSA Key to loginを選びPrivate Key fileを押して先に保存したid_rsaを選択してPassphraseにKey生成で用いたのと同じPassphraseを入れOKを押すと、見事にlogin出来る。
tterm04.jpg
      (図-3)
ここで、従来使っていたPasswordとPassphraseの違いを述べておくと、passwordは通常10字程度の記号と英数字でスペースは許されないが、Passphraseはもっと長くスペースも許されるので、
I can see beautiful mountainsのような文章とすることが出来る。
そして、文は文法的に誤りがあったり、スペルミスがある方が良いとされる。
しかし、長い文はloginのたびに入れるのが大変なので、自宅内だけなら簡単なpasswordと同じものでも良いと思う。


« Previous | Next »