23 апреля, 2024

Тонкая настройка Ubuntu. Часть 3 (Защита приложений и использование «песочниц»)

Содержание:

После того, как вы установили Ubuntu, соблюдая меры безопасности, и уменьшили вероятность сетевых атак на вашу систему, можно подумать о безопасности на уровне приложений. В случае открытия вредоносного файла в вашей системе злоумышленник сможет получить доступ к каждому файлу на вашем компьютере. Шансы хакеров сильно уменьшатся, если вы установите надлежащую защиту.

В третьей части нашей мини-серии по тонкой настройке Ubuntu вы узнаете, как работают репозитории Ubuntu, каких репозиториев вы должны избегать и как обновлять. Кроме того, вы узнаете, как импортировать дополнительные профили AppArmor, позволяющие ограничивать ресурсы, которые могут использовать приложения, и создавать изолированные «песочницы» для полной изоляции небезопасных приложений от операционной системы.

Если вы пропустили первые части этой серии статей, то обязательно их почитайте. Вы узнаете о мотивах, побудивших нас написать эту серию.

Шаг 1. Установите последние системные обновления

Часть работы по поддержанию вашей системы в защищенном состоянии сводится к установке последних обновлений пакетов и приложений.

В мире Windows вам приходилось скачивать и устанавливать нужные вам программы со случайных веб-сайтов. Эта практика по своей сути является крайне небезопасной. Неподписанные, непроверенные приложения, распространяемые одним источником, создают потенциал для «связанных» атак.

Linux обрабатывает процесс установки программного обеспечения по-разному. Ubuntu использует несколько репозиториев (серверов), которые содержат пакеты (программное обеспечение и зависимости), проверенные разработчиками Canonical, Ubuntu и командой безопасности. Однако не все репозитории Ubuntu проверяются командой Ubuntu.

Репозитории Ubuntu существуют в четырех категориях:

  • Main — основной репозиторий, содержащий приложения, которые являются свободным программным обеспечением. Оно может свободно распространяться и полностью поддерживается командой Ubuntu. Main включает в себя самые популярные и самые надежные приложения с открытым исходным кодом, многие из которых включены по умолчанию в дистрибутив Ubuntu. Программное обеспечение из Main — это вручную отобранные приложения, которые, по мнению разработчиков Ubuntu, сообщества и пользователей, являются наиболее важными и поддерживаются командой безопасности Ubuntu. Когда мы устанавливаем программное обеспечение из этого основного репозитория, мы можем быть уверены, что оно поставляется вместе с обновлениями безопасности и что поддержкой этого ПО занимается Canonical.
  • Universe — набор бесплатного программного обеспечения с открытым исходным кодом. В нем размещается практически каждая опенсорсная программа. Содержание этого репозитория формируют из целого ряда общедоступных источников. Canonical обеспечивает регулярные обновления пакетов безопасности для этого ПО. Популярные или хорошо поддерживаемые приложения перемещаются из Universe в Main, если они поддерживаются разработчиками, которые стремятся соответствовать стандартам, установленным командой Ubuntu.
  • Restricted — Ubuntu продвигает только свободное программное обеспечение, распространяемое по свободной лицензии. Однако они делают исключения для небольшого ряда инструментов и драйверов, которые позволяют устанавливать Ubuntu и его бесплатные приложения на обычное оборудование. Эти проприетарные драйверы хранятся в репозитории Restricted. Обратите внимание, что полная поддержка этого ПО может быть невозможной, поскольку разработчики Ubuntu самостоятельно не могут его исправлять. Единственное, что они могут делать — отправлять авторам этого ПО отчеты о проблемах. Разработчики Ubuntu будут использовать такое несвободное ПО только в крайнем случае, если нет другого способа использовать Ubuntu на конкретном железе.
  • Multiverse — содержит программное обеспечение, которое не является свободным, что означает, что требования к лицензированию этого программного обеспечения не соответствуют лицензионной политике Ubuntu. Ответственность за использование этого ПО и соблюдение лицензионных соглашений лежит на пользователях. Это программное обеспечение не поддерживается и обычно не может быть исправлено или обновлено. Используйте его на свой страх и риск.

Отключение небезопасных репозиториев

Перед обновлением каких-либо пакетов откройте окно «Программное обеспечение и обновления» и отключите репозитории «multiverse» и «restricted» на вкладке «Программное обеспечение Ubuntu». Эти репозитории распространяют программное обеспечение с закрытым исходным кодом. Оно не может быть проверено и иногда распространяется по несвободным (платным) лицензиям.

Читать также:  Metasploit для начинающего хакера. Часть 10 (ищем удаленные веб-страницы)

Затем перейдите на вкладку «Другое программное обеспечение» и снимите флажки с опции «Партнеры Canonical».

Отключение backport

Backport’ы — это способ выборочно предоставлять более новые версии программного обеспечения для более старых релизов Ubuntu. Чаще всего команда Backport’ов предоставляет новые версии standalone-приложений, которые можно безопасно обновлять и это не оказывает влияния на остальную часть системы. Однако команда безопасности Ubuntu не обновляет пакеты в Backport’ах. По этой причине рекомендуется их отключить. На вкладке «Обновление» убедитесь, что флажок «bionic-backports» не установлен.

По умолчанию Ubuntu должна ежедневно скачивать и устанавливать обновления безопасности.

Ручная проверка наличия обновлений

Чтобы проверить наличие обновлений вручную, используйте команду sudo apt-get update && sudo apt-get dist-upgrade.

sudo apt-get update && sudo apt-get dist-upgrade

Hit:1 http://nz.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://nz.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://security.ubuntu.com/ubuntu bionic-security InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Шаг 2. Используйте профили AppArmor

AppArmor — это усовершенствование ядра, которое ограничивает приложения и программы заданным объемом ресурсов. Например, используя AppArmor, можно ограничить просмотрщик PDF доступом к Интернету и к определенным каталогам в файловой системе. Если вредоносный PDF-файл открыт, ему не разрешено будет просматривать определенные каталоги или экспортировать данные на сервер злоумышленника. AppArmor уже установлен и включен в каждый дистрибутив Ubuntu. Это можно проверить, используя следующую команду:

sudo aa-status

Установите дополнительные профили AppArmor

Для добавления дополнительных профилей AppArmor используйте команду apparmor-utils sudo apt-get install apparmor-profiles.

sudo apt-get install apparmor-profiles apparmor-utils

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
   python3-apparmor (2.12-4ubuntu5)
   python3-libapparmor (2.12-4ubuntu5)
Suggested packages:
   vim-addon-manager (0.5.7)
The following NEW packages will be installed:
   apparmor-profiles (2.12-4ubuntu5)
   apparmor-utils (2.12-4ubuntu5)
   python3-apparmor (2.12-4ubuntu5)
   python3-libapparmor (2.12-4ubuntu5)
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 189 kB of archives.
After this operation, 1,329 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

Включите каждый профиль

Используйте следующую команду aa-enforce, чтобы включить все новые добавленные профили.

sudo aa-enforce /etc/apparmor.d/*

Profile for /etc/apparmor.d/abstractions not found, skipping
Profile for /etc/apparmor.d/apache2.d not found, skipping
Setting /etc/apparmor.d/bin.ping to enforce mode.
Profile for /etc/apparmor.d/cache not found, skipping
Profile for /etc/apparmor.d/disable not found, skipping
Profile for /etc/apparmor.d/force-complain not found, skipping
Profile for /etc/apparmor.d/local not found, skipping
Setting /etc/apparmor.d/sbin.dhclient to enforce mode.
Setting /etc/apparmor.d/sbin.klogd to enforce mode.
Setting /etc/apparmor.d/sbin.syslogd to enforce mode.
Setting /etc/apparmor.d/sbin.syslog-ng to enforce mode.
Setting /etc/apparmor.d/snap.core.4830.usr.lib.snapd.snap-confine to enforce mode.
Profile for /etc/apparmor.d/tunables not found, skipping
Setting /etc/apparmor.d/usr.bin.chromium-browser to enforce mode.
Setting /etc/apparmor.d/usr.bin.evince to enforce mode.
Setting /etc/apparmor.d/usr.bin.firefox to enforce mode.
Setting /etc/apparmor.d/usr.bin.man to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.anvil to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.auth to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.config to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.deliver to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.dict to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.dovecot-auth to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.dovecot-lda to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.imap to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.imap-login to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.lmtp to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.log to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.managesieve to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.managesieve-login to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.pop3 to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.pop3-login to enforce mode.
Setting /etc/apparmor.d/usr.lib.dovecot.ssl-params to enforce mode.
Setting /etc/apparmor.d/usr.lib.snapd.snap-confine.real to enforce mode.
Setting /etc/apparmor.d/usr.sbin.avahi-daemon to enforce mode.
Setting /etc/apparmor.d/usr.sbin.cups-browsed to enforce mode.
Setting /etc/apparmor.d/usr.sbin.cupsd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.dnsmasq to enforce mode.
Setting /etc/apparmor.d/usr.sbin.dovecot to enforce mode.
Setting /etc/apparmor.d/usr.sbin.identd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.ippusbxd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.mdnsd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.nmbd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.nscd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.rsyslogd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.smbd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.smbldap-useradd to enforce mode.
Setting /etc/apparmor.d/usr.sbin.tcpdump to enforce mode.
Setting /etc/apparmor.d/usr.sbin.traceroute to enforce mode.

Также возможно создать скрипты профилей для любого приложения в системе. Чтобы получить более подробную справку по AppArmor используйте команду man.

man apparmor
man aa-status
man aa-enforce

Шаг 3. Изоляция файлов и приложений в изолированном окружении

Firejail, созданный netblue30, снижает риск взломов, используя легкую технологию визуализации для изоляции приложений и ограничения их работы изолированной средой («песочницей» или контейнером). Ниже приведена GIFка, демонстрирующая работу Evince, дефолтной программы Ubuntu для чтения PDF, которая открывает небезопасный файл в изолированной среде.

Читать также:  Как организовать инструменты по этапам пентеста на MacOS (Часть 9)

Firejail и AppArmor можно использовать совместно или независимо друг от друга. Если одному из них не удалось ограничить определенный файл или каталог, то другая программа может это компенсировать и закрыть уязвимость.

Контейнер Firejail поддерживает ряд следующих функций:

  • Черный список — запрещает доступ к определенным файлам и каталогам. Попытки доступа сообщаются в syslog.
  • Белый список — разрешает доступ только к файлам и каталогам, указанным пользователем.
  • Временная файловая система — позволяет поверх каталога примонтировать временную файловую систему.
  • Приватность — монтирует копии файлов и каталогов и удаляет, когда «песочница» закрывается.
  • Ограничение домашней папки — в «песочнице» доступен только текущий пользовательский/домашний каталог.
  • Снижение утечки данных — ограничивает доступ к чувствительным каталогам, таким как /boot, /proc и /sys.

1. Скачайте Firejail

Перейдите на страницу загрузки и скачайте последнюю стабильную версию Firejail и asc-файл. На момент написания этой статьи последняя версия — «firejail_0.9.54_1_amd64.deb». Затем откройте новый терминал, перейдите в каталог Downloads/ с помощью команды cd и просмотрите его содержимое с помощью команды ls.

tokyoneon@nullbyte:~$ cd Downloads/
tokyoneon@nullbyte:~/Downloads$ ls
firejail_0.9.54_1_amd64.deb firejail-0.9.54.asc
tokyoneon@nullbyte:~/Downloads$

2. Импортируйте публичный ключ разработчика

Загруженный файл firejail-0.9.54.asc содержит защищенные криптографические хэши, которые используются для проверки того, что скачанный .deb-файл не был изменен SourgeForge или кем-нибудь еще. Скачайте публичный ключ netblue30 с сервера ключей PGP и импортируйте его в ваш GPG-keyring.

wget -O- 'https://pgp.mit.edu/pks/lookup?op=get&search=0x2CCB36ADFC5849A7' | gpg --import

----  https://pgp.mit.edu/pks/lookup?op=get&search=0x2CCB36ADFC5849A7
Resolving pgp.mit.edu (pgp.mit.edu)... 18.9.60.141
Connecting to pgp.mit.edu (pgp.mit.edu)|18.9.60.141|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2341 (2.3K) [text/html]
Saving to: ‘STDOUT’

-                  100%[==============>]   2.29K  --.-KB/s    in 0s

gpg: key 2CCB36ADFC5849A7: public key "netblue (firejail key) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1

3. Проверьте хэши

Чтобы проверить .asc-файл, используйте команду gpg —verify firejail-0.9.54.asc.

gpg --verify firejail-0.9.54.asc

gpg: Signature made Wed 16 May 2018 06:50:24 AM PDT
gpg:                using RSA key F951164995F5C4006A73411E2CCB36ADFC5849A7
gpg: Good signature from "netblue (firejail key) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: F951 1649 95F5 C400 6A73  411E 2CCB 36AD FC58 49A7

Обратите внимание на строку «Good signature» на скриншоте выше. Это подтверждает, что .asc-файл является настоящим. Теперь мы можем просмотреть содержимое файла с помощью команды cat. Если вы не видите такого сообщения, то не паникуйте. Возможно, .asc-файл был искажен во время загрузки. Попробуйте скачать его снова.

cat firejail-0.9.54.asc

     1	-----BEGIN PGP SIGNED MESSAGE-----
     2	Hash: SHA256
     3	
     4	08698324685adac8a2d3935e7f493f527cbd5ae792ac21226728a42dd9f84c3f  firejail-0.9.54-1.x86_64.rpm
     5	ce996854278863f3e91ff185198c7cc1377fb70053d37a43e3b1ef1021c57756  firejail-0.9.54.tar.xz
     6	0e92d90d583b3fe549539a261a4f48ff2b3632ba6c1868bddaf09eaad2dcaaf9  firejail_0.9.54_1_amd64.deb
     7	080f72ab8467570e70953910d9001c1dce43be5c5b932a2bed3cd213af44351b  firejail_0.9.54_1_i386.deb
     8	-----BEGIN PGP SIGNATURE-----
     9	
    10	iQEzBAEBCAAdFiEE+VEWSZX1xABqc0EeLMs2rfxYSacFAlr8NyAACgkQLMs2rfxY
    11	Sae8UAf+IkDv99oiTc+ihmhq6rrFrV/41Tb92jMIJJW8hfEZFJFWd0ZHhmZv/7Fz
    12	nW6W+gKrPf9MhC9bVmhOeU/UwcIUBlR5yQs+frJbHE8zuBzBGWZqgKGj78hlrkov
    13	7Xyab/jrSOm4FgpvKAqBh5nLWYyLtZKTT1DGswl2XpsXncMVdNFPnYjVOb1l5aDl
    14	ga2VHVKbGkrOY+8r7Vuhc0G+B+mugMt7jwUWMJgo84H4fY+Bpl/+6qS7RzJZw2Ew
    15	JlH/RADxbiFMGqBlk0hWY8jhJhE6R79Ea2+5bsCzJIbI89PgbUuyvlwCtVv38hsN
    16	C72d/NJJ6QrafBqWUWjTQPWSdMBt3g==
    17	=IEak
    18	-----END PGP SIGNATURE-----

Копируйте хеш в строке #6, которая запускает «0e92d90 …», а затем используйте команду grep как показано ниже, чтобы найти хэш SHA256 .deb и сравнить его с хешем в .asc.

sha256sum firejail_0.9.54_1_amd64.deb | grep '0e92d90d583b3fe549539a261a4f48ff2b3632ba6c1868bddaf09eaad2dcaaf9'

Если все прошло хорошо, то команда выведет следующий результат:

tokyoneon@nullbyte:~/Downloads$ ;
tokyoneon@nullbyte:~/Downloads$ sha256sum sha256sum firejail_0.9.54_1_amd64.deb | grep '0e92d90d583b3fe549539a261a4f48ff2b3632ba6c1868bddaf09eaad2dcaaf9'
0e92d90d583b3fe549539a261a4f48ff2b3632ba6c1868bddaf09eaad2dcaaf9  firejail_0.9.54_1_amd64.deb
tokyoneon@nullbyte:~/Downloads$

4. Установите Firejail

Наконец, установите .deb-файл, используя команду sudo dpkg -i firejail0.9.541_amd64.deb.

sudo dpkg -i firejail_0.9.54_1_amd64.deb

Selecting previously unselected package firejail.
(Reading database ... 170565 files and directories currently installed.)
Preparing to unpack firejail_0.9.54_1_amd64.deb ...
Unpacking firejail (0.9.54-1) ...
Setting up firejail (0.9.54-1) ...
Processing triggers for man-db (2.8.3-2) ...

Используйте аргумент —help для просмотра доступных параметров Firejail и проверки того, что firejail установился нормально:

firejail --help

У Firejail слишком много функций для этой маленькой статьи, поэтому мы продемонстрируем только два способа ее применения.

Читать также:  Metasploit для начинающего хакера. Часть 13 (доставка полезных нагрузок под Windows)

Изоляция небезопасных PDF-файлов, скачанных из Интернета

Одной из самых крутых возможностей Firejail является умение создавать временные, автономные «песочницы» (изолированные окружения), которые удаляются, когда приложение будет закрыто. Используйте приведенную ниже команду для создания такой «песочницы».

firejail --seccomp --nonewprivs --private --private-dev --private-tmp --net=none --x11 --whitelist=/tmp/unsafe.pdf evince /tmp/unsafe.pdf

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

  • —seccomp — режим защищенных вычислений. Включен по умолчанию, но мы включили его в команду, потому что это одна из лучших функций Firejail. Seccomp — это средство компьютерной безопасности в ядре Linux, позволяющее процессу сделать односторонний переход в «безопасное» состояние, при котором он не сможет выполнять системные вызовы. Если приложение внутри песочницы попытается сделать какой-нибудь системный вызов, ядро ​​немедленно завершит этот процесс.
  • —nonewprivs — этот параметр запрещает процессам получать новые права внутри контейнера. Это гарантирует, что дочерние процессы не смогут получать новые права с помощью системного вызова execve.
  • —private — создает новые /root и /home /user каталоги во временных файловых системах. Все изменения в них сбрасываются, когда песочница закрывается.
  • —private-dev — каталог /dev обычно содержит файлы с конфиденциальными данными. Используя аргумент —private-dev, Firejail создаст новый (временный) /dev каталог, независимый от настоящей папки /dev.
  • —private-tmp — каталог /tmp в операционной системе Ubuntu обычно содержит файлы для временного хранения, создаваемые при запуске приложений. Данные в этих файлах могут быть чувствительными и должны быть сами недоступны изолированному приложению.
  • —net=none — единственным интерфейсом, доступным в песочнице, является новый интерфейс loopback (lo). Используйте этот параметр, чтобы запретить доступ к сети программам, которым не нужен интернет-доступ.
  • —x11 — изоляция с использованием Xephyr. В этом случае песочница блокирует исходящие вызовы от приложений для создания скриншотов и кейлоггеров, изолированных в этой песочнице.
  • — whitelist — помещает каталог или файл в белый список. Изменения в белых списках сохраняются, все остальное сбрасывается, когда песочница закрывается.
  • evince /tmp/unsafe.pdf — эта последняя часть команды вызывает читалку PDF Evince и открывает указанный файл.

Изоляция веб-браузеров

Для более мягкого набора правил песочницы используйте команду ниже.

firejail --seccomp --nonewprivs --private --private-tmp firefox

Это откроет Firefox в изолированной среде и удалит файлы, сохраненные во временных/домашних каталогах, созданных аргументом —private.

Мы лишь слегка затронули те вещи, которые умеет делать Firejail. Для получения дополнительной информации ознакомьтесь с официальной документацией и Firetools — графическим интерфейсом Firejail.

В следующем выпуске: аудит, антивирусы и мониторинг

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

Добавить комментарий