メニュー
プロフィール
最近の記事
カテゴリ分類
記事一覧
FOR ENGINEERS
注目! テレビや雑誌でも紹介されているペン型ICレコーダー

/etc/httpd/conf/httpd.conf に以下のような記述を追加する。
SetEnvIf Remote_Addr 192.168.1. homelog nolog
CustomLog logs/home_log common env=homelog
この記述により192.168.1.からのアクセスログが記述されなくなります。
SetEnvIf というディレクティブが使える事を、今回知った次第。
また「Remove_Addr」だけでなく 「Request_URI」などについても設定ができるので、必要に応じて設定する。

参考サイト
mod_setenvif - Apache HTTP サーバ
WebalizerによるWebアクセスログ解析


| ネット関連::サーバー | 09:08 AM | comments (x) | trackback (x) |
Linux サーバーで気がついたら、以下のようなログが大量に発生している事に気がついた。
Sep 11 14:51:47 svr smbd[23091]: [2008/09/11 14:51:47, 0] printing/print_cups.c:cups_connect(69)
Sep 11 14:51:47 svr smbd[23091]: Unable to connect to CUPS server localhost:631 - 接続を拒否されました
Sep 11 14:51:47 svr smbd[23091]: [2008/09/11 14:51:47, 0] printing/print_cups.c:cups_connect(69)
Sep 11 14:51:47 svr smbd[23091]: Unable to connect to CUPS server localhost:631 - 接続を拒否されました
原因と対策を調べながら、いろいろと試行錯誤した結果、/etc/samba/smb.conf にて
[global]
...
    printing = bsd
...
とする事でエラーログが発生しなくなった。


| ネット関連::サーバー | 11:55 AM | comments (x) | trackback (x) |
WEBDAVを使う


Linux にてWEBサーバーとして httpd 2.2.3-11 を使っている。
インストール時には、このディストリビューションで配布しているパッケージをそのまま使った。
この Apache にて WEBDAV を経由してファイル共有しようとしている。



アップロードしたファイルのパーミッションの問題


HTTPサーバーの各種設定をし、外部のWindows Xpからこのサーバーにアクセスして、
ファイルのアップロード・ダウンロードはできるのだが、
アップロードしたファイルやディレクトリが
 「所有者 apache で、パーミッションが 0644 (-rw-r--r--)
となってしまう。
  これが実に不便なのです
このファイルやディレクトリをSAMBA経由で(即ち、他のユーザーで)アクセスしようとしても
読み取りしかできないし、消す事もできない。
従って、ファイル・サーバーとしてはまったく機能不全。
なるべく最小限の手間で、アップロードしたファイルやディレクトリのパーミッションが、デフォルトで「0666(-rw-rw-rw)」となるように変更したい。



解決策


解決策として、apacheユーザーの umask を0000に設定する事にした。
※httpd のプロセスが作成する全てのファイルのパーミッションが変更されるが止むを得ない。

● apachectl(スクリプト) に umask の設定を追加する。

※以下 root ユーザーにて
# vi `which apachectl`

--- begin apachectl ---
#!bin/sh
umask 0000
# ↑この行を2行目に追加
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# ....
# ....
....
--- end apachectl


● /etc/rc.d/init.d/httpd(スクリプト)を apachectl を使うよう修正する

# vi /etc/rc.d/init.d/httpd

--- begin /etc/rc.d/init.d/httpd ---
#59行目あたり
start() {
echo -n $"Starting $prog: "
check13 || exit 1
# LANG=$HTTPD_LANG daemon $httpd $OPTIONS
#↑この行をコメントアウト
$apachectl start
#↑この行を追加
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
--- end /etc/rc.d/init.d/httpd ---

これで、apacheを再起動する。
※再起動は apachectl を使って
# apachectl start
または
# /etc/rc.d/init.d/http restart

これで、外部からアップロードしたファイルのパーミッションが
 0666(-rw-rw-rw)
になった。



参考)
[fedoracore3] - 1bitのココロ




| ネット関連::サーバー | 10:22 AM | comments (0) | trackback (3553) |
サーバーを入れ替えたタイミングで、pscan2(スパイウェア:ポートスキャン)を仕込まれた模様。

経緯は、
 8/1 23:00頃には特に問題無かったサーバーが、8/2 8:00 に気がついてみると、非常にレスポンスが悪い。あれ?トラフィック障害かと思ってルーターや経路を調べつつ、サーバーを確認したら、CPU使用率が100%となっているプロセス pscan2 が2つ動作していた。

 ネットで調べてみると、pscan2の被害について記載しているサイトがありました。当サイトでも実情は、ほぼ同様で、pscan2 のプロセスが立ち上がっているが、これをkillしても復活してくる。なるほど、やはり元を断たないと復活するタイプなのですね、ps -H ax で確認し、おおもとからkillして何とか落とす事ができました。

 それから、pscan2 本体を削除しようと思い、
find / -name "pscan2" -print
 として探してみたら、
/var/tmp/.... /... /pscan2
 という手の込んだ見えにくいディレクトリで見つかった。
 これは「.... 」ドット.が4つの後ろにスペースが1文字という名前のディレクトリ
 の下に「... 」ドットが3つの後ろにスペースが1文字という名前のディレクトリ、という事です。

 これらのファイルを急ぎ駆除。

 これまでこのサーバーでは mysql を動かす事が無かったのですが、blogn plus を移植するにあたって、mysql で動作させるようにしようと思い、mysqlサーバーを動作させているのでした。従って mysql ユーザーが作成されているのですが、このユーザーのパスワードが破られた模様。急ぎパスワードを変更する。

 また、その他にも、あるはずのないディレクトリ・ファイルを find 検索するなどして、取り敢えず問題を収束させました。

 6年位前にもサーバーに侵入されて踏み台にされた事があります。この事を忘れた頃、久しぶりにセキュリティ意識を刺激された感じです。

参考)
pscan2に犯された・・・
Pscan2.c TCP/UDP/NIS/RPC scanner


| ネット関連::サーバー | 09:08 AM | comments (1) | trackback (686) |
Linux サーバー(CentOS5.1)のシステム・ログ(syslog)を監視する。

syslog はUnix系では古くからあるロギング機能であり、
サーバー自身のログだけでなく、
各種ブロードバンド・ルーターや他のサーバーのログも
簡単に一括管理できるので便利です。

今回このsyslogを、より効率的に管理できるよう、
安全性の高いログ・サーバへの乗り換えのススメ
などを参考に、ログ管理サーバーを構築する事にした。

■要点として
syslog-ng を使う。
  syslogからsyslog-ngに切り替える。
phpLogCon を使う。
  WEBベースでsyslogを閲覧できるようにする。
  ※php-syslog-ngではDBが必要となるので躊躇。
 そのための、前提条件として
●WEBサーバーが動作している。
  ApacheのDocumentRoot はデフォルトのまま(/var/www/html)と想定
●PHPが使える。

※現時点では phpLogConは日本語が文字化けします しょぼん。解決策を探している所です。

■syslog-ng のダウンロード (#1/5)
 syslog-ng の最新バージョンは 2.0.4 (※2008.06.09時点)。
 BalaBit のサイトから RPM パッケージをダウンロードする。
 ※syslog-ng をインストールするに当たって、libolとeventlog が必要になる。
  パッケージがインストールされていなければ、ここで一緒にダウンロードする。
# wget ftp://ftp.pbone.net/mirror/ftp.silfreed.net/repo\
/rhel/5/i386/silfreednet/RPMS/syslog-ng-2.0.4-1.el5.i386.rpm
# wget ftp://ftp.pbone.net/mirror/ftp.silfreed.net/repo\
/rhel/4/i386/silfreednet/RPMS/libol-0.3.16-1.el4.i386.rpm
# wget ftp://ftp.pbone.net/mirror/ftp.silfreed.net/repo\
/rhel/5/i386/silfreednet/RPMS/eventlog-0.2.7-1.el5.i386.rpm

■syslog-ngのインストール (#2/5)
 rpm パッケージをインストールする。
# rpm -ivh syslog-ng-2.0.4-1.el5.i386.rpm\
libol-0.3.16-1.el4.i386.rpm\
eventlog-0.2.7-1.el5.i386.rpm

■syslog-ng 設定ファイルの修正 (#3/5)
 phpLogCon を使って閲覧できるように、設定ファイルを以下のように変更する。
# vi /etc/syslog-ng
=== 以下 /etc/syslog-ng.conf ===
options {
...
perm (0644); # ←①この行を追加する
# この行を設定しないと、/var/log/syslog ファイルのパーミッションが 600となってしまい、
# phpLogCon から読み込みできない。
};
...
### ↓設定の追加 ここから
# 自身のログを一括保存する
# ②source を定義
source s_all {
internal();
unix-stream("/dev/log");
file("/proc/kmsg" log_prefix("kernel: "));
};
# ③filter を定義
filter f_syslog { not facility(auth, authpriv); };
# ④destination を定義
destination df_syslog { file("/var/log/syslog");};
# ⑤log を定義
log {
source(s_all);
filter(f_syslog);
destination(df_syslog);
};
# ルーター(192.168.100.1)のログを保存する
# サーバーのIPを192.168.100.2と仮定する
source router { udp(ip("192.168.100.2") port(514)); };
destination d_routerlog { file("/var/log/router"); };
filter f_routerlog { host(192.168.100.1) and level(info..emerg); };
log { source(router); filter(f_routerlog); destination(d_routerlog); };
### ↑設定の追加 ここまで
=== ここまで /etc/syslog-ng.conf ===

■syslogd の停止、syslog-ngの起動 (#4/5)
# service syslog stop
# service syslog-ng start

■自動起動の設定 (#5/5)
# chkconfig syslog off
# chkconfig syslog-ng on

■phpLogConのダウンロード (#1/5)
phpLogCon :: a syslog data viewer for the webより、
圧縮ファイル「phplogcon-2.3.0.tar.gz」をダウンロードする。
※2008.06.09時点での最新バージョンは2.3.0。

■phpLogConの展開 (#2/5)
以下 root ユーザーにて、
#ls
phplogcon-2.3.0.tar.gz

# tar -xvzf phplogcon-2.3.0.tar.gz
phplogcon-2.3.0 phplogcon-2.3.0.tar.gz

# mv phplogcon-2.3.0 /var/www/html

# cd /var/www/html/phplogcon-2.3.0

# ls
COPYING ChangeLog INSTALL contrib doc src

# cd contrib

# ls
configure.sh secure.sh

# chmod +x configure.sh

# ./configure.sh

# ls
config.php configure.sh secure.sh
※私の環境では、configure.sh を実行すると
-bash: ./configure.sh: /bin/sh^M: bad interpreter: そのようなファイルやディレクトリはありません
というエラーが発生したので、
# touch config.php
# chmod 644 config.php
を手動で実行してから、src ディレクトリにコピーした。
# cp config.php ../src
※DocumentRootを「/var/www/html」としている。

■phpLogCon初期設定 (#3/5)
ブラウザを使って初期設定する。
localhostでサーバーにアクセスする場合、
http://localhost/phplogcon-2.3.0/src/
↓以下のような、設定画面に従って実行する。

今回、初期設定のデフォルト値を変更した箇所は、
●Step 7 - Create the first source for syslog messages
Name of the Source ⇒「分かりやすい名前」に変更した

■phpLogConを使って閲覧 (#4/5)
以下のように、ブラウザでsyslogを閲覧できるようになる。
※↓下図はMacOSにて表示しているサンプル。

■syslog以外のログを閲覧できるようにする (#5/5)
config.php にエントリを追加する。
# vi /var/www/html/phplogcon-2.3.0/src/config.php

### config.php ここから ###
...
/* ルータ用ログ(/var/log/router)のエントリを追加する */
$CFG['Sources']['Source2']['ID'] = 'Source2';
$CFG['Sources']['Source2']['Name'] = 'Router LOG';
$CFG['Sources']['Source2']['SourceType'] = 1;
$CFG['Sources']['Source2']['LogLineType'] = 'syslog';
$CFG['Sources']['Source2']['DiskFile'] = '/var/log/router';
/* 他にも閲覧したいログがあれば、適宜エントリを追加する */
/* 以下、secure ログを閲覧する場合 */
$CFG['Sources']['Source3']['ID'] = 'Source3';
$CFG['Sources']['Source3']['Name'] = 'Security LOG';
$CFG['Sources']['Source3']['SourceType'] = 1;
$CFG['Sources']['Source3']['LogLineType'] = 'syslog';
$CFG['Sources']['Source3']['DiskFile'] = '/var/log/secure';

### config.php ここまで ###

参考)
syslog-ng インストールメモ
parse problm in syslog-ng.conf
syslog-ngの導入


| ネット関連::サーバー | 04:44 PM | comments (x) | trackback (x) |
PAGE TOP ↑