Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.
Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.
GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.
Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.
Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.
V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od
… více »Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
Dnes jsem přemýšlel jak zařídit, aby systém pracoval jen s usb zařízeními, která si sám povolím a aby ostatní USB zařízení jenž nejsou ve whitelistu ignoroval, což se hodí pro zabezpečení počítače před nezvanými návštěvníky. Ovšem je to jen jedna z věcí, která může pomoci k bezpečnosti, o jiných metodách jako šifrování se zde zmiňovat nebudu. Zápisek dělám i pro sebe kdybych jej ještě někdy potřeboval, abych nemusel znovu hledat způsob tohoto zabezpečení.
Zápisek je pro neznalé, s udev pravidly jsem se setkal prvně, zkušenější můžou napsat poznámky.
Našel jsem řešení pomoci pravidel udev, kde první zakážu všechny usb zařízení viz 99-blacklist.rules a poté vytvořím vyjímky s 99-whitelist.rules.
/etc/udev/rules.d/99-blacklist.rules:
SUBSYSTEM=="usb", ATTR{authorized_default}="0"
SUBSYSTEM=="usb", ATTR{authorized}="0"
/etc/udev/rules.d/99-whitelist.rules:
ACTION=="add", ATTR{bDeviceClass}=="09", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
ACTION=="add", ATTR{idVendor}=="045e", ATTR{idProduct}=="076d", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
ACTION=="add", ATTR{idVendor}=="1d6b", ATTR{idProduct}=="0001", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
ACTION=="add", ATTR{idVendor}=="258a", ATTR{idProduct}=="0001", ATTRS{serial}=="AB0412323093", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
U některých usb zařízení (flash disky, UPSky...) se navíc vyskytuje parametr serial pro přesné určení zařízení, tudíž druhé usb zařízení stejného výrobku se k systému nepřipojí, k získání ATTRS{serial} použiji příkaz:
udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/003/018) |grep serial
idVendor a idProduct zjistím pomoci nástroje lsusb, viz:
Bus 001 Device 002: ID 045e:076d Microsoft Corp. LifeCam HD-5000
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 018: ID 258a:0001
Občas se mi po změně udev pravidel požadovaná změna neprojeví. Proto restartuji udev. V systémech založených na Debianu pomoci: sudo service udev restart
Když nyní zapojím například usb disk, tak jej vidím jen pomoci lsusb, ale sám se nenamountuje.
Dále se může hodit detekce vložení usb zařízení, do souboru 91-local.rules vložíme:
SUBSYSTEMS=="usb", KERNEL=="*", ACTION=="add", RUN+="/usr/bin/sudo -u user /usr/local/bin/USB %k"
Při vložení zařízení se spustí USB skript, v něm už můžete mít vlastní příkazy. Zkusil jsem zbastlit v bashi skript (je neefektivní a jistě by šel udělat lépe, tudíž je spíše jen jako příklad) jenž podle seznamu povolených zařízení zjistí zdali je zařízení povoleno a bude jej ignorovat nebo bude umožněna další akce.
Příklad spuštěného skriptu /usr/local/bin/USB:
#!/bin/bash
if ! screen -list | grep -q "USB-detect"; then
screen -S USB-detect -dm /usr/local/bin/USBdetect
fi
Screen zajistí že se nepustí instance znovu.
Příklad skriptu /usr/local/bin/USBdetect:
#!/bin/bash
sleep 2
lsusb > /tmp/lsusb-nove
cat /etc/usbdetect/lsusb-pozadovane /tmp/lsusb-nove |sort |uniq -u > /tmp/lsusb-vysledek
while read lineList; do
bus=`echo $lineList |awk '{print $2}'`
device=`echo $lineList |awk '{print $4}' |sed s/://g`
udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/$bus/$device) > /tmp/usbDeviceEcho.log
idProduct=`cat /tmp/usbDeviceEcho.log |grep ATTR{idProduct}== |sed 's/ATTR{idProduct}==//g;s/"//g;s/ //g'`
idVendor=`cat /tmp/usbDeviceEcho.log |grep ATTR{idVendor} |sed 's/ATTR{idVendor}==//g;s/"//g;s/ //g'`
serial=`cat /tmp/usbDeviceEcho.log |grep ATTR{serial} |sed 's/ATTR{serial}==//g;s/"//g;s/ //g'`
stringUsbDevice=$idVendor:$idProduct:$serial
knownUSB=0 #0=unknown 1=know
while read line; do
line=`echo $line |awk '{print $1}'`
if [ "$stringUsbDevice" == "$line" ]
then
knownUSB="1"
fi
done < /etc/usbdetect/usbDeviceList
#run script
if [ "$knownUSB" == 0 ]
then
date >> /tmp/usbdetect-alert
echo $stringUsbDevice "Zarizeni neni v seznamu!! Alert!
" >> /tmp/usbdetect-alert
fi
done < /tmp/lsusb-vysledek
Soubor /etc/usbdetect/lsusb-pozadovane je vytvořen pomoci lsusb, později lze řádky přidat manuálně.
Soubor /etc/usbdetect/usbDeviceList je editován ručně v pořadí: $idVendor:$idProduct:$serial viz příklad:
04b3:310c: IBM Corp. Wheel Mouse
1d6b:0001: Linux Foundation 1.1 root hub
051d:0002:034512253091 American Power Conversion Uninterruptible Power Supply
1d6b:0001: Linux Foundation 1.1 root hub
045e:00cb: Microsoft Corp. Basic Optical Mouse v2.0
Tiskni
Sdílej:
To je sice pravda, ale i přesto je to pro něj ztížení a pokud útočník o opatření nebude vědět, tak to může mít nějakou výhodu. Útočník se v tom případě musí k hardweru dostat, přečíst si jeho id a zadat jej do svého hw. V případě usb disků mohu jen polemizovat nad tím, že se k němu nedostane a nepřečte si seriové číslo. V případě klávesnice a připojených zařízení to lze řešit tím, že jakmile se jednou odpojí, vyškrtne se ze seznamu a nepůjde znovu připojit dokud to nespravím přes ssh, navíc dvě stejná zařízení by byla také zakázaná. Až tak moc paranoidní ovšem nejsem a počítám že většinu útočníku to odradí.
Ale nápad je to dobrý.
udevu, takže pro detekci není třeba jeho restart. Skládá se ze tří částí, první je pravdilo 90-blockusbhid.rules:
#Check USB HID devices
ACTION=="add", ATTR{bInterfaceClass}=="03" RUN+="/usr/local/sbin/checkhid"
Druhý je samotný skript checkhid, co kontroluje zařízení podle whitelistu:
#!/bin/sh
logger -t CheckHID "Checking '$PRODUCT' ..."
while read line;
do
if [ "$PRODUCT" = "$line" ]
then
logger -t CheckHID "Device OK"
exit
fi
done < /usr/local/etc/enabled_devices.cfg
logger -t CheckHID "Disabling device"
echo 0 > /sys$DEVPATH/../authorized
Skript čte řádku po řádce soubor s povolenými zařízenímy a pokud najde shodu, skončí, v opačném případě zařízení zakáže.
A třetí část je konfigurační soubor enabled_devices.cfg, což je whitelist povolených HID zařízení. Formát souboru je jednoduchý, na každé řádce je to, co skript vypíše do logu mezi apostrofy, třeba USB klávesnice má na řádku 4f2/116/300 a moje UPS 463/ffff/1.
PS: Pokud máte pouze USB klávesnici, během testování si raději zapoznámkujte poslední řádek
....
Dnes vyšel článek na konkurenčním serveru a zmiňují se tam o skriptu v pythonu, tedy konkrétně USBkill, jen pro informaci.