Запуск Nmap на Ubuntu

Я запускаю скрипт python, который выполняет nmap по заданному набору параметров. Дело в том, чтобы автоматизировать это, поэтому мне не нужно вообще взаимодействовать с кли. Каждый раз, когда я запускаю свой сценарий, мне выводится сообщение об ошибке:

'You requested a scan type which requires root priveleges.\nQUITTING!\n'

Я понимаю, что могу поставить «sudo» перед моей командой, но цель моего скрипта - не взаимодействовать с кли. Я передал свой скрипт моему пользователю, но все равно имею ту же ошибку. Есть ли способ, с помощью которого я могу запускать nmap в качестве суперпользователя каждый раз, не прибегая к команде sudo? Вся помощь ценится!

3
задан 9 August 2017 в 18:12

4 ответа

Одним из решений было бы добавить эту конкретную команду в файл sudoers,

Cmnd_Alias NMAP = /path/to/nmap, /path/to/script username ALL=(ALL:ALL) NOPASSWD: NMAP

. Кое-что по этой строке позволит вам сценарировать ваши команды sudo, но не нужно вводить пароль для этой команды. Вы можете просто сделать это для этого скрипта / пользователя, чтобы все в скрипте выполнялось как root, или вы могли бы сделать это специально для команды nmap и иметь много sudo записей в вашем скрипте.

Выберите свой яд ...

0
ответ дан 18 July 2018 в 08:48

Nmap требует прав root для многих вещей (см. ниже). Из-за этого возникает соблазн использовать различные схемы (sudo NOPASSWD, setuid и т. Д.), Чтобы позволить пользователям запускать его без предоставления пароля root. Но это чрезвычайно опасно, так как тривиально использовать Nmap для запуска любой другой команды или оболочки. Например: nmap --script <(echo 'os.execute("/bin/sh")')

К счастью, Nmap имеет экспериментальную поддержку возможностей Linux. Установив Nmap с возможностями CAP_NET_RAW, CAP_NET_ADMIN и CAP_NET_BIND_SERVICE, вы можете более безопасно разрешать непривилегированным пользователям запускать его. Сам Nmap не может обнаружить, что он обладает этими возможностями, поэтому вы должны использовать параметр --privileged, чтобы сообщить ему, чтобы попытаться использовать их независимо от UID.

Nmap требует прав root для всех, кроме:

TCP Connect scan (-sT) Имя обратного DNS («ping»), за исключением TCP Connect (-PS) Обнаружение версии сервиса и приложения (-sV) Большинство сценариев Nmap Scripting Engine (NSE)
2
ответ дан 18 July 2018 в 08:48

Одним из решений было бы добавить эту конкретную команду в файл sudoers,

Cmnd_Alias NMAP = /path/to/nmap, /path/to/script username ALL=(ALL:ALL) NOPASSWD: NMAP

. Кое-что по этой строке позволит вам сценарировать ваши команды sudo, но не нужно вводить пароль для этой команды. Вы можете просто сделать это для этого скрипта / пользователя, чтобы все в скрипте выполнялось как root, или вы могли бы сделать это специально для команды nmap и иметь много sudo записей в вашем скрипте.

Выберите свой яд ...

0
ответ дан 24 July 2018 в 19:10
  • 1
    Имейте в виду, что Nmap является тривиальным для преобразования в оболочку, поэтому предоставление доступа sudo к Nmap такое же, как предоставление пользователю полного доступа к корню. Это по той же причине, что Nmap не должен быть установлен «suid root». – bonsaiviking 10 August 2017 в 17:22
  • 2
    Именно поэтому вы выбираете, кому будет разрешен доступ (помните, что OP имеет полный доступ к sudo уже, что означает доступность корневой оболочки, так что это не столько проблема). Если бы вопрос заключался в том, как разрешить не-частному пользователю, который должен оставаться непринятым, и не имеет доступа к sudo для возможности запуска nmap привилегированным способом, тогда это необходимо будет учитывать. – ben-Nabiy Derush 10 August 2017 в 17:28

Nmap требует прав root для многих вещей (см. ниже). Из-за этого возникает соблазн использовать различные схемы (sudo NOPASSWD, setuid и т. Д.), Чтобы позволить пользователям запускать его без предоставления пароля root. Но это чрезвычайно опасно, так как тривиально использовать Nmap для запуска любой другой команды или оболочки. Например: nmap --script <(echo 'os.execute("/bin/sh")')

К счастью, Nmap имеет экспериментальную поддержку возможностей Linux. Установив Nmap с возможностями CAP_NET_RAW, CAP_NET_ADMIN и CAP_NET_BIND_SERVICE, вы можете более безопасно разрешать непривилегированным пользователям запускать его. Сам Nmap не может обнаружить, что он обладает этими возможностями, поэтому вы должны использовать параметр --privileged, чтобы сообщить ему, чтобы попытаться использовать их независимо от UID.

Nmap требует прав root для всех, кроме:

TCP Connect scan (-sT) Имя обратного DNS («ping»), за исключением TCP Connect (-PS) Обнаружение версии сервиса и приложения (-sV) Большинство сценариев Nmap Scripting Engine (NSE)
2
ответ дан 24 July 2018 в 19:10

Другие вопросы по тегам:

Похожие вопросы: