Dopo aver installato Manjaro, ho iniziato a lavoraci e mi sono accorto che non avevo creato la partizione di swap, motivo per cui aprendo due macchine virtuali il sistema diventava instabile.
Partizione di swap o swap file?
Non avendo spazio libero sul disco ho optato per creare un file di swap all’interno della partizione esistente. Premetto che comunque sui nuovi kernel, per quanto riguarda le prestazioni, utilizzare una partizione piuttosto che il file di swap sulla stessa non porta a nessun miglioramento.
“In current Linux kernels, it is possible to use a swap file instead of a dedicated partition and as from kernel 2.6 onwards there is no performance difference any more between the two.”
Step by step swapfile
Verifico che non ci sia nessun altro file di swap:
Dalla shell utilizzo il comando df
Creiamo tramite dd un file vuoto sulla root chiamandolo swapfile e assegnando la dimensione che più si adatta al nostro sistema.
Fatto ciò verifichiamo che il file sia presente e modifichiamo i permessi con chmod:
sudo chmod 600 swapfile
Utilizziamo mkswap che si occuperà della parte più complicata a mio avviso, della procedura, cioè rendere il file che abbiamo creato un file di swap, un area che il sistema utilizzerà quando avrà saturato la memoria RAM a sua disposizione:
sudo mkswap swapfile
Abilitiamo il file di swap appena creato e aggiungiamolo al nostro fstab:
venv (Python 3) e virtualenv (Python 2), consentono di gestire installazioni di pacchetti separate per diversi progetti.
[walter@Manjaro-hp Scrivania]$ mkdir project1 [walter@Manjaro-hp Scrivania]$ cd project1/ [walter@Manjaro-hp project1]$ [walter@Manjaro-hp project1]$ python Python 3.10.4 (main, Mar 23 2022, 23:05:40) [GCC 11.2.0] on linux Type “help”, “copyright”, “credits” or “license” for more information.
import site print(site.getusersitepackages()) [‘/usr/lib/python3.10/site-packages’] <—– Rappresenta il percorso di sistema contenente le librerie che vengono installate.
Installiamo tramite il comando dalla shell la libreria “virtualenv”: pip install virtualenv Verifichiamo: [walter@Manjaro-hp project1]$ virtualenv –version virtualenv 20.14.1 from /home/walter/.local/lib/python3.10/site-packages/virtualenv/init.py
Una volta installata la libreria possiamo creare il nostro ambiente virtuale da personalizzare sulla base dei progetti che vogliamo gestire tramite virtualenv:
[walter@Manjaro-hp project1]$ virtualenv venv
L’output dovrebbe essere il seguente: created virtual environment CPython3.10.4.final.0-64 in 321ms creator CPython3Posix(dest=/home/walter/Scrivania/project1/venv, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/walter/.local/share/virtualenv) added seed packages: pip==22.0.4, setuptools==62.1.0, wheel==0.37.1 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
Una volta eseguito il comand virtualenv creerà una cartella con il nome venv contenente l’ambiente, ma non sarà ancora attivo.
Per attivarlo dobbiamo eseguire il file “activate”, contenuto all’interno della cartella venv/bin/. [walter@Manjaro-hp project1]$ . venv/bin/activate
Noteremo che la parte iniziale della nostra shell verrà modificata con il nome della cartella contenente il nostro ambiente virtuale tra parentesi tonde:
(venv) [walter@Manjaro-hp project1]$
Per verificare che l’ambiente è in esecuzione:
(venv) [walter@Manjaro-hp project1]$ python Python 3.10.4 (main, Mar 23 2022, 23:05:40) [GCC 11.2.0] on linux Type “help”, “copyright”, “credits” or “license” for more information.
import site print(site.getusersitepackages()) <——- Eseguiamo nuovamente un print per verificare il path /home/walter/.local/lib/python3.10/site-packages <——- percorso restituito
In questo caso il percorso contenente le librerie sarà quello del nostro ambiente virtuale e tutte le librerie che andremo ad aggiungere verranno installate all’interno di questo isolando di fatto l’ambiente di sistema.
WoeUSB è un ottimo sostituto di Rufus, visto che per Linux non è stato fatto nessun porting.
La versione “ng” si basa un folk del progetto originario, ma creata al 100% con Python interfaccia grafica inclusa. Il link del progetto è il seguente:
Ho eseguito l’installazione su Linux Manjaro tramite yay (Yet Another Yaourt), quindi verifica se presente yay eseguendo dalla shell yay –version. Se non lo hai installato devi prima eseguire questi 2 comandi:
1 – pacman -Syu 2 – pacman -S yay
Una volta installato yay eseguire come utente: yay -S woeusb-ng, yay si occuperà di tutto.
Trovate l’icona per eseguire WoeUSB-ng sotto la voce di menù: Accessori.
L’utilizzo è semplice, selezionare prima la ISO di Windows che si vuole scrivere sull’USB e come Target device la memoria USB, che in genere ha un nome del tipo: /dev/sdb(Nome_device). Fatto ciò confermiamo con “Install”.
Installazione su Mint
walter@walter-SVE1511C4E:~/Scrivania/WoeUSB-ng-master$ sudo apt install git p7zip-full python3-pip python3-wxgtk4.0 grub2-common grub-pc-bin parted dosfstools ntfs-3g
[sudo] password di walter:
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
dosfstools è già alla versione più recente (4.1-2).
p7zip-full è già alla versione più recente (16.02+dfsg-7build1).
grub-pc-bin è già alla versione più recente (2.04-1ubuntu26.16).
grub2-common è già alla versione più recente (2.04-1ubuntu26.16).
ntfs-3g è già alla versione più recente (1:2017.3.23AR.3-3ubuntu1.3).
parted è già alla versione più recente (3.3-4ubuntu0.20.04.1).
python3-pip è già alla versione più recente (20.0.2-5ubuntu1.8).
I seguenti pacchetti aggiuntivi saranno inoltre installati:
git-man liberror-perl python3-sip
Pacchetti suggeriti:
git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk
gitweb git-cvs git-mediawiki git-svn wx3.0-doc
I seguenti pacchetti NUOVI saranno installati:
git git-man liberror-perl python3-sip python3-wxgtk4.0
0 aggiornati, 5 installati, 0 da rimuovere e 0 non aggiornati.
È necessario scaricare 12,2 MB di archivi.
Dopo quest'operazione, verranno occupati 80,0 MB di spazio su disco.
Continuare? [S/n] s
Scaricamento di:1 http://archive.ubuntu.com/ubuntu focal/main amd64 liberror-perl all 0.17029-1 [26,5 kB]
Scaricamento di:2 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 git-man all 1:2.25.1-1ubuntu3.11 [887 kB]
Scaricamento di:3 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 git amd64 1:2.25.1-1ubuntu3.11 [4.605 kB]
Scaricamento di:4 http://archive.ubuntu.com/ubuntu focal/universe amd64 python3-sip amd64 4.19.21+dfsg-1build1 [87,9 kB]
Scaricamento di:5 http://archive.ubuntu.com/ubuntu focal/universe amd64 python3-wxgtk4.0 amd64 4.0.7+dfsg-2build1 [6.569 kB]
Recuperati 12,2 MB in 3s (3.910 kB/s)
Selezionato il pacchetto liberror-perl non precedentemente selezionato.
(Lettura del database... 375855 file e directory attualmente installati.)
Preparativi per estrarre .../liberror-perl_0.17029-1_all.deb...
Estrazione di liberror-perl (0.17029-1)...
Selezionato il pacchetto git-man non precedentemente selezionato.
Preparativi per estrarre .../git-man_1%3a2.25.1-1ubuntu3.11_all.deb...
Estrazione di git-man (1:2.25.1-1ubuntu3.11)...
Selezionato il pacchetto git non precedentemente selezionato.
Preparativi per estrarre .../git_1%3a2.25.1-1ubuntu3.11_amd64.deb...
Estrazione di git (1:2.25.1-1ubuntu3.11)...
Selezionato il pacchetto python3-sip non precedentemente selezionato.
Preparativi per estrarre .../python3-sip_4.19.21+dfsg-1build1_amd64.deb...
Estrazione di python3-sip (4.19.21+dfsg-1build1)...
Selezionato il pacchetto python3-wxgtk4.0 non precedentemente selezionato.
Preparativi per estrarre .../python3-wxgtk4.0_4.0.7+dfsg-2build1_amd64.deb...
Estrazione di python3-wxgtk4.0 (4.0.7+dfsg-2build1)...
Configurazione di liberror-perl (0.17029-1)...
Configurazione di git-man (1:2.25.1-1ubuntu3.11)...
Configurazione di python3-sip (4.19.21+dfsg-1build1)...
Configurazione di python3-wxgtk4.0 (4.0.7+dfsg-2build1)...
Configurazione di git (1:2.25.1-1ubuntu3.11)...
Elaborazione dei trigger per man-db (2.9.1-1)...
walter@walter-SVE1511C4E:~/Scrivania/WoeUSB-ng-master$ sudo pip3 install WoeUSB-ng
Collecting WoeUSB-ng
Downloading WoeUSB-ng-0.2.12.tar.gz (164 kB)
|████████████████████████████████| 164 kB 1.2 MB/s
Collecting termcolor
Downloading termcolor-2.3.0-py3-none-any.whl (6.9 kB)
Requirement already satisfied: wxPython in /usr/lib/python3/dist-packages (from WoeUSB-ng) (4.0.7)
Collecting numpy
Downloading numpy-1.24.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB)
|████████████████████████████████| 17.3 MB 6.8 MB/s
Building wheels for collected packages: WoeUSB-ng
Building wheel for WoeUSB-ng (setup.py) ... done
Created wheel for WoeUSB-ng: filename=WoeUSB_ng-0.2.12-py3-none-any.whl size=190601 sha256=db7f3de56dcdeb28ef63ff80e380eb195a96d042136c66da58d1b9ef3550dc17
Stored in directory: /root/.cache/pip/wheels/6b/2a/27/da1cdfb0883e4c1052a8771a291da46bf45d18306b3034cfac
Successfully built WoeUSB-ng
Installing collected packages: termcolor, WoeUSB-ng, numpy
Successfully installed WoeUSB-ng-0.2.12 numpy-1.24.3 termcolor-2.3.0
Sincronizzazione automatica tra il computer e il cloud MEGA su Linux.
Con Mega hai la possibilità di avere a disposizione 85 GB di spazio in Cloud e integrarlo all’interno del tuo file manager preferito (Dolphin, Nautilus, Nemo e Thunar) come una normale cartella, ma sincronizzata direttamente in cloud.
Step 1 – Download dell’app e del plug-in per il sistema Linux da configurare
Per il mio sistema ho selezionato come distribuzione OpenSuse Leap 15 e gestore file Dolphin.
Step 2 – Installazione sulla nostra piattaforma
Scaricato i due file rpm procedere con l’installazione. Per evitare di scaricare manualmente le dipendenze non ho utilizzato il classico comando rpm -Uvh, ma nel mio caso zypper (in altri casi potrebbe essere yum o apt-get):
Step 3 – Configurazione account MEGA
Una volta eseguita l’installazione dei due pacchetti troveremo sul menù dei nostri programmi, nel mio caso “> Internet >” l’applicazione MEGASync (quella che si occupa d’instaurare la connessione e sincronizzare i nostri contenuti con il cloud di MEGA):
Eseguire l’applicazione e procedere con la configurazione dell’account.
Fatto questo possiamo già sincronizzare i nostri file per averli a disposizione sempre online:
Considerazioni su MEGA
MEGA è un servizio che utilizza una crittografia “end-to-end”, la password che inserisci viene utilizzata (come radice) per criptare tutti i dati che salverai sul cloud. Questo significa che una password sicura ti aiuterà a proteggere i tuoi dati. Conserva in un posto sicuro la chiave di recupero di cui potrai farne una copia quando effettui l’accesso e abilita l’autenticazione a due fattori.
Veracrypt permette di cryptare interi volumi o creare volumi cryptati all’interno di un file. E’ disponibile per tutti i sistemi operativi più utilizzati.
L’installazione su linux è possibile farla scaricandolo da git o aggiungendo i repository.
Per semplicità ho installato su Mint tramite repository:
walter@walter-SVE1511C4E:~$ sudo add-apt-repository ppa:unit193/encryption (Aggiungiamo il repository)
walter@walter-SVE1511C4E:~$ sudo apt update (scarica la lista aggiornata dei pacchetti e delle nuove versioni disponibili nei repository)
IPFire è un firewall di nuova generazione che non si limitano al filtraggio dei pacchetti, ma utilizza un firewall SPI (Stateful Packet Inspection), basato su Netfilter.
Lo stateful firewall controlla il flusso dati tra i dispositivi connessi utilizzando una state table (tabella di stato) che ne tiene traccia. In questo modo se un pacchetto in ingresso o in uscita è relativo a una connessione già iniziata precedentemente e non ancora terminata esso viene automaticamente lasciato passare senza dover ripetere i controlli. La verifica della connessione viene fatta solo sul primo pacchetto, se esso supera i controlli allora tutti i pacchetti successivi e relativi alla stessa connessione sono accettati.
IPFire integra un IPS, un sistema di prevenzione delle intrusioni, che analizza le attività sospette come possibili exploit e fuga di dati, generando alert e bloccando la connessione.
Sono disponibili varie impostazioni per mitigare e bloccare gli attacchi Denial of Service filtrandoli direttamente sul firewall e non consentendo loro di arrestare i server.
La sua interfaccia utente web multi lingua, consente di creare gruppi di host e reti che possono essere utilizzati per mantenere un insieme di regole, cosa molto importante in ambienti complessi con un rigoroso controllo degli accessi.
E’ possibile integrare diversi plug-in e gestire i pacchetti, tramite Pakfire, direttamente dall’interfaccia web.
I report di registrazione e i grafici forniscono una analisi approfondita del sistema e del flusso dei dati.
Colab è una macchina virtuale Linux a cui puoi accedere direttamente da browser, ma non solo!!!
Con Colab hai a disposizione un editor Jupyter Python pronto all’uso e un ambiente dove puoi condividere i tuoi progetti per lavorare collaborando attraverso un collegamento a Git o salvando un file condiviso su Driver.
Per testarlo ho utilizzato una libreria Python che visualizza le informazioni di sistema, poi ho provato ad eseguire qualche comando shell.
Per eseguire i comandi è semplicissimo, basta anteporre alla riga un punto esclamativo.
Come pathping per Windows, mtr è un incrocio tra ping e il trace route di linux. La sintassi è semplice e la man page ben fatta. Compatibile sia con IPv4 che IPv6.
Per capire che non si tratta di un “sostituto” dei due comandi, basta eseguire senza nessuna opzione particolare: mtr sitoweb.it e ci si trova d’avanti il trace con gli hop, ma con accanto le statistiche di monitoraggio in tempo reale che continuano a testare ogni singolo hop, insomma un vero e proprio network diagnostic tool da sysadmin.
Record A (Address) – Indica l’indirizzo IP associato
Record_DNS = ‘A’ richiesta = dns.resolver.resolve(Nome_host, Record_DNS) for rdata in richiesta: print(‘\nRecord’, Record_DNS,’=> indirizzo IP associato:’, rdata.address)
Record NS (Name Server) – Indica l’indirizzo dei server di nomi per il dominio associato, almeno 2 – NSBase
Record_DNS = ‘NS’ richiesta = dns.resolver.resolve(Nome_host, Record_DNS) for rdata in richiesta: print(‘\nRecord’, Record_DNS,’=> nome del server associato:’, rdata.target)
Record TXT (text) – Informazioni in formato testuale – TXT record
Record_DNS = ‘TXT’ richiesta = dns.resolver.resolve(Nome_host, Record_DNS) for rdata in richiesta: print(‘\nRecord’, Record_DNS,’=> informazioni testuali:’, rdata.strings)
”’
Record CNAME (Canonical Name, nome regolare) – Contiene l’alias associabile al record A, un solo record A puo’ a vere + alias
utilizzato per nascondere i dettagli implementativi, utilizzando come alias i nomi abbreviati degli hosts
richiesta = dns.resolver.resolve(Nome_host_2, Record_DNS) for rdata in richiesta: print(‘\nRecord ‘, Record_DNS,’=’, Nome_host_2, ‘nome del server associato’, rdata.target) ”’
Record MX(Mail eXchange) – MXBase
Record_DNS = ‘MX’ richiesta = dns.resolver.resolve(Nome_host, Record_DNS) for rdata in richiesta: print(‘\nRecord MX = Nome host:’, rdata.exchange, ‘preferenza:’, rdata.preference)
Record SOA(Start of Authority) indica che questo server dei nomi DNS costituisce la fonte di informazione piu’ attendibile per i dati nell’ambito del dominio DNS.
Contiene informazioni inportanti
Record_DNS = ‘SOA’ richiesta = dns.resolver.resolve(Nome_host, Record_DNS) for rdata in richiesta: print(‘\nRecord’, Record_DNS,’=> valore di scadenza zona in secondi:’, rdata.expire) #Se un DNS Secondario non riesce a contattare entro questo tempo uno primario, esso smettera’ di inoltrare interragazioni. Rappresenta il tempo di validita’ dei dati del server secondario. print(‘\nRecord’, Record_DNS,’=> info cache time:’, rdata.minimum) #Specifica l’arco di tempo in cui una cache può tenere in memoria le informazioni print(‘\nRecord’, Record_DNS,’=> nome master:’, rdata.mname) #Nome del master print(‘\nRecord’, Record_DNS,’=> tempo di frequenza controllo:’, rdata.refresh) #Specifica la frequenza con cui i server devono controllare i dati della zona dei server DNS primari print(‘\nRecord’, Record_DNS,’=> frequenza tentativi nuova connessione:’, rdata.retry) #Specifica quando uno slave deve eseguire nuovamente un tentativo di richiesta fallito print(‘\nRecord’, Record_DNS,’=> e-mail amministratore:’, rdata.rname) #Indirizzo e-mail dell’amministratore responsabile print(‘\nRecord’, Record_DNS,’=> n. seriale incrementale:’, rdata.serial) #Numero di serie incrementale che specifica la versione del file di zona
”’
Record PTR (Pointer) – Indica l’indirizzo IP dei DNS a cui è associato ogni nome – PTR
Record_DNS = ‘PTR’ richiesta = dns.resolver.resolve(Nome_host, Record_DNS) for rdata in richiesta: print(‘\nRecord’, Record_DNS,’=> indirizzo IP del server associato:’, rdata.target) ”’
Record SPF (text) – un protocollo di validazione mail per prevenire email spoofing – SPF record
Query spf
IP = “216.58.208.142” email_addr = “qualcuno@gmail.com” email_dom = “gmail.com” print (‘\n query SPF IP:’,IP) print (‘\n Indirizzo e-mail:’,email_addr) print (‘\n Dominio indirizzo mail:’,email_dom) query_spf=(spf.check(i=IP, s=email_addr, h=email_dom, local = None, receiver = None)) print (‘\n’,query_spf) print (‘\nIl primo elemento nella tupla è “pass”, “fail”, “netural”, “softfail”, “unknown” o “error”.’) print (‘\nIl secondo è il codice di stato della risposta SMTP: 550 per “errore”, 450 per “errore” e 250 per tutto il resto.’) print (‘\nLa terza è una spiegazione.’)