Antifurto

Centrale Combivox
Telecamere hikvision

Annunci
Pubblicato in Uncategorized | Lascia un commento

Moto G5S

Motorola Moto G5S

Chipset: Qualcomm Snapdragon 430 MSM8937
DSP Qualcomm® Hexagon™ 536
AUDIO Qualcomm Aqstic™ audio technology

AQT1000 Qualcomm Aqstic™ Hi-Fi DAC

Pubblicato in Uncategorized | Contrassegnato , , , , , , , , , , | Lascia un commento

NetFilter – IPTABLES

situazione di partenza: tutte le policy sono ACCEPT.

inserisco le le regole manualmente, verifico con iptables -vnL, poi le salvo in un file con il comando iptables-save:

# inserisco le policy di base: tutto chiuso
iptables -P INPUT DROP
iptables -P FORWARD DROP
# lasciamo libero il traffico di loopback
iptables -A INPUT -i lo -j ACCEPT
# consento il traffico richiesto da noi:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -vnL
iptables-save > iptables.rules.up

ora le connessioni dall’esterno sono chiuse: bisogna aprire le porte dei servizi che ci interessano.

per vedere quali porte sono in ascolto, oltre a netstat è possibile usare lsof:

lsof -i

in output abbiamo le porte in ascolto in formato testuale: i corrispondenti valori numerici si trovano in /etc/services.

ad esempio, trovo che smbd ascolta su TCP *:microsoft-ds (Microsoft Naked CIFS) e TCP *:netbios-ssn (NETBIOS session service): sono le porte 139 e 445

invece nmbd ascolta su netbios-ns (NETBIOS Name Service) e netbios-dgm (NETBIOS Datagram Service), porte 137 e 138

  • UDP *:netbios-ns
  • UDP *:netbios-dgm
  • UDP nomehost.nomedominio:netbios-ns
  • UDP nomehost.nomedominio:netbios-dgm
  • UDP 192.168.1.255:netbios-ns
  • UDP 192.168.1.255:netbios-dgm

dunque devo solo aprire le porte 139 e 445 TCP e 137-138 UDP , limitando il traffico alla sola rete locale:

iptables -A INPUT -p tcp --dport 139 -m state --state NEW -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -m state --state NEW -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 137 -m state --state NEW -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 138 -m state --state NEW -s 192.168.1.0/24 -j ACCEPT

per fare pulizia:

iptables -F #Cancellazione delle regole presenti nelle chains
iptables -X #Eliminazione delle chains non standard vuote
iptables -Z #Inizializzazione dei contatori (utile per il debugging)

per ripristinare le regole precedentemente salvate:

iptables-restore < iptables.up.rules

il file iptables.up.rules è simile a:

# Generated by iptables-save v1.6.2 on Xxx Xxx xx xx:xx:xx 2018
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 139 -m state --state NEW -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 445 -m state --state NEW -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 137 -m state --state NEW -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 138 -m state --state NEW -j ACCEPT
-A INPUT -p udp -m udp --dport 500 -m state --state NEW -j ACCEPT
-A INPUT -p udp -m udp --dport 4500 -m state --state NEW -j ACCEPT
COMMIT
# Completed on Xxx Xxx xx xx:xx:xx 2018

per gestire le regole:

# numerare le regole:
iptables -L INPUT --line-numbers
# cancellare una regola per numero, ad es. il 10:
iptables -D INPUT 10
# inserire una regola tra le esistenti 9 e 10:
# la 10ma diventa così 11esima
iptables -I INPUT 10 -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

per caricare e rimuovere le regole di iptables quando si avvia o si disconnette una connessione di rete, ci sono gli script pre-up e pre-down di /etc/network/interfaces.

se le connessioni sono gestite da NetworkManager, vengono eseguiti gli script contenuti in /etc/networkManager/dispatcher.d , in particolare quelli contenuti nelle directories pre-up.d e pre-down.d: creo uno script iptables in ognuna di esse, e nel primo scrivo

#!/bin/sh
iptables-restore < /etc/iptables.up.rules

analogamente per il secondo, scrivo iptables.down.rules.
dò i permessi 0700 agli script e 0600 ai file delle regole.

NetworkManager può essere gestito da shell con nmcli:
soppando e riavviando la connessione possiamo testare gli script pre-up e pre-down delle regole iptables.

# senza argomenti fornisce una panoramica:
nmcli
# per vedere i dettagli delle connessioni
nmcli -p con show
nmcli con show
# per avviare|stoppare una connessione per nome
nmcli con up|down "Wired connection 1"

riferimenti

Pubblicato in Debian | Contrassegnato , , , | Lascia un commento

Debian StrongSwan e MiniSSDPd

Appunti di configurazione:

MiniSSDPd

Il file /var/log/daemon.log era pieno di avvisi del tipo

minissdpd[30585]: peer 192.168.1.200:32500 is not from a LAN

Per correggerlo bisogna modificare il file /etc/default/minissdpd specificando l’interfaccia su cui ascoltare:

MiniSSDPd_INTERFACE_ADDRESS=enp2s0 # non 0.0.0.0

StrongSwan

https://www.strongswan.org/

Host Debian Buster (testing).
Configurazione di un “roadwarrior” Android 7 con client StrongSwan scaricabile da Play Store, con doppia autenticazione Certificato + EAP.

Oltre ad installare il pacchetto StrongSwan con le sue dipendenze, ho dovuto installare manualmente altri due pacchetti:

  1. strongswan-pki : necessario per creare e gestire i certificati da linea di comando ipsec
  2. libcharon-extra-plugins : necessario per usare l’autenticazione EAP-MSCHAPv2

Configurazione di /etc/ipsec.conf

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
# strictcrlpolicy=yes
# uniqueids = no

# Add connections here.

# Sample VPN connections

#conn sample-self-signed
#             leftsubnet=10.1.0.0/16
#             leftcert=selfCert.der
#             leftsendcert=never
#             right=192.168.0.2
#             rightsubnet=10.2.0.0/16
#             rightcert=peerCert.der
#             auto=start

#conn sample-with-ca-cert
#             leftsubnet=10.1.0.0/16
#             leftcert=myCert.pem
#             right=192.168.0.2
#             rightsubnet=10.2.0.0/16
#             rightid="C=CH, O=Linux strongSwan CN=peer name"
#             auto=start

conn roadwarrior
keyexchange=ikev2
auto=add

# Server Side
left=%any
leftauth=pubkey
leftcert=serverCert.pem
leftid=guzka.ddns.net
leftsubnet=0.0.0.0/0

# Client side
right=%any
# rightsourceip=192.168.2.0/24
rightsourceip=%dhcp
rightauth=pubkey
rightauth2=eap-mschapv2
rightcert=clientCert.pem
rightdns=208.67.222.222,208.67.220.220

include /var/lib/strongswan/ipsec.conf.inc

Configurazione di /etc/ipsec.secrets

: RSA serverKey.pem
nomeutente : EAP "password"

I certificati sono stati creati con lo script:
(ATTENZIONE: verificare se i parametri –san possono essere impostati diversamente)
Copiare sul client sia il clientCert.p12 che il caCert.pem

#!/bin/sh
ipsec pki --gen --outform pem > caKey.pem
ipsec pki --self --in caKey.pem --dn "C=IT, O=xyz.ddns.net, CN=Nome Autorità" --ca --outform pem > caCert.pem
ipsec pki --gen --outform pem > serverKey.pem
ipsec pki --pub --in serverKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=IT, O=xyz.ddns.net, CN=xyz.ddns.net" --san="xyz.ddns.net" --flag serverAuth --flag ikeIntermediate --outform pem > serverCert.pem
ipsec pki --gen --outform pem > clientKey.pem
ipsec pki --pub --in clientKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=IT, O=xyz.ddns.net, CN=Nome Client" --san="client" --outform pem > clientCert.pem
openssl pkcs12 -export -inkey clientKey.pem -in clientCert.pem -name "client" -certfile caCert.pem -caname "xxxx" -out clientCert.p12

# where to put them...
mv caCert.pem /etc/ipsec.d/cacerts/
mv serverCert.pem /etc/ipsec.d/certs/
mv serverKey.pem /etc/ipsec.d/private/
mv clientCert.pem /etc/ipsec.d/certs/
mv clientKey.pem /etc/ipsec.d/private/
mv caKey.pem /etc/ipsec.d/private/

Sul firewall, ho impostato il forwarding delle porte UDP 500 e 4500.

Per riavviare il server VPN, il tunnel IPSec, o per ricaricare le credenziali:

systemctl restart|status|stop|start strongswan
ipsec reload
ipsec rereadsecrets

Configurazione del FORWARDING per il traffico verso il roadwarrior

ho risolto così:

  1. ho creato lo script iptables modificato in /etc/NetworkManager/dispatcher.d/pre-up.d/
    #!/bin/sh
    
    LOGFILE=/var/log/iptables.log
    
    if [ "$1" = lo ]; then
    echo "$0: ignoring $1 for \`$2'" >> $LOGFILE
    exit 0
    fi
    
    case "$2" in
    pre-up)
    echo "$0: restoring iptables rules for $1" >> $LOGFILE
    /sbin/iptables-restore /etc/iptables.up.rules >> $LOGFILE 2>&1 && {
    echo "$0: abilito ip_forward" >> $LOGFILE
    echo 1 > /proc/sys/net/ipv4/ip_forward
    }
    #/sbin/ip6tables-restore /etc/network/ip6tables.up.rules >> $LOGFILE 2>&1
    ;;
    *)
    echo "$0: nothing to do with $1 for \`$2'" >> $LOGFILE
    ;;
    esac
    
    exit 0
    
  2. il file /etc/iptables.up.rules contiene la policy di DROP per il FORWARD, ovviamente può (e deve) essere rifinito meglio:
    *filter
    :INPUT ACCEPT
    :FORWARD DROP
    :OUTPUT ACCEPT
    COMMIT
    
  3. ho aggiunto a /etc/ipsec.conf l’opzione leftfirewall=yes che gestisce dinamicamente le regole di iptables per le connessioni IPSEC

RIFERIMENTI:

  1. abilitare ipv4 forwarding:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    # per renderlo persistente:
    nano /etc/sysctl.conf
    net.ipv4.ip_forward = 1
  2. impostare le regole iptables:
    iptables -I INPUT -m policy –dir in –pol ipsec –proto esp -j ACCEPT
    iptables -I FORWARD -m policy –dir in –pol ipsec –proto esp -j ACCEPT
    iptables -I FORWARD -m policy –dir out –pol ipsec –proto esp -j ACCEPT
    iptables -I OUTPUT -m policy –dir out –pol ipsec –proto esp -j ACCEPT
  3. vedere https://wiki.strongswan.org/projects/strongswan/wiki/ForwardingAndSplitTunneling
  4. vedere https://feeding.cloud.geek.nz/posts/using-iptables-with-network-manager/ :
    creare uno script in /etc/NetworkManager/dispatcher.d/pre-up.d/ con nome ad es. iptables, renderlo eseguibile, ed inserire

    #!/bin/sh
    
    LOGFILE=/var/log/iptables.log
    
    if [ "$1" = lo ]; then
    echo "$0: ignoring $1 for \`$2'" >> $LOGFILE
    exit 0
    fi
    
    case "$2" in
    pre-up)
    echo "$0: restoring iptables rules for $1" >> $LOGFILE
    /sbin/iptables-restore /etc/network/iptables.up.rules >> $LOGFILE 2>&1
    /sbin/ip6tables-restore /etc/network/ip6tables.up.rules >> $LOGFILE 2>&1
    ;;
    *)
    echo "$0: nothing to do with $1 for \`$2'" >> $LOGFILE
    ;;
    esac
    
    exit 0
    

riferimenti:

  1. https://wiki.archlinux.org/index.php/StrongSwan
  2. https://wiki.openwrt.org/doc/howto/vpn.ipsec.roadwarrior
Pubblicato in Debian | Contrassegnato , , , , , | Lascia un commento

Cosa sono il Nazional-Socialismo e il Fascismo

Se qualcuno si fosse preso la briga di leggere il VERO Mein Kampf, edito soltanto a partire dal 2016, perchè fino ad allora i diritti d’autore erano detenuti dal Land di Baviera che ne aveva vietata la diffusione a causa del suo “alto potenziale evocativo”, capirebbe senza il minimo indugio che il Nazional-Socialismo e il suo omologo Fascismo si possono descrivere con questa splendida definizione data dal musicologo Luigi Magnani a riguardo dell’ideale Romantico:

« Il nuovo regno, vagheggiato dai romantici come una nuova età dell’oro, se significava affermazione della libertà e della fraternità umana, esaltazione di tutti i valori dello spirito, appariva nondimeno quale ritorno agli ideali della Grecia antica […] Il diffuso umanesimo, mirante alla riconquista della integrità dell’uomo, poneva i poeti, i filosofi e i tragici greci quali modelli supremi e auspicava l’avvento dello «stato di natura», non inteso come primitiva selvaggia barbarie, ma come mitica “Arcadia” in cui la natura divinizzata si identificava con l’Ideale («Ideale è ciò che è Natura» diceva Hölderlin) ed in cui l’uomo, in accordo pieno con la società, avrebbe potuto attuare quella armonia degli spiriti che, per il poeta di Hyperion, avrebbe segnato l’inizio “di una nuova storia del mondo”, di un rinnovamento della umanità. »

Lo stesso spirito si trova ovviamente nella Nona Sinfonia di Beethoven:

« O amici, non questi suoni!
ma intoniamone altri
più piacevoli, e più gioiosi.

Gioia, bella scintilla divina,
figlia dell’Elisio,
noi entriamo ebbri e frementi,
celeste, nel tuo tempio.
Il tuo fascino riunisce
ciò che la moda separò
ogni uomo s’affratella
dove la tua ala soave freme.

L’uomo a cui la sorte benevola,
concesse il dono di un amico,
chi ha ottenuto una donna devota,
unisca il suo giubilo al nostro!
Sì, chi anche una sola anima
possa dir sua nel mondo!
Chi invece non c’è riuscito,
lasci piangente e furtivo questa compagnia!

Gioia bevono tutti i viventi
dai seni della natura;
vanno i buoni e i malvagi
sul sentiero suo di rose!
Baci ci ha dato e uva,
un amico, provato fino alla morte!
La voluttà fu concessa al verme,
e il cherubino sta davanti a Dio!

Lieti, come i suoi astri volano
attraverso la volta splendida del cielo,
percorrete, fratelli, la vostra strada,
gioiosi, come un eroe verso la vittoria.

Abbracciatevi, moltitudini!
Questo bacio vada al mondo intero!
Fratelli, sopra il cielo stellato
deve abitare un padre affettuoso.
Vi inginocchiate, moltitudini?
Intuisci il tuo creatore, mondo?
Cercalo sopra il cielo stellato!
Sopra le stelle deve abitare!

“Gioia” si chiama la forte molla
che sta nella natura eterna.
Gioia, gioia aziona le ruote
nel grande meccanismo del mondo.
Essa attrae fuori i fiori dalle gemme,
gli astri dal firmamento,
conduce le stelle nello spazio,
che il canocchiale dell’osservatore non vede. »

Pubblicato in Pensieri | Contrassegnato , , , , , , , , , , , , | Lascia un commento

Vini russi e di abbazia

http://press.russianews.it/press/la-produzione-locale-vino-russia/

Fornitore http://newwineco.ru

Abbazia Monte Oliveto, Siena

http://www.agricolamonteoliveto.com/

Pubblicato in Enogastronomia | Contrassegnato , , , , | Lascia un commento

Configurazione VGA passthrough con libvirt e qemu-kvm

  • creare una nuova macchina virtuale e impostare il chipset Q35 (forse non è necessario)
  • è necessario un BIOS di tipo UEFI: per la compatibilità con VGA passthrough, scaricare OVMF da https://github.com/tianocore/tianocore.github.io/wiki/OVMF e impostarlo per la VM
    esempio:

    <loader readonly='yes' type='pflash'>/raid/GESTIONE/ovmf-x64/OVMF-pure-efi.fd</loader>
    <nvram>/raid/GESTIONE/ovmf-x64/OVMF_VARS-pure-efi.fd</nvram>
  • CPU: scrivere ‘host-passthrough’ in virtmanager
  • cambiare BUS disco1 in VirtIO
  • scheda rete: ‘dispositivo host’ selezionare la macvlan creata (vedere in seguito), modello virtio
  • aggiungere i dispositivi pass-through PCI (NVIDIA) e USB (mouse e tastiera)
  • da shell, editare l’ XML della VM e aggiungere a <features>:
    <features>
            <hyperv>
                    ...
                    <vendor_id state='on' value='123456789abc'/>
                    ...
            </hyperv>
            ...
            <kvm>
            <hidden state='on'/>
            </kvm>
    </features>
    
  • in alternativa (ma è preferibile il precedente punto):
    <!-- modificare il namespace-->
    <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
    <!-- aggiungere i seguenti parametri -->
    <qemu:commandline>
    <qemu:arg value='-cpu'/>
    <qemu:arg value='host,hv_time,kvm=off,hv_vendor_id=null'/>
    </qemu:commandline>

Per impostare una interfaccia di rete virtuale che consenta la comunicazione tra il guest e l’ esterno (compreso il traffico verso l’ host), è necessario creare una interfaccia MAC-VLAN: questa interfaccia virtuale assume un proprio indirizzo MAC e IP, e le si assegna una route e il gateway

https://www.furorteutonicus.eu/2013/08/04/enabling-host-guest-networking-with-kvm-macvlan-and-macvtap/

#!/bin/bash

# let host and guests talk to each other over macvlan
# configures a macvlan interface on the hypervisor
# run this on the hypervisor (e.g. in /etc/rc.local)
# made for IPv4; need modification for IPv6
# meant for a simple network setup with only eth0,
# and a static (manual) ip config
# Evert Mouw, 2013

HWLINK=enp0s31f6
MACVLN=macvlan0
TESTHOST=www.google.com

# ------------
# wait for network availability
# ------------

while ! ping -q -c 1 $TESTHOST > /dev/null
do
    echo "$0: Cannot ping $TESTHOST, waiting another 5 secs..."
    sleep 5
done

# ------------
# get network config
# ------------

IP=$(ip address show dev $HWLINK | grep "inet " | awk '{print $2}')
NETWORK=$(ip -o route | grep $HWLINK | grep -v default | awk '{print $1}')
GATEWAY=$(ip -o route | grep default | awk '{print $3}')

# ------------
# setting up $MACVLN interface
# ------------

ip link add link $HWLINK $MACVLN type macvlan mode bridge
ip address add $IP dev $MACVLN
ip link set dev $MACVLN up

# ------------
# routing table
# ------------

# empty routes
ip route flush dev $HWLINK
ip route flush dev $MACVLN

# add routes
ip route add $NETWORK dev $MACVLN metric 0

# add the default gateway
ip route add default via $GATEWAY

vedere anche http://hicu.be/bridge-vs-macvlan

Pubblicato in Debian | Contrassegnato , , , , , , , , , , , , , | Lascia un commento