Насколько важен пароль sudo?

25

Я знаю, что пароль sudo защищает мой компьютер от локального взлома кем-то, имеющим физический доступ к нему ( правка: на самом деле это не так ). Мой пароль достаточно силен для этой цели, но я знаю, что он недостаточно силен, если кто-то может его переборить.

Кто- нибудь может получить доступ к моему компьютеру в режиме root с использованием моего пароля sudo без физического доступа к компьютеру в стандартной установке Ubuntu на рабочем столе?

  1. Если у вас есть доступ к сети, определенно да (краткий ответ)
  2. Если вы не уделяете достаточного внимания безопасности, да (длинный ответ)
  3. Если у вас запущен «ssh», и нет 2FA , да ( комментарии и ответы)
  4. Можно получить доступ к вашему компьютеру как root без пароля sudo / user
mxdsp
источник
буквально «кто-нибудь», включая меня, или, например, какого-нибудь сопровождающего ppa, которому я доверяю, кого-либо еще.
mxdsp
1
они могут получить доступ через SSH и sudo для root.
Айзуддин Зали
1
в точку. чтобы укрепить это, вы можете использовать 2FA. Следуйте этому руководству
Айзуддин Зали
1
тогда вы спасены от атаки SSH. Есть много возможных методов взлома, которые люди используют.
Айзуддин Зали
1
Просто не существует такого понятия, как «пароль sudo».
Хоббс

Ответы:

34

Я знаю, что пароль sudo защищает мой компьютер от локального взлома кем-либо, имеющим физический доступ к нему.

Я не хочу вас сильно пугать, но если кто-то имеет физический доступ, вы передаете ему доступ независимо от того, насколько надежен ваш пароль. Для того, чтобы кто-то смог сменить ваш пароль root, потребуется 1 перезагрузка (это можно сделать из «grub rescue» без необходимости ввода вашего текущего пароля). Между прочим: этот метод считается действительным и функциональным, а также принятым риском для безопасности (в противном случае вы никогда не сможете починить вашу систему в случае, если пароль действительно будет взломан).

но я знаю, что он недостаточно силен, если кто-то может перебить его дистанционно.

В игру вступает еще кое-что: МАРШРУТИЗАТОР должен быть достаточно умен, чтобы блокировать доступ извне, если это повторный запрос, запрашивающий ту же информацию в течение короткого периода времени. По сути, у вас есть атака DOS (или DDOS, если на вас атакуют 2+ компьютера). Маршрутизатор должен прервать это соединение и установить период ожидания, прежде чем принимать новые запросы от этого соединения.

Кто-нибудь может получить доступ к моему компьютеру в режиме root с использованием моего пароля sudo без физического доступа к компьютеру в стандартной установке Ubuntu на рабочем столе?

Сначала они должны подключиться, а затем предоставить пароль sudo. Режим «root» отключен, и вы не можете напрямую войти в «#» приглашение.

Обратите внимание, что возможно злоупотреблять услугой. Если у вас на этом компьютере запущен «ssh», и они могут «ssh» войти в вашу систему, и вы можете указать ваше имя пользователя и пароль для этого пользователя (и, поскольку это также пользователь с правами администратора и ваш пароль sudo), они могут получить доступ к вашему компьютеру. и испортить это. Кстати: если они делают это так, они должны сначала знать вашу систему (например, ваш пароль).

Но тогда возникает проблема с этим (и любым другим методом): как они получили ваш пароль? Они не могут получить его из вашей системы. И вообще гадание не стоит хлопот. Если это было социально спроектировано ... тогда ваша проблема есть, а не с моделью безопасности вашей системы, Ubuntu или Linux в целом.

Пока ваш пароль sudo ваш, у вас все будет хорошо. И вам будет даже лучше, если это надежный пароль (может быть, его легко запомнить, но другие не догадываются). Пример, который я использовал ранее при обсуждении этого: если вашу собаку называют «Abwegwfkwefkwe», используя «Abwegwfkwefkwe» в качестве пароля, то это ПЛОХО, даже если она выглядит хорошо (поскольку кто-то может спросить вас: «как зовут вашу собаку», и они попробуют это как свободная догадка). Если вы не имеете никакого отношения к «Abwegwfkwefkwe», это хороший пароль.

Лучший совет, который я могу дать:

  • не вводите свой пароль администратора, когда вас об этом просят, если только вы не знаете, что его ожидали. Если вы открываете браузер и у вас появляется всплывающее окно, которое выглядит как наш «запрос пароля учетной записи администратора» ... остановитесь ... и подумайте сначала.

  • не оставляйте свою систему без присмотра, когда льготный период "sudo" активен. sudo --reset-timestampудаляет текущий льготный период и снова запросит пароль при следующем использовании «sudo». Блокировка экрана, когда вы идете AFK.

  • не устанавливайте сервисы или программное обеспечение для удовольствия. Если вам не нужно sshне устанавливать ssh, если вы не используете веб-сервер, не устанавливайте веб-сервер. И посмотрите на работающие в данный момент сервисы. Если вы не используете BT на ноутбуке, отключите его. Если вы не используете веб-камеру, отключите ее (если она активна). Удалите программное обеспечение, которое вы больше не используете.

  • и для действительно параноика (и да, Paranoid Panda, я смотрю на тебя): меняй пароль очень часто. Вы даже можете установить охотников за руткитами, чтобы проверить их на несанкционированный доступ.

  • резервное копирование важных данных на что-то, что вы держите в автономном режиме. Поэтому, даже если вы найдете кого-то в своей системе, вы можете отформатировать его и начать заново с новой установкой и восстановлением ваших данных.

Rinzwind
источник
2
Вы можете сократить sudo --reset-timestampдо sudo -k, или sudo -Kдля действительно параноик (необходимо только , если злоумышленник может установить системное время на произвольные значения, в какой момент вы , вероятно , уже потеряли).
Кевин
Jups. Я использовал длинную версию, так что понятно, что она делает. "-k" действительно делает то же самое.
Rinzwind
1
@mxdsp: Шифрование может препятствовать тому, чтобы люди читали содержимое зашифрованных разделов, если пароль достаточно силен, но может быть возможно получить ключ шифрования из работающего или недавно выключенного компьютера. Крипто также является очень быстро развивающейся областью, и вам нужно быть в курсе новых разработок, чтобы ваше шифрование не устарело и не было легко взломано.
Кевин
1
@mxdsp да. С одной стороны: вы можете отформатировать диск, и когда данные исчезнут ... вы один с проблемами.
Rinzwind
1
Первая часть неявно предполагает полное шифрование диска.
От
6

Да, они могут.

Хотя есть несколько способов сделать это, и перебор sudoпароля, вероятно, не первый.

Во-первых, sudoпароль - это пароль вашего пользователя; так что на самом деле им нужно получить ваш пароль.

Во-вторых, взлом пароля пользователя с использованием грубой силы для доступа к системе, вероятно, является последним средством.

Есть более элегантные (но в основном более эффективные) способы проникновения в другую систему.

Обычно злоумышленник либо просто идет и пытается использовать наиболее распространенные уязвимости (наиболее известными из которых, вероятно, являются получение пользовательской оболочки любыми средствами и использование ShellShock для получения корневой оболочки), либо выполняет лучшую работу по следующим направлениям:

  • Сканирование открытых портов в системе для получения такой информации, как:
    • Версия операционной системы
    • Версия запущенных сервисов
  • Использование ошибок известной операционной системы или запущенных служб (переполнение буфера, ...) для получения как минимум пользовательской оболочки, а затем попытка получить корневую оболочку (опять же, возможно, использование ShellShock)

Грубое принуждение к sudoпаролю / user может быть попыткой в ​​том случае, если корневая оболочка не может быть получена иным способом, но, например, использование службы, работающей от имени root, не потребует от злоумышленника взломать sudoпароль / user.

кос
источник
1
Спасибо. вкратце, это означает, что злоумышленнику не нужен пароль sudo для получения root-доступа?
mxdsp
2
@mxdsp Точно. Скажем так: если злоумышленнику удастся каким-либо образом получить пользовательскую оболочку sudoer (например, с помощью работающей программы пользователя sudoer), он может использовать известные эксплойты (в моем ответе я упомянул самую печально известную), чтобы получить корневую оболочку, минуя необходимость пользователя / sudoпароль. Еще лучше, если ему удастся использовать службу, работающую с правами root, он будет напрямую root.
Кос
1
@mxdsp Теперь мы достаточно обобщаем, но посмотрите это видео, чтобы понять, например, как пользователь без sudoправ (= пользователь, под которым вошел злоумышленник, но злоумышленник не знает пароля) может получить root Оболочка просто за счет использования известных ошибок (в данном случае печально известного ShellShock).
Кос
1
@mxdsp На стороне не я имел в виду пользователя sudoers, просто пользователь. Это не обязательно, я просто думал слишком много вещей одновременно.
Кос
3
  1. Если я узнал что-нибудь за последние несколько лет о безопасности, то одно: нет ничего невозможного .

  2. Пока у вас есть доступ к сети, безусловно. Каждая служба, работающая в вашей системе, к которой можно получить доступ по сети, теоретически уязвима и, следовательно, является потенциальной слабостью.

И поэтому для злоумышленника с достаточным количеством идей это возможно. Вы можете сделать свою систему максимально безопасной, но никогда не достигнете 100% безопасности.

Поэтому важно оценить, что возможно с оправданными техническими усилиями и что защищает вас так хорошо, что вы сами больше не можете работать.

AB
источник
У меня есть доступ к сети. Может быть более конкретно о том, насколько вероятна такая атака?
mxdsp
1
использовать двухфакторную аутентификацию. Вам нужно отредактировать PAM.D и так далее.
Айзуддин Зали
@ Arronical ссылка также с этого форума и очень хорошее руководство.
Айзуддин Зали
@ Arronical, я поставил это в комментарии к вопросу. Это руководство
Айзуддин Зали
Извините @AizuddinZali Я не обновил страницу!
Arronical
2

Я знаю, что пароль sudo защищает мой компьютер от локального взлома кем-то, имеющим физический доступ к нему (правка: на самом деле это не так). Мой пароль достаточно силен для этой цели, но я знаю, что он недостаточно силен, если кто-то может его переборить. Кто-нибудь может получить доступ к моему компьютеру в режиме root с использованием моего пароля sudo без физического доступа к компьютеру в стандартной установке Ubuntu на рабочем столе?

Пароль sudo предназначен не только для локальной защиты, его цель - добавить дополнительный уровень безопасности для использования привилегий root. Хорошее обсуждение можно найти здесь /superuser//a/771523/467316

Ваш пароль может быть не таким надежным, как вы думаете. Прямо сейчас я взламываю 20-40% хешей Active Directory моего клиента для тех, кого я видел раньше, те, у кого есть неправильные правила паролей, получают взломанные 70%. Я рекомендую 16-ти символьные сложные пароли. Графические карты oclHashcat и Radeon могут нанести большой урон. Добавьте все дампы паролей от каждого взлома за последние 5 лет, и вы получите хороший словарь для работы.

Если вы вообще используете SSH, внесите некоторые изменения в sshd_config

sudo nano /etc/ssh/sshd_config

MUSTS прямо из ворот (последний, чтобы отключить FTP-сервер, если вы его не используете).

Protocol 2
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 5
#Subsystem sftp /usr/lib/openssh/sftp-server

Сохраните его, перезапустите SSH

sudo service ssh restart

Используйте шифрование с открытым ключом. Начните с создания ключа на удаленной машине (используя puttygen или любой другой вариант, доступный в вашей ОС). Скопируйте открытый ключ на ваш компьютер с Ubuntu под пользователем, которого вы хотите авторизовать как файл author_keys (вам, вероятно, придется его создать)

sudo nano /home/yourdumbusername/.ssh/authorized_keys

скопируйте открытый ключ в этом формате

ssh-rsa 23r0jfjlawjf342rffjfa89pwfj8ewfew98pfrfj8428pfwa9fupfwfcajwfpawf8rfapfj9pf892jpfjpwafj8a where-ever-you-have-your-private-key-for-your-own-notes

сохраните его и настройте sshd_config, чтобы разрешить вход с открытым ключом

sudo nano /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

сохранить и перезапустить SSH

sudo service ssh restart

Попробуйте SSHing к вашему хосту Ubuntu с вашего компьютера с закрытым ключом, используя шифрование с открытым ключом. Если все прошло хорошо, вернитесь на хост Ubuntu и отключите аутентификацию по паролю.

sudo nano /etc/ssh/sshd_config

PasswordAuthentication no

Сохранить и перезапустить SSH

sudo service ssh restart

Попробуйте sshing с компьютера с закрытым ключом снова, чтобы подтвердить.

Хотите добавить больше? настройте непривилегированную учетную запись, выключите PermitRootLogin no, перезапустите ssh, добавьте свой открытый ключ к авторизованным ключам новой учетной записи, войдите в качестве непривилегированной учетной записи, su в свою корневую или привилегированную учетную запись, когда вам нужно получить root-права или привилегировать свой путь через вещи.

sonofapharmacist
источник
2

Назначение sudo не связано с паролем, но вместо этого дает определенным пользователям возможности root-ish, ограничивая других на компьютере, не требуя от них представления имени пользователя root (пароль / ключ / токен безопасности / и т.д.). Например, на моей работе, рабочие могут только запускать / выключать / устанавливать и обновлять свои станции (из вето хранилища компании) через sudo. Им не предоставляются другие привилегии root, такие как целенаправленное удаление /, форматирование устройств, добавление и удаление пользователей, решение о том, какие модули ядра должны быть занесены в черный список, а какие работают в crontab (и т. Д., И т. Д., И т. Д.). В то время как у вас дома sudo обеспечивает полный доступ к машине. Что касается пароля, в действительности это пароль вашей учетной записи, который требуется sudo (тот самый, который вы использовали бы для входа в систему, если автологин не включен).

Плохой совет : если вы хотите сделать root обычной учетной записью в Unix с поддержкой sudo (linux / apple osx), выполните следующее

sudo -s
passwd
Enter your unix password:

На данный момент root имеет обычный пароль, и вы можете просто выйти из системы и войти в систему как root с упомянутым паролем «по старинке».

Что касается безопасности, если одна программа (скажем, веб-сервер, mysql, php daemon, sshd) запускается как повышенная учетная запись ... скажем, root и имеет известный эксплойт, то злоумышленникам могут не понадобиться никакие учетные данные безопасности для получения доступа. Они могут использовать уязвимость программы и просто создать новую оболочку из этой программы, работающую от имени пользователя root. Однако это довольно редко, поскольку менеджеры дистрибутивов знают о подобных проблемах и отлично справляются с задачей создания хорошо продуманной и обычно безопасной среды по умолчанию.

В другой операционной системе операция, похожая на sudo, будет щелкнуть правой кнопкой мыши и запускаться от имени системного администратора (или для получения привилегий UAC).

user283885
источник