How to enable Wireshark like user

Wireshark should non-superusers be able to capture packets
How to enable Wireshark like user

Nel momento in cui si installa wireshark, viene mostrato la possibilità di scegliere, tra l’utilizzo come normale utente , oppure come consigliato, da root. Purtroppo la scelta di avviare wireshark come semplice user, non funziona, almeno in Debian 10/11, per un problema di permessi “Wireshark should non-superusers be able to capture packets”.

Soluzione:

sudo usermod -a -G wireshark $USER
sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 755 /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap

enjy 😉

 

(Solved) Certbot error could not bind to IPv4

(Solved) Certbot error could not bind to IPv4
(Solved) Certbot error could not bind to IPv4

 

Su un mio server ho avuto un problema con il rinnovo del certificato Let’s Encrypt, tramite certbot. L’errore è il seguente:

Attempting to renew cert (mio_server.com) from /etc/letsencrypt/renewal/mio_server.com.conf produced an unexpected error: Problem binding to port 80: Could not bind to IPv4 or IPv6.. Skipping.
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/mio_server.com/fullchain.pem (failure)

come si evince da questo tipo di errore, il tutto mi ha portato a verificare le regole di nat, non trovando però nulla di anomalo. Per aggiornare manualmente Lets’Encrypt, i passi che mi ricordo di avere sempre fatto, sono i seguenti:

# systemctl stop nginx
# certbot renew --dry-run #(come test)

quindi:

# certbot renew

ma l’errore era sempre lo stesso, quindi sono andato a verificare quale programma andava ad utilizzare la porta 80:

# sudo ss -tlpn | grep -E ":(80|443)"

e con mia sorpresa ho notato che nginx, che io avevo stoppato, la utilizzava ancora:

LISTEN 0 511 0.0.0.0:8080 0.0.0.0:* users:(("nginx",pid=21906,fd=12),("nginx",pid=21905,fd=12),("nginx",pid=21904,fd=12),("nginx",pid=21903,fd=12),("nginx",pid=21902,fd=12))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=21906,fd=8),("nginx",pid=21905,fd=8),("nginx",pid=21904,fd=8),("nginx",pid=21903,fd=8),("nginx",pid=21902,fd=8))
LISTEN 0 511 [::]:8001 [::]:* users:(("nginx",pid=21906,fd=9),("nginx",pid=21905,fd=9),("nginx",pid=21904,fd=9),("nginx",pid=21903,fd=9),("nginx",pid=21902,fd=9))

non so per quale motivo e nemmeno ho indagato a fondo, ma dopo aver stoppato nginx, se davo 2 comandi “certbot” di seguito, automaticamente nginx ripartiva automaticamente. Quindi per risolvere basta:

# systemctl stop nginx
# certbot renew
# systemctl start nginx
(Solved) Certbot error could not bind to IPv4

enjoy 😉

 

Huawei ME936 modulo LTE Debian 10

 

Huawei ME936 modulo LTE Debian 10
Huawei ME936 modulo LTE Debian 10

 

Per uno dei miei notebook workstation, Schenker XMG P507, ho comprato un modulo LTE Huawei ME936, che per farlo funzionare, su Debian 10, c’è bisogno di qualche trick. Dopo aver creato una connessione Mobile Broadband, tramite Network-Manager, non si riesce a navigare, e come si può vedere sotto con i due comandi, la scheda viene riconosciuta:

$ lsusb
$ usb-devices

output:

edmond@debianbox:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 04f2:b5a7 Chicony Electronics Co., Ltd
Bus 001 Device 004: ID 8087:0a2b Intel Corp.
Bus 001 Device 003: ID 1c7a:0603 LighTuning Technology Inc.
Bus 001 Device 002: ID 12d1:15bb Huawei Technologies Co., Ltd. ME936 LTE/HSDPA+ 4G modem
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
edmond@debianbox:~$ usb-devices

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh=16
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev=05.10
S: Manufacturer=Linux 5.10.0-0.bpo.4-amd64 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=0000:00:14.0
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub

T: Bus=01 Lev=01 Prnt=01 Port=05 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 3
P: Vendor=12d1 ProdID=15bb Rev=00.01
S: Manufacturer=Huawei Technologies Co., Ltd.
S: Product=HUAWEI Mobile Broadband Module
C: #Ifs= 3 Cfg#= 3 Atr=a0 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I: If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I: If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=05 Prot=14 Driver=option

T: Bus=01 Lev=01 Prnt=01 Port=06 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1c7a ProdID=0603 Rev=02.00
S: Manufacturer=EgisTec
S: Product=EgisTec_ES603
C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)

T: Bus=01 Lev=01 Prnt=01 Port=07 Cnt=03 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=8087 ProdID=0a2b Rev=00.10
C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#=0x0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I: If#=0x1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

T: Bus=01 Lev=01 Prnt=01 Port=08 Cnt=04 Dev#= 5 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=04f2 ProdID=b5a7 Rev=36.01
S: Manufacturer=SunplusIT Inc
S: Product=Chicony USB 2.0 Camera
C: #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
I: If#=0x1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo

T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 8
D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
P: Vendor=1d6b ProdID=0003 Rev=05.10
S: Manufacturer=Linux 5.10.0-0.bpo.4-amd64 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=0000:00:14.0
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
edmond@debianbox:~$

La soluzione è quella di creare un file “udev-rule”, dove inserire in maniera specifica i parametri necessari:

$ sudo nano /etc/udev/rules.d/71-huawei-me936conf.rules

ed incollare dentro:

ACTION=="add|change", SUBSYSTEM=="usb", \
ENV{DEVTYPE}=="usb_device", \
ATTR{idVendor}=="12d1", ATTR{idProduct}=="15bb", \
ATTR{bNumConfigurations}=="3",
ATTR{bConfigurationValue}!="3" \
ATTR{bConfigurationValue}="3"

dopo aver riavviato, si potrà utilizzare la connessione LTE.

Huawei ME936 modulo LTE Debian 10

enjoy 😉

 

Fast-cli speedtest da terminale Debian 10

 

Fast-cli speedtest da terminale Debian 10

Fast-cli speedtest da terminale Debian 10

Il sito Fast.com per misurare la connessione internet, è un servizo a cui provvede Netflix per far verificare se si è in grado di visualizzare i loro contenuti. Anche in questo caso, con fast-cli, come per speedtest-cli, la misurazione si può fare anche da terminale. Quello che serve è una installazione aggiornata di nodejs, poichè la versione nei repository, la v10.24.0, non va bene.

Rimozione ed Installazione nodejs:

$ sudo apt purge npm
$ sudo apt-get install curl software-properties-common
$ curl -sL https://deb.nodesource.com/setup_15.x | sudo bash -
$ sudo apt-get install nodejs

Installazione fast-cli:

$ sudo npm install --global fast-cli

Utilizzo:

$ fast -u
Fast-cli speedtest da terminale Debian 10

enjoy 😉

(Solved) Failed to start load apparmor profiles Debian 10

 

(Solved) Failed to start load apparmor profiles debian 10
(Solved) Failed to start load apparmor profiles Debian 10

L’errore “Failed to start load apparmor profiles” appare al boot su Debian 10, dopo aver fatto gli aggiornamenti, con conseguente avanzamento di versione. La prima cosa da fare è trovare l’errore con il comando sotto:

sudo systemctl status apparmor.service

output:

root@debianbox:/home/edmond# systemctl status apparmor.service
● apparmor.service - Load AppArmor profiles
Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2021-04-11 11:02:19 CEST; 2min 22s ago
Docs: man:apparmor(7)
https://gitlab.com/apparmor/apparmor/wikis/home/
Main PID: 618 (code=exited, status=1/FAILURE)

Apr 11 11:02:19 debianbox systemd[1]: Starting Load AppArmor profiles...
Apr 11 11:02:19 debianbox apparmor.systemd[618]: Restarting AppArmor
Apr 11 11:02:19 debianbox apparmor.systemd[618]: Reloading AppArmor profiles
Apr 11 11:02:19 debianbox apparmor.systemd[618]: Skipping profile in /etc/apparmor.d/disable: usr.bin.thunderbird
Apr 11 11:02:19 debianbox apparmor.systemd[618]: Error: No profiles found in /var/lib/snapd/apparmor/profiles
Apr 11 11:02:19 debianbox systemd[1]: apparmor.service: Main process exited, code=exited, status=1/FAILURE
Apr 11 11:02:19 debianbox systemd[1]: apparmor.service: Failed with result 'exit-code'.
Apr 11 11:02:19 debianbox systemd[1]: Failed to start Load AppArmor profiles

come si vede, nel mio caso, il profilo incriminato riguarda snapd, e siccome snap non mi serve, ho proceduto alla rimozione:

sudo apt purge snapd

dopodichè basterà riavviare Apparmor:

sudo systemctl restart apparmor.service

e verificare il funzionamento:

sudo systemctl status apparmor.service
sudo aa-status
(Solved) Failed to start load apparmor profiles Debian 10

 

enjoy 😉

 

Speedtest-cli failed su Debian 10

Speedtest-cli failed su Debian 10

Speedtest-cli failed su Debian 10

Nell’ultimo periodo lo strumento di speedtest da riga di comando, speedtest-cli, installato direttamente dai repository, sembra non funzionare più. L’errore che si ha, se non ricordo male, riporta ad errori “php ed altri”  Io ho risolto rimuovendo la vecchia installazione, ed installando il tutto manualmente:

Rimozione:

sudo apt remove --purge speedtest-cli

oppure:

sudo pip uninstall speedtest-cli

Installazione:

sudo apt-get install python3-pip
wget https://raw.github.com/sivel/speedtest-cli/master/speedtest.py
chmod a+rx speedtest.py
sudo mv speedtest.py /usr/local/bin/speedtest-cli
sudo chown root:root /usr/local/bin/speedtest-cli
sudo speedtest-cli
Speedtest-cli failed su Debian 10

enjoy 😉

Raspberry Pi backup veloce sd card

 

Raspberry Pi backup veloce sd card

Raspberry Pi backup veloce sd card

 

Guida su come ottenere un backup veloce e funzionante del proprio sistema. Per chi utilizza un Raspberry Pi, con tutto il sistema installato su sd card, è buona regola avere un backup completo, per poter ovviare velocemente ad una ipotetica perdita/rottura dei dati sulla sd card. A difesa delle sd card, io posso tetimoniare, essendo possessore di tanti Raspberry Pi, fin da  maggio 2012, che se si acquistano le migliori, difficilmente si rompono. Io per i vari utilizzi, ho speso di più per la sd card che per il Raspberry Pi. I metodi di backup a cui io mi riferisco utilizzano i comandi dd e rsync.  Il classico metodo più utilizzato e sicuro è il seguente:

 

Metodo 1)

Estrarre dal Raspberry Pi la sd card di origine e creare un file img

sudo dd bs=4M if=/dev/sdx of=PiOS.img

Ripristinare su sd card di backup:

sudo dd bs=4M if=PiOS.img of=/dev/sdx

Con il metodo sopra i tempi sono più lunghi, poichè dd, clona tutto. Esistono altri metodi simili, aggiungendo la compressione, ma a me non soddisfano.

 

Metodo 2)

Questo metodo è quello che utilizzo io, e può essere eseguito sia a caldo, sia estraendo la sd card clonandola. Per questo metodo si utilizza dd, solo per quanto riguarda le tabelle delle partizioni, e la partizione di boot, tutto il resto lo farà rsync copiando velocemente il contenuto della rootfs.

Inserire su pc la  sd card da cui effettuare il backup e raccogliere informazioni:

sudo fdisk -l

 

Raspberry Pi backup veloce sd card

 

 

esistono 2 partizioni, nel mio caso, /dev/sdc1 di boot ed /dev/sdc2 rootfs. Bisogna prendere nota delle 2 voci start, 8192 e 534528, cosicchè da creare una identica tabella delle partizioni, contenendo tutti i files di boot:

sudo dd bs=4k count=$((8192/8)) if=/dev/sdc | gzip >boot-img.gz
sudo dd bs=4k count=$((534528/8)) if=/dev/sdc | gzip >rootfs-img.gz

Adesso dobbiamo copiare in una cartella il contenuto di /dev/sdc2 utilizzando rsync:

sudo apt install rsync
sudo mkdir /mnt/{dati,rootfs}
sudo mount /dev/sdc2 /mnt/dati/
sudo rsync -aHAXSP /mnt/dati/ /mnt/rootfs/
sudo umount /dev/sdc2

Basta. Finito. Tempo totale meno di 3 minuti:

 

Raspberry Pi backup veloce sd card

 

Inserire la sd card di backup:

Azzerare tabella partizioni:

sudo dd count=1 bs=512 if=/dev/zero of=/dev/sdc

creazione della tabella delle partizione come da sd card origine:

sudo zcat boot-img.gz | sudo dd bs=4k iflag=fullblock of=/dev/sdc
sudo partprobe /dev/sdc
sudo zcat rootfs-img.gz | sudo dd bs=4k iflag=fullblock of=/dev/sdc
sudo partprobe /dev/sdc

formattare la seconda partizione in ext4:

sudo mkfs.ext4 -L rootfs /dev/sdc2

mount e copia :

sudo mount /dev/sdc2 /mnt/dati/
sudo rsync -aHAXSP /mnt/rootfs/ /mnt/dati/

umount ed attendere, può volerci qualche minuto:

sudo umount /dev/sdc2

 

Tempo totale 15 minuti circa. A questo punto se tutto è andato bene, abbiamo una copia perfetta della sd card di origine. Questo metodo funziona anche in presenza di database.

Raspberry Pi backup veloce sd card

 

enjoy 😉

 

Debian 10 freeze random

 

Debian 10 freeze random

Debian 10 freeze random

Su Debian 10 si verificano dei freeze randomici, dove praticamente l’unica cosa che funziona è il mouse, e questo mi è capitato sia con scheda grafica Nvidia, sia con la solo Intel, di conseguenza ho escluso che fosse un problema grafico. La mia attenzione successivamente è andata al kernel installato, e mi sono ricordato che con il kernel di default Debian, il 4.19, non avevo questi problemi. Aggiornando alla versione 5.8 e 5.9, si presenta randomicamente questo freeze. Praticamente puoi accedere solo in tty ed eseguire il reboot. Ho anche eseguito l’accesso via ssh, ma nei log non ho notato nulla di strano. Verificando la versione dei firmware ho notato che sono tutti alla versione 2019, compresi i firmware-nonfree. Quindi, con kernel aggiornato, servono per forza gli ultimi driver. Si risolve con i repository buster-backports:

$ sudo su
# echo 'deb http://deb.debian.org/debian/ buster-backports main contrib non-free' > /etc/apt/sources.list.d/buster-backports.list.list
# apt update
# apt install -t buster-backports firmware-linux-nonfree firmware-misc-nonfree amd64-microcode firmware-intel-sound firmware-iwlwifi
Debian 10 freeze random

 

enjoy 😉

 

Raspberry rimuovere utente Pi

 

Raspberry rimuovere utente Pi
Raspberry rimuovere utente Pi

Per chi utilizza il Raspberry Pi, e di conseguenza Raspberry Pi OS ex Raspbian e non solo, si deve loggare con username “pi” e password “raspberry“. Chiaramente la prima cosa che si fa è quella di cambiare la password di default, ma ancora meglio sarebbe creare un nuovo user ed eliminare quello di default. Questo è quello che io faccio al primo accesso ssh:

1) Login come user pi e creazione nuovo utente “edmond

$ sudo adduser edmond

2) aggiungere utente al gruppo visudo

$ sudo visudo

ed aggiungere

edmond ALL=(ALL:ALL) ALL

come sotto:

# User privilege specification
root ALL=(ALL:ALL) ALL
edmond ALL=(ALL:ALL) ALL

3) aggiungere il nuovo utente al gruppo sudo

$ sudo usermod -a -G sudo edmond

4) aggiungere il nuovo utente agli stessi gruppi dell’utente “pi”

$ sudo usermod -a -G adm,dialout,cdrom,sudo,audio,plugdev,games,users,input,netdev,ssh,gpio,i2c,spi edmond

5) logout ed accesso col nuovo utente:

$ sudo deluser pi
$ sudo rm -rf /home/pi/

da questo momento si può utilizzare l’utility:

$ sudo raspi-config
Raspberry rimuovere utente Pi

 

enjoy 😉

 

Creare una usb bootable con Windows 10 da terminale Linux

Creare una usb bootable con Windows 10 da terminale Linux

Creare una usb bootable con Windows 10 da terminale Linux

Questa guida spiega come creare una usb bootable di Windows 10 in Bios Mode, utilizzando il terminale Linux. La guida fatta in passato, con lo stesso metodo, non funziona più, poichè la dimensione di Windows 10 ha superato i 4G, quindi non si può più formattare in fat32. Per chi volesse invece una installazione in UEfI Mode, basta seguire questa guida appena aggiornata. Nella guida utilizzo parted da terminale, ma si può utilizzare gparted o altri, l’importante è avere una partizione NTFS.

Tools:

# apt install parted p7zip-full

Identificare la chiavetta usb:

# fdisk -l

nel mio caso /dev/sdc di 16G

Formattazione:

# dd count=1 bs=512 if=/dev/zero of=/dev/sdc

Creazione tabella delle partizioni più partizione NTFS:

# parted /dev/sdc
(parted) mklabel msdos                                          
(parted) mkpart primary 0% 100%                                 
(parted) set 1 boot on                                                   
(parted) q
# mkfs.ntfs -L win10-bios -f /dev/sdc1
# mount /dev/sdc1 /mnt
# cd /mnt/
# 7z x /percorso_win_iso_scaricata/windows10.iso
# cd ..
# umount /dev/sdc1
Creare una usb bootable con Windows 10 da terminale Linux

 

enjoy 😉