Hlavní navigace

Debian 9 Stretch je tu: firewall nftables a konec MySQL

Petr Krčmář

Po dvou letech vychází nový Debian Stretch. Novinky nejsou nijak dramatické, ale jsou spíše pozvolné a rozvážně provedené. Přesto je tu několik věcí, které stojí za pozornost a je dobré si na ně dát pozor.

Stalo se už zvykem, že na jaře každého lichého roku vychází nový Debian. Daří se to už od roku 2009 a vše nasvědčuje tomu, že v tomto režimu chtějí vývojáři pokračovat. Také platí, že Debian pojmenovává svá vydání podle postaviček z filmů Toy Story (Příběh hraček). Devítka se jmenuje „Stretch“ podle gumové chobotničky ze třetího dílu. Mimochodem hlas jí propůjčila Whoopi Goldbergová.

Vydání Stretche neznamená konec Jessie, oficiální podpora poběží ještě rok a poté nastoupí rozšířená LTS podpora na další dva roky. Jessie tu tedy s námi bude minimálně do roku 2020. Stretch bude podporován do roku 2023 a během jeho života vyjde určitě ještě Debian 10 s kódovým jménem Buster. Na to si ale počkáme další dva roky.

Zajímavosti o Debianu 9

Platforma sem, platforma tam

V oblasti podpory platforem je změn proti minulému vydání velmi málo, Debian vychází pro následujících deset platforem:

  • amd64
  • arm64
  • armel
  • armhf
  • i386
  • mips
  • mips64el
  • mipsel
  • ppc64el
  • s390×

Změnou proti Jessie je odebrání platformy powerpc, tedy 32bitového PowerPC. Věděli jsme o tom déle než půl roku dopředu a vývojáři tím chtějí naznačit, že důležitost tohoto portu klesá a přestože zůstává (zatím) v archivech, jeho podpora bude nízká. Zároveň přibyla platforma mips64el, tedy 64bitový little-endian MIPS.

Nové verze balíčků

Také ve verzích se neodehrálo žádné velké drama, většina důležitých balíčků povýšila jen nějakou tu desetinkovou verzi, výjimkou je linuxové jádro, kompilátor a třeba poštovní server Postfix. Změny shrnuje tabulka dodávaná vývojáři v dokumentaci:

Balíček Debian 8 (Jessie) Debian 9 (Stretch)
BIND DNS Server 9.9 9.10
Emacs 24.4 24.5 a 25.1
Exim 4.84 4.88
GNU Compiler Collection 4.9 6.3
GnuPG 1.4 2.1
Inkscape 0.48 0.91
the GNU C library 2.19 2.24
Linux kernel image řada 3.16 řada 4.9
MariaDB 10.0 10.1
Nginx 1.6 1.10
OpenJDK 7 8
OpenSSH 6.7p1 7.4p1
Perl 5.20 5.24
PHP 5.6 7.0
Postfix MTA 2.11 3.1
PostgreSQL 9.4 9.6
Python 3 3.4 3.5
Samba 4.1 4.5
Vim 7 8

Balíčků opět výrazně přibylo, nových je 15 346 balíků a celkem jich ve Stretchi najdete 51 687. Více než polovina z nich (57 %, 29 859) je navíc aktualizovaná na novou verzi. Zároveň jich nemalé množství (13 %, 6 739) bylo  z různých důvodů odebráno – už nebudou dostávat aktualizace a v balíčkovacím systému je budete mít označené jako „obsolete“.

Vyhledat si je můžete například pomocí aptitude  s využitím vyhledávacích vzorů:

# aptitude search ?obsolete

Stretch je první Debian, který nemá instalátor na CD. Pokud ještě instalujete z klasických médií, budete mít stále možnost použít minimální obraz netinst (ten se na CD vejde) nebo musíte sáhnout po velkých obrazech pro DVD nebo Blu-ray. DVD médií je v závislosti na architektuře 12 až 14, existuje i multi-arch DVD s výběrem balíčků pro amd64 a i386.

Konec MySQL, výchozí je MariaDB

Předchozí vydání představilo databázi MariaDB, která byla v archivech vedle MySQL. Už před dvěma lety vývojáři řekli, že v dalším kroku bude pravděpodobně MySQL úplně odstraněno. To se nyní skutečně stalo, v archivu zůstaly jen přechodové balíky, které závisejí na metabalíku default-mysql-server a ten pak na mariadb-server-10.1. Uživatelé tak budou při aktualizaci přesunuti na novou databázi.

Pozor na to, že formát databází není zpětně kompatibilní. Pokud tedy už jednou aktualizujete systém, nebudete se schopni s daty vrátit zpět k MySQL nebo starší verzi MariaDB. Je tedy rozhodně dobrý nápad před přechodem zálohovat obsah databází pomocí mysqldump nebo podobné utility.

Balíčky virtual-mysql-* a default-mysql-* budou i dále existovat a budou udržovány ve větvi unstable (Sid). Aktuální informace o MySQL v Debianu najdete vždy na stránce MySQL týmu.

Bezpečnější APT a Aptitude

Novinky se objevily také v utilitách pro správu balíčků. Týkají se především utility apt, ale většina z nich je dostupná také přes aptitude. Platný repozitář nyní musí obsahovat soubor InRelease, který obsahuje podepsané metainformace o balících. Klíče přitom musí mít délku alespoň 2048 bitů.

Stejně tak jsou odmítány digitální podpisy používající slabé algoritmy jako například SHA1. Veškerá data musí být podepsaná minimálně s pomocí SHA256.

APT nově z bezpečnostních důvodů zahazuje oprávnění roota při stahování souborů z archivu. Používá k tomu uživatele _apt, který musí mít právo zápisu do adresářů /var/lib/apt/lists a /var/cache/apt/archives a zároveň musí být schopen číst z úložišť klíčů /etc/apt/trusted.gpg a /etc/apt/trusted.gpg.d/. Samozřejmě musí být schopen také přistupovat k síti a resolvovat DNS požadavky.

Úpravou prošel také pinning, který umožňuje měnit prioritu jednotlivých balíčků či jejich instalaci přímo zakazovat. Ve starších verzích byl pin aplikován na každý balík. Nově se aplikuje na konkrétní verzi. Totéž platí o záporných hodnotách, které brání instalaci. Dříve se tímto zakázal celý balík, nově se zákaz vztahuje jen na konkrétní verzi.

Nová služba deb.debian.org

APT nyní umí v DNS hledat SRV záznamy a směrovat podle nich stahování na konkrétní servery. Vznikl tak univerzální stahovací server deb.debian.org, který neobsahuje žádné balíky, ale přesměruje uživatele podle lokality na nejbližší skutečné zrcadlo. Pokud používáte starší verzi APT, budete přesměrováni přímo pomocí HTTP odpovědi. Od verze v Debianu Stretch se použije SRV záznam.

Na ten se můžete zeptat i ručně:

$ dig _http._tcp.deb.debian.org. srv

Výhodou je, že už nemusíte řešit nejbližší funkční zrcadlo s balíky, ale můžete použít jeden repozitář, který si vás pak už bude sám směrovat. Do /etc/sources.list tak můžete přidat například:

deb http://deb.debian.org/debian stretch main

Nové pojmenování síťových rozhraní

Debian se dlouho držel klasického pojmenování síťových rozhraní eth0, eth1 a tak dále. Rozhraní byla označována vzestupně podle toho, jak se k nim hlásily jednotlivé ovladače. V praxi se tak stávalo, že zatímco při jednom bootu byla síťová karta označena jako eth0, příště se objevila jako eth1. To mělo za následek nekonzistence a mohlo to vést třeba k bezpečnostním problémům – firewallová pravidla se třeba aplikovala na nesprávné rozhraní.

Udev už čtyři roky (od verze 197) obsahuje nový způsob označování, na který ale Debian přechází až teď. Používá mnohem více skutečných informací od hardware, jako je například tabulka hardware v BIOSu nebo pořadí karet ve slotech. Vznikají tak jména jako ens0 nebo enp1s1 (pro ethernet) či wlp3s0 (pro wlan). Síťová rozhraní do USB je možné kdykoliv za běhu měnit, proto se jejich označení odvozuje od MAC adresy.

Výhodou tohoto přístupu je, že rozhraní mají pevné a vždy stejné označení bez ohledu na pořadí zavádění, verzi jádra nebo třeba výměnu vadného rozhraní za jiné. Vždy se tak můžete spolehnout na to, že dané rozhraní vede směrem, který očekáváte. Pozor na to, že systémy aktualizované z Jessie na toto schéma automaticky nepřejdou a budou stále používat staré pojmenování vynucené v /etc/udev/rules.d/70-persistent-net.rules. Pro přechod na nové pojmenování zkontrolujte svou konfiguraci (zejména v /etc), přejmenujte zmíněný soubor (například přidejte příponu .old) a restartujte systém. Detaily naleznete v dokumentaci v  /usr/share/doc/udev/README.Debian.gz.

Xorg nepotřebuje práva roota

Stretch přináší novinku v podobě provozu X serveru pod běžným uživatelem. To by mělo zajistit bezpečné prostředí v případě, že kód Xorg bude obsahovat zásadní chybu. Aby to ale fungovalo, je potřeba splnit některé podmínky:

  • musí být nainstalován logind a libpam-systemd
  • systém musí umět Kernel Mode Setting (KMS), čili to nemusí fungovat na všech kartách a ve virtualizaci
  • Xorg musí běžet na virtuální konzoli, kde byl spuštěn
  • pokud chcete používat displej manažera (místo ručního volání startx), musí to být gdm3, jiné běh pod neprivilegovaným uživatelem zatím nepodporují

Pokud použijete jiného manažera, spustí se X v klasickém režimu pod rootem. Užitečné je také vědět, že neprivilegovaný režim bude logovat k uživateli do ~/.local/share/xorg/. Pokud vás zajímá, jaká desktopová prostředí můžete ve Stretchi používat: GNOME 3.22, KDE Plasma 5.8, LXDE, LXQt 0.11, MATE 1.16 a Xfce 4.12.

Pozor také na to, že pro většinu karet od Intelu teď X server používá KMS místo ovladačů od Intelu. To zároveň znamená, že pro řadu z nich budete potřebovat nesvobodný firmware v balíčku firmware-misc-nonfree, i když jste ho dříve v Jessie nepotřebovali.

Pro některé hodně staré karty je potřeba klasický Xorg se setuid právy. Ten byl přesunut do samostatného balíku, takže pokud ho potřebujete, nainstalujte xserver-xorg-legacy.

Firewall nftables jako alternativa k IPtables

Vývojářský tým Netfilteru už velmi dlouho připravuje alternativu k IPtables jménem nftables. Ta je výrazně flexibilnější, umožňuje integraci různých filtrů do jednoho rozhraní a snižuje množství jaderného kódu na desetinu. Můžete se podívat na záznam mé tři roky staré přednášky o nftables.

Během příprav na Jessie nebylo rozhraní nftables natolik stabilní, aby bylo možné jej zařadit do distribuce. Dostupné je ale pomocí jessie-backports. Postupně se ale vše dostalo do velmi stabilního a použitelného stavu a vývojáři Debianu doporučují na nftables přejít. Zatím je součástí Debianu také klasické rozhraní IPtables a ještě tomu tak určitě dlouho bude. Linux ale míří k nftables. Přineseme vám o něm samostatný článek.

Další střípky

Drobných změn či novinek je ještě celá řada, vezmeme je už tedy jen v rychlosti. Další detaily se dozvíte po navštívení odkazů.

GCC 6 ve výchozím stavu generuje PIE a většina binárek v Debianu používá ASLR. Použití exploitů je proto výrazně komplikovanější.

Debian přechází na moderní větev GnuPG, což přináší podporu eliptických křivek, modulární architekturu, lepší podporu smart karet a bezpečnější výchozí nastavení. Klasická verze gnupg1 bude zatím také podporována, ale je označena za zastaralou.

Balíčky s debugovacími symboly byly přesunuty do samostatného repozitáře debian-debug. Do něj je kompilována většina balíků z Debianu. Pokud je chcete, přidejte si mezi zdroje:

deb http://debug.mirrors.debian.org/debian-debug/ stretch-debug main

Pak je možné instalovat balíky s příponou -dbgsym. V některých speciálních případech zůstaly jednotlivé balíky v hlavním archivu. Ručně stáhnete balíčky také na snapshot.debian.org.

Speciální tým Debian Med vylepšil podporu medicínského software. Nyní je k dispozici 877 balíčků sdružených pomocí metabalíků. Hledejte balíčky s předponou med-.

Hodně novinek je v systémových nástrojích util-linux, stejně jako mezi nástroji pro forenzní analýzu.

Neprivilegovaní uživatelé nemohou z bezpečnostních důvodů přistupovat k výpisu dmesg.

Byl odstraněn kdysi nadějný init system Upstart. Během posledních dvou let nebyl vyvíjen, proto už jej ve Stretchi nenajdete. Pokud jej používáte, budete muset přejít na podporovanou alternativu jako systemd nebo OpenRC.

Balíček net-tools už není součástí výchozí instalace, protože používá dnes již zastaralé utility: arp, ifconfig, netstat, rarp, nameif a route. Místo toho je doporučováno používat příkaz ip z balíku iproute2. Ten už je ve výchozí instalaci několik posledních vydání Debianu.

Politiky pro SELinux se přesunuly z /etc/selinux/  do /var/lib/selinux/. Zároveň se změnil formát souborů. Výchozí politiky dodávané Debianem v balíku selinux-policy-default budou migrovány automaticky. Pokud používáte i některé své vlastní, musíte je migrovat, v čemž vám pomůže skript /usr/lib/selinux/semanage_migrate_store z balíku  semanage-utils.

Vrací se některé starší balíčky, které byly v Debianu dříve: FFmpeg opět je zpět na místě AVconv a své místo v repozitářích našly i balíky Firefox a Thunderbird. Deset let byly kvůli problémům s ochrannými známkami v Debianu místo nich balíky Iceweasel a Icedove. Obě komunity se ale dohodly, že přístup Debianu je v pořádku a balíčky si mohou ponechat původní názvy.

Našli jste v článku chybu?