Come installare Arch Linux

Prima di tutto scaricate l’iso e create una pendrive bootabile o nel caso di una macchina virtuale, semplicemente trascinate il file durante la creazione (nel caso non ci sia Arch selezionate Linux Kernel 4 a 64bit).

Appena l’iso fa il boot, selezionate Boot Arch Linux (x86_64) dall’elenco per selezionare la versione a 64 bit.

Una volta dentro, provate a vedere se internet funziona facendo un semplice:

ping 1.1.1.1

Iniziamo con i primi check, eseguite:

fsdisk -l

E controllate d’avere il /dev/sda disponibile con almeno 20 GB.
Ora formattiamo con:

cfdisk

Selezionate dos dall’elenco e poi selezionate il Free space che vedete. Scrivete 10G e poi cliccate su [primary].

Successivamente su [bootable] e poi su [write]. Scrivete a parole yes per confermare.

Effettuate la stessa operazione per altre 2 volte ma con 2G e il restante (quindi teoricamente 8G se ne avete dedicati almeno 20) per la seconda.

Ora formattiamo le tre partizioni con:

mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda3
mkswap /dev/sda2

Attiviamo lo swap per la seconda:

swapon /dev/sda2

Montiamo la prima partizione:

mount /dev/sda1 /mnt
mkdir /mnt/home
mount /dev/sda3 /mnt/home

E iniziamo con l’installazione:

pacstrap /mnt base base-devel

Appena ha finito, eseguite questo (serve per il mounting automatico):

genfstab /mnt>> /mnt/etc/fstab

Ora configuriamo il locale (spostandoci nel percorso di installazione):

arch-chroot /mnt /bin/bash
nano /etc/locale.gen

E togliete il commento alla riga:

en_US.UTF-8 UTF-8

Salvate con il classico CTRL+X, Y. Ed eseguite:

locale-gen

Poi modifichiamo la lingua con:

nano /etc/locale.conf

Ed incollate:

LANG=en_US.UTF-8

Sincronizziamo le modifiche con:

ls /usr/share/zoneinfo

E selezionate la vostra zona, ad esempio:

ln –s /usr/share/zoneinfo/Europe/Rome /etc/localtime

Modifichiamo l’ora con:

hwclock --systohc --utc

Ora modifichiamo la password con il classico:

passwd

Se volete, modificate l’hostname con:

nano /etc/hostname

Apportate le modifiche salvando. Ora abilitiamo il DHCP con:

systemctl enable dhcpcd

Adesso installiamo il grub (ci permetterà di scegliere il sistema operativo all’avvio):

pacman –S grub os-prober

Premete yes ed eseguite:

grub-install /dev/sda

Poi configuratelo con:

grub-mkconfig –o /boot/grub/grub.cfg

Ora uscite e riavviate:

exit
reboot

Non è stato difficile, veeero? BTW I don’t use Arch.

Come mandare una mail se un host è irraggiungibile

E per raggiungibile si intende che non risponde al ping. Quindi vediamo subito come fare:

sudo nano script.sh

Incollate dentro qualcosa di simile:

#!/bin/sh

ip='192.168.1.1'

if ! ping -c1 -w3 $ip; then
	echo "Non pinga" | mail -s "Non pinga" destinatario@hostname.com
fi

Questo invierà una mail nel caso l’host in questione (che ha come IP 192.168.1.1) non risponda al ping.

Se volete farlo eseguire ogni 5 minuti, quindi nel caso vi serva che vi avvisi non appena l’host non risponde, vi basterà configurarlo con crontab:

sudo crontab -e

E incollate:

*/5 * * * * sudo /home/script.sh > /dev/null

Ah ovviamente date i permessi di esecuzione con sudo chmod 777 script.sh.

Come creare e firmare il proprio certificato SSL

Non sto a raccontarvi cos’è SSL o HTTPS perché se siete qua probabilmente già sapete di cosa sto parlando.

Andiamo dritti al sodo. Se volete autocertificarvi e quindi generare un certificato SSL per uso locale o di sperimentazione (dico questo perché ogni volta da browser dovrete confermare e accettare che volete installare il certificato, cliccando qualcosa come 3 volte conferma) aprite subito il terminale ed eseguite (vi chiederà una password, segnatevela ovviamente):

openssl genrsa -des3 -out myCA.key 2048

Ora generate un root certificate eseguendo:

openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem

Inserite tutti i dettagli e… voilà, già fatto!

Come verificare che un file scaricato sia veramente quello

Ci sono diversi modi per farlo e quello più comune è quello di calcolare il checksum con shasum (cos’è shasum).

Come potete vedere, ad esempio su VLC (ma gli esempi sono infiniti nel campo della sicurezza informatica), quando andrete a scaricare il loro software vi indicherà la stinga di checksum 256.

Come scaricare VLC

Voi cosa dovete fare per verificare che state realmente scaricando quel file e non avete un man-in-the-middle che vi modifica il flusso dei dati o vi manda un altro file? Potete calcolare il checksum così:

Verifica checksum VLC da terminale

Aprite il terminale e spostatevi nella cartella giusta con il classico comando cd ed eseguite:

shasum -a 256 nomefile.estensione

Aspettate qualche secondo (o minuto, dipende dalla capacità di calcolo del vostro computer) e vedrete il risultato. Se la stringa combacia, siete in una botte di ferro.

Ovviamente la stessa procedura la potete fare anche e sopratutto quando andrete a scaricare software o applicativi importanti in cui avete bisogno che la sicurezza sia elevata, come ad esempio con MEW. Prendete quante più precauzioni possibili, non fanno mai male.

Come cancellare tutti i file con estensione con uno script Bash

Ad esempio se volete cancellare tutti i file con estensione .tar.gz vi basterà creare un file Bash facendo:

sudo nano script.sh

E incollate dentro:

#!/bin/bash

find /path/ -name '*.tar.gz' -delete

Poi dategli i permessi di esecuzione con sudo chmod 777 script.sh, eseguitelo con ./script.sh e il gioco è fatto!

Fate attenzione (ovviamente) perché vi cancellerà tutti i file con quell’estensione in pochi istanti.

Come fare il backup a un database MySQL con uno script Bash

Ok anche in questo caso, se volete fare il backup intero a un vostro database in MySQL, vi basterà usare questo semplice script (che in automatico vi zippa anche il file .sql creato):

sudo nano database.sh

Incollate dentro (cambiando ovviamente i vostri parametri):

#!/bin/bash

user="root"
password="pass123"
host="localhost"
db_name="mydb"
backup_path="/home"
date=`date '+%Y%m%d%H%M%S'`

mysqldump --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql
tar -zcvf $db_name-$date.tar.gz $db_name-$date.sql

Dategli i permessi con:

sudo chmod 777 database.sh

E fatevi un bel cron job ogni mattina alle 8.00 con:

sudo crontab -e

Incollando dentro:

0 8 * * * /path/database.sh

Come zippare una cartella in automatico con uno script Bash

Se volete fare uno script che vi zippi un’intera cartella, magari per un backup continuativo e giornaliero, vi basterà creare uno script con:

sudo nano backup.sh

Incollarci dentro:

#!/bin/bash

date=`date '+%Y%m%d%H%M%S'`

tar -zcvf $date.tar.gz /pathToBackup/

Dargli i permessi di esecuzione con:

sudo chmod 777 backup.sh

E mettere un crontab:

sudo crontab -e

Incollate al fondo (modificando il percorso dello script e l’ora in questo caso):

0 1 * * * /path/backup.sh

Come configurare Monit con Domoticz

sudo nano /etc/monit/conf.d/domoticz

Copiate e incollate:

check process domoticz with pidfile /var/run/domoticz.pid
start program = "/etc/init.d/domoticz.sh start"
stop  program = "/etc/init.d/domoticz.sh stop"
if failed
url http://127.0.0.1:8080/json.htm?type=command&param=getversion
and content = '"status" : "OK"'
for 2 cycles
then restart
if 5 restarts within 5 cycles then exec "/sbin/reboot"

E poi riavviate Monit con:

sudo monit reload

Come configurare Monit con Plex

sudo nano /etc/monit/conf.d/plex

Incollate questo (modificando le porte nel caso vi servissero, ma la 32400 dovrebbe andar bene):

check process Plex with pidfile "/var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/plexmediaserver.pid"
    start program = "/usr/sbin/service plexmediaserver start" with timeout 60 seconds
    stop program  = "/usr/sbin/service plexmediaserver stop"
    if failed host 127.0.0.1 port 32400 with timeout 30 seconds for 5 cycles then restart
    #if failed port 32401 with timeout 30 seconds for 5 cycles then restart
    #if failed port 32469 with timeout 30 seconds for 5 cycles then restart
    #if failed port 1909 with timeout 30 seconds for 5 cycles then restart
    #if failed url http://127.0.0.1:32400/web/index.html with timeout 30 seconds for 5 cycles then restart

E poi riavviate Monit con:

sudo monit reload

Come configurare Monit con Transmission

sudo /etc/monit/conf.d/transmission

Copiate e incollate:

check process Transmission matching "transmission-daemon"
    start program = "/etc/init.d/transmission-daemon start"
    stop program  = "/etc/init.d/transmission-daemon stop"
    if failed host 127.0.0.1 port 9091 type TCP for 2 cycles then restart
    if 2 restarts within 3 cycles then unmonitor

E poi riavviate Monit con:

sudo monit reload

Come configurare Monit con CouchPotato

sudo nano /etc/monit/conf.d/couchpotato

Incollate dentro:

check process CouchPotato matching "couchpotato"
start program = "/etc/init.d/couchpotato start"
stop program  = "/etc/init.d/couchpotato stop"
if failed host 127.0.0.1 port 5050 type TCP for 2 cycles then restart
if 2 restarts within 3 cycles then unmonitor

E poi riavviate Monit con:

sudo monit reload

Come configurare Monit con SickRage

sudo nano /etc/monit/conf.d/sickrage

Incollate:

check process SickRage matching "sickrage"
start program = "/etc/init.d/sickrage start"
stop program = "/etc/init.d/sickrage stop"
if failed host 127.0.0.1 port 8081 type TCP for 2 cycles then restart
if 2 restarts within 3 cycles then unmonitor

E poi riavviate Monit con:

sudo monit reload

Come configurare Monit con Samba

Se avete precedentemente installato Monit e avete capito le sue infinite possibilità e volete monitorare il vostro server SMB, ecco come configurarlo perché controlli e nel caso riavvii Samba:

sudo nano /etc/monit/conf.d/smbmonitor

E incollate:

check process Samba with pidfile "/var/run/samba/smbd.pid"
start program = "/etc/init.d/smbd start"
stop program = "/etc/init.d/smbd stop"
if failed host 127.0.0.1 port 139 type tcp for 2 cycles then restart
if 2 restarts within 3 cycles then unmonitor

Poi riavviate Monit con sudo monit reload e andate da browser alla porta 2812 (nel caso non l’abbiate cambiata).

Come gestire cartelle con apostrofi

Nel caso la vostra cartella abbia un apostrofo, il terminale bash (o quello che sia) potrebbe riscontrarvi qualche errore.

Mettete tutto tra parentesi, ad esempio: cd '/cartella(con)/anche/parentesi' per entrare dentro quella cartella.

Come provare a difendersi da un attacco DDoS

Parto con un po’ di presupposti perché ovviamente l’argomento è molto vasto e non sarebbe affrontabile in un semplice articolo. I comandi che andrò ad elencarvi dipendono ovviamente da cosa state subendo e sopratutto se avete accesso al vostro server. Ma tenendo conto che avete accesso ma semplicemente siete inondati di richieste, di traffico flood o altre prove di connessioni, richieste di login o comunque qualcosa sulle porte o sulle connessioni, ecco quanto.

Per visualizzare le connessioni in ingresso:

sudo netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1

Nel caso avete https e la porta 443:

sudo netstat -plan|grep :443|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1

Visualizzare l’elenco completo dell’iptables:

sudo iptables -L --line-numbers

Se volete cancellare ad esempio la seconda regola fate così:

sudo iptables -D INPUT 2

Oppure se volete impostare un limite alle richieste:

sudo iptables -A INPUT -p tcp --syn -m limit --limit 5/s --limit-burst 10 -j DROP

Nel caso anche questo:

sudo iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j DROP

Mentre se in tutto questo avete notato che c’è qualche IP che vi fa migliaia di richieste, ecco come impedirglielo:

iptables -A INPUT -s 8.8.8.8 -j DROP

Le regole nell’iptables vengono a ogni riavvio resettate, quindi se volete salvarle dovete specificarlo.

Come disabilitare IPv6 su Avahi

Come è ben noto IPv6 non è implementato praticamente da nessuna parte (ancora) e nelle reti pubbliche viene impacchettato nella versione 4.

Spesso da più problemi che altro… quindi, perché non disattivarlo?

sudo nano /etc/avahi/avahi-daemon.conf

E alla riga use-ipv6=yes mettete un bel no.

Per gli altri parametri: http://manpages.ubuntu.com/manpages/zesty/man5/avahi-daemon.conf.5.html

Come montare automaticamente un server FTP in una cartella

Se volete montare un server FTP e che sia accessibile come un normale drive in una cartella da voi prefissata, installate curlftpfs:

sudo apt-get install curlftpfs

Create la cartella (potete anche metterla in /media volendo), ad esempio (modificando user):

sudo mkdir /home/movies
sudo chmod 775 /home/movies
sudo chown -R user:user /home/movies

Aggiungete al fondo di questo file:

sudo nano /etc/fstab

Modificando user, password e indirizzo IP:

curlftpfs#user:password@192.168.1.1 /home/movies fuse rw,uid=1000,gid=1000,umask=002,user,suid,allow_other,exec,auto,utf8,_netdev  0   0

Se volete tutti i permessi mettete umask=000.

Come creare un server per la Time Machine con Ubuntu

Io vi consiglio Ubuntu Server 17.04 e durante l’installazione mettete la spunta a LAMP server, Samba file server e OpenSSH server.

Fate gli aggiornamenti e installate:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install netatalk libc6-dev avahi-daemon libnss-mdns

Se usate un hard disk esterno create la cartella e montatelo:

sudo mkdir /media/usb
sudo mount -t hfsplus -o force,rw /dev/sdb /media/usb

Cambiate i permessi e l’utente (presupponendo che il vostro username sia xserve):

sudo chmod -R 775 /media/usb
sudo chown -R xserve:xserve /media/usb

Ora andiamo a configurarlo:

sudo nano /etc/netatalk/AppleVolumes.default

E al fondo alla penultima riga cambiatela con:

/media/usb "Xserve" options:tm allow:xserve

Poi inserite questo per vedere l’icona dei famosi Xserve:

sudo nano /etc/avahi/services/afpd.service

E incollate:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
</service-group>

Riavviate tutto con:

sudo service avahi-daemon restart
sudo service netatalk restart

Ora connettetevi da macOS (qualunque esso sia), dalle impostazioni selezionate il disco Xserve e il gioco è fatto, potete utilizzarlo come Time Machine facilmente!

Ovviamente il vostro server Ubuntu non deve per forza essere fisico e sempre acceso. Potete benissimo usare una macchina virtuale o un semplice Raspberry Pi.