2010/09/23

Debian Lenny のインストーラUSBの作成(最短経路)

調べながら迷走しながらしながらやったので、備忘として記述。

■準備
・Linuxマシン(インターネットにつながる)
・USBメモリ(1G以上くらい?)

■前提
・USBのデバイスは、/dev/sda1
・全てrootユーザで操作
・完成後は「最小ネットワークインストール用ディスクを入れたブート可能USBメモリ」に。
・すべては、2010/09/23 当時のみ有効


■手順
・作成作業(コピペしていけるくらい全自動)
apt-get install dosfstools
mkdosfs -F 32 /dev/sda1
wget http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz
gunzip boot.img.gz
dd if=boot.img of=/dev/sda1
wget http://cdimage.debian.org/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-netinst.iso
mkdir ./usbmem
mount -t vfat /dev/sda1 ./usbmem
cp -ipv debian-506-i386-netinst.iso ./usbmem

・確認
ls -l ./usbmem

-rwxr-xr-x 1 root root       496 2010-06-18 22:26 adgtk.cfg
-rwxr-xr-x 1 root root       367 2010-06-18 22:26 adtxt.cfg
-rwxr-xr-x 1 root root 157630464 2010-09-05 20:24 debian-506-i386-netinst.iso
-rwxr-xr-x 1 root root        68 2010-06-18 22:26 disk.lbl
-rwxr-xr-x 1 root root        56 2010-06-18 22:26 exithelp.cfg
-rwxr-xr-x 1 root root       888 2010-06-18 22:26 f1.txt
-rwxr-xr-x 1 root root       568 2010-06-18 22:26 f10.txt
-rwxr-xr-x 1 root root       665 2010-06-18 22:26 f2.txt
-rwxr-xr-x 1 root root       852 2010-06-18 22:26 f3.txt
-rwxr-xr-x 1 root root       486 2010-06-18 22:26 f4.txt
-rwxr-xr-x 1 root root       806 2010-06-18 22:26 f5.txt
-rwxr-xr-x 1 root root      1220 2010-06-18 22:26 f6.txt
-rwxr-xr-x 1 root root       916 2010-06-18 22:26 f7.txt
-rwxr-xr-x 1 root root      1019 2010-06-18 22:26 f8.txt
-rwxr-xr-x 1 root root       765 2010-06-18 22:26 f9.txt
-rwxr-xr-x 1 root root     56513 2010-06-18 22:26 g2ldr
-rwxr-xr-x 1 root root      8192 2010-06-18 22:26 g2ldr.mbr
-rwxr-xr-x 1 root root       132 2010-06-18 22:26 gtk.cfg
-rwxr-xr-x 1 root root   5184027 2010-06-18 22:26 initrd.gz
-rwxr-xr-x 1 root root  13006064 2010-06-18 22:26 initrdg.gz
-r-xr-xr-x 1 root root     13631 2010-06-18 22:26 ldlinux.sys
-rwxr-xr-x 1 root root   1469616 2010-06-18 22:26 linux
-rwxr-xr-x 1 root root       531 2010-06-18 22:26 menu.cfg
-rwxr-xr-x 1 root root       190 2010-06-18 22:26 prompt.cfg
-rwxr-xr-x 1 root root    292416 2010-06-18 22:26 setup.exe
-rwxr-xr-x 1 root root      6329 2010-06-18 22:26 splash.png
-rwxr-xr-x 1 root root       523 2010-06-18 22:26 stdmenu.cfg
-rwxr-xr-x 1 root root        87 2010-06-18 22:26 syslinux.cfg
-rwxr-xr-x 1 root root       131 2010-06-18 22:26 txt.cfg
-rwxr-xr-x 1 root root    145800 2010-06-18 22:26 vesamenu.c32
-rwxr-xr-x 1 root root       182 2010-06-18 22:26 win32-loader.ini

■所感
Linuxのコマンドラインで作成するのは、やり方を知っているなら簡単かもしれない。
Windows上で「ddと同じ操作」「gzipの操作」は、結構装備を必要とする。

2010/09/05

debianでsamba-vscan/vscan-clamav を使ってのリアルタイムスキャン設定

偉い長い時間ハマった上、希望を満たせなかった…ので記念ハピコ。


少し古い技術だが、「SAMBAでファイルアクセスされた瞬間にウィルススキャンする機構」であるsamba-vscanを導入。ウィルススキャンソフトはフリー定番のclamav。

■前提

・Linux debian 5.0 (lenny) 2.6.26-2-686 ※安定版の現在最新
・samba clamav 導入済 ※apt-get install samba clamav clamav-daemon
・sambaは、他機からファイルを読み書き出来る状態まで持ってってる
・clamav はclamscan clamdscan くらいテストしてOkな状態
・方針は基本「楽をする」パッケージで行けるとこはソレで、無理ならビルドとか自前とか
・作業は、2010/09/05 時点のみ有効

■作業

0.前提

-作業はすべてrootで行っている体で(良い子は真似しちゃだめ
-作業場は /home/tmp とします


1.ビルド済みのsambaソースを用意

./configure , make まで終わったsambaが必要らしいので、パッケージの元となったソースを取得しコンパイル。

apt-get install gcc
apt-get source samba
cd ./samba-3.*/source
./configure
make proto


2.samba-vscan の取得・展開

http://www.openantivirus.org/ のサイトからソースを落とす。

wget http://www.openantivirus.org/download/samba-vscan-0.3.6c-beta5.tar.gz
tar -xvzf samba-vscan-0.3.6c-beta5.tar.gz
mv samba-vscan-0.3.6c-beta5 samba-vscan
※後述のパッチが上記の"samba-vscan"というディレクトリ名を期待しているため、リネーム

3.パッチを当てる

善意の方が作ってくれた野良パッチを当てる。

wget http://www.maxxer.it/wp-content/uploads/2010/04/samba-3.2.5_vscan-0.3.6c-beta5.patch.gz
gunzip samba-3.2.5_vscan-0.3.6c-beta5.patch.gz
patch -p0 < samba-3.2.5_vscan-0.3.6c-beta5.patch

さらに、samba-3.Xに対してインターフェイスが古い(らしい)ので、以下を参考にパッチを作成、当てる。http://www.mail-archive.com/samba@lists.samba.org/msg98075.html

cd samba-vscan
vi ./global_h_extend.patch

      1 ===================================================================
      2 --- include/vscan-global.h.orig 2004-10-05 21:47:54.000000000 +0200
      3 +++ include/vscan-global.h      2008-12-09 15:55:04.000000000 +0100
      4 @@ -69,6 +69,17 @@
      5   #endif
      6  #endif
      7
      8 +/* Patched by T. Wild, 9.12.2008, because pstrcpy removed by samba.org */
      9
     10 +#define PSTRING_LEN 1024
     11 +typedef char pstring[PSTRING_LEN];
     12 +#define pstrcpy(d,s) safe_strcpy((d),(s),sizeof(pstring)-1)
     13 +#define pstrcat(d,s) safe_strcat((d),(s),sizeof(pstring)-1)
     14 +
     15 +/* Furthermore init_module changed to init_samba_module */
     16 +
     17 +#define init_module(void) init_samba_module(void)
     18 +
     19 +/* end of patch by T. Wild */
     20
     21  #endif /* __VSCAN_GLOBAL_H */
     22 ===================================================================

patch -p0 < ./global_h_extend.patch

4.samba-vscan のコンパイル


先程コンパイルしたsambaのソースをやりやすい場所に移動。
(作業ディレクトリに移動した前提)

cp -r ./samba-3.*/source ./samba-vscan/samba-source

configファイルを改造。(オプションで指定しても良いが、全自動で行きたいので)

cd ./samba-vscan
vi ./configure

   3675 SAMBA_SOURCE="./samba-source"
   3676 SAMBA_INSTALLPERMS_BIN="0644"

   4302 SAMBA_VFSLIBDIR="/usr/lib/samba/vfs"

   6907 s,@SAMBA_INSTALLPERMS_BIN@,$SAMBA_INSTALLPERMS_BIN,;t t

※細かいことは、内容読んで「お察し下さい」

./configure

(省略、以下出力)

** Configuration summary for samba-vscan 0.3.6c beta5 :

 Compile samba-vscan for Samba      : "3.2.5"
 Compile samba-vscan with sources in: ../samba-3.2.5/source/
 Compile samba-vscan backends       : oav sophos fprotd fsav trend icap mksd kavp clamav nai antivir
 Use GLOBAL_LIBS                    :
 Use libmksd as                     : builtin
 Use libkavdc as                    : builtin

Now type "make" to build all mentioned backends.
Or "make {}" to build only specific backend(s).
On *BSD systems please use GNU make (gmake) instead of BSD make (make).
と、出る。

make

お、エラーなし?拍子抜けだがうまく行った。(その前に試行錯誤で半日吹っ飛んでるがw)

make install

これで、/usr/lib/samba/vfs/ に vscan-*.so なファイルが10個以上コピーされている…はず。
必要なファイルは vscan-clamav.so だけなので、make install せずにファイルコピーでも良いです。

5.vscan-clamav の設定

リアルタイムスキャンを行うため,設定ファイルを記述。

・samba側

vi /etc/samba/smb.conf
      5 [global]
          ~
     26 vfs objects = vscan-clamav
     27 vscan-clamav: config-file = /etc/samba/vscan-clamav.conf

・vscan-clamav側

vi /etc/samba/vscan-clamav.conf
      1 [samba-vscan]
      2 max file size = 10485760
      3 verbose file logging = yes
      4 scan on open = yes
      5 scan on close = yes
      6 deny access on error = yes
      7 deny access on minor error = yes
      8 send warning message = yes
      9 infected file action = quarantine
     10 quarantine directory  = /var/tmp/clamav/quarantine
     11 quarantine prefix = vir-
     12 max lru files entries = 100 
     13 lru file entry lifetime = 5
     14 exclude file types =
     15 clamd socket name = /var/run/clamav/clamd.ctl


再起動
/etc/init.d/clamav-daemon restart
/etc/init.d/samba restart

これで、完了。eicar.com とかテストファイルを置いてみて、アクセス出来ないならOK。

■既知の問題(っていうか、要望通りで無い点)

 ・「ファイルをコピーしに行った時点」で拒否ってくれない

vscan-clamav.confに「発見したらどうするか」の設定があるくらいなので、「ファイル置く→即時に拒否」してくれるのかと思いきや、「ファイルは置ける」「置いた後アクセス不能」という挙動。
たしかにこれなら「外の人には迷惑かけない」仕組になるが、「ウィルスファイルを溜めるサーバ」になっちゃう気がする…

設定ファイルとログを観察する限りでは、1.ファイルコピー時、2.ファイルオープン時、3.ファイルクローズ時 にスキャンしているようだが、そのうち 1. のタイミングの時だけ「発見しても何もしない」ようだ。

これは、多分「仕様の動きとは違う」と思われるのだが…他環境や旧モジュールの組み合わせで検証するほど時間はないので、知っている方が居たらどうか教えてください。m(_ _)m

・ウィルススキャンに引掛っての「アクセス拒否」かどうかがわからない

これはきっと仕様。ウィルススキャンにより異常がおこってもメッセージボックスからではわからない。
ウィンドウズ上のファイル操作(ウィルスファイルをコピーするとか)なら「指定されたネットワーク名は利用できません」、アプリとかなら「アクセス権がありません」と表示される。
まあ、仕組を考えればそれが限界な気もするが、なんとかできるならなんとかしたい。

 ■所感

以上、問題ありまくりながらも導入完了し、なんとなくええ感じに。
他サイトでよく言われている、「CPU負荷」「遅い」などは、そもそもネットワーク&マシンが遅い我が家では「きにならない」→「問題はない」としとく。気になってきたらもう全面廃止でウィークリー全ファイルチェックとかに切り替えようと思う。