Jiří Eischmann v příspěvku na svém blogu představuje typy, jak lépe chránit své soukromí na mobilním telefonu: "Asi dnes neexistuje způsob, jak se sledování vyhnout úplně. Minimálně ne způsob, který by byl kompatibilní s tím, jak lidé technologie běžně používají. Soukromí ovšem není binární věc, ale škála. Absolutního soukromí je dnes na Internetu dost dobře nedosažitelné, ale jen posun na škále blíže k němu se počítá. Čím méně dat se o vás posbírá, tím nepřesnější budou vaše profily a tím méně budou zneužitelné proti vám."
Byla vydána nová stabilní verze 25.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Warbler. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
Multiplatformní open source spouštěč her Heroic Games Launcher byl vydán v nové stabilní verzi 2.17.0 Franky (Mastodon, 𝕏). Přehled novinek na GitHubu. Instalovat lze také z Flathubu.
Organizace Apache Software Foundation (ASF) vydala verzi 26 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Klávesnice IBM Enhanced Keyboard, známá také jako Model M, byla poprvé představena v roce 1985, tzn. před 40 lety, s počítači IBM 7531/7532 Industrial Computer a 3161/3163 ASCII Display Station. Výročí připomíná článek na zevrubném sběratelském webu Admiral Shark's Keyboards. Rozložení kláves IBM Enhanced Keyboard se stalo průmyslovým standardem.
Vyšlo Pharo 13 s vylepšenou podporou HiDPI či objektovým Transcriptem. Pharo je programovací jazyk a vývojové prostředí s řadou pokročilých vlastností.
Java má dnes 30. narozeniny. Veřejnosti byla představena 23. května 1995.
1. července Mozilla vypne službu Fakespot pro detekci podvodných recenzí v internetových obchodech. Mozilla koupila Fakespot v květnu 2023.
8. července Mozilla vypne službu Pocket (Wikipedie) pro ukládání článků z webu na později. Do 8. října si uživatelé mohou vyexportovat data. Mozilla koupila Pocket v únoru 2017. Několik měsíců byl Pocket integrovanou součástí Firefoxu.
Turris OS má aktuálně problém s aktualizací související s ukončením podpory protokolu OCSP u certifikační autority Let's Encrypt.
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í.
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/../authorizedSkript č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.