Сторонні пакети — це зручно, але безпека — важливіша. Тут ви знайдете покроковий гайд: як перевіряти підписи та хеші, безпечно встановлювати .deb, AppImage і Flatpak, запускати все в ізоляції через Firejail та мати чіткий план відкату, якщо щось піде не так.

Що підготувати перед стартом

Ми використаємо лише базові інструменти та термінал Linux. Вам знадобляться:

  • GPG для перевірки підписів
  • sha256sum для перевірки хешів
  • Firejail для ізоляції
  • Flatpak (і, за потреби, Flathub)
sudo apt update
sudo apt install -y gnupg wget coreutils firejail flatpak

.deb: перевірка, установка та відкат

Крок 1. Перевірте джерело, хеш і підпис

Завантажуйте .deb лише з офіційного сайту розробника по HTTPS. Якщо дають SHA256 і/або GPG-підпис — перевіряйте.

# 1) Завантаження пакета і контрольної суми/підпису (якщо є)
wget -O app.deb https://vendor.example/downloads/app_1.2.3_amd64.deb
wget -O app.sha256 https://vendor.example/downloads/app_1.2.3_amd64.deb.sha256
wget -O app.deb.asc https://vendor.example/downloads/app_1.2.3_amd64.deb.asc

# 2) Перевірка SHA256
echo "$(cat app.sha256)  app.deb" | sha256sum -c -

# 3) Імпорт ключа розробника (перевірте відбиток на сайті розробника)
gpg --keyserver keys.openpgp.org --recv-keys <FINGERPRINT>

# 4) Перевірка GPG-підпису (якщо постачається .asc)
gpg --verify app.deb.asc app.deb

# 5) Додатково: перевірка підпису в самому .deb (якщо розробник використовує dpkg-sig)
sudo apt install -y dpkg-sig
DPKG_SIG_EXIT=0; dpkg-sig --verify app.deb || DPKG_SIG_EXIT=$?; echo "dpkg-sig exit=$DPKG_SIG_EXIT"

Порада: якщо щось не сходиться (невірний хеш, інший відбиток ключа) — не встановлюйте. Це «червоний прапорець» 🚩

Крок 2. Встановлення через apt (краще, ніж dpkg -i)

Для сторонніх .deb використовуйте apt команди: так залежності підтягнуться автоматично.

sudo apt install ./app.deb

Крок 3. Запуск в ізоляції через Firejail

Після встановлення варто запускати застосунок із sandbox-обмеженнями.

# Приклад: ізоляція без доступу до мережі та з приватним тимчасовим HOME
firejail --private --net=none appname

Профілі для популярних програм уже є в /etc/firejail/. Спробуйте спочатку без жорстких прапорів, а потім закручувати гайки.

Крок 4. План відкату для .deb

Перед установкою створіть точку відновлення (якщо використовуєте Timeshift, Btrfs/LVM snapshot) — це найкращий план.

# Приклад з Timeshift (за наявності)
sudo timeshift --create --comments "before-third-party-deb" --tags O

Якщо без знімків: фіксуємо, що поставили, і вміємо прибрати чисто.

# Знайти точну назву пакета після встановлення
dpkg -l | grep app

# Відкат: видалення з конфігами і «хвостами»
sudo apt purge appname
sudo apt autoremove --purge
sudo apt clean

# Подивитися, які файли були встановлені
dpkg -L appname

AppImage: перевірка, дозвіл на запуск і Firejail

Перевірка та підпис

AppImage зручно тримати окремо у ~/Apps. Перевіряйте SHA256, а якщо розробник дає .asc — перевіряйте GPG-підпис.

mkdir -p ~/Apps && cd ~/Apps
wget -O App.AppImage https://vendor.example/App-1.2.3-x86_64.AppImage
wget -O App.AppImage.sha256 https://vendor.example/App-1.2.3-x86_64.AppImage.sha256
wget -O App.AppImage.asc https://vendor.example/App-1.2.3-x86_64.AppImage.asc

echo "$(cat App.AppImage.sha256)  App.AppImage" | sha256sum -c -
gpg --keyserver keys.openpgp.org --recv-keys <FINGERPRINT>
gpg --verify App.AppImage.asc App.AppImage

chmod +x App.AppImage

Запуск AppImage через Firejail

AppImage зручно «клацнути і запустити», але краще в пісочниці.

# Базовий ізольований запуск
firejail --private --net=none ./App.AppImage

# Якщо потрібні завантаження/документи — дозволяємо тільки потрібні каталоги
firejail --private=~/Sandbox --whitelist=~/Downloads ./App.AppImage

Flatpak із неофіційних репозиторіїв: довіра і контроль

Додавання remote з перевіркою ключа

Flatpak використовує OSTree і GPG-підписи на рівні репозиторію. Перевіряйте відбиток ключа перед додаванням remote.

# Приклад: додати Flathub (офіційний)
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# Перевірити ремоут і ключі
flatpak remotes -d

Установка і мінімальний відкат

# Встановити додаток у профіль користувача (без sudo)
flatpak install --user flathub org.example.App

# Подивитися відомості та коміт (для аудиту)
flatpak info org.example.App --show-commit

# Видалити застосунок і невикористані залежності
flatpak uninstall org.example.App
flatpak uninstall --unused

Sandbox Flatpak + додаткові обмеження

Flatpak уже в пісочниці, але можна затягнути політики.

# Заборонити доступ до домашньої теки (окрім збережених дозволів)
flatpak override --user --nofilesystem=home org.example.App

# Відключити мережу
flatpak override --user --unshare=network org.example.App

Альтернативні способи

  • Запуск у контейнері (podman/docker) — максимальна ізоляція, але складніше.
  • Використати Snap замість стороннього .deb, якщо застосунок є у Snap Store: підпис і sandbox з коробки (тема snap та flatpak).

GUI-спосіб (коли не хочеться в термінал)

  • GDebi/QApt — встановлення локальних .deb із показом залежностей.
  • AppImageLauncher — інтеграція AppImage у меню та оновлення.
  • GNOME Software / KDE Discover — встановлення Flatpak із Flathub.
  • Firetools — графічна оболонка для Firejail, зручно тикати профілі 🛡️
  • Flatseal — керування дозволами Flatpak мишкою.

FAQ

Підписи не збігаються або ключ невідомий. Що робити?

Зупинитися. Перевірити URL, знову звірити відбиток ключа з офіційним сайтом/репо GitHub. Якщо сумнів — не встановлюйте.

dpkg лається на відсутні залежності після dpkg -i

Не біда: виконайте sudo apt -f install або краще одразу ставте як sudo apt install ./file.deb.

AppImage не запускається: «Permission denied»

Зробіть файл виконуваним: chmod +x App.AppImage. Якщо ядро блокує, перевірте атрибут: chmod a-x не активний? Також перевірте, чи не змонтовано каталог з noexec.

Firejail ламає доступ до файлів/мережі

Послабте профіль: приберіть --net=none або додайте --whitelist=~/Downloads. Дивіться журнал: firejail --debug app.

Flatpak каже «remote not found» або «GPG verification failed»

Перевірте URL remote, мережу й час системи. Якщо ключ змінився — перевірте оголошення розробника, потім перевстановіть remote.

Як повністю видалити все, що поставив .deb?

sudo apt purge appname && sudo apt autoremove --purge, потім вручну видаліть кеш/конфіги з ~/.config/appname (якщо були створені).

Чим краще перевіряти: хеш чи підпис?

І те, і те. Хеш захищає від випадкових пошкоджень, GPG-підпис — від підміни файлу сторонніми.

Порада від Kernelka

Тримайте «карантинну» теку ~/Quarantine для нових програм. Спочатку перевірка підписів/хешів, перший запуск — тільки через firejail --private --net=none. Якщо все ок — переносите в бойове середовище. Маленький ритуал, що економить великі нерви 🙂

Підсумок

  • Завжди перевіряйте SHA256 і GPG-підпис перед установкою.
  • Для .deb використовуйте apt, а не dpkg -i; запускайте через Firejail.
  • AppImage — тільки після перевірки, з правами на виконання та в пісочниці.
  • Flatpak довіряйте через перевірені remotes, за потреби посилюйте sandbox.
  • Майте план відкату: Timeshift/Btrfs або принаймні purge + autoremove.
  • GUI-інструменти (GDebi, AppImageLauncher, Flatseal, Firetools) спрощують життя.

Тепер ви знаєте, як встановити програму в Linux зі стороннього джерела без стресу і з контролем кожного кроку. Безпека — це звичка, а не випадковість!