- Чому небезпечно запускати з root правами VLC, Tor Browser, Google Chrome, Chromium і т.д.?
- Наскільки небезпечно працювати в облікового запису користувача root?
- 1. Створення і робота під звичайним користувачем в Kali Linux
- 2. Обхід обмеження запуску для будь-яких програм в облікового запису root, запускаючи їх від звичайного...
- Додавання ярликів на робочий стіл GNOME 3 в Kali Linux
- 3. Способи видалення перевірки запуску програми від root'а
- висновок
Для виконання деяких програм потрібні підвищені привілеї - повноваження супер, права root. А деякі програми навпаки - не хочуть запускатися з підвищеними привілеями. Серед останніх на вскидку я можу назвати VLC, Tor Browser , Google Chrome, Chromium.
Чому небезпечно запускати з root правами VLC, Tor Browser, Google Chrome, Chromium і т.д.?
Головне пояснення - заходи безпеки. Наприклад, в теорії можна так сформувати медіа потік для VLC media player, що він буде якимось чином загрожувати вашій системі - наприклад, дозволить віддалено виконати команду.
Аналогічно з веб-браузерами - в них регулярно знаходять різні уразливості, одна з цих вразливостей може дозволити виконувати команди або робити зміни на файлову систему, що, при наявності достатніх прав у веб-браузера, може привести до компрометації (злому) системи користувача, у якого він запущений.
Безумовно, це правильні міркування, але наскільки підвищитися рівень загрози при запуску пари додаткових програм з правами суперкористувача в системі, де все інше (тобто взагалі все, в тому числі інший браузер і інший медіа програвач), працюють з правами root? На мій погляд, це більше риторичне, а не практичне питання.
Наскільки небезпечно працювати в облікового запису користувача root?
У багатьох шанованих джерелах (веб-ресурсах, книгах) можна зустріти думку, що робота під root - це так погано, що вже майже ппц. Це не просто погано - це вже як в Windows. Також є поширена думка, що Linux - це якась невразливим система і вам нічого не загрожує, якщо ви працює під звичайним користувачем (по крайней мере, там точно не потрібен антивірус).
Обидві ці позиції дивні. Для виконання команди, що робить файл виконуваним будь-яким користувачем, не потрібні права рута:
chmod + x / home / user / шлях / до / файлу
Для встановлення автозапуску через crontab -e від імені звичайного користувача не потрібні права root'а. Тому приблизно такий запис cron може додати файл в автозавантаження з правами поточного користувача:
@reboot / home / user / шлях / до / файлу
Примітка: @reboot в cron працює не завжди (враховуйте, якщо робите свої тести), але це не є проблемою. Також файл повинен бути виконуваним і якщо це скрипт, то в ньому повинен бути шебанк (наприклад, #! / bin / bash).
Також не потрібні права рута для запису в файл ~ / .bashrc (це є зразковим аналогом автозапуску, але спрацьовує тільки при відкритті консолі).
Одного перерахованого досить, щоб встановити на систему бекдор, який прийматиме команди від віддаленого атакуючого і мати доступ до всіх файлів користувача, під яким зроблений вхід, а також доступ на читання до деяких файлів загальносистемних налаштувань.
Само-собою зрозуміло, маючи права суперкористувача можна скомпрометувати систему не тільки для поточного, але і для всіх користувачів, збільшити скритність (наприклад, використовуючи низькорівневі методи підключення і тунелювання, методи руткітів для приховування і т.д.). Але якщо вже в веб-браузері є дірка, що дозволяє виконувати команди з правами звичайного користувача або мати доступ до файлової системи з правами звичайного користувача, то можлива компрометація цього звичайного (НЕ root) користувача. Навіть якщо у нього немає прав на виконання sudo.
Другою причиною, по якій рекомендують використовувати звичайну обліковий запис - неможливість нашкодити системі. Це дійсно так. Але це супердостоінство, на жаль, майже повністю нівелюється, якщо у користувача все-таки є право використовувати sudo. Можу показати на своєму власному прикладі, одного разу я переплутав команду
rm -rf ~ / bin /
з командою:
rm -rf / bin /
Оскільки я був звичайним користувачем, то система не дала мені виконати другу команду. Але в піддиректорії bin, яка розміщується в домашній папці, я запускав програми від суперкористувача. Я подумав, що якась із цих програм створила файл, на видалення якого у мене не вистачає прав. І перезапустив rm -rf / bin / додавши до неї sudo. Зрозуміло, що така неуважність коштувала мені витраченого на переустановку системи часу.
Проте, якщо ви вважаєте, що в Kali Linux робота під root'ом в додатках небезпечна, то варто задуматися про зміну учеткі root на звичайного користувача. Це автоматично вирішить проблему з запуском VLC, Tor Browser, Chromium і т.п. під обліковим записом root.
1. Створення і робота під звичайним користувачем в Kali Linux
Недолік цього методу: перед багатьма командами, які ви звикли запускати без sudo, потрібно буде додавати це саме sudo.
Створення нового користувача в Kali Linux:
useradd -m -G sudo -s / bin / bash new_user
Замініть new_user на бажане ім'я.
Встановіть для нього пароль:
passwd new_user
Також замініть new_user на вбрання раніше ім'я користувача.
Перезавантажитеся і зайдіть під тільки-що створеним користувачем.
Перевагою методу є раз і назавжди рішення проблеми з програмами, які не хочуть запускатися під рутом, а також можливість повноцінного використання Cinnamon.
2. Обхід обмеження запуску для будь-яких програм в облікового запису root, запускаючи їх від звичайного користувача
Linux дозволяє вам запускати програми від імені інших користувачів. Тобто ви як і раніше можете використовувати обліковий запис root, але робити запуск проблемних програм від імені звичайного користувача. Для цього створимо його:
useradd -m -G sudo -s / bin / bash new_user
Замініть new_user на бажане ім'я.
Далі дії дуже схожі - установка програми, пошук шляху до виконуваного файлу, створення ярлика. Зрозумівши принцип, ви зможете застосовувати цей метод для будь-якої програми, яка не працює під рутом.
Ми будемо використовувати команду:
xhost + && su -c / шлях / до / файла / запуску new_user && xhost -
У ній / шлях / до / файла / запуску міняйте на файл, який будете шукати за допомогою команди which, new_user на ім'я користувача, якого ви створили.
Як запустити Chromium в Kali Linux
Встановіть пакет:
apt-get install chromium
Знайдіть шлях файлу запуску:
which chromium / usr / bin / chromium
Сформуйте команду:
xhost + && su -c / usr / bin / chromium new_user && xhost -
Зробіть перевірку:
Створіть ярлик:
gedit Робочий \ стіл / Chromium.desktop
У відкрився текстовий файл скопіюйте-вставте наступне:
[Desktop Entry] Name = Chromium Encoding = UTF-8 Exec = sh -c "xhost + && su -c / usr / bin / chromium new_user && xhost -" Icon = / usr / share / icons / hicolor / 256x256 / apps / chromium.png StartupNotify = false Terminal = false Type = Application
Як запустити VLC в Kali Linux
Встановіть пакет:
apt-get install vlc
Знайдіть шлях файлу запуску:
which vlc / usr / bin / vlc
Сформуйте команду і зробіть перевірку:
xhost + && su -c / usr / bin / vlc new_user && xhost -
Створіть ярлик:
gedit Робочий \ стіл / VLC.desktop
У відкрився текстовий файл скопіюйте-вставте наступне:
[Desktop Entry] Name = VLC Encoding = UTF-8 Exec = sh -c "xhost + && su -c / usr / bin / vlc new_user && xhost -" Icon = / usr / share / icons / hicolor / 256x256 / apps / vlc.png StartupNotify = false Terminal = false Type = Application
Як запустити Google Chrome в Kali Linux
Викачуємо Google Chrome з офіційного сайту: https://www.google.ru/intl/ru/chrome/browser/desktop/index.html
Для 64-бітної калі завантажуєте файл «64 bit .deb (для Debian / Ubuntu)».
Перейдіть в папку зі скачаними файлом:
cd Завантаження /
Встановіть скачав файл:
dpkg -i google-chrome-stable * .deb apt-get install -f
Знайдіть шлях файлу запуску:
which google-chrome / usr / bin / google-chrome
Сформуйте команду і зробіть перевірку:
xhost + && su -c / usr / bin / google-chrome new_user && xhost -
Створіть ярлик:
gedit Робочий \ стіл / Google_Chrome.desktop
У відкрився текстовий файл скопіюйте-вставте наступне:
[Desktop Entry] Name = Google Chrome Encoding = UTF-8 Exec = sh -c "xhost + && su -c / usr / bin / google-chrome new_user && xhost -" Icon = / usr / share / icons / hicolor / 256x256 /apps/google-chrome.png StartupNotify = false Terminal = false Type = Application
Додавання ярликів на робочий стіл GNOME 3 в Kali Linux
За замовчуванням в Kali Linux немає інструментів для зручного створення ярликів на робочому столі. Для створення ярлика на робочому столі в GNOME 3 можна скористатися звичайним текстовим редактором. Створіть текстовий файл на робочому столі з розширенням .desktop. У цей файл скопіюйте наступний шаблон:
Name = Ім'я програми Encoding = UTF-8 Exec = sh -c "Команда запуску" Icon = Пут до файлу із зображенням StartupNotify = false Terminal = false Type = Application
У ньому потрібно замінити:
- Ім'я програми - на ім'я, яке ви хочете, щоб відображалося для ярлика
- Команда запуску - шлях до виконуваного файлу, можна використовувати поєднання команд для запуску (як в наших прикладах)
- Пут до файлу із зображенням - графічний файл, який буде іконкою для ярлика.
Я шукав ці файли прямо в системі, використовуючи програму locate (За посиланням приклади використання цієї програми). Після установки нового пакета, поновіть базу даних:
updatedb
Щоб знайти потрібні зображення, я використовував такі команди як:
locate -b -r 'chromium. * png' locate -b -r 'vlc. * png' locate -b -r 'chrome. * png'
При першому запуску ярлика з'явиться таке попередження:
Натисніть «Вважати перевіреним».
3. Способи видалення перевірки запуску програми від root'а
Крім універсального способу - запуск програми від звичайного користувача, або перехід на використання облікового запису звичайного користувача, у кожної програми є свої варіанти обходу. Наприклад, загрузчиком Tor Browser є скрипт (звичайний текстовий файл), в якому проводиться перевірка, чи запущена програма з правами рута. Тому досить в цьому файлі (/ opt / Browser / start-tor-browser) рядок «id -u» замінити, наприклад, на «echo 1» і Tor Browser буде запускатися від рута.
Для Chromium і Google Chrome є ключ --no-sandbox, який дозволяє відкривати ці програми в Kali Linux без додаткових маніпуляцій:
chromium --no-sandbox google-chrome --no-sandbox
Запуск програми VLC здійснюється бінарним файлом, який можна пропатчити наступною командою:
sed -i 's / geteuid / getppid /' / usr / bin / vlc
Також VLC можна скомпілювати самому з прапором --enable-run-as-root.
висновок
Отже, в цій статті:
- ми спробували оцінити додаткові ризики небезпеки, що виникають при запуску програм з правами суперкористувача;
- навчилися створити звичайних користувачів в Linux;
- дізналися, як можна запустити VLC, Google Chrome, Chromium і будь-які інші програми в Kali Linux будучи root'ом (про те, як запустити Tor Browser в Kali Linux дивіться тут );
- (Бонус) навчилися створювати призначені для користувача ярлики на робочому столі Kali Linux.
Якщо у вас труднощі з якоюсь іншою програмою, яка не хоче запускатися в Kali Linux під рутом, то пишіть її назву тут в коментарях - буде додана інструкція для вирішення цієї проблеми.
Пов'язані статті:
Наскільки небезпечно працювати в облікового запису користувача root?Наскільки небезпечно працювати в облікового запису користувача root?