Я запускаю скрипт python, который выполняет nmap по заданному набору параметров. Дело в том, чтобы автоматизировать это, поэтому мне не нужно вообще взаимодействовать с кли. Каждый раз, когда я запускаю свой сценарий, мне выводится сообщение об ошибке:
'You requested a scan type which requires root priveleges.\nQUITTING!\n'
Я понимаю, что могу поставить «sudo» перед моей командой, но цель моего скрипта - не взаимодействовать с кли. Я передал свой скрипт моему пользователю, но все равно имею ту же ошибку. Есть ли способ, с помощью которого я могу запускать nmap в качестве суперпользователя каждый раз, не прибегая к команде sudo? Вся помощь ценится!
Одним из решений было бы добавить эту конкретную команду в файл sudoers,
Cmnd_Alias NMAP = /path/to/nmap, /path/to/script
username ALL=(ALL:ALL) NOPASSWD: NMAP
. Кое-что по этой строке позволит вам сценарировать ваши команды sudo, но не нужно вводить пароль для этой команды. Вы можете просто сделать это для этого скрипта / пользователя, чтобы все в скрипте выполнялось как root, или вы могли бы сделать это специально для команды nmap и иметь много sudo записей в вашем скрипте.
Выберите свой яд ...
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)Одним из решений было бы добавить эту конкретную команду в файл sudoers,
Cmnd_Alias NMAP = /path/to/nmap, /path/to/script
username ALL=(ALL:ALL) NOPASSWD: NMAP
. Кое-что по этой строке позволит вам сценарировать ваши команды sudo, но не нужно вводить пароль для этой команды. Вы можете просто сделать это для этого скрипта / пользователя, чтобы все в скрипте выполнялось как root, или вы могли бы сделать это специально для команды nmap и иметь много sudo записей в вашем скрипте.
Выберите свой яд ...
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)