たこさんのメモ書き

Linuxの設定/構築のメモを残すのが主体です。
わからないこと、あれこれたくさん。

スパムメール対策:S25R

2010-01-12 22:26:48 | サーバー管理
スパムメールを効果的に排除するための方法は何種類かあるようだが、S25Rという方式がある。
これは、スパムメール業者が短時間に大量のメールをばらまこうとすることを逆手にとったもの、ということだ。
ただし、正当なメールをスパムと誤検知して排除してしまうことがあり、その対応として「ホワイトリスト」を準備し、日々メンテする必要がある。
誤検知された正しいメールは、数日程度は再送されるようになっているので、その間にホワイトリストへそのアドレスを登録するのだ。。
参考は、http://gabacho.reto.jp/anti-spam/paper.html#appendix-a

ホワイトリストの例は、上記のサイトhttp://gabacho.reto.jp/anti-spam からダウンロードできるようになっている。
postfixの場合は、ホワイトリストを/etc/postfix/配下に置く。
/etc/postfix/white-list のように。
このホワイトリストには、あらかじめ雛形が用意されているので、それに応じて正当なメールアドレスを追加していく。
追加した後で、ホワイトリストをpostfixが処理できるよう、「db化」してやる。
以下はその例。
$ sudo /usr/sbin/postmap /etc/postfix/white-list



テキストの操作 並べ替えと抽出

2009-08-07 09:37:22 | サーバー管理
メーリングリストに登録したアドレスを編集する必要に迫られて、あれこれ調べてみた。
テキストから文字を抽出するのは、grep コマンドを使う。
並べ替えをするには sort コマンド。

メーリングリストのアドレスは、/var/spool/ml/erenaML/activesに格納されていて、
登録が解除されたアドレスには ##bye# という接頭語がつく。
現在、登録済みのアドレスには、接頭語は何もつかない。

このアドレスリストをそのままコピーしたら、解除されたアドレスと登録済みのアドレスが混在していて、とても見にくい。
そこで、これらを分けて整理したい。。

##bye#という文字がついていない行を抽出するには?
$ grep -v '#' /var/spool/ml/erenaML/actives > address
-v オプションで、'文字'のついていない行を抽出し、ファイルaddressに書き込む。

(manページより・・・)
-v, --invert-match
結果を反転し、マッチしなかった行を選択します。

抽出したアドレスを、英数字の小さい順番で並べ替えるには?
$ sort address
addressファイルの中身を、アスキー文字の順で並べ替える。

以上の処理で、下のようになる。

元のファイル
##bye# bcd12edf.com
##bye# abc23edf.com
##bye# abc123.or.jp
abc234.ne.jp
abc123.or.jp

grepとsortで処理したファイル
abc123.or.jp
abc234.ne.jp

上記の処理を一度にするには?
$ grep -v '#' /var/spool/ml/erenaML/actives > address | sort
上のコマンド2行分を、パイプ(|)でつなぐ。

メールサーバーに悪戦苦闘中

2009-07-07 23:42:14 | サーバー管理
Postfixの設定に大はまり。
SMTP-AUTHを設定しようとして、Postfixのmain.cfや/usr/lib/sasl2/smtpd.confなどの設定を見直しているが、メールクライアントがうまく動いてくれない。
なぜだろう・・・

Outbound Port25 blockingのせいだろうか。
サブミッションポートを設定してみることに決定。

追記
結論は、ルーターのファイアウォール設定とNAPT設定をすることが必要だったのだ。
ファイアウォールに穴を開けることと、NAPT設定にルールを追加することで、ルーターからサーバーへパケットが届くようにするべきだった。
わかってみれば、なあんだ、ということでした。。

教訓。
ネットワークの構成や機器の設定をきちんと把握し、整理しておくことがとても重要。

不審なアクセスログ その2

2009-03-12 22:34:17 | サーバー管理
前の記事に書いた、不審なSEARCHコマンドについて、webをさまよって調べると、下記の記事にヒット。
http://memoirs.is.kochi-u.ac.jp/Vol29/MemoirsF29-04.pdf
これによると、W32.HLLW.Gaobot.genなるウィルスが、非常によく似たSEARCHコマンドを投げてくるようだ。
このウィルスが狙っているのは、MS03-007の脆弱性「Windows コンポーネントの未チェックのバッファにより、Web サーバーが侵害される」というもの。
また同時に、MS FrontPageの脆弱性を突くための攻撃、fp30reg.dllも来ているとのこと。

この記事と同じパターンの攻撃のようだ。
やってきていたのは、これの亜種だろうか?
ログをよく見ると、
最初にGETコマンドで接続してURLを確認し、
次にSEARCHコマンドで不正なHTTPリクエストを行い、
最後にFrontPageを攻略するためのdllをPOSTする。
3つがワンセットだ。

MS03-007というのは、2003年にMSからパッチが提供されているものだが、まだ適用されてないPCがたくさんあるということだろうか。

不審なアクセスログ

2009-03-04 22:31:55 | サーバー管理
自宅サーバーは無事に稼働しているのだが、このところ、不審なアクセスログが。
apache2のログを見ると、月数回、多いときは毎日、奇妙なアクセスがあるようだ。

その1。
"SEARCH /\x90\xc9\xc9\xc・・・・\x90\x90"
やたらと長いアクセスログで、およそ意味のある文字ではない。。
何をsearchしてるんだろう?
apacheが、エラーメッセージ"414 Request-URI Too Long" を残して弾いているようだ。

その2。
"POST /_vti_bin/_vti_aut/fp30reg.dll HTTP/1.1"
fp30reg.dllって?自宅サーバーのOSはWindowsではないんだけど・・・
エラーメッセージは400、つまり「不正なリクエスト」らしい。

その3。
"GET HTTP/1.1 HTTP/1.1" 400 303 "-" "Toata dragostea mea pentru diavola"
Toata・・・って、英語かな?
これも「不正なリクエスト」に分類されている。

ログに残ったメッセージをgoogleで検索してみた。
以下のサイトを発見。
http://okasoft.ddo.jp/webmake/bunseki/err_data.html
これによると、その2については、Microsoft FrontPageの脆弱性を突く攻撃らしい・・・
Microsoft FrontPage Server Extensions のバッファ オーバーランにより、コードが実行される (813360) (MS03-051)
このリンクに詳細が掲載されている。以下にもっと詳しい事項が・・・。
CVE-2003-0822 "Frontpage Extensions Remote Command Execution"

その3について。Toata・・・の言葉をそのまま検索してみると、ルーマニア語であるらしい。
google翻訳で調べてみる。
訳:「悪魔のすべての私の愛」だって。なんだこれ。
もう少し調べてみると、どうやら不正アクセスを試しているらしい・・・
検索にひっかかった英語のサイトによると、「脆弱性スキャナのようだ」とのこと。
ログをよく見直すと、いっぱい来ている・・・

セキュリティについて、もう少しよく調べてみなければ。。



apache2の設定ファイル シンタックスエラー

2008-11-10 00:31:19 | サーバー管理
Vine4.2では、apache2の設定ファイルは /etc/apache2/conf/httpd.conf である。
この設定ファイルに様々な設定値を書き込むのだが、まちがった値を書き込むとapache2が動かなくなる。
書き換えた設定ファイルを有効にするために、apache2を再起動する必要があるのだが、再起動しなくなるのだ。
このような間違いを防ぐため、apachctlというコマンドの中にconfigtestというオプションが用意されている。
このオプションは、設定値の間違いについて、"syntax error"というメッセージを発して警告してくれる。

Vine4.2では、whereisコマンドでapachectlの場所を探すと、manページしか見つからない。
しかし、/etc/int.d/apache2コマンドにconfigtestオプションを加えて、同じことをすることができる。

実行結果は下記。
$ sudo /etc/init.d/apache2 configtest
Password:
Syntax OK

apacheのダイジェスト認証を使う

2008-11-03 23:37:14 | サーバー管理
自宅サーバーのVine4.2にwebalizerを入れて、apacheのアクセスログを図示できるようになった。
なったのはいいが、該当するディレクトリ名をブラウザのアドレスバーに入れると、そのまま閲覧できてしまう。アクセスログを一般公開するのはどうかと考えたので、ダイジェスト認証を使うように設定することにした。
ダイジェスト認証の設定は、apahce2のhttpd.confを編集し、さらに認証ファイルを作成することで実現できる。

まず、httpd.confの編集。
$ sudo vi /etc/apache2/conf/httpd.conf
そして、httpd.confの適当な位置(末尾?)に、以下のディレクトリ設定を加える。

\<\Directory "/home/hoge/public_html/webalizer">
AuthType Digest
AuthName himitsu          #これが、realm「レルム」になる
AuthUserFile /etc/apache2/digest_db
AuthGroupeFile /dev/null #グループの設定はしないので、/dev/nullにした
require valid-user
\<\/Diretory> #「/」を忘れないこと。

以上で、apache2を再起動させた。
$ sudo /etc/init.d/apache2 restart

次に、認証ファイルを作る。
そのためには、htdigestコマンドを使う。
しかしVine4.2では、このコマンドは見当たらないのだ・・・・
googleで探すと、Vine4.2の場合、コマンド名がhtdigest2であるらしい。
参考はこちら

コマンドの構文は以下のようになっている。
htdigest2 オプション 認証ファイル レルム ユーザー名
(オプション「-c」で、新たに認証ファイルを作成することになる。)
下記のコマンドを入力。
$ sudo htdigest2 -c /etc/apache2/digest_db himitsu hoge
パスワードを2回入力して、終了。

以上の作業が終わってから、webalizerのディレクトリにアクセスすると、認証画面が出現した。
パスワードを入れると、webalizerのグラフ画面が現れる。
これで、アクセスログを秘密に閲覧することができる。




postfixのエラーメッセージ

2008-07-30 22:06:41 | サーバー管理
先日、fmlの設定をした後、postfixのログに大量のエラーメッセージが出現しているのを発見した。
内容はこんなもの。

warning: database /etc/aliases.db is older than source file /etc/aliases

「/etc/aliases.dbが、ソースファイルである/etc/aliasesより古いよ」
と言っているのだろうか?

googleでエラーメッセージを調べてみると、
# newaliases
で解決する、という記事を発見。例えば下記。
http://www.postfix-jp.info/ML/arc.4/msg00686.html
なるほど、前回に
/etc/aliases
の内容を変更した際に、newaliasesを実行していなかった・・・

早速試してみる。
$ sudo newaliases
$ sudo /etc/init.d/postfix restart

postfixを再起動させてみたが、さてどうなるか。
ログを見ながら考えてみるとする。。。

(追記 2008/8/1)
ログを見てみると、上記のエラーメッセージはもう出ていなかった。
postfixは、メールを配送するために参照するデータのことを「ルックアップテーブル」と呼ぶが、効率的なデータの検索を行うためにこれをデータベース(.db)にする必要がある。
このため、参照先のデータである/etc/aliasesの内容を変更した場合は、newaliasesコマンドを用いてデータベース化をやりなおす作業がいるのだ。。




fmlの設定 覚え書きその2

2008-07-11 01:04:27 | サーバー管理
メーリングリスト管理ソフト、fmlの設定を変えるには、リモートログインした端末の上でコマンドmakefmlを動かすことで行う。
ポイントは、fmlにおいての管理者の権限が必要であること。
サーバーマシンの管理者ではなく、fmlの管理者。
マシンのrootで操作をしようとすると、英文で「rootでMLを作ってはならぬ」との警告が出てくる。
まず、fmlの管理者へスイッチし、makefmlコマンドを使う。

$ su fmlroot
$ /usr/local/fml/makefml コマンド ML名

makefmlコマンドを使わないで設定ファイルを直接書き換える方法も可。しかし、その後でmakefmlを使うと、直接書いた設定ファイルの内容を上書きするらしいので注意。

MLを新たに作る場合

$ /usr/local/fml/makefml newml 新しいML

そしてさらに、新しいMLの出現をメールサーバソフトにお知らせしないといけない。
まずマシンの管理者へスイッチしてから、以下のコマンドを動かす。

$ su
$ cat /var/spool/ml/新しいML/aliases >> /etc/aliases
(##追記##)
##このあと、下記のコマンドを必ず用いること。##
$ sudo newaliases
##または、
$ sudo /usr/sbin/postalias hash:/etc/aliases
##こうしないと、/etc/aliasesがpostfix内部のデータベースに反映されず、/var/log/maillogにエラーメッセージが出力され続けることになる。##

上記は、メールサーバソフト(この例はpostfix)の設定ファイルに対し、新しいMLの設定を追加してやるという作業。
なお、このコマンドはsudoでは動かせなかった。
(##追記##)
##sudoで動かない場合は、/usr/sbin/や/usr/local/sbin、/etc/など、いろいろな実行パスを試してみること。試してみなくても、whichコマンドで出てくるはずなのだが・・・##


fmlは、メールを用いて管理をすることもできる。
しかしこの機能は初期設定では使えるようになっておらず、makefml configコマンドを用いてMLごとに設定する必要がある。
やりかたは以下。

$ su fmlroot
$ /usr/local/makefml config 新しいML

以上で設定画面に入ることができる。
そして、"4 REMOTE ADMINISTRATION"を選ぶ(数字を入力)することで設定できる。
最初の画面で"4"を、次の画面で"1 REMOTE ADMINISTRATION"を選び、
"Do you maintain in remoto?(y/n)"と聞いてくるのに対し"y"を選ぶ。
このうえで設定画面を終了する(ENDを選択)。

上記で、メールでの管理ができるようになったので、次は管理する人のメールアドレスとパスワードを設定してやる必要がある。
まずメールアドレスを設定。

$ /usr/local/makefml addadmin 新しいML 管理者のアドレス

そして、パスワードを設定。

$ /usr/local/makefml passwd 新しいML 管理者のアドレス
パスワードを聞かれるので、2回続けて入力する。

以上で完了。
参考はこちら










LAN構築の練習その2 apache2とsshd

2007-10-20 08:51:41 | サーバー管理
LANの設定を完了したので、サーバー機でサーバーソフトを動かしてみる。
まずapache2。
$ su -
# service apache2 start
これでwebサーバーapache2が起動する。
テストのつもりなので、apache2の設定はまったくしない。
LANでつながっているクライアント機(Windows98/PuppyLinux2.6-1JP)でブラウザを立ち上げ、アドレスバーにIPアドレスを入力してみた(http://192.168.1.1)。
すると、apache2が起動していることを示す画面が出現。

次に、sshサーバーsshdを動かしてみる。
こちらも、設定ファイル /etc/ssh/sshd_config の内容は変えない。
sshサーバーの起動は、
# service sshd start
しかし接続の前に、サーバー機にユーザーを追加する(当然、そのパスワードを設定する)ことが必要。
また、接続後の操作で管理者権限の必要なことをするためには、/etc/sudoersファイルにそのユーザーを加えておく必要がある。

/etc/sudoersファイルを編集するには、コマンドvisudoを使う。
$ su-
# visudo
これでsudoersファイルの閲覧と編集が、viエディタで行える。
このファイルの中の以下の部分の末尾に、ユーザーを追加する。
今回は、rootと同じ権限を与えてみる。
# User privilege specification
root ALL=(ALL) ALL
newuser ALL=(ALL) ALL #新たに追加したユーザー

以上で準備は終了。
クライアント機でそれぞれのOSを起動し、sshクライアントで接続してみる。
sshクライアントは、Windows98にはputtyjpを導入した。PuppyLinuxには別のものが既に入っている。

puttyjpの使いかたは、おおよそ以下のとおり。
puttyjp.exeをダブルクリック。すると、Putty Configrationというダイアログが表れるので、接続に必要な項目を記入。
セッション/sessionの欄にIPアドレス(192.168.1.1)とポート番号(22)を入れる。
次に、Connection-dataの欄に移動し、Auto-Login Usernameの欄へ、サーバー機へ追加したユーザー名を入力。
そして、ダイアログの下のOpenをクリックすると、端末エミュレータのウィンドウが起動する。
このウィンドウでは最初に、接続(ログイン)するユーザーのパスワードを尋ねられるので、サーバー機に追加したユーザーのパスワードを入れる。
これでサーバー機へログインできる。

PuppyLinuxに入っているsshクライアントでも、入力する部分はほぼ同じ。
また、こちらでは端末から(GUIクライアントを使わずに)接続することもできる。
こちらの方が簡単だろうか。
$ ssh newuser@196.168.1.1
これでできるはず。

ログイン後は、端末のウィンドウへLinuxコマンドを入力して操作することになる。
/var/log/secure など、管理者権限がないと閲覧できないファイルを見るときは、sudoコマンドを使う。これを使うためには、サーバー機の上で、あらかじめユーザーを/etc/sudoersへ追加しておく必要があるのだ。。。
$ sudo less /var/log/secure
password:(パスワードを入力、ただし非表示)

・・・やってみると、無事に接続できた。
設定ファイルが初期設定値のままなので、パスワードでのログインが許可されている。なので、交換鍵の設定をしなくてもログインができた。