Hatena::ブログ(Diary)

labunix の ラボゆにっくす このページをアンテナに追加 RSSフィード Twitter

 
labunix の ラボゆにっくす
labunix の ラボUnix(はてなブログ)
 | 

2012/10/13 debianのsambaを「tcp/445」のみに制限する このエントリーを含むブックマーク このエントリーのブックマークコメント


■sambaのリッスンポートを「tcp/445」のみに制限する(for Squeeze)。
 注意点は以下の通り。タイトルは紛らわしいが読めば分かるので、ここでは触れない。

 ポート445(ダイレクト・ホスティングSMBサービス)に注意
 http://www.atmarkit.co.jp/fwin2k/win2ktips/088directhostedsmb/088directhostedsmb.html

■現状の設定の確認。
 これを使わないようにする。

$ sudo testparm -s -v 2>&1 | grep "smb ports\|netbios"
        netbios name = VMAMDDEBIAN
        netbios aliases =
        netbios scope =
        smb ports = 445 139
        disable netbios = No

■「smb.conf」には無い設定項目。つまりデフォルト。

$ sudo grep -v "^#\|\\$" /etc/samba/smb.conf | grep -i "ports\|netbios"

■netbios関連のポート。

$ grep '13[789]/' /etc/services
netbios-ns      137/tcp                         # NETBIOS Name Service
netbios-ns      137/udp
netbios-dgm     138/tcp                         # NETBIOS Datagram Service
netbios-dgm     138/udp
netbios-ssn     139/tcp                         # NETBIOS session service
netbios-ssn     139/udp

■「global」に設定。

$ sudo grep -v "^#\|\\$" /etc/samba/smb.conf | grep "ports\|netbios"
smb ports = 445
disable netbios = yes

■broadcastも止めたい。

$ sudo testparm -v -s 2>&1 | grep "broad\|multi\|cast"
        nmbd bind explicit broadcast = Yes

■リッスンポートを確認。

$ netstat -an | grep "13[789]\|445"
tcp        0      0 192.168.188.188:445        0.0.0.0:*               LISTEN

■「hosts allow」と「hosts deny」
 後述するが、「LAN Manager」によるSambaバージョンの隠蔽は
 オプションの変更が推奨されていない。

 パスワード制限でゲストは許可していないにしても、IP制限は必須。
 デフォルトでは「smb.conf」内に設定項目すら無いので注意する。

$ sudo testparm -s -v 2>&1 | grep hosts
        name resolve order = lmhosts host
        init logon delayed hosts =
        hosts allow = 192.168., 172.16.
        hosts deny = ALL

□以下、確認方法。

■「smbstatus」にデバッグオプションをつけると、「testparm」と同様の結果が見れる。
 ※今回行った変更すべてを検索。

$ sudo smbstatus -d 10 2>&1 | grep "ports\|netbios\|broad\|hosts [ad]" | sort -u
doing parameter disable netbios = yes
doing parameter hosts allow = 192.168.,172.16.
doing parameter hosts deny = ALL
doing parameter nmbd bind explicit broadcast = no
doing parameter smb ports = 445

■以下で示した警告は「smbstatus」でも出る。

 samba3のtestparmで出る「rlimit_max」を無視する理由
 http://d.hatena.ne.jp/labunix/20121012

$ sudo smbstatus -d 10 2>&1 | grep rlimit | sort -u
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)

■「445/tcp」は「net view」出来ます。
 「server string = %h server」が表示される。「%v」(バージョン情報)は含まない。

> net view \\192.168.188.188
\\192.168.188.188 の共有リソース

vmamddebian server

共有名   タイプ  使用  コメント

-------------------------------------------------------------------------------
labunix  Disk          Home Directories
コマンドは正常に終了しました。

■「netbios」が使えないことを確認(debian)。

$ nmblookup -S `hostname`
querying vmamddebian on 192.168.188.255
name_query failed to find name vmamddebian

■「netbios」が使えないことを確認(WinXP)> nbtstat -a 192.168.188.188

ローカル エリア接続:
Node IpAddress: [192.168.188.155] Scope Id: []

    Host not found.

■WinXP自身による「netbios」問い合わせは可能(WinXP)
 ※「ぼっち」なので、ワークグループ「MSHOME」のマスターブラウザ。

> nbtstat -a 192.168.188.155

ローカル エリア接続:
Node IpAddress: [192.168.188.155] Scope Id: []

           NetBIOS Remote Machine Name Table

       Name               Type         Status
    ---------------------------------------------
    DUMMY-WINXP    <00>  UNIQUE      Registered
    MSHOME         <00>  GROUP       Registered
    DUMMY-WINXP    <20>  UNIQUE      Registered
    MSHOME         <1E>  GROUP       Registered
    MSHOME         <1D>  UNIQUE      Registered
    ..__MSBROWSE__.<01>  GROUP       Registered

    MAC Address = XX-XX-XX-XX-XX-XX

■WinXPへの「netbios」問い合わせは可能(debian)。

$ nmblookup -S -W MSHOME -A 192.168.188.155
Looking up status of 192.168.188.155
        DUMMY-WINXP     <00> -         B <ACTIVE>
        MSHOME          <00> - <GROUP> B <ACTIVE>
        DUMMY-WINXP     <20> -         B <ACTIVE>
        MSHOME          <1e> - <GROUP> B <ACTIVE>
        MSHOME          <1d> -         B <ACTIVE>
        ..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>

        MAC Address = XX-XX-XX-XX-XX-XX

■脆弱性チェックを行う。

$ w3m -dump https://raw.github.com/labunix/penetration/master/penetration.sh > penetration.sh
$ chmod +x penetration.sh
$ sudo ./penetration.sh 192.168.188.188
...
Host script results:
|_ nbstat: ERROR: Name query failed: ERROR
|  smb-os-discovery: Unix
|  LAN Manager: Samba 3.5.6
|  Name: WORKGROUP\Unknown
|_ System time: 2012-10-13 20:54:37 UTC+9
...

■「smbstatus」で誰も参照していない場合の応答。

$ sudo smbstatus

Samba version 3.5.6
PID     Username      Group         Machine
-------------------------------------------------------------------

Service      pid     machine       Connected at
-------------------------------------------------------

No locked files

■「smbstatus」でWinXPからdebianのファイル共有を行ったところ。

$ sudo smbstatus
[sudo] password for labunix:

Samba version 3.5.6
PID     Username      Group         Machine
-------------------------------------------------------------------
10850     labunix       labunix       dummy-winxp   (192.168.188.155)

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         10850   dummy-winxp    Sat Oct 13 22:04:55 2012

No locked files

■該当箇所の確認。
 「lm announce」行がそれのようだ。

$ sudo testparm -s -v 2>&1 | grep announce
        announce version = 4.9
        announce as = NT
        lm announce = Auto
        remote announce =

■「lm announce」は受信のみ行い、受け取った情報を以降送信するようになる。
 この値の変更は行わない。

$ man smb.conf | grep -A 12 "lm announce .*G"
       lm announce (G)

           This parameter determines if nmbd(8) will produce Lanman announce
           broadcasts that are needed by OS/2 clients in order for them to see
           the Samba server in their browse list. This parameter can have
           three values, yes, no, or auto. The default is auto. If set to no
           Samba will never produce these broadcasts. If set to yes Samba will
           produce Lanman announce broadcasts at a frequency set by the
           parameter lm interval. If set to auto Samba will not send Lanman
           announce broadcasts by default but will listen for them. If it
           hears such a broadcast on the wire it will then start sending them
           at a frequency set by the parameter lm interval.

■「lm interval = 0」にすれば実質停止するのだが、上記脆弱性チェックには影響が無いので、設定はしない。

$ man smb.conf | grep -A 10 "lm interval .*G"
       lm interval (G)

           If Samba is set to produce Lanman announce broadcasts needed by
           OS/2 clients (see the lm announce parameter) then this parameter
           defines the frequency in seconds with which they will be made. If
           this is set to zero then no Lanman announcements will be made
           despite the setting of the lm announce parameter.

           Default: lm interval = 60

           Example: lm interval = 120

■ところでnetbios名が使えなくなったので、「hosts」かDNSで名前解決を行う。
 Windowsで「hosts」の設定は例えば以下のようになる。
 Windowsはnetbios名が使えるので、最後の行は実際には不要。
 管理場所をバラバラにしないようにする以外の意味は無い。

> type c:\WINDOWS\system32\drivers\etc\hosts | find /V "#" | findstr "[0-9]"
127.0.0.1       localhost
192.168.188.188 vmamddebian
192.168.188.155 demmy-winxp

 | 
labunix のラボゆにっくす <過去記事一覧> 閲覧回数:1330094
プロフィール

labunix

labunix

labunix の ラボゆにっくす

labunix のブックマーク

1. 「日刊ついっぺ」
2. オープンソースの統合監視管理、ZabbixとHinemosの機能と選択のポイント
3. 柔軟なログ収集を可能にする「fluentd」入門 - さくらのナレッジ
4. ログ管理のベストプラクティス
5. ログ収集・監視ソフトウェア | LogStare collector(ログステア コレクター) | セキュアヴェイル
6. ログ運用OSSサポートサービス: OSSミドルウェアサポートサービス | NEC
7. オープンソースのログ管理/Logstashとは
8. 企業向けログ管理システム「SyLAS」を無償公開 | OSSでのシステム構築・デージーネット
9. 実運用が分かる、OSSでログ管理入門(2):実運用の障害対応時間比較に見るFluentd+Elasticsearch+Kibanaのログ管理基盤の効果 (1/2) - @IT
10. 実運用が分かる、OSSでログ管理入門(1):Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (1/2) - @IT
11. OpenStackの弱点、大量のログ発生問題を解決するNECネッツエスアイの取り組み | Think IT(シンクイット)
12. 「オープンソース」を使ってみよう (第28回 Mercurial 編)
13. ログを解析・管理できる便利なツールまとめ | NESTonline Blog
14. AWSのログ管理!AWS運用管理フォーカスセミナー!!に参加してきました | Developers.IO
15. 1秒で10万行を処理するフリーの超高速なログ解析ソフト「Visitors」 - GIGAZINE
16. さまざまなログをまとめて集中管理できるログ記録/管理ツール「fluentd」 | OSDN Magazine
17. F5ネットワークス、会員数250万人の総合通販サイト「ネットプライス」のセキュリティ強化を支援:時事ドットコム
18. 時系列の異常を検知--検索エンジン「Elasticsearch」の機械学習技術の可能性 - ZDNet Japan
19. 統合ログ管理 システム 「 Logstorage 」に よる AWS システム の監査・可視化
20. Logstorage(ログストレージ)| eSECTOR(イーセクター)