web-dev-qa-db-ja.com

Windowsは提供された共有の前にIPC $共有にアクセスしようとします

セキュリティ上の理由(ユーザーと共有の列挙、ユーザー情報クエリなど)のためにIPC$共有[1]へのアクセスを無効にしたsambaサーバーがあります。

mount.cifsを使用しているUnixベースのコンピューターから、このサーバーのデータ共有に問題なくアクセスできます。ただし、Windowsコンピューター(Windows 7および10でテスト済み)からアクセスしようとすると、資格情報を入力した直後にAccess deniedエラーが表示されます。

SMBトラフィックを記録した後、WindowsコンピューターはTree connect request共有で常にIPC$を実行してから、map network driveまたはadd network location)。私のsambaサーバーはAccess denied for the IPC$共有を返しますまた、Windowsが必要な共有にアクセスしようとすることはありません。

だから私の質問は、WindowsがIPC$でこの役に立たない要求をして、提供した共有にアクセスするのを防ぐにはどうすればよいですか?または、少なくともIPC$が返された後にWindowsに強制的に実際の共有にアクセスさせるにはAccess denied

あなたの助けと幸せな休日を事前にありがとう!

スポンジボブ

[1] https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/securing-samba.html#id2618877

2
spongebob

それで私の質問は、Windowsがこの役に立たない要求を実行するのをどのように防ぐことができるかです...?または少なくともどのように後でWindowsに実際の共有に強制的にアクセスさせます..?

答えはあなたができないということです!申し訳ありませんが、これは事実です。しかし、これはあなたの質問に対する真の答えですが、私は役に立たないように思わないでください。私は手助けしたいので、うまくいけば、以下があなたの状況であなたに役立つと私が与えることができる最高のアドバイスです。

私はプロの侵入テスト担当者であり、正当なテスト目的でシステムに関する情報を入手してシステムに侵入するために、匿名共有アクセス(IPC $など)をよく使用します。重要なのは、匿名ユーザー(有効な資格情報を持たないユーザー)によるユーザーと共有の列挙を防ぐことです。有効な認証情報が取得されると、通常、ユーザーを列挙する他の方法(cat/etc/passwdなど)が存在し、いずれにしても、攻撃者にとっては優先度が低くなります。

参照した記事には次のものが含まれています。

この方法を使用すると、クライアントがIPC $共有にアクセスしようとすると、「アクセス拒否」の応答が返されます。これらのクライアントは共有を参照できず、他のリソースにアクセスできない場合もあります。 これはお勧めできません何らかの理由で、先ほど説明した他の方法のいずれかを使用できない場合を除きます。

推奨されない理由は、「これらのクライアントは、他のリソースにもアクセスできない可能性がある」ためです。 Windowsがマシン上の共有にアクセスできないことがこの例です。残念ながら、Windowsは他の共有を表示するためにIPC $にアクセスする必要があります。 IPC $が表示されない場合は、他に利用可能な共有がないと想定し、あきらめます。

LinuxクライアントでのSambaの実装は少し異なるため、同じ問題は発生しません。回避策はないので、IPC $共有が匿名ユーザーに情報を提供していないことを確認します。

ホストベースの保護およびユーザーベースの保護セクションの使用あなたが送った記事は、信頼できないソースからのIPC $共有を含む、Sambaのすべてへの望ましくないアクセスを防ぐ良い方法であり、必要なものすべてをあなたに与えるかもしれません。

ただし、このページの指定されたセクションでは、さらにアドバイスが提供されています。 https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

確認するセクション:

「アクセスベースの共有列挙型」

「browseable」-すべての共有(IPC $を除く)を「no」に設定すると、共有が表示されなくなりますが、ウィンドウは引き続きアクセスできます。

「guest ok」-IPC $共有を「no」に設定すると、Windowsが他の共有にアクセスできなくなるかどうかをテストします

Winbindを使用している場合は、それらを列挙しないように次を設定します。

winbind enum groups = no
winbind enum users = no
2
bao7uo