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 のラボゆにっくす <過去記事一覧> 閲覧回数:1355055
プロフィール

labunix

labunix

labunix の ラボゆにっくす

labunix のブックマーク

1. 「日刊ついっぺ」
2. 〜サイバー攻撃・内部不正対策から働き方改革支援までをログ活用で実現〜 LanScope Cat 4年ぶりのメジャーバージョンアップ Ver.9.0を2017年12月13日リリース|MOTEXのプレスリリース
3. 「分散型WAN」に最適化したSD-WANはなぜ業務を止めないか − TechTargetジャパン ネットワーク
4. JVNDB-2017-009726 - JVN iPedia - 脆弱性対策情報データベース
5. JVNDB-2017-009729 - JVN iPedia - 脆弱性対策情報データベース
6. IoTセキュリティ:ウクライナのサイバー攻撃被害「こうすれば防げた」 - TechFactory
7. macOS&Linuxにも広がる「SQL Operations Studio」でSSMSの利便性を - Connect (); Japan 2017 | マイナビニュース
8. ニュース - マイクロソフトがOSSシフトを鮮明に、AzureのLinux利用率6割狙う:ITpro
9. 高岡・工芸ハッカソン審査会 最優秀賞「9+1」チーム|北日本新聞ウェブ[webun ウェブン]
10. コードをオープンソースに!仏ホテルが“ゲーム開発”を通して旅の魅力を訴求 | AdGang
11. “AI×英語教育”をテーマにしたアイデアソン開催決定!(デジタル・ナレッジ) - CNET Japan
12. iPhone修理アイサポ【中野店】が平成29年11月21日OPEN!:ドリームニュース - Miyanichi e-press
13. ゲオ、「格安スマホ」の提案型ショップ - BCN RETAIL
14. 【格安スマホまとめ】SIMフリースマホのシェアトップはファーウェイ、BIGLOBEがiPhoneを取扱開始 | ASCII 新着ニュース | ダイヤモンド・オンライン
15. 【特集】格安SIMの契約プランを見直そう! - 日経トレンディネット
16. 家族で使う格安SIM シェアプランは枚数・容量が増加中 - 日経トレンディネット
17. 格安SIMから格安SIMに乗り換えで、もっと安くなる - 日経トレンディネット
18. EnterpriseDBがデジタルトランスフォーメーションを加速する、EDB Postgres Platform 10をリリース - SankeiBiz(サンケイビズ)
19. 国内ネットワークセキュリティ市場を調査、富士キメラ総研|Business & Public Affairs Web Site
20. Google Container Engineが「Google Kubernetes Engine」へ改名。略称はもちろん「GKE」のママ − Publickey
Connection: close