Probléma az apt-key működésével

kimarite képe

Az apt-key alkalmazás úgy működik, hogy hozzáadja a kulcsokat az /etc/apt/ útvonalon lakó trusted.gpg fájlhoz. Az apt csomagkezelő megbízik a fájlban lévő kulcsokban.

Jól hangzik, igaz? Felfedezték azonban, hogy ez potenciális biztonsági probléma. A rendszer teljes mértékben megbízik ezekben a kulcsokban, de nem csak azokban a csomagoknál, amelyekhez hozzáadta azokat.

Képzelje el, hogy kulcsokat adott hozzá az A tükörhöz, hogy megkapja az AA csomagot, és a B tükörhöz, hogy megkapja a BB csomagot. A rendszere örömmel fogadja az A tükör kulcsával aláírt BB csomagot. Nem tudja a kulcsokat a hozzájuk tartozó csomagokhoz kötni.

Most ezt könnyebb kimondani, mint megtenni, és mert más tényezők is szerepet játszanak, mint például a megfelelő házirend és preferenciák, de támadási felületet nyit.

Ez az oka annak, hogy az apt-key elavult. Ez a figyelmeztető üzenet első része.

Azaz, ha PPA-t használ, vagy külső tükröt ad hozzá az Ubuntu 22.04-es (Linux Mint 21) és újabb verzióihoz, akkor valószínűleg egy ehhez hasonló üzenetet fog látni:

W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

Az Ubuntu fejlesztői manapság már nem szeretnék, hogy az összes aláírási kulcsot az egykeként létező trusted.gpg fájlhoz adja hozzá. Azt javasolják, hogy használjon tükrönként, azaz, kulcsonként külön fájlt, amely az /etc/apt/trusted.gpg.d/ elérési úton, könyvtárban található. No igen, de a Debian fejlesztők az /usr/share/keyrings/ elérési utat, könyvtárat javasolják a kulcsok lakóhelyének. Én ezt a módszert mutatom meg.

Ugyanezt a mechanizmust használja a forráslista esetében az Ubuntu (és a Debian), ahol a külső tükrök a saját fájljukban vannak felsorolva az /etc/apt/sources.list.d/ alatt, ahelyett, hogy a rendszer mindent az /etc/apt/ elérési úton lakó sources.list fájlban tartana meg. Véleményük szerint, ez a módszer egy kicsit megkönnyíti a külső tükrök kezelését.

Vagyis, az apt-key ilyen módon történő használata helyett,

curl -sS https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg | sudo apt-key add -

a külső tükrök felvételénél inkább ehhez az eljáráshoz kell folyamodni (példa).

curl -sS https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/spotify.gpg
echo "deb [signed-by=/usr/share/keyrings/spotify.gpg] http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list

Ha az OpenPGP kulcs nem tölthető le gpg formában, akkor PPA használatánál futtassa az adott PPA-nál szereplő sudo add-apt-repository kezdetű sort, majd nézzen rá a rendszer által kezelt kulcsok listájára (a PPA kulcsa, de a rendszer így nem fogadja el).

sudo apt-key list

A listából keresse ki a figyelmeztető üzenethez (sudo apt-get update kimenet) tartozó tükröt, és annak a kulcsát (példa).

/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2014-01-13 [SCEA] [expired: 2019-01-12]
      418A 7F2F B0E1 E6E7 EABF  6FE8 C2E7 3424 D590 97AB
uid           [ expired] packagecloud ops (production key) <[email protected]>

pub   rsa4096 2016-02-18 [SCEA]
      DB08 5A08 CA13 B8AC B917  E0F6 D938 EC0D 0386 51BD
uid           [ unknown] https://packagecloud.io/slacktechnologies/slack (https://packagecloud.io/docs#gpg_signing) <[email protected]>

Ha több kulcs tartozik egy tükörhöz, használja az újabb dátumút.

Tehát, a „DB08 5A08 CA13 B8AC B917 E0F6 D938 EC0D 0386 51BD” sorból vegye ki a szóközöket, majd ezzel exportálja a GPG kulcsot a dedikált fájlba az /usr/share/ útvonalon található keyrings könyvtárba:

gpg --export DB085A08CA13B8ACB917E0F6D938EC0D038651BD | sudo gpg --dearmor -o /usr/share/keyrings/slack.gpg

Létrehoztam itt egy új slack.gpg fájlt, ha esetleg nem vette volna észre. Azért neveztem el slack.gpg-nek, mert a korábban telepített Slack alkalmazáshoz van társítva. A fájlnév nem számít, de az azonosításhoz jó.

Ha a parancs sikeresen lefut, nem fog látni semmilyen üzenetet. Ezt úgy ellenőrizheti, hogy megnézi, hogy az újonnan létrehozott gpg fájl létezik-e vagy sem.

Természetesen, mindig a mentés pontos fájlnevét kell a forráslistában megadni a csillagok helyett:

[signed-by=/usr/share/keyrings/***.gpg]

Jegyzet:

Enjoy :-)