Наскільки важливий пароль sudo?


25

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

Чи може хтось отримати доступ до мого комп'ютера в кореневому режимі, використовуючи мій пароль sudo без фізичного доступу до комп'ютера, на стандартній установці на робочому столі Ubuntu?

  1. Якщо у вас є доступ до мережі, обов'язково так (коротка відповідь)
  2. Якщо ви не приділяєте належної уваги безпеці, так (довга відповідь)
  3. Якщо у вас "ssh" працює, а немає 2FA , так ( коментарі та відповіді)
  4. Ви можете отримати доступ до свого комп'ютера як root без пароля sudo / користувача

буквально "будь-хто", включаючи мене, або, наприклад, якогось підтримуючого пристрою Ppa, якому я довіряю, будь-кого іншого.
mxdsp

1
вони можуть отримати доступ через SSH та sudo до root.
Айзуддін Залі

1
точно. для затвердіння цього ви можете використовувати 2FA. Дотримуйтесь цього керівництва
Айзуддін Залі

1
тоді ви врятуєтесь від нападу SSH. Існує багато можливих технік злому, якими користуються люди.
Айзуддін Залі

1
Просто немає такого поняття, як "пароль судо".
варення

Відповіді:


34

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

Я не хочу вас занадто сильно лякати, але якщо хтось має фізичний доступ, ви передали їм доступ незалежно від того, наскільки міцний ваш пароль. Хтось займе 1 перезавантаження для того, щоб хтось зміг змінити ваш кореневий пароль (це можна зробити за допомогою "рятувальної роботи" без необхідності вводити поточний пароль). До речі: цей метод вважається дійсним і функцією, і прийнятим ризиком для безпеки (інакше ви ніколи не зможете виправити вашу систему, якщо пароль зіпсується).

але я знаю, що він недостатньо сильний, якщо хтось може його віддалено насильницько.

Тут грає щось інше: ROUTER повинен бути досить розумним, щоб заблокувати доступ ззовні, якщо це повторний запит, який вимагає тієї ж інформації протягом короткого періоду часу. В основному, у вас є атака DOS (або DDOS, якщо на вас нападають 2+ комп’ютери). Маршрутизатор повинен перервати це з'єднання та застосувати термін очікування, перш ніж приймати нові запити від цього з'єднання.

Чи може хтось отримати доступ до мого комп'ютера в кореневому режимі, використовуючи мій пароль sudo без фізичного доступу до комп'ютера, на стандартній установці на робочому столі Ubuntu?

Їх спочатку потрібно підключити, а потім надати пароль sudo. Режим "root" вимкнено, і ви не можете безпосередньо увійти в рядок "#".

Зверніть увагу, що можна зловживати послугою. Якщо у вас на цій машині працює "ssh", і вони можуть "ssh" у вашу систему, а також отримати ваше ім'я користувача та пароль для цього користувача (а оскільки він є адміністратором, ваш пароль sudo), вони можуть отримати доступ до вашої машини. і зіпсувати це. До речі: якщо вони роблять це так, вони повинні мати знання вашої системи (наприклад, ваш пароль).

Але тоді виникає проблема з цим (і будь-яким іншим методом): як вони отримали ваш пароль? Вони НЕ можуть отримати це з самої вашої системи. І взагалі гадати не варто біди. Якщо це було соціально розроблено ... то ваша проблема там, а не з моделлю безпеки вашої системи, Ubuntu або Linux взагалі.

Поки ваш пароль sudo у вас буде / має бути добре. І вам буде ще краще, якщо це надійний пароль (можливо, його легко запам’ятати, але не можна довідатися іншими). Приклад, який я використовував раніше, обговорюючи це: Якщо ваша собака названа "Abwegwfkwefkwe", використовуючи "Abwegwfkwefkwe" як пароль, це BAD, навіть якщо це виглядає добре (оскільки хтось може запитати вас: "як звуть вашу собаку", і вони намагаються це зробити як вільна здогадка). Якщо ви не маєте жодного відношення до "Abwegwfkwefkwe", це хороший пароль.

Найкраща порада, яку я можу дати:

  • не вводьте пароль свого адміністратора, коли його запитують, якщо ви не знаєте, що його очікували. Якщо ви відкриєте веб-переглядач і вам з'явиться спливаюче вікно, схоже на наше "прохання пароля облікового запису адміністратора" ... зупиніться ... і подумайте спочатку.

  • не залишайте вашу систему без нагляду, коли активний період "судо". sudo --reset-timestampвидаляє поточний пільговий період і знову запитає пароль при наступному використанні "sudo". Блокуйте екран, коли переходите AFK.

  • не встановлюйте для задоволення це послуги чи програмне забезпечення. Якщо вам не потрібно ssh, не встановлюйте ssh, якщо ви не використовуєте веб-сервер, не встановлюйте веб-сервер. Подивіться на поточні послуги. Якщо ви не використовуєте BT на ноутбуці, відключіть його. Якщо ви не використовуєте веб-камеру, відключіть її (якщо вона активна). Видаліть програмне забезпечення, яким ви більше не користуєтесь.

  • і для справді параноїка (і так, параноїда Панда, на яку я дивлюся): міняйте пароль кожен раз. Ви навіть можете встановити мисливців на руткіти, щоб перевірити на неналежний доступ.

  • створити резервну копію важливих даних на те, що ви зберігаєте в режимі офлайн. Тож навіть якщо ви знайдете когось у вашій системі, ви можете відформатувати його і почати спочатку з нової установки та відновлення ваших даних.


2
Ви можете скоротити sudo --reset-timestampдо sudo -kабо sudo -Kсправді параноїдального (лише необхідного, якщо зловмисник може встановити системний час на довільні значення, після чого ви, ймовірно, вже втратили).
Кевін

Скачки. Я використовував довгу версію, щоб було зрозуміло, що це робить. "-k" робить те ж саме.
Rinzwind

1
@mxdsp: Шифрування може завадити людям читати вміст зашифрованих розділів, якщо парольна фраза є досить сильною, але можливо отримати ключ шифрування із працюючого або недавно вимкнутого комп'ютера. Криптовалюта - це також дуже швидкозмінне поле, і вам потрібно буде бути в курсі нових розробок, щоб не шифрувати застарілі та легко порушуватися.
Кевін

1
@mxdsp так. Для одного: ви можете відформатувати диск, і коли даних не буде ... у вас є проблеми.
Rinzwind

1
Перша частина неявно передбачає відсутність повного шифрування диска.
otus

6

Так вони можуть.

Однак це є декілька способів, і грубе форсування sudoпароля, мабуть, не перше.

По-перше, sudoпароль - це пароль вашого користувача; тому дійсно те, що їм потрібно буде отримати, це ваш пароль.

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

Є й більш елегантні (але в основному більш ефективні) способи проникнення в іншу систему.

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

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

Насилка sudoпароля / користувача користувача може бути спробою у випадку, якщо кореневу оболонку не вдасться отримати інакше, але, наприклад, використання служби, що працює як root, не вимагатиме від зловмисника грубої сили sudoпароля / користувача.


1
Дякую. коротко, це означає, що зловмиснику не потрібен пароль sudo, щоб отримати кореневий доступ?
mxdsp

2
@mxdsp Рівно. Сказати так: якщо зловмиснику вдасться отримати будь-який спосіб оболонки користувача sudoer (наприклад, експлуатуючи запущену програму користувача sudoer), він може використати відомі подвиги (у своїй відповіді я згадав найбільш ганебних), щоб отримати кореневу оболонку, минаючи в обхід потреба користувача / sudoпароля. Ще краще, якщо йому вдасться скористатись службою, що працює під керуванням root, він безпосередньо кореня.
kos

1
@mxdsp Зараз ми досить узагальнюємо, але дивіться це відео, щоб зрозуміти, наприклад, як користувач без sudoправ (= ~ користувач, на який увійшов вхід нападника, але якому зловмисник не знає пароль) може отримати корінь оболонки, експлуатуючи відомі помилки (в даному випадку сумнозвісний ShellShock).
kos

1
@mxdsp З іншого боку, я не мав на увазі користувача sudoers, а просто користувача. Це не обов'язково, я просто думав надто багато речей одночасно.
kos

3
  1. Якщо я за останні кілька років дізнався про безпеку, то одне: нічого неможливого .

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

І тому для зловмисника з достатньою кількістю ідей це можливо. Ви можете зробити свою систему максимально захищеною, але ви не зможете досягти 100% безпеки.

Тому важливо оцінити, що можливо за допомогою виправданих технічних зусиль і що захищає вас так добре, що ви самі не можете більше працювати.


У мене є доступ до мережі. Чи може бути конкретніше щодо того, наскільки ймовірним може бути такий напад?
mxdsp

1
використовувати двофакторну автентифікацію. Вам потрібно відредагувати PAM.D тощо.
Айзуддін Залі

@Arronical посилання також з цього форуму, і дуже приємне керівництво.
Айзуддін Залі

@Arronical Я поставив це в коментарі до питання. Цей путівник
Айзуддін Залі

Вибачте @AizuddinZali я не оновив сторінку!
Арронічний

2

Я знаю, що пароль sudo захищає мій комп'ютер від локального злому того, хто має фізичний доступ до нього (редагувати: насправді, це не так). Мій пароль досить сильний для цієї мети, але я знаю, що він недостатньо сильний, якщо хтось може його віддалено змусити. Чи може хтось отримати доступ до мого комп'ютера в кореневому режимі, використовуючи мій пароль 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

ОБОВ'ЯЗКУВАТИ прямо з воріт (останній, щоб вимкнути ftp-сервер, якщо ви його не використовуєте)

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

Збережіть його, перезавантажте ssh

sudo service ssh restart

Використовуйте шифрування відкритого ключа. Почніть зі створення ключа на віддаленій машині (використовуючи puttygen або будь-який смак, який має Ваша ОС). Скопіюйте відкритий ключ на свою машину Ubuntu під користувачем, якого ви хочете увійти як файл авторизованих_колій (можливо, вам доведеться його створити)

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 ні, перезапустіть ssh, додайте ваш відкритий ключ до авторизованих_кіней нового облікового запису, увійдіть як непривілейований обліковий запис, su до вашого кореневого чи привілейованого облікового запису, коли вам потрібно буде викорінювати або привілейовувати свій шлях через речі.


2

Призначення sudo не пов'язане з паролем, а натомість надати певним користувачам можливості root-ish, обмежуючи інших на машині, не вимагаючи від них кореневих логінів (пароль / ключ / маркер безпеки / тощо). Наприклад, на моїй роботі щоденні працівники можуть лише запускати / вимикати / встановлювати та модернізувати свої станції (з репозитарію ветодів компанії) через sudo. Їм не надаються інші кореневі свободи, такі як цілеспрямоване видалення /, форматування пристроїв, додавання та видалення користувачів, вирішення, які модулі ядра мають бути у чорному списку або що працює у crontab (тощо, тощо, тощо). Перебуваючи вдома, ваше судо дозволяє отримати повний доступ до машини. Що стосується пароля, насправді потрібен пароль вашого облікового запису користувача (той самий, який ви використовували для входу, якщо автоматичний вхід не ввімкнено.

Погана порада : якщо ви хочете запустити звичайний обліковий запис на unido з підтримкою unix (linux / apple osx), запустіть наступне

sudo -s
passwd
Enter your unix password:

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

Що стосується безпеки, якщо одна програма (скажімо, веб-сервер, mysql, php daemon, sshd) працює як підвищений обліковий запис .. скажімо, root і має відомий експлуатування там, то зловмисникам може не знадобитися жодна облікова інформація про безпеку для отримання доступу. Вони можуть скористатися вразливістю програми та просто породити нову оболонку з цієї програми, що працює як root. Однак це трапляється досить рідко, оскільки дистрибутори знають про подібні проблеми і роблять непересічну роботу над створенням продуманого та, як правило, безпечного середовища за замовчуванням.

В іншій операційній системі аналогічна операція sudo буде клацанням правою кнопкою миші та запускається як системний адміністратор (або привілейвання привілеїв UAC).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.