Monthly Archives: 3月 2014

Sambaの汚物(ウイルス)は消毒だ。samba-virusfilter編

Pocket

 

Sambaの汚物(ウイルス)は消毒だ。哀愁のsamba-virusfilter編である。
virusfilterはsambaのvfs。
samba上ファイルを開くときにclamavでスキャンしてくれる。
そういうタイプのvfsはvscan-clamavが有名だが、FreeBSDのportsやpkgには見当たらない。
そこでvirusfilterで試してみた。
試してみた、というのは、ファイルの開け閉めの際にスキャンするのはどうもいただけなく感じるので、本運用には至らなかったから。
なお、clamav、sambaはインストール済みの前提。

samba-virusfilterのインストール

security/samba-virusfilterからインストールできる。
設定ファイルの説明は以下を参照。ただしclamdが動いている前提。
https://github.com/fumiyas/samba-virusfilter/blob/master/etc/smb.svf-clamav.conf.tmpl

設定例

  vfs objects = svf-clamav
  svf-clamav:socket path = /var/run/clamav/clamd.sock # clamavのソケット
  svf-clamav:can on open = yes # ファイルを開くときにスキャンする
  svf-clamav:can on close = no # ファイルを閉じるときにもスキャンする
  svf-clamav:max file size = 100000000 # スキャンするファイルのサイズ上限
  svf-clamav:min file size = 0 # スキャンするファイルのサイズ下限
  ## What to do with an infected file
  ## nothing: Do nothing (default)
  ## quarantine: Try to move to quantine directory
  ## delete: Delete infected file
  svf-clamav:infected file action = nothing
  ## Where to move infected files
  svf-clamav:quarantine directory = @SAMBA_LOCKDIR@/svf/quarantine
  ## Prefix for files in quarantine directory
  svf-clamav:quarantine prefix = svf.

ウイルスを見つけたき「何もしない」を選択した場合、感染ファイルはそのまま共有ディレクトリ上に残るし見える。
しかしユーザは当該ファイルを開くことはできない。
ウイルスを発見したとき、ログとしては/var/log/samba下のログに、以下のように記録される。

[2014/03/22 22:51:19.578805,  0] ../include/svf-vfs.h:668(svf_scan)
  Scan result: Infected: /usr/home/vanilla/share/testvirus.txt: Eicar-Test-Signature

 

Sambaの汚物(ウイルス)は消毒だ。scannedonly編。

Pocket

sambaのvfs, scannedonly

scannedonlyとは、sambaのvfs。
その名前の通り、スキャン済みのもののみ開いたりダウンロードできるようになる。

scannedonlyのインストール

scannedonlyのvfsは、実はSambaに含まれる。
あれ?じゃあすぐ使えるの?と思ったのだが、それは間違いで、実際にスキャンを行うdaemonを別にインストールする必要がある。
その代わりと言っては何だが、clamdを立ち上げる必要はない。
security/scannedonlyからインストールできる。
以下はインストール例。sysctl.confに一行追加しとけよ、と言われるのでその通りにしておく。

$ sudo pkg install scannedonly
Updating repository catalogue
The following 1 packages will be installed:

Installing scannedonly: 0.21

The installation will require 61 KB more space

24 KB to be downloaded

Proceed with installing packages [y/N]: y
scannedonly-0.21.txz 100% 24KB 24.3KB/s 24.3KB/s 00:00
Checking integrity... done
[1/1] Installing scannedonly-0.21... done
**************************************************
* WARNING! *
* *
* Make sure you've enough socket buffer size. *
* Consider increasing kern.ipc.maxsockbuf adding *
* at least the following sysctl setting to *
* /etc/sysctl.conf: *
* *
* kern.ipc.maxsockbuf=589824 *
* *
**************************************************
[vanilla@yaryka ~]$

 

scannedonlyの設定の流れ

scannedonlyの設定には、前章のとおりにsysctl.confを修正することに加え、①vfsとしてのscannedonlyの設定、②daemonとしてのscannedonlyの設定が必要

まず③のdaemonとしての設定から。

scannedonly daemonの設定

/etc/rc.confで行う。
設定例は以下のとおり。

scannedonly_clamav_enable="YES"
scannedonly_clamav_flags=" --scanroot /usr/home/vanilla/share --big 20 -t 8 -m 20"

おなじみの一行目はシステム起動時にdaemonも起動させる指定。
二行目でdaemonに与えるオプションを指定する。
上記の–scanrootは、スキャン対象のファイルが置かれるトップディレクトリを指定する。
daemonは、ここで指定されたディレクトリ外のファイルのウイルススキャンを要求されても無視する。

その他のオプションには;

-p --portnum: ポート番号。ネットワークソケット経由でスキャンするならこちら。
-s path --socket=path : UNIX domainソケット。デフォルトは/var/run/scannedonlyd.sock
-t 4 --maxthreads=4 : ウイルススキャンを行うスレッドの数。デフォルトは4。
-b 10 --big=10 : 「大きいファイルだ」と認識するサイズをメガバイト単位で指定。後ほど触れる。
-q 1000 --queuelen=1000 : スキャン待ちできる数。これを超えて要求されたウイルススキャンは無視される。
-m 20 --time=20 : ここで指定された分ごとにステータスメッセージをログに吐く。

scannedonlyのスレッドと「大きいファイル」について

scannedonlyはデフォルトでスキャン用に4スレッドを用意する。
複数のスキャン要求が来たとき、scannedonlyは「大きいファイル」を特定の1スレッドのみに割り当てる。残りのスレッドは「小さいファイル」をざくざくスキャンする。
こうすることでスキャンの待ち行列をスムーズに解消しようと試みる。
「大きいファイル」は前述の–bigで指定するサイズで決まる。
この値は、共有ファイルにどんなファイルがあるかを前提に変えたらよい。
デフォルトの10MBはちょっと小さいので、20MBにした。

scannedonly vfsの設定

smb.confに書く。
shareごとに設定できる。
以下が設定例。
最後の行だけ特殊。後述。

[share]
(略)
vfs objects = scannedonly # scannedonlyを有効に。
scannedonly:domain_socket = True # domain socketを使うよ
scannedonly:socketname = /var/run/scannedonlyd.sock # domain socketの指定
scannedonly:hide_nonscanned_files = True # 未スキャンファイルを隠し、(下の行に続く)
scannedonly:scanning_message = is being scanned for viruses # スキャン中である旨表示する。
scannedonly:allow_nonscanned_files = True # Officeドキュメントを共有するならTrueに。後述。

 

起動

scannedonly daemonを起動し、そのあとsambaを(再)起動。

$ sudo service scannedonly start
Starting scannedonly_clamav.
$ sudo service samba restart
Performing sanity check on Samba configuration: OK
Stopping smbd.
Stopping nmbd.
Waiting for PIDS: 4847.
Removing stale Samba tdb files: ....... done
Starting nmbd.
Starting smbd.
$

このとき、/var/log/messagesには以下の表示があるはず。

Mar 21 21:13:35 yaryka scannedonlyd_clamav[5741]: Starting with socket /var/run/scannedonlyd.sock and 8 threads
Mar 21 21:13:47 yaryka scannedonlyd_clamav[5741]: Finished building databases. Ready for scanning with 8 threads


実験:未スキャンのファイルはどう表示されるか。

さっそく共有フォルダにファイルを放り込んでみよう。
小さいファイルだと変わらないようにみえるが、ちょっと大きいファイルになると、コピーが終わってからスキャンが終わるまで、以下のような表示になるはず。
beingscanned

なお、hide_nonscanned_filesをFalseにした場合、コピーが終わった瞬間にファイルは表示される。
スキャンが終わってなくても表示される。
されるのだが、開こうとしたりコピーしようとすると、「アクセス権がない」旨のメッセージが表示されて蹴られる。
ユーザからしてみれば、ファイルが見えるのに開けないのはストレスでしかない。
hide_nonscanned_filesはTrueをお勧めする。
しかし。

Officeドキュメントを共有する場合

scannedonlyの仕組みで困るのは、Officeドキュメント。
というのも、Officeはファイルを頻繁に開け閉めするから。
その都度、スキャンが走り、終わるまでファイルを開けなくなる。
要するに、使い物にならん。
そこで下記の行を追加して、未スキャンファイルも開けるようにするほかない。
うーん…。

scannedonly:allow_nonscanned_files = True

まあ、仕方ないよね。

バックヤードでは

さて。scannedonlyのバックヤードはどうなっているのだろうか。
実ディレクトリを見てみると、このようになっている。

$ ls -la
total 84360
drwxrwxrwx  2 vanilla  clamav        512 Mar 21 01:17 .
drwxr-xr-x  3 vanilla  vanilla       512 Mar  3 22:40 ..
-rwxr--r--  1 vanilla  clamav          0 Mar 21 21:17 .scanned:Sophos Virus Removal Tool.exe
-rwxr--r--  1 vanilla  clamav   86325064 Mar 17 23:35 Sophos Virus Removal Tool.exe
$

ディレクトリに置かれたファイルと同じファイル名、ただしファイル名の先頭に「.scanned:」と付いたサイズ0バイトのファイルができる。
このファイルでスキャン済みかどうかを、scannedonlyは判断している。
ちなみに、オリジナルのファイルを消すと.scannedの方も消える。
.scannedだけが残るということはないからご安心めされよ。
もちろん、ファイルを更新した際には再スキャンが行われる。

大きなファイルを共有フォルダにコピーしはじめ、そのあとに小さなファイルを共有フォルダに置くと、小さいファイルはすぐに表示される。
複数スレッドで処理していることと、大きいファイルは1スレッドでしか処理しないことからこのような動作になる。

また、しばらくすると、/var/log/messagesにはログが増えているはず。

Mar 21 21:33:47 yaryka scannedonlyd_clamav[5741]: Status: scanned 3 files and 0 large files in 20 minutes; min 0/max 4 requests on small queue, min 0/max 0 requests on large queue


実験: virusが見つかったらどうなる?

試してみた。
testvirus.txtというファイルを突っ込んでみると、コピーが終わっても共有フォルダには表示がされない。
代わりに、同じファイル名、ただしファイル名先頭に「VIRUS_found_in_」、末尾に「.txt」と付いたサイズ0のファイルが作られ表示される。
virusfoundscann

このとき、実ディレクトリはこのようになっている。
つまりオリジナルのファイルは「.virus:」と頭に付けられて、ユーザからは見えなくなっている。

$ ls -la
total 12
drwxrwxrwx  2 vanilla  clamav   1024 Mar 21 01:44 .
drwxr-xr-x  3 vanilla  vanilla   512 Mar  3 22:40 ..
-rwxr--r--  1 vanilla  clamav     68 Mar 21 21:44 .virus:testvirus.txt
-rwxr--r--  1 vanilla  clamav      0 Mar 21 21:44 VIRUS_found_in_testvirus.txt.txt
$

さらにこのとき、/var/log/messagesには以下のように。
1,2行目がウイルス発見時のもの、3行目はstatus report時のものである。

Mar 21 21:42:51 yaryka scannedonlyd_clamav[5741]: 0:0: WARNING: /usr/home/vanilla/share/testvirus.txt contains virus Eicar-Test-Signature!
Mar 21 21:42:51 yaryka scannedonlyd_clamav[5741]: 0: moving /usr/home/vanilla/share/testvirus.txt to /usr/home/vanilla/share/.virus:testvirus.txt
Mar 21 21:44:59 yaryka scannedonlyd_clamav[6836]: Warning: 1 files failed to scan in 1 minutes (error or virus found)

 

以上

Sambaの汚物(ウイルス)は消毒だ。あるいはsambaのvfsでウイルススキャン

Pocket

Samba上のファイルをウイルススキャンするには。

Samba上のファイルをウイルススキャンするならどんな方法があるだろうか。
一つは、cronで定期的にスキャンする方法である。
もう一つは、Sambaにスキャンを組み込む方法である。

クライアントにアンチウイルスソフトウェアがインストールされており、定義ファイルも更新されているなら、前者のcronがおすすめである。
理由にはあとで触れる。
クライアントを信用できないなら、後者のsamba側スキャンが候補に挙がる。

Sambaのウイルススキャンvfs

Sambaにはvfsスタッカブルモジュールという仕組みがある。
Sambaに追加機能をもたらすものだが、ウイルススキャン機能を追加するvfsもいくつかある。
http://www.samba.gr.jp/project/translation/Samba3-HOWTO/VFS.html

これらのvfsには、大きく分けて以下二つのアプローチがある。

  1. ファイルをオープンするときにスキャン
  2. スキャン済みのファイルのみオープンを許可

1には、vscan-clamavやvirusfilterとがある。
2には、scannedonlyがある。それ以外には知らない。

以下、二つのアプローチの特徴を、たいへん大まかに記す。

アプローチ1: ファイルオープン時スキャン法

Samba上ファイルを開くときに外部のウイルススキャナへファイルを渡し、スキャンするというもの。
まあ普通に考えるとそうなるわな、という方法。
ただ短所はある。
ファイルに変更があろうがなかろうが、開くたびにスキャンする。
ユーザはスキャンが終わるまで待たされる。
仮にファイルがとてつもなく巨大だと、待たされる時間も長くなる(スキャン対象とするファイルサイズ上限は決められる)。
同時接続ユーザが増えても問題になるだろう。

アプローチ2: あらかじめスキャン法

②、すなわちscannedonlyは、ファイルが共有ディレクトリ上に置かれたとき、あるいは更新があったときにスキャンする。
スキャン済みのファイルであれば、ファイルオープン時に再スキャンは行われない。
ファイルオープン時にオーバーヘッドがないこと、ファイルのサイズが大きくてもまったく影響のないこと、ユーザ数の増加による負荷への影響が少ないことは長所である。

もちろん、こちらにも短所がある。
当該ファイルがスキャン済みであることを示す「しるし」が必要である。
scannedonlyは、この「しるし」として、.scannedというサイズ0バイトのファイルを作る。
つまり、共有ディレクトリに置かれるファイルの数が倍になる。
サイズが0バイトであるものの、iノードの残量には懸念の生じることがあるかも。
当然、①にはこの懸念はない。

やっぱりcronで定期スキャンだよね

ご覧のとおり、1,2ともに短所がある。
クライアント側のウイルス対策が保証できるなら、cronで定期的にスキャンしたほうがよいだろう。
しかしクライントが信用ならないのなら、アプローチの1,2いずれかを選んで、Sambaでウイルス対策を講じるべき。
ということで、アプローチ1,2のインストール、設定方法については記事を改めて示す。

[メモ] テスト用のウイルスはEICARで

Pocket

 

アンチウイルスソフトのテストには、実際にウイルスを食わせるのが一番である。ただまあウイルスなんて物騒なものは、そうそう手には入らない。
どうしたもんかと思ってんだが、やっぱりあるとこにはあるんですなあ。

The Anti-Malware Test file
http://www.eicar.org/86-0-Intended-use.html

上記ページの下部にある文字列をテキストファイルに貼り付ければテスト用ウイルスの出来上がり。手軽。
アンチウイルスソフトにはウイルスとして判定されるが実害なし。

Monitorixをカスタマイズしよう

Pocket

ママも安心。軽量手軽な監視ツールMonitorix の続き

素の状態でもだいたいのところを監視してくれるMonitorixであるが、それでも設定変更したほうがいいところ、変更するとよいところがある。
変更例を示す。

monitorixtheme

概要

monitorixの設定ファイルは大きく三つに分かれる。
①全体的な設定をする箇所
②個々の監視内容をOn/Offするスイッチ箇所
③個々の監視内容の設定をする箇所
以下、それぞれについて扱うとともに、ログの設定も行う。

①全体の設定

設定ファイルの冒頭部分。
Monitorixの全体的な設定を行う箇所。

# グラフの置かれるページのタイトル(ブラウザのバーに表示されるもの)
title = copper, poudirere server
# グラフの置かれるページで表示されるタイトル
hostname = copper
# テーマカラー。whiteもあるのだが…。記事末尾で触れる。
theme_color = black
# 更新頻度
refresh_rate = 150
# ネットワーク速度の表示をbpsにするか(デフォルトはBps)
# yでいいのでは
netstats_in_bps = y

そしてログファイルの場所を指定するエリアがある。
log_fileの行のみ性質が異なる、と理解している。
この行に関しては「monitorixのログの吐き出し箇所を指定する」という意味。
残りは、「Monitorixが見に行くログの場所」という意味になる。

# Log files pathnames
# monitorixが確認するログファイル
# ----------------------------
log_file        = /var/log/monitorix
secure_log      = /var/log/auth.log
(略)

以上に続いて、Monitorixで監視する項目の設定を行うエリアがある。

②個々の監視内容をOn/Offするスイッチ箇所

Monitorixでは、出来合いの監視項目をON/OFFする、というスタイルを取る。
だからこそ手軽。
ここにない内容を監視したいなら、他の監視ツールに変えたほうがいいでしょう。

# Graphs (de)activation
# 有効にするグラフを指定する。yで有効、nで無効
# グラフの詳細はman monitorix.confで確認のこと。
#
# 対応する③設定は、systemなら"<system>"というエリアに,
# マニュアルは「sysmte.rrd」というエリアにある。
#
# -----------------------------------
<graph_enable>
        system          = y
        kern            = y
        proc            = y
(略)

では、それぞれの監視項目の設定を。

③個々の監視内容の設定をする箇所

以下、監視項目をいくつかピックアップして触れる。

lmsense
Linuxのlmsensorsが入ってないとダメ。
つまりFreeBSDでは無理。

nvidia
Nvidiaグラフィックカードの温度を測定する。
オフィシャルドライバーが入っていれば大丈夫そうな記載だけどもFreeBSDだとどうやら無理。

disk
ディスクの温度などを測定する。
測定にはsmartmontools, hddtempのいずれかが必要。
FreeBSDの場合はsmartmontools。
sysutils/smartmontoolsからインストールできる。

sudo smartctl –scanで表示されるディスクのうち、監視したいディスクを下記の0 =に続けて並べる。
区切りはカンマ

<disk>
        <list>
                0 = /dev/ada0, /dev/ada1
        </list>
(略)

fs
ファイルシステムの使用容量、I/Oなどを調べる。
カンマで並べる。

<fs>
        <list>
                0 = /, swap, /usr/local
        </list>

net
ネットワークインターフェースの入出力を調べる。
listでインタフェースを指定。
デフォルトだとeth0になってるから、FreeBSDでは変更必須。
記載例。

<net>
	list = bge0
	<desc>
		bge0 = GbE LAN, 0, 100000000
	</desc>
	gateway = bge0
</net>

descには、listで指定した各インタフェースの詳細を記載する。
ここにはグラフの最大値も指定する必要がある。
この時に注意点がひとつ。
単位はbpsではなく、Bpsである、ということ。
ざっくり、100MbpsのNICであれば10000000を。
GbEのNICであれば、100000000を指定する。

どういうことかと言えば、つまり下記の通り。
100Mbps = 最大でも10MBpsは超えない = 10,000,000 と指定。
1000Mbps = 最大でも100MBpsは超えない = 100,000,000と指定。

port
portの監視。
FreeBSDの場合、ipfwを動かしておく必要がある。
Linuxではiptabelsで。
listに監視したいポートを並べる。
descでポートの詳細を指定。
記載例。

<port>
	max = 9
	rule = 24000
	list = 21, 80, 22, 110, 139
	<desc>
		21	= FTP,     tcp, in, 0, 1000
		80	= HTTP,    tcp, in, 0, 1000
		22	= SSH,     tcp, in, 0, 1000
		110	= POP3,    tcp, in, 0, 1000
		139	= NETBIOS, tcp, in, 0, 1000
	</desc>
(略)

descの22ではtcp, inと指定している。
これは「ポート22にtcp接続してくる/ポート22からtcpで出て行く通信を監視する」という意味。
outだと「ポート22へtcp接続し、ポート22からやってくるtcp接続を監視する」という意味。

ruleはipfwを使う時だけ有効。
ipfwのルール2400番を使うよ、と指定している。

ipfwのルールを見てみると(ポート22のところだけ抜粋)。

24000 count tcp from me 22 to any
24000 count tcp from any to me dst-port 22


ログのローテート設定

/var/log/には以下のようにログが吐かれる。
このまま放っておくと、ログは一方的にたまるだけなので、newsyslogに設定しておく。

-rw-r--r--  1 root  wheel  349949  2月 20 17:54 ./monitorix
-rw-r--r--  1 www   www    165818  2月 20 17:17 ./monitorix-httpd

/etc/newsyslog.conf

# for monitorix
/var/log/monitorix                      600  7     100  *     JC
/var/log/monitorix-httpd www:www        600  7     100  *     JC

newsyslogの再起動。

$ sudo service newsyslog restart
Creating and/or trimming log files.

テーマについて

デフォルトのテーマblackは、前世紀のwebみたいで、ちょっといただけない。
かと言って、もう一方の選択肢whiteもあんまりである。
試行錯誤の末、白基調で冒頭の様なテーマにしている。

設定ファイルの下の方にある、whiteのところを書き換えた。
全体設定でthemeをwhiteにしておくこと。
参考までに。

        <white>
                canvas          = FFFFFF
                back            = 101010
                font            = C0C0C0
                #mgrid          = 80C080
                mgrid           = ecf0f1
                #grid           = 808020
                grid            = 808020
                frame           = ecf0f1
                arrow           = FFFFFF
                shadea          = 404040
                shadeb          = 404040
                axis            = 101010
                main_bg         = FEFEFE
                main_fg         = e67e22
                title_bg        = ecF0f1
                title_fg        = 34495e
                graph_bg        = bdc3c7
                gap             = FFFFFF
        </white>

Microsoft Security Essentialsをバッチで使おう

Pocket

Microsoft Security Essentials(以下, MSE)はご存知Microsoftが作った アンチウイルスソフトウェアである。

普通はGUIで使うものだが、実はコマンドラインからも使える。
コマンドラインから使えると、バッチ処理ができる。
あらいいですね。

バッチ処理できると何が便利か。

たとえばフォルダA、B、C配下すべてのファイルをスキャンしたい。
しかも定期的に。
これをGUIでやろうとすると、その都度、いちいちフォルダをマウスやキーボードで選ばないといけない。
ノーグッドである。
ランチャーに登録したバッチファイルを実行するほうがはるかにビウティフルである。
以下に方法を示す。
なおMSEは4.4.304.0、Windows 7での内容である。

コマンドライン版MSEのありか

Microsoftのサイトからインストール済みなら、以下の場所にある。

%ProgramFiles%\Microsoft Security Client\MpCmdRun.exe

フォルダを開きたいならWindowsキー+Rで開いたウインドウに以下を貼り付けて実行せよ。

%ProgramFiles%\Microsoft Security Client\

使うべきMSEのオプション

定義ファイルのアップデート
-SignatureUpdate
スキャン
-Scan -ScanType 3 -File <ファイル、あるいはフォルダのパス>

なおScanTypeには0〜3がある。
一見、選択肢がありそうだが、ファイル/フォルダを指定したい場合には3の一択である。
以下は参考。

-Scan [-ScanType value]
    0  Default, according to your configuration
    1  Quick scan
    2  Full system scan
    3  Single file custom scan

       [-File ]
            Indicates the file path to be scanned, only valid for custom scan

 

バッチファイルの例

下記の通り、-Fileに続けてスキャン対象フォルダを並べるだけ。
フォルダはリモートフォルダでもよい。
となると、使い勝手は格段によくなりますな。

@echo off
setlocal
set path=%programfiles%\Microsoft Security Client\;%path%
@echo on
MpCmdRun.exe -SignatureUpdate
MpCmdRun.exe -Scan -ScanType 3 -File c:¥data
MpCmdRun.exe -Scan -ScanType 3 -File \\192.168.0.5\sharedfolder
pause

またこの例では、結果を目視確認したいので、最後にpauseを入れてスキャン終了後もコマンドプロンプトを開いたままにしている。
それが嫌ならpauseを消して、最初に@echo offをつければよろしい。
でもその場合、結果はどうやったらわかるのか。

結果はどこに出るの?

C:\WINDOWS\Temp\MpCmdRun.log にスキャン結果が記録されるので、ゆっくりご覧になればよい。

以下はログの例
「MpScan() has detected 0 threats.」とのこと。

-------------------------------------------------------------------------------------
MpCmdRun: Command Line: "C:\Program Files\Microsoft Security Client\Antimalware\MpCmdRun.exe" -scan -Scantype 3 -File \\192.168.0.5\sharedfolder
Start Time: ‎日 ‎2 ‎16 ‎2014 17:15:32

Start: MpScan(MP_FEATURE_SUPPORTED, dwOptions=3, path \\192.168.0.5\sharedfolder, DisableRemediation = 0)
INFO: This is a resource scan. skipping signature updateScanning path as folder: \\192.168.0.5\sharedfolder.
MpScan() started
Time Info - ‎日 ‎2 ‎16 ‎2014 19:23:59 MpScan() was completed
Finish: MpScanStart(MP_FEATURE_SUPPORTED, dwOptions=16385)
Finish: MpScan(MP_FEATURE_SUPPORTED, dwOptions=16385, path \\192.168.0.5\sharedfolder, DisableRemediation = 0)
Scanning \\192.168.0.5\sharedfolder found no threats.
MpScan() has detected 0 threats.
MpCmdRun: End Time: ‎日 ‎2 ‎16 ‎2014 19:23:59
-------------------------------------------------------------------------------------

 

応用例

以下のようなバッチファイルを例えばvscan.batという名前で保存する。
保存先はパスの通った場所にする。
こうしておけば、Windows + Rでウインドウを開き、vscan <スキャンしたいフォルダ> と叩けば素早くスキャンできる。
ビウティフル。

@echo off
setlocal
set path=%programfiles%\Microsoft Security Client\;%path%
MpCmdRun.exe -Scan -ScanType 3 -File %1
pause

 

ママも安心。軽量手軽な監視ツールMonitorix

Pocket

 

Monitorixは軽量で手軽に運用できる監視ツールである。
http://www.monitorix.org/


Monitorixの特徴

Perlで書かれており、データ格納、グラフ描画はrrdtoolを使っている。
ここだけ見ると他の量産型監視ツールとそれほど変わらない。

特筆すべきはそのサイズ。
依存ソフトウェアを除いたmonitorix関連ファイルは合計で2MBytesにも満たない。

それなのに、ツール自体にhttpサーバも含まれているのでapacheなどを追加でインストールする必要はない(他のhttpサーバを使ってもよい)。

複数サーバ監視ももちろん可能。
監視対象サーバ、監視サーバの双方にmonitorixをインストールし、設定で監視サーバ、監視「対象」サーバを分けることになる。
つまり、これ一つで完結する。

加えて、監視項目の設定も楽。
インストールしてすぐグラフが表示されるのは驚きである。

以下、インストールした記録を示す。
OSはFreeBSDだが、インストール後の設定はほぼ共通と思う。
monitorixビルトインのhttpサーバを使う。

インストール

pkgngでインストールしています。

$ pkg search -o monitorix
sysutils/monitorix

$ pkg search monitorix
monitorix-3.4.0

$ sudo pkg install monitorix
Updating repository catalogue
The following 8 packages will be installed:

        Installing p5-ParallelUA: 2.57_2
        Installing p5-HTTP-Server-Simple: 0.44
        Installing p5-CGI.pm: 3.63,1
        Installing p5-XML-SAX-Expat: 0.50
        Installing p5-Config-General: 2.52
        Installing rrdtool: 1.4.8
        Installing p5-XML-Simple: 2.20
        Installing monitorix: 3.4.0

The installation will require 5 MB more space

1 MB to be downloaded

Proceed with installing packages [y/N]: y
(略)

ご覧の通り私の環境では一部の依存含めて5MB消費するだけだが、rrdtoolのインストールがあるとドッと依存が増える。

以下のようにインストールされる。

実行ファイル  /usr/local/bin/monitorix
設定ファイル  /usr/local/etc/monitorix.conf
htmlなどは   /usr/local/www/monitorix/
cgiは      /usr/local/www/cgi-bin/monitorix.cgi
起動スクリプト /usr/local/etc/rc.d/monitorix
Perlモジュール /usr/local/share/monitorix/
ドキュメント  /usr/local/share/doc/monitorix/

フルリストは pkg info -l monitorix-3.4.0 のようにすれば見られる。

設定

/usr/local/etc/monitorix.confで行う。
最低限、変えないといけない場所は以下。
base_urlとbase_cgiと、httpdを動かす権限。
以下はFreeBSDの例だが他OSでも変更する「箇所」は同じ。どう変えるかはOS/monitorixがインストールされた内容に応じて考える。

まずbase_urlとbase_cgi

base_dir = /usr/local/www/monitorix/
base_lib = /var/db/monitorix/
# ↓このままだと/usr/local/www/monitorix/monitorixを
# ↓参照してしまう。
# base_url = /monitorix 
base_url = /
# ↓このままだと/usr/local/www/monitorix/monitorix/cgi-binを
# ↓参照してしまう。
# base_cgi = /cgi-bin/
# ↓/usr/local/www/monitorix/cgi/が/usr/local/www/cgi-binに
# ↓リンクされているのでこうする。
base_cgi = /cgi/

次にhttpdの動作ユーザ、グループ。
デフォルトではnobodyに設定されているが、可能なら個別の専用ユーザを設定したほうがよい。
ユーザnobodyは他のサーバソフトウェアでも使われることがある。
このため、何らかの問題でnobodyの権限が奪われた場合、monitorixだけでなく、同じnobody権限で動いているソフトウェアにも影響が及んでしまうからである。

FreeBSDではwebサーバ用のアカウント「www」が用意されているのでこちらを使う。
(もちろん、同じマシンで他のwebサーバを動かしており、かつ権限がwwwの場合には先述の懸念が発生するので注意)
グラフの画像が保存される/usr/local/www/monitorix/imgsのオーナ/グループがwwwになっているしね。

なお、monitorixのhttpdはポート8080を使う。
同ホスト内の他のサーバがポート8080を使っている場合には変えておくこと。

<httpd_builtin>
        enabled = y
        host =
        port = 8080
#     user = nobody
#     group = nobody
      user = www
      group = www
(略)
</httpd_builtin>

参考までにFreeBSDにおけるユーザwwwは以下の通り。

$ finger www
Login: www                              Name: World Wide Web Owner
Directory: /nonexistent                 Shell: /usr/sbin/nologin
No Mail.
No Plan.

テスト起動

FreeBSDでは以下の通りにして起動。

$ sudo service monitorix onestart
:
Starting monitorix.
$

そしたらブラウザでhttp://<monitorixサーバ>:8080/に繋ぐ。
下記のような画面になれば成功。
なんというか・・・20世紀末から21世紀初頭のアングラサイトといいましょうか、「Welcome to Underground」とか書いてありそうなサイトで素敵です。

monitorix01

OKを選んで先に進めばグラフがご覧の通り。
monitorix02

 

続き

Monitorixをカスタマイズしよう

 

FreeBSDでsmartmontoolsのインストール

Pocket

ディスクのS.M.A.R.T.(以降、SMART)から情報を取得したり、ディスクのチェックができる。
FreeBSDではsysutils/smartmontoolsからインストールできる。
smartmontoolsのインストール、実施例はいろんなところに書かれているので、ここではメモ程度にまとめる。

FreeBSD 9.2-RELEASE-p3(i386), smartmontools-6.2_1での内容。

インストール

portsもpkgもsysutils/smartmontoolsからインストールできる。
smartctlとsmartdが/usr/local/sbin/にインストールされる。

smartctlがメインのコマンド。

smartdがデーモンプログラム。
立ち上げておくと、定期的にディスクチェックを行い、結果をdaemonファシリティのログに書き込んでくれる。
必要であれば問題発生時にメールも送ってくれる。
設定ファイルは/usr/local/etc/smartd.conf。

ディスクの確認

何はともあれ、どんなディスクが繋がっているか調べる。
smartctl –scanで得られる。
なお、SMARTにアクセスするには管理者権限が必要。
以下は実行例。
ここではHDDは/dev/ada0である。
環境により/dev/da0の場合もあるでしょう。

$ sudo smartctl --scan
/dev/ada0 -d atacam # /dev/ada0, ATA device
/dev/cd0 -d atacam # /dev/cd0, ATA device

ディスクが分かったら、SMARTに対応しているかどうかを調べる。
smartctlでデバイスファイルを開いてみればよい。

$ sudo smartctl /dev/ada0
smartctl 6.2 2013-07-26 r3841 [FreeBSD 9.2-RELEASE-p3 i386] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

ATA device successfully opened

Use 'smartctl -a' (or '-x') to print SMART (and more) information

大丈夫そう。

SMARTからの情報の取得

smartctl -a <デバイスファイル>で情報を全部、-xでSMART以外の情報も表示。

実行例

$ sudo smartctl -a /dev/ada0
smartctl 6.2 2013-07-26 r3841 [FreeBSD 9.2-RELEASE-p3 i386] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.10
Device Model:     ST380815AS
Serial Number:    5RW18X0V
Firmware Version: 3.ADA
User Capacity:    80,000,000,000 bytes [80.0 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA/ATAPI-7 (minor revision not indicated)
Local Time is:    Thu Feb 27 23:10:37 2014 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.
(略)

ディスクのテスト実行

smartctl -t short <デバイスファイル>で実行する。
-tはテストの種類の指定。
shortと指定しているが、shortとくればlongもある。
それ以外にもある。
詳しくはman smartctl(「–test」で検索するとよい)。
shortだと10分以内、longだと数十分単位でのテスト。
運用中でも可能。

上記のコマンドは、ディスクのSMARTに対して「テストをせい」と指示をするだけ。
コマンド叩いたときには、「何時何分ごろに終わるからね」と言うだけで結果は表示されない。
結果はsmartctl -aで確認する。
smartctl -Xでテストを中止する。

以下実行例。

$ sudo smartctl -t short /dev/ada0
パスワード:
smartctl 6.2 2013-07-26 r3841 [FreeBSD 9.2-RELEASE-p3 i386] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Thu Feb 27 23:35:37 2014

Use smartctl -X to abort test.

$

結果確認

smartctl -aで確認する。
見るのはSelf-test execution status、SMART Self-test logの二つのエリア

以下の通り、「Self-test execution status」「SMART Self-test log」ともにエラーなし(without error)となっている。
なお、テスト実行をしてすぐsmartctl -aとすると、「いまテストしているところだよ」という表示になるので興味があればご覧ください。

(前略)
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
(略)
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     41957         -
# 2  Short offline       Completed without error       00%     41956         -
# 3  Short offline       Completed without error       00%         0         -

常時モニタリングのためのsmartd

cronでsmartctlを実行してもよいけど、smartdを立ち上げおくのがよい。
テストの自動実行や、後述するようなディスクの変化についてもレポートしてくれる。
/usr/local/etc/smartd.confが設定ファイル。
デフォルトでは問題のあったときにしか報告してくれない。
日々のログを吐き出させたいのなら、syslogd, newsyslogの設定変更も必要。

smartd.confの変更

最低限やることは二つ。
①DEVICESCANはコメントアウト
②ディスクとテスト種別、スケジュールを指定。

①DEVICESCANのコメントアウト
デフォルトではDEVICESCANが有効になっている。
DEVICESCANがあると、smartdはそれ以降の設定をすべて無視して、実行される都度、デバイスのスキャンを行う。
それよりも、チェックするデバイスを明示した方がよい。

②ディスクとテスト種別、スケジュールを指定。
書式例は以下の通り。
<ディスク> <各種オプション> -s <スケジュール>
実際の例は以下の通り。

/dev/ada0 -a -o on -S on -s S/../.././02

<ディスク>にはデバイスファイルを指定。
<各種オプション>は以下の通り。
-a: ATAではデフォルト。全部入り。黙ってつけとけ。
-o: ATA専用。SMARTのオフラインテストを有効にするか。ONにしとけ。
-S: autosaveを有効にするか。ONにしとけ。
-s: T/MM/DD/d/HH でスケジュール指定。

T/MM/DD/d/HH
T: テストのタイプ。short(S)かlong(L)か。
MM: 月。01-12で指定。必ず二桁で指定。
DD: 日。01-31で指定。必ず二桁で指定。
d: 曜日。1が月曜、7が日曜。
HH: 時刻。00-23で指定。必ず二桁で指定。

以下だと毎日の午前2時にshortのテストを実施。

-s S/../.././02

 

syslogdの設定

smartdは、デフォルトではdaemonファシリティにログを吐く。
そのままだと使いにくいので、ログの出力先を変える。
たとえばlocal3ファシリティにする。
それには/etc/rc.confで、smartd_flagsとして指定する。

/etc/rc.conf

#SMART monitor tool
smartd_enable="YES" # マシン起動時にsmartdも起動させる設定
smartd_flags=" -l local3 " # ログ出力先の指定

そうしておいて、/etc/syslog.confにて以下を追加。
/etc/syslog.conf

#
# smartd(smartmontools)
#
local3.*                                        /var/log/smartd.log

変更したらsyslogdを再起動。

$ sudo service syslogd restart
Stopping syslogd.
Waiting for PIDS: 26185
Starting syslogd.
$

しかしこのままだとsmartd.logが際限なく大きくなる。
newsyslog.confにも変更を加える。

newsyslog.confの設定

以下を追加。
/etc/newsyslog.conf

#
# smartd(smartmontools)
#
/var/log/smartd.log                     640  10    1024 *     JC

1MBを超えたらログをローテート。bzipで圧縮。10個まで保存。圧縮後のパーミッションは640。

終わったらnewsyslogを一回再起動しておくとよいかな。

$ sudo service newsyslog restart
Creating and/or trimming log files.
$

やっと準備完了。
smartdを起動しよう。

smartdの起動

再掲になるけれども、/etc/rc.confを修正してsmartdを起動する。

/etc/rc.conf

#SMART monitor tool
smartd_enable="YES" # マシン起動時にsmartdも起動させる設定
smartd_flags=" -l local3 " # ログ出力先の指定

smartdを起動する。

$ sudo service smartd start
Starting smartd.
$

先ほど指定したログファイルを見る。

$ cat /var/log/smartd.log
Mar  4 22:17:59 ascomoid newsyslog[38905]: logfile first created
Mar  4 22:26:32 ascomoid smartd[53036]: smartd 6.2 
(略)
Mar  4 22:26:32 ascomoid smartd[53038]: file /var/run/smartd.pid written containing PID 53038

動いていますね。

ただこれだけでは、指定したディスクをチェックしてくれるか、分からない。
smartdはSIGUSR1シグナルを送ってやるとステータスチェックをしてくれるというので試してみよう。
なお、smartdのpidはさっきのログファイルに書いてあるし、あるいはservice smartd statusとやればpidを知ることができる。

$ sudo kill -SIGUSR1 53038
$

そのうえでログファイルを見てみると。
以下のような行が増えているはず。
/dev/ada0のチェックが出来ていますね。

Mar  4 22:35:10 ascomoid smartd[53038]: Signal USR1 - checking devices now rather than in 682 seconds.
Mar  4 22:35:10 ascomoid smartd[53038]: Device: /dev/ada0, SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 52 to 53
Mar  4 22:35:10 ascomoid smartd[53038]: Device: /dev/ada0, SMART Usage Attribute: 194 Temperature_Celsius changed from 48 to 47

daily status

以下のような行を/etc/periodic.confに追加するとレポートをroot宛てに送ってくれる。
複数ディスクの場合は、スペースで区切り。

daily_status_smart_devices=”/dev/ada0″

下記のようなメールが届く。

SMART status:
 Checking health of /dev/ada0: OK
 Checking health of /dev/ada1: OK
 Checking health of /dev/ada2: OK

以上。

[メモ] バリバリ働く…ではなく、賢く働く5つの方法

Pocket

メモでござる。

5 Scientifically Proven Ways to Work Smarter, Not Harder
http://www.inc.com/jeff-haden/5-scientifically-proven-ways-to-work-smarter-not-harder-tues.html

上記記事から。

  1. 休憩をたくさん取れ
  2. 昼寝しろ
  3. 自然に触れろ
  4. 仕事のカタマリごとに場所変えろ
  5. まずメールをチェックしろ

休憩をたくさん取れ

よく言われるとおり、90分ごとに休憩を取れと。
で、この90分は縮日周期(ultradian rhythm)のこと。

昼寝しろ

睡眠は記憶を定着させるとともに、燃え尽き症候群を防ぐのに役立つ。

自然に触れろ

都会は人の注意力を耐えず刺激するから。

仕事のカタマリごとに場所変えろ。

あらかじめ消化すると決めておいたto-doを片付けたら、場所を変えるようにする。
区切りがいいし、次のto-doのカタマリをどう片付けようか、移動中に整理できるから。

まずメールをチェックしろ

やるべき事をまず一覧する、ってことですな。

No tags for this post.

[メモ] MS製Office 2007以降ドキュメントビューア

Pocket

備忘のためOffice 2007以降のドキュメントを開くMS製Viewerをまとめておく。

Excel Viewer
http://www.microsoft.com/ja-jp/download/details.aspx?id=10
http://download.microsoft.com/download/4/6/C/46C73A03-F72F-419F-A76E-6C0D9F583E2E/ExcelViewer.exe

Word Viewer
http://www.microsoft.com/ja-jp/download/details.aspx?id=4
http://download.microsoft.com/download/1/0/1/1016da1b-6a19-432a-ad6b-0b3f6e60bb28/wordview_ja-jp.exe

PowerPoint Viewer
http://www.microsoft.com/ja-jp/download/details.aspx?id=13
http://download.microsoft.com/download/9/2/A/92AEA2B8-CBD9-494D-B60B-F1E6D8EE1771/PowerPointViewer.exe

Word/Excel/PowerPoint 用 Microsoft Office 互換機能パック
http://download.microsoft.com/download/8/B/9/8B97798B-00F8-4523-8CA6-8C0C5867883F/FileFormatConverters.exe