Monthly Archives: 11月 2013

Hadoopのインプット指定にワイルドカードが使える件について

Pocket

 

Hadoopへのインプットはふつう、ディレクトリかファイルの指定で行う。

しかし以下のような場合にどうするか。

  • 複数のディレクトリの下にあるファイルをhadoopに処理させたいとき。
  • 特定拡張子のファイルのみをhadoopに処理させたいとき。

実はワイルドカードが使えるので、それで解決。
以下、hadoop-1.0.0で確認。

ケース1:複数ディレクトリの下に処理対象ファイルがある場合。

 

top-+-dir1-file1
    |     -file2
    |     -file3
    |
    +-dir2-file4
          -file5
          -file6

以上のような状態でhadoopへのinputにtopを指定すると、hadoopはdir1をファイルとして処理しようとし、失敗する。
たとえばこのように。

13/11/13 22:26:03 ERROR security.UserGroupInformation: PriviledgedActionException as:hadoop cause:java.io.IOException: Not a file: hdfs://namenode/user/hadoop/top/dir1
13/11/13 22:26:03 ERROR streaming.StreamJob: Error Launching job : Not a file:
hdfs://namenode/user/hadoop/top/dir1
Streaming Job Failed!

このような場合には、top/*と指定してあげればよい。
たとえばこのように。

$ hadoop jar ${HADOOP_PREFIX}/contrib/streaming/hadoop-streaming-1.0.0.jar \
-D mapred.reduce.tasks=0 \
-input top/*  \
-output sampleoutput \
-mapper /home/hadoop/map.py \
-file /home/hadoop/map.py

 

ケース2:特定のファイルのみ処理したい場合

たとえば以下のdir3で.txtのみを処理したい場合。

-dir3-file1.txt
     -file2.bin
     -file3.txt

-input dir3/*.txtとすればよい。

 

ケース3:ケース1/2の複合ケース

 

top-+-dir4-file1.txt
    |     -file2.bin
    |     -file3.txt
    |
    +-dir5-file4.txt
          -file5.bin
          -file6.txt

 

合わせ技でtop/*/*.txtと指定すればよい。

No tags for this post.

[FreeBSD][メモ] svnliteで/usr/portsの管理

Pocket

 

/usr/portsをportsnapではなく、svnliteで管理してみた。
一般ユーザとしては、portsnapの管理が望ましいのだが、svnだとportsの個別更新が出来たりする。
このためだけにsvnlite管理にした。
Handbookどおりにしただけ。

以下のようなマシンで実施。

$ uname -a
FreeBSD vostro 10.0-BETA3 FreeBSD 10.0-BETA3 #0 r257580: Sun Nov  3 19:43:01 UTC 2013     root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
$ which svnlite
/usr/bin/svnlite

 

ミラーサイトを選ぶ

以下のページでミラーサイトを選ぶ。
http://www.freebsd.org/doc/ja/books/handbook/svn-mirrors.html

日本からならsvn0.us-west.FreeBSD.orgでしょうなあ。
このとき、SSLフィンガープリントも見ておくこと。
2013/11/12現在、us-westミラーのフィンガープリントは以下の通り

SHASHA1 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61

 

初回チェックアウト

/usr/portsの中身が何もないことを確認してからsvnlite checkout。
SSLフィンガープリントが表示されて、これでよいか訊かれる。
handbookの値と同じなので大丈夫ですな。

$ sudo svnlite checkout https://svn0.us-west.FreeBSD.org/ports/head /usr/ports
Password:
Error validating server certificate for 'https://svn0.us-west.freebsd.org:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
 - The certificate hostname does not match.
Certificate information:
 - Hostname: svnmir.ysv.FreeBSD.org
 - Valid: from Jul 29 22:01:21 2013 GMT until Dec 13 22:01:21 2040 GMT
 - Issuer: clusteradm, FreeBSD.org, (null), CA, US (clusteradm@FreeBSD.org)
 - Fingerprint: 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
(R)eject, accept (t)emporarily or accept (p)ermanently? p

<snip>

A    /usr/ports/net-p2p/eiskaltdcpp-daemon/Makefile
A    /usr/ports/net-p2p/tribler/pkg-plist
A    /usr/ports/net-p2p/eiskaltdcpp-daemon/files/patch-nasdc__CMakeLists.txt
 U   /usr/ports
Checked out revision 333566.

 

二回目以降のcheckout

svnlite update /usr/portsとすればよい。

$ sudo svnlite update /usr/ports
Updating '/usr/ports':
<snip>
U    /usr/ports/UPDATING
Updated to revision 333571.

リビジョンが上がってますな。

 

portsの個別checkout

portsの個別checkoutができる。
つまり、/usr/ports全部をアップデートするのではなくて、特定のportsだけ更新する。

$ sudo svnlite update /usr/ports/math/sage
Updating '/usr/ports/math/sage':
At revision 333571.

 

以上

 

No tags for this post.

Gnome2インストール FreeBSD 10.0-BETA3

Pocket

 

久しぶりにFreeBSDにGNOME2をインストールしたのでメモ。
前回のまとめはこちら

FreeBSD 10.0-BETA3, pkgngでGnome2まで設定。
入れたマシンはDELL Vostro 1500。GPUはNvdia 8600M GTである。
bash, sudoくらいは入っている。

Xorgのインストール

pkg installにxorgを指定するだけ。

$ sudo pkg install xorg
Updating repository catalogue
The following 182 packages will be installed:
<snip>
Installing xorg: 7.7
The installation will require 156 MB more space
49 MB to be downloaded
Proceed with installing packages [y/N]: y
xwud-1.0.4.txz                      100%   14KB  14.3KB/s  14.3KB/s   00:00
<snip>

 

hald, dbusを、rc.confに設定してから起動。
以下の例で使っているsysrcについてはこちら

$ sudo sysrc hald_enable="YES"
hald_enable:  -> YES
$ sudo sysrc dbus_enable="YES"
dbus_enable:  -> YES

起動

$ sudo service hald start
Starting hald.
$ sudo service dbus start
Starting dbus.

 

Xorgの設定の前に、nvidiaのドライバをインストール

pkg searchでnvidia driverを確認。
319と304がある。

$ pkg search nvidia
nvidia-driver-319.32
nvidia-driver-304-304.88_1
nvidia-settings-310.14
nvidia-texture-tools-2.0.8.1_3
nvidia-xconfig-310.14

ここでドライバのバージョンを確認して319と304のどちらかを選ぶ。
8600M GT,FreeBSD x64だと319。

driverのほかにsetting, xconfigもセットでインストールする。
なお、ドライバはカーネルモジュールとして提供される。
インストール後にロードすることを忘れずに。

$ sudo pkg install nvidia-driver-319.32 nvidia-settings-310.14 nvidia-xconfig-310.14
Updating repository catalogue
The following 21 packages will be installed:

Installing linux_base-f10: 10_7
<snip>
Installing nvidia-settings: 310.14

The installation will require 381 MB more space
62 MB to be downloaded
Proceed with installing packages [y/N]: y
<snip>

 

kldloadでドライバをロード、kldstatで確認。

$ sudo kldload nvidia
$ kldstat
Id Refs Address            Size     Name
1   19 0xffffffff80200000 15ef860  kernel
2    1 0xffffffff817f0000 23ab28   zfs.ko
3    2 0xffffffff81a2b000 6630     opensolaris.ko
4    1 0xffffffff81c12000 860970   nvidia.ko
5    1 0xffffffff82473000 43274    linux.ko

 

もちろん、ドライバがシステムブート時に読み込まれるよう、/boot/loader.confに書き込んでおく。

/boot/loader.conf
nvidia_load="YES"

 

Xorgの設定。

rootでXorg -configure。

# Xorg -configure

 

同じディレクトリにxorg.conf.newというファイルが出来るはず。
デフォルトだとNvidiaのドライバにnvが選ばれてしまうので、nvidiaに書き換える。
以下の部分。

Identifier  "Card0"
Driver      "nv"
BoardName   "G86M [GeForce 8400M GS]"

以下のように。

Identifier  "Card0"
Driver      "nvidia"
BoardName   "8600M GT"

以下のようにしてテスト。

# Xorg -config xorg.conf.new -retro

 

細かい市松模様にXのマウスカーソルが出ていれば成功。

Ctrl+Alt+F1を押し、Ctrl+Cで戻る。
このときコンソールに(EE)が出ていないかチェック。
(EE)が出ているとすると、haldやdbusが立ち上がってないとか、かな。

xorg.conf.newを/usr/local/etc/X11/xorg.confにコピー。

# cp xorg.conf.new /usr/local/etc/X11/xorg.conf

ではGNOME。

GNOME

installでgnome2を指定するだけ。

$ sudo pkg install gnome2
Updating repository catalogue
The following 385 packages will be installed:

Installing xcb-util-renderutil: 0.3.8
<snip>
Installing gnome2: 2.32.1_5

The installation will require 2 GB more space

368 MB to be downloaded

Proceed with installing packages [y/N]: y
<snip>
[384/385] Installing gnome-applets-2.32.1.1_4... done
[385/385] Installing gnome2-2.32.1_5... done

 

フォント、インプットメソッドのインストール

ja-uim-anthy, uim-gnomeを。

$ sudo pkg install ja-uim-anthy uim-gnome

 

フォントは、ja-fontで検索して好きなものを。

$ pkg search ja-font
ja-font-ipa-00303_1
ja-font-ipa-uigothic-00203
ja-font-ipaex-00201_2
ja-font-jisx0213-20040425_3
ja-font-kochi-20030809_2
ja-font-migmix-1.0.20130617
ja-font-migu-1.0.20130617
ja-font-mona-ipa-1.0.8_2
ja-font-motoya-al-0.0.20100921_1
ja-font-mplus-2.2.4.055_2
ja-font-mplus-ipa-1.0.20060520.p1_2
ja-font-sazanami-20040629_2
ja-font-shinonome-0.9.11.p1
ja-font-std-0.0.20130501
ja-font-takao-003.02.01_1
ja-font-ume-0.0.456
ja-font-vlgothic-20130607

以下を選んだ。

$ sudo pkg install ja-font-ipa ja-font-migu ja-font-motoya-al ja-font-
mplus ja-font-vlgothic ja-font-takao

インストールは以上。

GNOME2向けにいくつかファイルを修正

ほとんどは一行追加。

/boot/loader.conf

kern.maxfiles="25000"

/etc/fstab

 proc           /proc       procfs  rw  0   0

 

/etc/sysctl.conf

 vfs.usermount=1

/etc/devfs.conf

 perm    devstat 0444

 

/usr/local/etc/PolicyKit/PolicyKit.confは以下のように修正。

<config version="0.1">
<match action="org.freedesktop.hal.storage.mount-removable">
<return result="yes"/>
</match>
<match action="org.freedesktop.hal.storage.mount-fixed">
<return result="yes"/>
</match>
<match user="root">
<return result="yes"/>
</match>
<define_admin_auth group="wheel"/>
</config>

以上で一通り終わり。

GNOME起動の設定

gnome_enable, gdm_enableを/etc/rc.confに追加

$ sudo sysrc gnome_enable="YES"
gnome_enable:  -> YES
$ sudo sysrc gdm_enable="YES"
gdm_enable:  -> YES

 

gdmが嫌なら、gdm_enableはNOにしておいて、以下を設定。
この場合はログインしてstartxで起動。

$ echo '/usr/local/bin/gnome-session' > ~/.xinitrc

$ echo '#!/bin/sh' > ~/.xsession
$ echo '/usr/local/bin/gnome-session' >> ~/.xsession
$ chmod +x ~/.xsession

 

 

文字コード設定

bashの場合。

$ echo 'LANG="ja_JP.UTF-8"; export LANG' >> ~/.profile

 

以上。
あとは再起動で。

No tags for this post.

[FreeBSD]rc.confの変更を少しだけ助けてくれるsysrc

Pocket

 

たとえばApacheをインストールして、マシン起動時にApacheも起動してくれるよう、rc.confに「apache22_enable=”YES”」とタイプしているとき、たまに情けなくなったりしませんかね。
シンプルなのはいいけど、なんかこう、もうちょっとスマートにできないかとか。
(こわごわ言うけど、Linuxだったらchkconfig httpd onとかで済むよね。)

9.2-RELEASEから入ったsysrcというユーティリティがある。
rc.confの変更を少しだけ助けてくれるものだ。
serviceコマンドと併せて使えば、rc.conf周りの設定は少しだけ楽になる。

以下に使用例を示す。

rc.conf設定の表示

まずはrc.confで設定している変数を、sysrcに続けてタイプしてみる。

$ sysrc hostname
hostname: ascomoid
$ sysrc ifconfig_em0
ifconfig_em0: DHCP

というように、現状の値を教えてくれる。

sysrc -aでrc.confの設定を一覧できる。

$ sysrc -a
dumpdev: NO
hostname: ascomoid
ifconfig_em0: DHCP
keymap: jp.106.kbd
sshd_enable: YES

 

お気づきの通り、sysrc -aで表示されるのは、デフォルト設定から変更したものだけである。
デフォルト設定も含めて全部表示するには-Aを与える。

$ sysrc -A
accept_sourceroute: NO
accounting_enable: NO
allscreens_flags:
allscreens_kbdflags:
(中略)
wpa_supplicant_program: /usr/sbin/wpa_supplicant
zfs_enable: NO
$

 

設定書き換え

sysrcに変数設定を与えると、rc.confを書き換えてくれる。
例えばsysrc sshd_enable=”NO”というようにすると、/etc/rc.confの該当行が書き換わる。

$ sysrc sshd_enable
sshd_enable: YES
$ grep sshd_enable /etc/rc.conf
sshd_enable="YES"
$ sysrc sshd_enable
sshd_enable: YES
$ sudo sysrc sshd_enable="NO"
sshd_enable: YES -> NO
$ grep sshd_enable /etc/rc.conf
sshd_enable="NO"
$ sysrc sshd_enable
sshd_enable: NO
$

/etc/rc.confになく、/etc/defaults/rc.confにあるものでもOK。
zfs_enableを指定すると新しく/etc/rc.confに行が追加される。

$ sysrc zfs_enable
zfs_enable: NO
$ grep zfs_enable /etc/rc.conf
$
$ sudo sysrc zfs_enable="YES"
zfs_enable: NO -> YES
$ sysrc zfs_enable
zfs_enable: YES
$ grep zfs_enable /etc/rc.conf
zfs_enable="YES"

 

設定書き換え(rc.confからの削除)

zfs_enableをNOに戻すが、/etc/rc.confに記載が残ってしまった。

$ sudo sysrc zfs_enable="NO"
zfs_enable: YES -> NO
$ grep zfs_enable /etc/rc.conf
zfs_enable="NO"
$

このままでも、とうぜん害はないが、-xで指定すれば削除できる。

$ sudo sysrc -x zfs_enable
$ grep zfs_enable /etc/rc.conf
$
$ sysrc zfs_enable
zfs_enable: NO

 

設定書き換え(新規ソフトウェア)

では/etc/rc.conf, /etc/defaults/rc.confの双方にない変数は?
これも追加できる。
以下はlighttpdの場合。

$ sysrc lighttpd_enable
sysrc: unknown variable 'lighttpd_enable'
$

$ sudo sysrc lighttpd_enable="YES"
lighttpd_enable:  -> YES
$ sysrc lighttpd_enable
lighttpd_enable: YES

$ grep lighttpd /etc/rc.conf
lighttpd_enable="YES"
$

 

もちろん削除も可能。

$ sudo sysrc -x lighttpd_enable
$
$ grep lighttpd /etc/rc.conf
$
$ sysrc lighttpd_enable
sysrc: unknown variable 'lighttpd_enable'
$

以上

No tags for this post.

セキュリティ監査ツールLynis

Pocket

 

Lynisとは

Linux向けのセキュリティ監査ツール。
http://www.rootkit.nl/projects/lynis.html

Linux向けではあるが、Linux以外でも使える。
FreeBSD, Solarisに加えてなんとOS Xまで。
このツールを実行すると、OSだけでなく、そこにインストールされているソフトウェアのセキュリティチェックもしてくれる。

Lynisのいいところ

Lynisのポイントは、問題のある設定、状態を指摘してくれるところにある。
具体的には、期限切れになっているSSLや、パスワード設定のないユーザアカウントや、不適切なパーミッションとか、そういったものを指摘してくれる。
指摘のしかたも、「Warnings」で危険性を挙げることのほかに、「Suggestions」で推奨対応方法も教えてくれる。

たとえばこれが「インストールされているソフトウェアに脆弱性があるよ」というレベルであれば大したことない。
FreeBSDの場合、portauditとかpkg auditで十分。
しかしLynisは、上述の通りソフトウェアやOSの設定にまで踏み込んでチェックしてくれるんである。

なじみのないソフトウェアをインストールするとき、初めてのOSをセットアップするときはもちろん、普段から使っているOS、ソフトウェアに対しても、「あ、これ危なかったんだ」と気づきを与えてくれる。

これはありがたい。
さっそく試してみる。

インストール

適当にどうぞ。
FreeBSDならportsにもpkgにもあるよ。
Linuxならapt-getでもyumでもどうぞ。

使いかた

まず最初に、lynisの実行にはroot権限が必要。
使い方はlynis –helpでズラズラと出てくる。

# lynis --help

------------------------------------
  Scan options:
    --auditor "<name>"            : Auditor name
    --check-all (-c)              : Check system
    --no-log                      : Don't create a log file
    --profile <profile>           : Scan the system with the given profile file
    --quick (-Q)                  : Quick mode, don't wait for user input
    --tests "<tests>"             : Run only tests defined by <tests>
    --tests-category "<category>" : Run only tests defined by <category>

  Layout options:
    --no-colors                   : Don't use colors in output
    --quiet (-q)                  : No output, except warnings
    --reverse-colors              : Optimize color display for light backgrounds

  Misc options:
    --check-update                : Check for updates
    --view-manpage (--man)        : View man page
    --version (-V)                : Display version number and quit

  See man page and documentation for all available options.

Exiting..

 

フルチェック

-cオプションを与えて実行すればよい、。

# lynis -c

[ Lynis 1.3.0 ]

(略)

[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Clearing log file (/var/log/lynis.log)...                 [ DONE ]

  ---------------------------------------------------
  Program version:           1.3.0
  Operating system:          FreeBSD
  Operating system name:     FreeBSD
  Operating system version:  10.0-BETA1
  Kernel version:            GENERIC
  Hardware platform:         amd64
  Hostname:                  cal01
  Auditor:                   [Unknown]
  Profile:                   /usr/local/etc/lynis/default.prf
  Log file:                  /var/log/lynis.log
  Report file:               /var/log/lynis-report.dat
  Report version:            1.0
  ---------------------------------------------------

[ Press [ENTER] to continue, or [CTRL]+C to stop ]

 

まず基本的な情報が表示される。
チェック対象ホストの情報と、profile、ログとレポートの場所である。
profileとは、いわばチェック方法の設定のようなもの。指定なしだとdefault.prfが選択される。
lynis.logにはlynisの動作ログが、lynis-report.datにはチェック結果が書き込まれる。

ENTERキーで先に進む。

  - Checking profile file (/usr/local/etc/lynis/default.prf)...
  - Program update status...                                  [ UNKNOWN ]

[+] System Tools
------------------------------------
  - Scanning available tools...
  - Checking system binaries...
    - Checking /bin...                                        [ FOUND ]
    - Checking /sbin...                                       [ FOUND ]
    - Checking /usr/bin...                                    [ FOUND ]
    - Checking /usr/sbin...                                   [ FOUND ]
    - Checking /usr/local/bin...                              [ FOUND ]
    - Checking /usr/local/sbin...                             [ FOUND ]
    - Checking /usr/local/libexec...                          [ FOUND ]
    - Checking /usr/libexec...                                [ FOUND ]
    - Checking /usr/sfw/bin...                                [ NOT FOUND ]
    - Checking /usr/sfw/sbin...                               [ NOT FOUND ]
    - Checking /usr/sfw/libexec...                            [ NOT FOUND ]
    - Checking /opt/sfw/bin...                                [ NOT FOUND ]
    - Checking /opt/sfw/sbin...                               [ NOT FOUND ]
    - Checking /opt/sfw/libexec...                            [ NOT FOUND ]
    - Checking /usr/xpg4/bin...                               [ NOT FOUND ]
    - Checking /usr/css/bin...                                [ NOT FOUND ]
    - Checking /usr/ucb...                                    [ NOT FOUND ]

[ Press [ENTER] to continue, or [CTRL]+C to stop ]

とまあこんな感じで、1ステップごとにキー入力を求められる。
ウンザリしてきたなら一度Ctrl+Cで止めて、-Qオプションで実行すればユーザ入力を待たずに一気にやってくれる。

# lynis -Q

[ Lynis 1.3.0 ]

(中略)

[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Clearing log file (/var/log/lynis.log)...                 [ DONE ]
(後略)

 

サマリのみかた

システム強度
実行結果の一番最後の部分は下記のようになる。

================================================================================
  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat
================================================================================
  Hardening index : [28]     [#####               ]
================================================================================

lynisの動作に関わるログが/var/log/lynis.logに、レポート結果が/var/log/lynis-report.datに書き込まれているよ、と。

Hardening indexとは、監査対象ホストのセキュリティ強度を示す。
上記の例だと28。28がどんなもんかは公式のドキュメントを見てもよく分からない。
別マシンでやったら33だった。

Warning/Suggestions

上記のさらに上にはWarningsとSuggestionsが表示される。

  -[ Lynis 1.3.0 Results ]-

  Tests performed: 120
  Warnings:
  ----------------------------
   - [13:33:50] Warning: Multiple users with UID 0 found in passwd file [test:AUTH-9204] [impact:H]
(中略)

  Suggestions:
  ----------------------------
   - [13:33:50] Suggestion: Use vipw to delete the 'toor' user if not used. [test:AUTH-9204]
   - [13:33:50] Suggestion: Default umask in /etc/profile could be more strict like 027 [test:AUTH-9328]

(略)

Warningsから以下の一行を見てみよう。

[13:33:50] Warning: Multiple users with UID 0 found in passwd file [test:AUTH-9204] [impact:H]

「UID 0(要するにスーパーユーザ)権限を持つユーザが複数いる」との指摘である。
FreeBSDをお使いの方ならお分かりだろうが、これは“toor”ユーザのことである。

Lynisの監査項目にはすべてIDが与えられており、[test:AUTH-9204]のAUTH-9204がそれ。
[impact:H]で、impactがHigh、つまり危ないぞと教えてくれている。

Suggestionsでは、同じ[test:AUTH-9204]に対して、”toor”ユーザを使ってないならvipwで消してしまえと提案がある。

Suggestion: Use vipw to delete the 'toor' user if not used. [test:AUTH-9204]

なおSuggestionはWarningと必ずペア、というわけではない。
危険とまでは言わないけれども、やった方がよい対策も提案してくれる。
以下の例だと、/etc/profileのumaskをもっと厳しくしたら?との提案。

Suggestion: Default umask in /etc/profile could be more strict like 027 [test:AUTH-9328]

 

対策と再チェック

lynisの結果を受けて、何らかの対策をしたら再チェックをする。
充分なセキュリティを確保できたと判断できるまで、この繰り返しである。

しかしその都度、あんなに長い結果を見せられるのは苦痛だろう。
そういう場合には、-qオプションを与えればWarningだけを表示してくれる。

# lynis -q
  - Search administrator accounts...                          [ WARNING ]
  - Checking UIDs...                                          [ WARNING ]
  - Checking login shells...                                  [ WARNING ]
  - Checking console TTYs...                                  [ WARNING ]
  - Querying UFS mount points (fstab)...                      [ WARNING ]
  - Checking for a running NTP daemon or client...            [ WARNING ]

このあと、vipwでユーザtoorの行をコメントアウトし、もう一回実行すると、変化が現れる。
administrator accountsとUIDsのWarningが無くなっているのである。

# lynis -q
  - Checking login shells...                                  [ WARNING ]
  - Checking console TTYs...                                  [ WARNING ]
  - Querying UFS mount points (fstab)...                      [ WARNING ]
  - Checking for a running NTP daemon or client...            [ WARNING ]

また、-qにしてもレポートはしっかり記録されるので、grepを使いながら対策をしていけばいい。

まずレポートからWarningを探す。

# grep warn /var/log/lynis-report.dat
warning[]=SHLL-6202|M|Found unprotected console in /etc/ttys|
warning[]=FILE-6329|L|No single UFS mount point found|
suggestion[]=BANN-7122|Add legal banner to /etc/motd, to warn unauthorized users|
warning[]=TIME-3104|M|No running NTP daemon or available client found|

監査項目SHLL-6202に注目し、今度はこのIDでgrep。

# grep SHLL-6202 /var/log/lynis-report.dat
warning[]=SHLL-6202|M|Found unprotected console in /etc/ttys|
suggestion[]=SHLL-6202|Change the console line from 'secure' to 'insecure'.|

言われたとおりに/etc/ttysの設定を変えてまたlynis -qで確認。
というように繰り返す。
なお、以下のようにしてSHLL-6202だけ確認することも出来るが、出力が長いままなのであまり勧めない。

# lynis --tests "SHLL-6202" -Q

指摘されてもどうしようもない項目の対処について

例えば以下のWarning。

warning[]=FILE-6329|L|No single UFS mount point found|

UFSマウントポイントが一つもないとの仰せであるが、監査対象マシンのファイルシステムは、実際のところすべてZFSであってUFSは一つもない。
なので、これは筋違い。

こういう場合は、監査項目を無効にする。
具体的には、監視対象マシン向けに専用のプロファイルを作って対応する。

 

Profileの設定。

FreeBSDだと、profileは以下の場所にある。
/usr/local/etc/lynis
デフォルトの状態では、default.prfというprofileがインストールされるはず。

これをたとえばthisHost.prfとしてコピーし、修正する。

# cd /usr/local/etc/lynis
# cp default.prf thisHost.prf

 

ここに以下の一行を加えればよい。

 config:test_skip_always:FILE-6329:

 

文字通り、監査項目FILE-6329をスキップする、という指定。
もし複数の監査項目をスキップしたい場合には、スペースで区切って書く。

あとはlynis実行時に、作成したprofileを–profileに続けて指定すればよい。

# lynis -q --profile copper.prf
- Checking login shells...                                  [ WARNING ]
- Checking for a running NTP daemon or client...            [ WARNING ]

Querying UFS mount points (fstab)という出力が消えている。

レポートの中身を見ても、以下のようにきれいさっぱり。

# grep FILE-6329 /var/log/lynis-report.dat
#
# grep warn /var/log/lynis-report.dat
suggestion[]=BANN-7122|Add legal banner to /etc/motd, to warn unauthorized users|
warning[]=TIME-3104|M|No running NTP daemon or available client found|

 

cronに設定したいとき。

以上の手順を繰り返し、満足な結果が得られたら、あとはcronにlynisを登録し、定期的にチェックしてもらおう。
cronからlynisを呼ぶときは–cronjobを付けるよろし。

--cronjob
Perform automatic scan with cron safe  options  (no  colors,  no
questions, no breaks).

 

以上

No tags for this post.

MicrosoftもWindiff.exeを作ってた件について

Pocket

 

Windowsでファイルのdiffを取りたければ、けっこうな数の選択肢がある。
実際のところ、私もDF.exeなどを使っている。
ただ改めて調べてみたところ、Windows向けにMicrosoft自らdiffツール作ってたらしい。
その名もWindiff.exe。(Vectorあたりにあるツールと名前かぶってるような)
使ってみたので顛末を示す。

とはいえ。
結論としては、Microsoft製に価値を見出さないならサードパーティのdiffツールの方がいいかな。

Windiff.exeにはxp用と7用がある・・・ようだ。

xp用Windiff.exe

xp用Windiff.exeは、microsoft.comに以下の記載が。

Windiff.exe ユーティリティの使用方法
http://support.microsoft.com/kb/159214/ja

Windiff.exe は、Microsoft Windows 2000 以降のオリジナルの CD-ROM の Support\Tools フォルダーに収められています。サポート ツールをインストールするには、Support\Tools フォルダーの Setup.exe を実行します。Windiff.exe は、Support.cab ファイルにも収められています。Support.cab は、各 Service Pack に含まれています。

ただ、上記のページをWindows 7で開くと、「この技術情報は、お客様がご利用の Windows とは異なるバージョン向けの情報です」とのこと。

Windows 7向けのWindiff.exe

technetで以下を発見。2003用のものを流用すればよさそう。

Windiff for Windows 7
http://social.technet.microsoft.com/Forums/exchange/en-US/0d51abcd-3b76-495b-84a4-45e188f6d9f6/windiff-for-windows-7

Windows 7(32bit)でのインストールのしかた

※おそらくMicrosoftは公式には認めない方法です。
自己責任でどうぞ。

さっそく以下のページからWindowsServer2003-KB892777-SupportTools-x86-ENU.exe をダウンロード。

Windows Server 2003 Service Pack 1 32-bit Support Tools
http://www.microsoft.com/en-us/download/details.aspx?id=7911

コマンドラインから実行する。
オプションを二つ指定する。
/Cで「展開のみインストールせず」、 /Tで展開先をフルパスで指定する。

C:\download>WindowsServer2003-KB892777-SupportTools-x86-ENU.exe /C /T:c:\download\supporttool

以上の例だとc:\download\supporttoolに内容物が展開される。
そのうちのsupport.cabをダブルクリックすると、中にwindiff.exeがあるのでそれを取り出す。
あとはパスの通ったところに置くとか、ランチャーに登録すればよい。

初期設定

そのままだと日本語を表示できないので、Edit → Set Font でフォントを変える。
メイリオとかにしとけ。

使い方

個別ファイルの差分を調べる場合には、File → Compare Files でファイルを二つ選んでOKをクリック。
ディレクトリごと差分を調べる場合には、File → Compare Directoriesで出てきた画面に二つのディレクトリパスを貼りつけてOKをクリックする。

調べたファイルが一覧で表示される。
差分のあるファイルが赤く表示されるので、選択してExpandでファイルの中身を見られる。
Outlineでファイル一覧に戻る。

F7, F8で差分のある個所を順番に選んで行ける。
Pictureは左端に差分箇所を表してくれる。

制限

シフトJISのファイルは読めるけど、UTF-8の日本語は読めないようだ。

感想

使ってみたら分かるけど、ちょっと使いにくいかな…。

No tags for this post.

pkgngが復活したと言ったな。(proxy越しの奴にとって)あれは嘘だ。(SRVレコードの罠)

Pocket

pkgngの公式サイトがやっと復活した。
http://lists.freebsd.org/pipermail/freebsd-current/2013-October/046055.html

したのだが、proxy越しだと動かない事があって、俺含む一部のユーザはとてもガッカリしている。

原因ははっきりしていて、DNS上、SRVレコードを使っているからだ。
SRVレコードにしたのはしかし理由があってのものなので、単にAレコードに追加すればよいという話でもない。
公式MLでもえらく議論が続いているが、SRVレコードを使うというのは変わりそうにないようだ(2013/11/3現在)。

(2013/12/19追記)
pkg-1.2.3で問題が解消された
(2013/12/19追記ここまで)

というわけで、公式に沿ったpkgサイトの設定のしかたと、proxy越し等で公式pkgサイトのアドレス解決が出来ない場合の回避方法を示す。

公式の設定方法

1. Ensure your pkg(8) is up-to-date. 'pkg -v' should say at least
   1.1.4_8. If it does not, first upgrade from ports.
2. Remove any repository-specific configuration from
   /usr/local/etc/pkg.conf, such as PACKAGESITE, MIRROR_TYPE, PUBKEY.
   If this leaves your pkg.conf empty, just remove it.
3. mkdir -p /usr/local/etc/pkg/repos
4. Create the file /usr/local/etc/pkg/repos/FreeBSD.conf with:
FreeBSD: {
  url: "http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  enabled: "yes"
}

 

事前準備

pkg-1.1.4_8にする。
インストール済みの場合、公式などはpkg -vで確認しろというが、pkg -vで表示されるのは以下の通りで1.1.4_8かどうかはわからない。

$ pkg -v
1.1.4

なので、pkg infoで調べよう。

$ pkg info|grep pkg
pkg-1.1.4_8                    New generation package manager

インストールしていなければ以下のように。
※freebsd:10:x86:64はOSに合わせて変更する。

# sh
# PACKAGESITE="http://pkg1.nyi.freebsd.org/freebsd:10:x86:64/latest/Latest/" pkg install pkg
# pkg info|grep pkg

何らかの理由でpkgが死んでてpkgそのものが使えない場合。
pkg.txzをダウンロードして、手動で展開する。
ルート(/)にゴミが残るから後で掃除しとけ。

# fetch http://pkg1.nyi.freebsd.org/freebsd%3A10%3Ax86%3A64/latest/Latest/pkg.txz
# tar -C / -xvzf ./pkg.txz
# pkg info | grep pkg
# ls /
+COMPACT_MANIFEST       etc                     root
+MANIFEST               home                    sbin
+MTREE_DIRS             lib                     sys

 

設定ファイルの書き換え

/usr/local/etc/pkg.confは捨てて/usr/local/etc/pkg/reposの下に設定ファイルを入れることになる。

/usr/local/etc/pkg.confは捨てるかリネームする。
ディレクトリ/usr/local/etc/pkg/reposを作る。
そこにFreeBSD.confというファイルを作る。
ただ末尾が.confであれば名前はなんでもよい。

# sudo mv /usr/local/etc/pkg.conf /usr/local/etc/pkg.conf.obsolete
# mkdir -p /usr/local/etc/pkg/repos
# vi /usr/local/etc/pkg/repos/FreeBSD.conf

以下がファイル例。
コメント部分は、まあお好きに。

#
# FreeBSD official pkg site
#
# See:
# http://lists.freebsd.org/pipermail/freebsd-current/2013-October/046055.html
# http://lists.freebsd.org/pipermail/freebsd-current/2013-November/046122.html
#
# ATTENTION!
#  pkg.freebsd.org is on SRV record, not on A record!
#
# $Id: FreeBSD.conf,v 1.1 2013/11/05 01:42:42 root Exp $
#
FreeBSD: {
  url: "http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  enabled: "yes"
}

準備完了

実行

問題なければ、pkg update, pkg upgradeでファイルを取得できるはず。

下記の通りであれば、毎週末~月曜くらいにpkg repositoryが更新されるようだ。

(水曜01:00(UTC)にportsのスナップショットから”a few days”かけてパッケージ作成)
Packages are built weekly from a snapshot of the Ports Collection every
Wednesday morning 01:00 UTC. They typically will be available in the
repository after a few days.

 

“Service Unavailable”

さて。
以下のようになったら、あなたのproxyサーバかDNSはSRVレコードに対応していないということ。

$ sudo pkg update
Updating repository catalogue
pkg: http://pkg.FreeBSD.org/freebsd:10:x86:64/latest/digests.txz: Service Unavailable
pkg: No digest falling back on legacy catalog format
pkg: http://pkg.FreeBSD.org/freebsd:10:x86:64/latest/repo.txz: Service Unavailable

 

対策(mirrorサイトを直接指定)

対策っても大したことはなくて、mirrorサイトを直接指定するだけ。
これで問題なく動くが、もちろん制限はある。
mirrorサイトがダウンしたときには、手動で接続先を変える必要がある。
今のところmirrorサイトは米国東西海岸、欧にしかない。
ゆくゆくは日本にもmirrorサーバが立つといいな。

さて手順。
以下に沿う。
ただ間違いがあって、そのままコピペすると失敗するので注意。
http://lists.freebsd.org/pipermail/freebsd-current/2013-November/046122.html

流れとしては、最初に作ったFreeBSD.confを無効にし、mirrorサイトを直接指定する設定ファイルを作る。

/usr/local/etc/pkg/repos/FreeBSD.confをリネームする。
(消してもいいけど、将来使うかもしれないし。)

# cd /usr/local/etc/pkg/repos
# mv FreeBSD.conf FreeBSD.conf.old

以下からmirrorサイトを選ぶ。
日本からだったらUS Westですかね。

pkg0.isc.freebsd.org   (US West)
 pkg1.nyi.freebsd.org   (US East)
 pkg0.bme.freebsd.org   (Europe)

 

設定ファイルを作る。
例によって名前はなんでもよい。末尾が.confであれば。

# cd /usr/local/etc/pkg/repos
# vi us-west.conf

 

ファイルの例。
コメントはまあ適当に。

#
# freebsd pkg mirror server located on us-west
#
# $Id: us-west.conf,v 1.1 2013/11/05 00:27:05 root Exp root $
#
# Since official pkg server is on SRV record, which is not
# recognized by some of proxy servers, directly point a mirror
# server.
#
# In case of this mirror server being down, we need to point
# another mirror server from the following:
#
#  pkg0.isc.freebsd.org   (US West)
#  pkg1.nyi.freebsd.org   (US East)
#  pkg0.bme.freebsd.org   (Europe)
#
# See:
# http://lists.freebsd.org/pipermail/freebsd-current/2013-November/046122.html
#
# /usr/local/etc/pkg/repos/
#
us-west: {
        url:    "http://pkg0.isc.freebsd.org/${ABI}/latest",
        enabled:        "yes",
        mirror_type:    "none",
}

 

あとはpkg update, pkg upgradeでよいでしょう。

No tags for this post.

vimでまさかのタブ表示

Pocket

 

結論

vim -pで複数ファイルをタブ表示できる。
.profileにaliasを書いとけ。
以上。

-pオプション

vimのmanを眺めていたらこんな記載が。

       -p[N]       Open N tab pages.  When N is omitted, open one tab page for
                   each file.

なんですと。
さっそく試そう!

vim -p に続けて複数ファイルを指定

こんな感じ。
もちろん*.confなんて指定のしかたもできるよ。

# vim -p freebsd-update.conf inetd.conf rc.conf make.conf portsnap.conf

すると開くファイルをズラッと表示してくれる。
しかもreadonlyのファイルがあればそれもご丁寧に。

"freebsd-update.conf" 76 lines, 2906 characters
"inetd.conf" 118 lines, 5025 characters
"rc.conf" [readonly] 31 lines, 662 characters
"make.conf" [readonly] 4 lines, 127 characters
"portsnap.conf" 35 lines, 1514 characters
Press ENTER or type command to continue

こんな感じ。
一番上の行に指定したファイルが並んでいる。
長いファイル名は表示できていないが。

vimp00

編集を終えて:qで抜けると次のファイルに移る。
:qを使わなくとも”gt”, “gT”でファイルを映ることができる。
“gt”で右へ、”gT”で左へ。

alilasの設定

気に入ったらaliasを設定しておく。
bashなら.profileに書き込んでおく。

alias vim="vim -p"

 

 

No tags for this post.