Entries : Category [ security ]
[PC]  [server]  [network]  [info]  [tips]  [command]  [security] 

28 December
2009

bind の version 表示の抑制

bind version signature

■背景
特定の version の bind にはバグがあります。その
バグには、軽微なものから重大 (critical) なものま
であるわけで、最善としては、常に security hole
のない安定 version で運用したいところです。しか
し、0-day attack などもあり得ますので、細やかな
がらの security 向上の手段として、運用している
bind の version は internet 側には無制限に公開し
たくない。ということで、今回はそんなことどもにつ
いて纏めてみました。

■bind の version 確認
□dig を用いた手続き
dig では下記のような command を発行します。"@"
に続けて、version を確認したい dns server の fqdn
(or ip address) を指定します。その他の option 文
字列は固定です。

dig を発行している端末が対象 dns server の情報を
読み出せる権利がある場合、
  ANSWER SECTION
に結果が記された回答を得ることができます。下記の
結果(例)では、
  "unknown"
という(我々の望む)結果でした。従って、当該 dns
server は我々の望む設定が為されている、というこ
とが確認できます。

[実行例]
dig @ns1.unchor.com. txt chaos version.bind.
dig @localhost txt chaos version.bind

[結果例]
;; ANSWER SECTION:
version.bind. 0 CH TXT "unknown"

□nslookup
上記 dig は、多分、ms windows には標準では備えら
れていないと思います。nslookup を用いれば、win
端末からも(勿論 unix 環境でも)同様のことを確認
することができます。

[実行例: command mode]
nslookup -type=txt -class=chaos version.bind. ns2.unchor.com.

[結果例]
version.bind text = "unknown"

[実行例: interactive mode]
nslookup
server ns1.unchor.com
set type=txt
set class=chaos
version.bind

[結果例]
version.bind text = "unknown"

■version.bind 応答文字列の設定
さて、今回の本題である、bind の version 表記を制
御するためには、bind の conf file である
  named.conf

  options
section に
  version "unknown";
と設定します。下記は named.conf の抜萃です。

options {
directory "/var/named";
pid-file "/var/run/named/named.pid";
version "unknown";
allow-query { 172.16.10.1/24; localhost; };
};

上記の例では、応答文字列を "unknown" として設定
しましたが、
  version "";
と設定すれば、応答文字列は無機質に「空」となりま
す。

■login している server での bind の version 確認
下記、「実行例」後者は log に記録されていなけれ
ば確認することができませんし、同時に、
  /var/log/messages
を読むことのできる権限が必要です。

[実行例]
unchor@rescue:~$ /usr/local/sbin/named -v
BIND 9.6.1-P2

[実行例]
root@rescue:~#cat /var/log/messages| grep named| grep starting


Posted by unchor at 08:23 | Comments (0) | Trackbacks (0)
05 January
2010

apache の version 表示の抑制

apache version signature

■apache の version 確認
□telnet を用いた手続き
基本的には、下記の command 文字列の実行で情報を
取得できます[google]。

□command
telnet fqdn 80
HEAD /index.html HTTP/1.0

□実行例
unchor@rescue:~$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD /index.html HTTP/1.0

HTTP/1.1 200 OK
Date: Thu, 24 Dec 2009 01:07:26 GMT
Server: Apache/1.3.41 (Unix)
Last-Modified: Fri, 22 Aug 2003 02:25:25 GMT
ETag: "7e905-22b-3f457f15"
Accept-Ranges: bytes
Content-Length: 555
Connection: close
Content-Type: text/html

□ブラウザを用いた手続き
どう考えてもあり得なさそうな "url" を、対象 web
server に対して送信。apache など web server の
default error 表示が変更されていない場合、下記の
error message に server の version が付加されて
いるケースがあります[google]。

□command
http://dev.unchor.com/test

□実行結果例
Not Found
The requested URL /test was not found on this server.

Apache/1.3.41 Server at dev.unchor.com Port 80

■apache の version 表記の制御
さて、下記が本題です。上記で internet に公開され
る apache の version 表記が規定されている httpd.
conf を修正します。具体的な項目は、
  ServerTokens
です。Token では *なく* "Tokens" と複数形である
ことに注意[google]。

□tips
この場合、apache 起動時の log
  /var/log/httpd/errorlog
なども同様に表記が制限されることとなります。

[Mon Dec 21 14:47:24 2009] [notice] Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8l PHP/5.2.12 configured -- resuming normal operations
[Mon Dec 21 15:26:24 2009] [notice] Apache/1.3.41 (Unix) configured -- resuming normal operations

なお、compile 時に静的に組み込まれている modules
については
  httpd -l
で確認することができる。


Posted by unchor at 12:01 | Comments (0) | Trackbacks (0)
12 January
2010

wget 後 pgp 署名を確認するために

gpg setup procedure

■背景
大抵の場合、md5sum や sha1sum で check sum を確
認すれば、それで、wGet した archive の正統性確認
はいいのでは、とは思います。が、bind などはきち
んと pgp 署名がされていたりします(というか、pgp
signature しか提供されていなかったりします)。

事前にある程度の準備 (gpg related setup) をして
おかないと、pgp signature の確認も結構手間ですの
で、手順を纏めてみました。

reference web site: http://www.atmarkit.co.jp/flinux/rensai/bind901/bind901c.html

■事前確認
CentOS release 4.8 (Linux 2.6.9-89.0.18.EL) では、
waring message が表示されませんでしたが、これは、
きっと root でなくとも "memory pages" を lock で
きるからなのでしょう(推測です)。

FAQ に拠れば、一部の os では上記のために、setuid
(root) が必要であるとのことでした。その場合、set
UID が為されていない場合、
  gpg: Warning: using insecure memory!
の警告が呈示されます。解消のためには、下記の例の
ように setuid するか、option で、
  --no-secmem-warning
を付加するか、
  "~/.gnupg/options or ~/.gnupg/gpg.conf file"

  no-secmem-warning
と記述せよとのことでした。

ll /usr/bin/gpg
ll /usr/bin/gpg| awk '{print $1}'
# chmod u+s /usr/bin/gpg
chmod 4755 /usr/bin/gpg
ll /usr/bin/gpg
ll /usr/bin/gpg| awk '{print $1}'

■private/public key pair の生成
先ず、自らの秘密鍵・公開鍵ペアの生成が必要のよう
です。生成のためには、
  鍵の種類
の選択
  keysize (鍵長)
  expiration (有効期限)
  name
  email address
  pass phrase
の入力が必要です。

rescue@unchor:~/.gnupg$ gpg --gen-key
gpg (GnuPG) 1.2.6; Copyright (C) 2004 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) RSA (sign only)
Your selection?
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct (y/n)? y

You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) "

Real name: rescue
Email address: rescue@unchor.com
Comment:
You selected this USER-ID:
"rescue "

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
++++++++++++++.+++++++++++++++.+++++.++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++..++++++++++>++++++++++..............
...............................................................................
.........................................................>.+++++...............
.......................................................>+++++.+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
..+++++...++++++++++.+++++++++++++++++++++++++.++++++++++.+++++++++++++++.+++++
+++++++++++++++.+++++++++++++++.++++++++++++++++++++.++++++++++.+++++++++++++++
>...++++++++++>+++++...>..+++++.+++++^^^
gpg: /home/rescue/.gnupg/trustdb.gpg: trustdb created
public and secret key created and signed.
key marked as ultimately trusted.

pub 1024D/B4ACCA49 2010-01-09 rescue
Key fingerprint = 2A97 E65D 87D5 78A9 8B8B 8AEF DD6A DB6F B4AC CA49
sub 2048g/7DAEF0B3 2010-01-09

■生成された鍵の確認
下記
  gpg --list-keys
の command で確認(一覧)することができます。

rescue@unchor:~/.gnupg$ gpg --list-keys
/home/rescue/.gnupg/pubring.gpg
---------------------------------
pub 1024D/B4ACCA49 2010-01-09 rescue
sub 2048g/7DAEF0B3 2010-01-09

□tips
GnuPG 関連 files (conf / option / keys) は、
  ~/.gnupg/
以下に格納されるので、上記のように test / sample
で練習した後には、本 directory ごと rm -rf して
しまえばその痕跡の削除は完了かと思われます。

■isc bind 正統性確認関連手続き
□isc 公開鍵の download と署名

  isc OpenPGP Key: official site

wget https://www.isc.org/files/pgpkey2009.txt
gpg --import pgpkey2009.txt
gpg --list-keys
gpg --list-keys| grep pub| grep isc
gpg --lsign-key 0B7BAE00

This key is due to expire on 2012-05-18.
Do you want your signature to expire at the same time? (Y/n) y
(0) I will not answer. (default)
Really sign? y
Enter passphrase:

□bind の検証
wget http://ftp.isc.org/isc/bind9/9.6.1-P2/bind-9.6.1-P2.tar.gz
wget ftp://ftp.isc.org/isc/bind9/9.6.1-P2/bind-9.6.1-P2.tar.gz.asc
gpg --verify bind-9.6.1-P2.tar.gz.asc bind-9.6.1-P2.tar.gz

unchor@rescue:/usr/local/src/bind$ gpg --verify bind-9.6.1-P2.tar.gz.asc bind-9.6.1-P2.tar.gz
gpg: Signature made Tue Nov 24 07:39:05 2009 JST using RSA key ID 0B7BAE00
gpg: Good signature from "Internet Systems Consortium, Inc. (Signing key, 2009) "

■用語
Wikipedia: pgp
Wikipedia: gpg
GnuPG FAQ: [official site]


Posted by unchor at 18:31 | Comments (0) | Trackbacks (0)
11 February
2010

adobe flash tips: version 確認とオプション設定

keywords: flash version check & configuration

■背景
adobe acrobat の security hole (しかも 0-day)に
もう堪えきれず、大部の端末の pdf reader を "Foxit
Reader" に変更した件は、「Foxit Reader の Firefox
Plugin の install が失敗する場合の対処
」にも書き
ました。

同様に adobe (macromedia) flash も、それなりに結
構な security hole がみつかりがちと思います。し
かも、pdf reader とは異なり、独占であるが故に乗
り換えられない(Wikipedia に拠ると

その後ライセンスの変更が行われ、現在では互換ソフ
トの開発が可能になっている。
とのことです。)。

更に、しかも、cookie などを蒐集する web site が
多くて、厭な感じ[google]。

■uninstall
flash の download 画面
  http://get.adobe.com/jp/flashplayer/otherversions/
にもあるように、ms win 版 flash player は二種類
に大別され、それぞれ独立です。即ち、
  1. Flash Player 10 for Windows Internet Explorer
  2. Flash Player 10 for Windows - Other Browsers
です。

flash を update をする場合、端末に両者が導入され
ている場合は、上記 "1." と "2." の二つの s/w を
update する必要があります。且つ、"1." については、
自ら明示的に導入せずとも、予期せず ie に予め、も
の凄く古い version が(勝手にメーカの手で)導入
済みであったりします。

ということで、先ずは、端末内の flash player を問
答無用で全部削除します。uninstaller の所在は、此

  http://www.adobe.com/jp/shockwave/download/alternates/
です。上記画面表中のアスタリスク "*" の意味する
ところは、画面最下部に(ひっそりと)書かれており
ますが「* 英文のみ」とのことです。

その後、最新版の flash player を導入します。わた
くしは ie は(ms update 時にしか)用いませんので、
firefox version のみを導入します。従って security
hole が発見され、その後 update が release された
場合も上記 "2." のみ update する、と。

■flash version
google で引けばあっという間ですが、shockwave flash
の version checker は此処
  http://kb2.adobe.com/cps/155/tn_15507.html
です。現時点の最新版は
  WIN 10,0,42,34
のようです。

■flash config
さて最後に flash cookie tracking 対策です。
  reference web site: http://blog.ohgaki.net/flash-flash-cookie
  official web site: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager.html
flash の設定画面は、此処
  http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager02.html
です。わたくしは、可能な限り厳しめ、即ち「全て拒
否」で設定いれております。


Posted by unchor at 09:30 | Comments (0) | Trackbacks (0)
18 February
2010

zone 転送が抑止されているかの確認

keywords: bind "zone transfer" & "recursive request" w/ dig

■背景
お作法として internet に公開している当該 domain
を主管する primary name server は、secondary name
server / tertiary name server である自らの配下に
のみ、その zone 転送を許すべきでしょう。

また、無関係な第三者的な resolver に対しては無制
限に、即ち、再帰的に名前解決を許すべきではないで
しょう。

関連して、以前の項「bind の version 表示の抑制
も参考にして下さいませ。

■zone 転送
□zone 転送が抑止されているかの確認
配下以外の第三者的な host から下記

dig @ns axfr fqdn
の command を発行。

上記 @ns については、対象としたい name server を
指定。fqdn には対象としたい domain を指定する。

□結果
実行例(抑止されている場合)は下記の通り。
unchor@rescue:~$ dig @ns1 axfr unchor.com

; <<>> DiG 9.5.0-P1 <<>> @ns1 axfr unchor.com
; (1 server found)
;; global options: printcmd
; Transfer failed.
設定が甘い、若しくは権限を有する secondary から
実行した場合は、逆に、当該 domain の設定内容、即
ち、"zone file" の内容が全て閲覧可能になる、と。


■再帰的問い合わせ (recursive request)
□再帰的問い合わせが禁止されているかの確認
再帰的問い合わせを許可していない、第三者的な外部
の host から、当該 dns server が管轄していない、
第三者的な fqdn を引いてみます。前項「zone 転送」
とは異なり "axfr" option は不要です。

□結果
例えば、
dig @ns1 www.asahi.com
再帰的問い合わせが(きちんと)禁止されている場合は、dig の
結果
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 45533
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
と、正しく
status: REFUSED
WARNING: recursion requested but not available
となり、再帰的問い合わせが拒否されるでしょう。逆に、
  ;; ANSWER SECTION:
に回答が格納されて返ってきた場合は、再帰的問い合
わせが許可されているわけですので、それは宜しくな
い、と。

■余談
zone 情報の閲覧について、嘗ては、下記
nslookup
set type=any
ls -d fqdn
ls -N
ls -n
でもゆけたのですが、bind の version up に伴い実
装されなくなってしまったみたいです。従って、zone
転送の可否を確認するための手段、としては先ずは
"dig" のみかと。


■用語
Wikipedia: DNSゾーン転送
google: zone 転送
google: 再帰的問い合わせ
google: dns recursion


Posted by unchor at 20:22 | Comments (0) | Trackbacks (0)
25 February
2010

DNS に関わる設定を検証してくれる web service

web service: DNS releted check / test

■背景
既に二年前ですが、
  DNS vulnerable to "cache poisoning"
  reference web site:
  http://itpro.nikkeibp.co.jp/article/COLUMN/20080811/312660/
が大きな問題となりましたよね。上記の web site に
も、該当する脆弱性が内在するか否かを検証してくれ
る web service への link が幾つか挙げられており
ます。

  https://www.dns-oarc.net/oarc/services/dnsentropy
  http://recursive.iana.org/

ということで、上記の脆弱性検証 service に加えて、
DNS 関連の設定を検証してくれる web serviceを列記
しておきます。


■squish
squish は root server から、DNS の 各 records を
引いてくれます。

URL は
  http://www.squish.net/dnscheck/
  http://www.squish.net/dnscheck/simple/
です。dig でもできますが、こちらのほうが簡単、と。


■CheckDNS.net Quick Check Utility
Quick Check Utility は当該 domain 関連の
  neme server: NS for domain
  web server: www server for domain
  smtp server: MX for domain
の動作などを検証してくれます。

URL は
  http://www.checkdns.net/quickcheckdomainf.aspx
です。

本日再訪してみたら、激重、ですが、検証には問題な
いようです。location は "Zurich Switzerland" の
ようですが、server も単体でスイスにあるんでしょ
うかね(DE [Germany] にある気配です。)。


■dnsreport.com
嘗ては、
  http://www.dnsreport.com/
であったのですが、
  http://www.dnsstuff.com/
に redirect されるようになってしまいました。

tool は、
  http://www.dnsstuff.com/tools
に纏められているようです。しかし、なんだか有償の
ものや login が要求されたりと、使いづらくなって
しまったみたいです。


Posted by unchor at 00:24 | Comments (0) | Trackbacks (0)
31 August
2011

apache 1.3.x の apache killer 対策

conf: range header for apache 1.3.x

revised at '11-09-15 (thu.)
■背景
apache 2.2.x に対する解法は各所にあるのですが、
既に support 対象外である version 1.3.x (わたく
しの手許には、1.3.41/1.3.42 などが....)に対する
情報があまりないようでしたので、纏めておきます。

■official
本日時点での最新情報は、
 http://mail-archives.apache.org/mod_mbox/httpd-announce/201108.mbox/browser

 Fri, 26 Aug, 10:35
 https://mail-archives.apache.org/mod_mbox/httpd-announce/201108.mbox/%3C20110826103531.998348F82@minotaur.apache.org%3E
です。

■制限事項
□RequestHeader
上記 reference

Option 2: (Pre 2.2 and 1.3)
中の、
RequestHeader unset Request-Range
は、apache 1.3.x の
 mod_headers.so
では動作しないようです。下記
Starting httpd: Syntax error on line 1201 of /etc/httpd/conf/httpd.conf: Invalid command 'RequestHeader', perhaps mis-spelled or defined by a module not included in the server configuration
が呈示され、apache の(再)起動に失敗します(cf.
official document)。

□RewriteCond %{HTTP:request-range}
従って、HEAD "Request-Range" に対しては、上記 re-
ference の comment 部
# RewriteCond %{HTTP:request-range} !(bytes=[^,]+(?:,[^,]+){0,4}$|^$)
を comment out して設定する必要があると思われま
すが、設定を活かして再起動すると、
Starting httpd: Syntax error on line 1196 of /etc/httpd/conf/httpd.conf: RewriteCond: cannot compile regular expression '!(bytes=[^,]+(?:,[^,]+){0,4}$|^$)'
と、正規表現の文法 error が呈示され、これまた、
apache の(再)起動に失敗します。

あまり自信ないのですが、多分、
 !(bytes=[^,]+(?:,[^,]+){0,4}$|^$)
の "(?:" がおかしく、正しくは "(:?" ではなかろう
か、従って、
 !(bytes=[^,]+(:?,[^,]+){0,4}$|^$)
ではなかろうか、と。

■結論
下記
## date: 2011/08/31
# Reject request when more than 5 ranges in the Range: header.
# CVE-2011-3192
#
# <IfModule mod_rewrite.c>
<Directory />
RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$) [NC,OR]
RewriteCond %{HTTP:request-range} !(^bytes=[^,]+(:?,[^,]+){0,4}$|^$) [NC]
RewriteRule .* - [F]

# We always drop Request-Range; as this is a legacy
# dating back to MSIE3 and Netscape 2 and 3.
# RequestHeader unset Request-Range
</Directory>
# </IfModule>
の設定を httpd.conf
### Section 3: Virtual Hosts
の直前に挿入しました(以上 9/15 update 分)。


================================================
以下は誤った記述です date: '11-09-15 (thu.) 追記
================================================
下記
## date: 2011/08/31
# Reject request when more than 5 ranges in the Range: header.
# CVE-2011-3192
#
RewriteEngine on
RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteCond %{HTTP:request-range} !(bytes=[^,]+(:?,[^,]+){0,4}$|^$)
RewriteRule .* - [F]

# We always drop Request-Range; as this is a legacy
# dating back to MSIE3 and Netscape 2 and 3.
# RequestHeader unset Request-Range
の設定を httpd.conf
### Section 3: Virtual Hosts
の直前に挿入しました。


Posted by unchor at 09:44 | Comments (0)
14 January
2018

Windows Security Update Src.

from Jan. 2018 to Dec. 2018

個人用メモとの位置づけ

■Win7 32Bit
2018/01: KB4056897
2018/02: KB4074587
2018/03: KB4088878
2018/04: KB4093108
2018/05: KB4103712
2018/06: KB4284867
2018/07: KB4338823
2018/08: KB4343899
2018/09: KB4457145
2018/10: Servicing stack KB3177467
2018/10: KB4462915
2018/11: KB4467106
2018/12: KB4471328

■Win8.1 32Bit
2018/01: KB4056898
2018/02: KB4074597
2018/03: KB4088879
2018/04: KB4093115
2018/05: KB4103715
2018/06: KB4284878
2018/07: KB4338824
2018/08: KB4343888
2018/09: KB4457143
2018/10: KB4462941
2018/11: KB4467703
2018/12: KB4471322


Posted by unchor at 09:48
[1]