I have a samba server where I have disabled access to the IPC$
share [1] for security reasons (users and shares enumeration, user info query, ...).
I can access the data shares on this server without problem from any Unix based computer with mount.cifs
. However, when I try to access them from Windows computers (tested with Windows 7 and 10), I get an Access denied error just after providing my credentials.
After recording the SMB traffic, I noticed that Windows computers always do a Tree connect request
on the IPC$
share before trying to access the share I provided (through map network drive or add network location). My samba server returns Access denied for the IPC$
share and Windows never tries to access the share I want.
So my question is how can I prevent Windows to do this useless request on IPC$
and just access the share I provided? Or at least how can I force Windows to access the real share after the IPC$
one returned Access denied?
Thank you in advance for your help and happy holidays!
Sponge bob
[1] https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/securing-samba.html#id2618877
Итак, мой вопрос в том, как я могу предотвратить выполнение Windows этого бесполезного запроса ...? Или, по крайней мере, как я могу заставить Windows получить доступ к реальному общему ресурсу после ..?
Ответ: вы не можете! Извините, но это так. Однако, хотя это верный ответ на ваш вопрос, я не хочу показаться бесполезным. Я действительно хочу помочь, поэтому надеюсь, что нижеследующее - лучший совет, который я могу дать, который окажется полезным для вас в вашей ситуации.
Я профессиональный тестер на проникновение и часто использую анонимный общий доступ (например, IPC $) для получать информацию о системах и взламывать их для законных целей тестирования. Ключевым моментом является предотвращение перечисления пользователей и общих ресурсов анонимным пользователем (кем-то без действительных учетных данных). После получения действительных учетных данных обычно есть другие способы перечисления пользователей (например, cat / etc / passwd), и в любом случае это становится менее приоритетным для злоумышленника.
Статья, на которую вы ссылаетесь, содержит следующее:
Если вы используйте этот метод, тогда клиентам будет предоставлен отказ в доступе отвечают, когда они пытаются получить доступ к общему ресурсу IPC $. Эти клиенты не будут иметь возможность просматривать общие ресурсы, а также может не иметь доступа к другим Ресурсы. Это не рекомендуется , кроме случаев, когда по какой-либо причине вы не можете используйте один из других методов, которые только что обсуждались.
Причина, по которой он не рекомендуется, заключается в том, что «Эти клиенты ... также могут быть не в состоянии получить доступ к некоторым другим ресурсам». Примером этого является невозможность Windows получить доступ к каким-либо общим ресурсам на машине. К сожалению, Windows требует доступа к IPC $ для просмотра других общих ресурсов.Если он не видит IPC $, он просто предполагает, что другие общие ресурсы недоступны, и отказывается.
Клиентская реализация Samba в Linux работает несколько иначе и, следовательно, не испытывает той же проблемы. Поскольку нет никакого способа обойти это, я бы просто удостоверился, что общий ресурс IPC $ не передает информацию анонимным пользователям.
Использование Host-based protection и User- Разделы отправленной вами статьи о защите на основе являются хорошими способами предотвращения нежелательного доступа ко всей Samba, включая общий ресурс IPC $ из ненадежных источников, и вполне могут дать вам все, что вам нужно.
Однако есть и другие советы. в указанных разделах этой страницы: https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
Разделы для просмотра:
«Перечисление общих ресурсов на основе доступа»
"просматриваемый" - установка на "нет" для всех общих ресурсов (кроме IPC $) должна препятствовать их отображению, но окна все равно должны иметь доступ к
"гость нормально" - проверьте, предотвращает ли установка значения "нет" для общего ресурса IPC $ Windows обращается к другим общим ресурсам
Если вы используете winbind, установите следующие параметры, чтобы предотвратить их перечисление:
winbind enum groups = no
winbind enum users = no