Primo commit
This commit is contained in:
commit
872779e636
11 changed files with 2648 additions and 0 deletions
4
README.md
Normal file
4
README.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# Cybersecurity con sistemi GNU/Linux
|
||||||
|
|
||||||
|
In questo repository sono raccolti i materiali del corso.
|
||||||
|
|
15
dispensa/Makefile
Normal file
15
dispensa/Makefile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
PDFDIR=pdf
|
||||||
|
MDS=$(wildcard *.md)
|
||||||
|
PDFS=$(patsubst %.md,$(PDFDIR)/%.pdf, $(MDS))
|
||||||
|
TEMPLATE_ARGS=-V titlepage=true -V titlepage-text-color=000000 -V titlepage-color=B2DFEE -V titlepage-background=./background.pdf
|
||||||
|
PANDOC_ARGS=-N -V lang=it --template default.latex -s
|
||||||
|
|
||||||
|
.PHONY : all
|
||||||
|
|
||||||
|
all : $(PDFS)
|
||||||
|
|
||||||
|
$(PDFDIR):
|
||||||
|
mkdir $(PDFDIR)
|
||||||
|
|
||||||
|
$(PDFDIR)/%.pdf: %.md $(PDFDIR)
|
||||||
|
pandoc $(TEMPLATE_ARGS) $(PANDOC_ARGS) $< -o $@
|
69
dispensa/background.pdf
Normal file
69
dispensa/background.pdf
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
%PDF-1.5
|
||||||
|
%µí®û
|
||||||
|
3 0 obj
|
||||||
|
<< /Length 4 0 R
|
||||||
|
/Filter /FlateDecode
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
xœeŽKÂ@@÷s
|
||||||
|
. Â8†GpaÛE]¨÷OdÒØÖ4,ø=^x†ï ®w‚éS\=@C±šÁeí“yÀ˜kBsX²p1ÒèÇLHÄðÜ*†a
ßr<C39F>¹œøÕ¬VUb/ÒLPÝ1D®È<ì¢?ç‘\u¢Þ³·jÚmlŽœïp$Ž$Š“~.g~,·òž·>å
|
||||||
|
endstream
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
150
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/ExtGState <<
|
||||||
|
/a0 << /CA 1 /ca 1 >>
|
||||||
|
>>
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<< /Type /Page
|
||||||
|
/Parent 1 0 R
|
||||||
|
/MediaBox [ 0 0 595.275574 841.889771 ]
|
||||||
|
/Contents 3 0 R
|
||||||
|
/Group <<
|
||||||
|
/Type /Group
|
||||||
|
/S /Transparency
|
||||||
|
/I true
|
||||||
|
/CS /DeviceRGB
|
||||||
|
>>
|
||||||
|
/Resources 2 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
1 0 obj
|
||||||
|
<< /Type /Pages
|
||||||
|
/Kids [ 5 0 R ]
|
||||||
|
/Count 1
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<< /Creator (cairo 1.14.8 (http://cairographics.org))
|
||||||
|
/Producer (cairo 1.14.8 (http://cairographics.org))
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<< /Type /Catalog
|
||||||
|
/Pages 1 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 8
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000564 00000 n
|
||||||
|
0000000264 00000 n
|
||||||
|
0000000015 00000 n
|
||||||
|
0000000242 00000 n
|
||||||
|
0000000336 00000 n
|
||||||
|
0000000629 00000 n
|
||||||
|
0000000756 00000 n
|
||||||
|
trailer
|
||||||
|
<< /Size 8
|
||||||
|
/Root 7 0 R
|
||||||
|
/Info 6 0 R
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
808
|
||||||
|
%%EOF
|
237
dispensa/cybersecurity_linux.md
Normal file
237
dispensa/cybersecurity_linux.md
Normal file
|
@ -0,0 +1,237 @@
|
||||||
|
---
|
||||||
|
title: Cybersecurity con sistemi GNU/Linux
|
||||||
|
subtitle: Dispensa del corso
|
||||||
|
author: Andrea Fazzi
|
||||||
|
data: 13.03.2024
|
||||||
|
urlcolor: blue
|
||||||
|
---
|
||||||
|
|
||||||
|
# Utilizzo avanzato del terminale
|
||||||
|
|
||||||
|
In questa sezione verranno discussi gli utilizzi più avanzati del
|
||||||
|
terminale. In particolare, ci si soffermerà sui cosidetti *terminal
|
||||||
|
multiplexer*.
|
||||||
|
|
||||||
|
## I *terminal multiplexer*
|
||||||
|
|
||||||
|
I terminal multiplexer in Linux sono strumenti potenti che consentono
|
||||||
|
agli utenti di creare più sessioni di terminale all'interno di una
|
||||||
|
singola finestra del terminale. Questi strumenti sono particolarmente
|
||||||
|
utili per gestire più processi contemporaneamente, mantenendo aperte
|
||||||
|
le sessioni anche dopo la disconnessione, e per organizzare le
|
||||||
|
finestre del terminale in modo efficiente.
|
||||||
|
|
||||||
|
Uno dei terminal multiplexer più popolari e ampiamente utilizzati è
|
||||||
|
`tmux`. `tmux` permette agli utenti di creare, gestire e navigare tra
|
||||||
|
più sessioni di terminale, facilitando l'organizzazione dei processi e
|
||||||
|
la gestione delle finestre. Con `tmux`, è possibile dividere la
|
||||||
|
finestra del terminale in più riquadri, ciascuno dei quali può
|
||||||
|
eseguire un processo separato, e passare facilmente da una sessione
|
||||||
|
all'altra.
|
||||||
|
|
||||||
|
Un altro esempio di terminal multiplexer è `screen`, che offre
|
||||||
|
funzionalità simili a `tmux` ma con una sintassi leggermente
|
||||||
|
diversa. Entrambi gli strumenti sono disponibili per la maggior parte
|
||||||
|
delle distribuzioni Linux e possono essere installati tramite il
|
||||||
|
gestore di pacchetti della distribuzione.
|
||||||
|
|
||||||
|
Utilizzare un terminal multiplexer può migliorare notevolmente
|
||||||
|
l'efficienza e la produttività degli sviluppatori e degli
|
||||||
|
amministratori di sistema, consentendo di lavorare con più processi
|
||||||
|
contemporaneamente senza dover aprire molteplici finestre del
|
||||||
|
terminale.
|
||||||
|
|
||||||
|
### Riferimenti
|
||||||
|
|
||||||
|
1. [https://opensource.com/article/21/5/linux-terminal-multiplexer](https://opensource.com/article/21/5/linux-terminal-multiplexer)
|
||||||
|
|
||||||
|
## Introduzione a `tmux`
|
||||||
|
|
||||||
|
`tmux` è un potente strumento di gestione delle sessioni di terminale
|
||||||
|
in Linux. Permette agli utenti di creare, gestire e navigare tra più
|
||||||
|
sessioni di terminale all'interno di una singola finestra del
|
||||||
|
terminale. Questa funzionalità è particolarmente utile per
|
||||||
|
l'esecuzione di più programmi con una singola connessione, come quando
|
||||||
|
si effettua una connessione remota a una macchina utilizzando Secure
|
||||||
|
Shell (SSH) [1].
|
||||||
|
|
||||||
|
Per iniziare ad utilizzare `tmux`, basta digitare `tmux` nel
|
||||||
|
terminale. Questo comando avvia un server `tmux`, crea una sessione
|
||||||
|
predefinita (numero 0) con una singola finestra e si collega ad
|
||||||
|
essa. Una volta connessi a `tmux`, è possibile eseguire qualsiasi
|
||||||
|
comando o programma come si farebbe normalmente.
|
||||||
|
|
||||||
|
## Installazione di `tmux`
|
||||||
|
|
||||||
|
`tmux` è un'applicazione disponibile nel repository di `Arch
|
||||||
|
Linux`. Per installarla basterà utilizzare il comando `pacman`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo pacman -S tmux
|
||||||
|
```
|
||||||
|
|
||||||
|
Per verificare che l'installazione sia andata a buon fine:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tmux -V
|
||||||
|
```
|
||||||
|
|
||||||
|
Il comando restituirà la versione installata.
|
||||||
|
|
||||||
|
### Riferimenti
|
||||||
|
|
||||||
|
1. https://www.redhat.com/sysadmin/introduction-tmux-linux
|
||||||
|
2. https://linuxhandbook.com/tmux/
|
||||||
|
3. https://hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/
|
||||||
|
4. https://linuxize.com/post/getting-started-with-tmux/
|
||||||
|
5. https://linuxconfig.org/introduction-to-terminal-multiplexer-tmux
|
||||||
|
6. https://github.com/tmux/tmux/wiki/Getting-Started
|
||||||
|
7. https://www.howtogeek.com/671422/how-to-use-tmux-on-linux-and-why-its-better-than-screen/
|
||||||
|
8. https://opensource.com/article/17/2/quick-introduction-tmux
|
||||||
|
9. https://wiki.archlinux.org/title/Tmux
|
||||||
|
10. https://github.com/tmux/tmux/wiki
|
||||||
|
|
||||||
|
## Primi passi con `tmux`
|
||||||
|
|
||||||
|
Per eseguire `tmux` si dovrà semplicemente invocare il comando
|
||||||
|
all'interno di una sessione di terminale.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tmux
|
||||||
|
```
|
||||||
|
|
||||||
|
È possibile staccare la sessione `tmux` premendo `Ctrl+B` seguito da
|
||||||
|
`D`. `tmux` opera utilizzando una serie di scorciatoie da tastiera
|
||||||
|
(keybindings) attivate premendo la combinazione "prefisso". Di
|
||||||
|
default, il prefisso è `Ctrl+B`. Dopo di che, premere `D` per staccare
|
||||||
|
dalla sessione corrente. La sessione continua ad eseguire in
|
||||||
|
background anche dopo la disconnessione, permettendo di riprendere
|
||||||
|
dove si è lasciati quando si è pronti a riconnettersi al server e
|
||||||
|
riattaccarsi alla sessione esistente.
|
||||||
|
|
||||||
|
`tmux` fornisce una serie di scorciatoie da tastiera per eseguire
|
||||||
|
comandi rapidamente all'interno di una sessione `tmux`. Alcune delle
|
||||||
|
più utili includono:
|
||||||
|
|
||||||
|
- `Ctrl+B D` — Stacca dalla sessione corrente.
|
||||||
|
- `Ctrl+B %` — Suddividi la finestra in due pannelli orizzontalmente.
|
||||||
|
- `Ctrl+B "` — Suddividi la finestra in due pannelli verticalmente.
|
||||||
|
- `Ctrl+B` seguito da una freccia (sinistra, destra, su, giù) — Sposta tra i pannelli.
|
||||||
|
- `Ctrl+B X` — Chiudi il pannello.
|
||||||
|
- `Ctrl+B C` — Crea una nuova finestra.
|
||||||
|
- `Ctrl+B N` o `P` — Sposta alla finestra successiva o precedente.
|
||||||
|
- `Ctrl+B 0` (1,2...) — Sposta a una finestra specifica per numero.
|
||||||
|
- `Ctrl+B :` — Entra nella riga di comando per digitare
|
||||||
|
comandi. L'auto-completamento tramite tab è disponibile.
|
||||||
|
- `Ctrl+B ?` — Visualizza tutte le scorciatoie da tastiera. Premere `Q` per uscire.
|
||||||
|
- `Ctrl+B W` — Apre un pannello per navigare tra le finestre in più sessioni.
|
||||||
|
|
||||||
|
### Esercizio
|
||||||
|
|
||||||
|
Utilizza `tmux` per suddividere il terminale in due pannelli
|
||||||
|
verticali. Nel pannello di sinistra apri uno script in Python
|
||||||
|
utilizzando l'editor `nano`. Nel pannello di destra esegui il comando
|
||||||
|
`htop`. Se `htop` non è presente nel sistema, procedi con la sua
|
||||||
|
installazione attraverso il package manager `pacman`.
|
||||||
|
|
||||||
|
## Configurazione di `tmux`
|
||||||
|
|
||||||
|
Il file di configurazione di `tmux`, noto come `tmux.conf`, è un file
|
||||||
|
di testo che permette agli utenti di personalizzare l'ambiente di
|
||||||
|
lavoro di `tmux` secondo le proprie preferenze. Questo file può essere
|
||||||
|
posizionato in due luoghi principali:
|
||||||
|
|
||||||
|
- `~/.tmux.conf` per una configurazione specifica dell'utente corrente.
|
||||||
|
- `/etc/tmux.conf` per una configurazione globale, applicabile a tutti gli utenti del sistema.
|
||||||
|
|
||||||
|
Se il file `~/.tmux.conf` non esiste, può essere creato semplicemente
|
||||||
|
eseguendo il comando `touch ~/.tmux.conf` nel terminale. Questo creerà
|
||||||
|
un file di configurazione vuoto che può essere modificato per
|
||||||
|
aggiungere le impostazioni desiderate.
|
||||||
|
|
||||||
|
La configurazione di `tmux` può includere una vasta gamma di opzioni, tra cui:
|
||||||
|
|
||||||
|
- Cambio del prefisso di comando predefinito.
|
||||||
|
- Abilitazione della modalità mouse.
|
||||||
|
- Impostazione di due prefissi.
|
||||||
|
- Cambio del comportamento predefinito del server.
|
||||||
|
- Inizio del conteggio dei numeri delle finestre e dei pannelli (Base-Index) a 1.
|
||||||
|
- Modifica dello sfondo del pannello corrente.
|
||||||
|
- ...
|
||||||
|
|
||||||
|
Per esempio, per cambiare il prefisso di comando predefinito da
|
||||||
|
`Ctrl+B` a `Ctrl+A`, si potrebbe aggiungere la seguente riga al file
|
||||||
|
`tmux.conf`:
|
||||||
|
|
||||||
|
```
|
||||||
|
set-option -g prefix C-a
|
||||||
|
```
|
||||||
|
|
||||||
|
Dopo aver apportato modifiche al file di configurazione, è necessario
|
||||||
|
ricaricarlo per applicare le nuove impostazioni. Questo può essere
|
||||||
|
fatto eseguendo il comando `tmux source-file ~/.tmux.conf` dal
|
||||||
|
terminale o utilizzando il comando `source-file ~/.tmux.conf` dalla
|
||||||
|
modalità di comando di `tmux`. Per facilitare il processo, è possibile
|
||||||
|
aggiungere un collegamento rapido nel file `tmux.conf` per ricaricare
|
||||||
|
facilmente la configurazione:
|
||||||
|
|
||||||
|
```
|
||||||
|
bind r source-file ~/.tmux.conf \; display "Reloaded!"
|
||||||
|
```
|
||||||
|
|
||||||
|
Questo permette di ricaricare la configurazione premendo il prefisso
|
||||||
|
seguito da `r`, visualizzando un messaggio di conferma.
|
||||||
|
|
||||||
|
### Riferimenti
|
||||||
|
|
||||||
|
1. https://hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/
|
||||||
|
2. https://www.hostinger.com/tutorials/tmux-config
|
||||||
|
3. https://dev.to/iggredible/useful-tmux-configuration-examples-k3g
|
||||||
|
4. https://github.com/gpakosz/.tmux
|
||||||
|
5. https://arcolinux.com/everthing-you-need-to-know-about-tmux-configuration/
|
||||||
|
6. https://thevaluable.dev/tmux-config-mouseless/
|
||||||
|
7. https://github.com/samoshkin/tmux-config
|
||||||
|
8. https://wiki.archlinux.org/title/tmux
|
||||||
|
9. https://medium.com/@bhavik.n/customize-tmux-to-use-it-effectively-28b262c8b692
|
||||||
|
|
||||||
|
## Creazione di layout personalizzati
|
||||||
|
|
||||||
|
Si supponga di voler creare un file di configurazione specifico per un
|
||||||
|
progetto in cui il terminale viene diviso in tre parti: due colonne
|
||||||
|
verticali di cui una a sua volta suddivisa orizzontalmente. In questo
|
||||||
|
caso è possibile utilizzare uno script di configurazione
|
||||||
|
personalizzato per `tmux`. Questo script può essere salvato in un file
|
||||||
|
separato, ad esempio in `~/.config/tmux/split.conf`.
|
||||||
|
|
||||||
|
```
|
||||||
|
new -s splitted_session # crea una nuova sessione
|
||||||
|
|
||||||
|
selectp -t 0 # seleziona il primo pannello
|
||||||
|
splitw -h -p 50 # divide il pannello corrente orizzontalmente in due parti
|
||||||
|
|
||||||
|
selectp -t 1 # seleziona il nuovo secondo pannello
|
||||||
|
splitw -v -p 50 # divide il pannello corrente verticalmente in due parti
|
||||||
|
selectp -t 0 # torna al primo pannello
|
||||||
|
```
|
||||||
|
|
||||||
|
Una volta creato il file di configurazione, occorrerà "eseguirlo" con
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tmux source-file ~/.config/tmux/split.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
### Esercizio
|
||||||
|
|
||||||
|
Crea un file di configurazione `tmux` per produrre un layout con due
|
||||||
|
righe di cui la prima suddivisa in due colonne secondo uno schema
|
||||||
|
simile a quello riportato sotto.
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
-----------
|
||||||
|
| | |
|
||||||
|
| | |
|
||||||
|
-----------
|
||||||
|
| |
|
||||||
|
-----------
|
||||||
|
```
|
1048
dispensa/default.latex
Normal file
1048
dispensa/default.latex
Normal file
File diff suppressed because it is too large
Load diff
BIN
dispensa/pdf/cybersecurity_linux.pdf
Normal file
BIN
dispensa/pdf/cybersecurity_linux.pdf
Normal file
Binary file not shown.
15
programma/Makefile
Normal file
15
programma/Makefile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
PDFDIR=pdf
|
||||||
|
MDS=$(wildcard *.md)
|
||||||
|
PDFS=$(patsubst %.md,$(PDFDIR)/%.pdf, $(MDS))
|
||||||
|
TEMPLATE_ARGS=-V titlepage=true -V titlepage-text-color=000000 -V titlepage-color=B2DFEE -V titlepage-background=./background.pdf
|
||||||
|
PANDOC_ARGS=-N -V lang=it --template default.latex -s
|
||||||
|
|
||||||
|
.PHONY : all
|
||||||
|
|
||||||
|
all : $(PDFS)
|
||||||
|
|
||||||
|
$(PDFDIR):
|
||||||
|
mkdir $(PDFDIR)
|
||||||
|
|
||||||
|
$(PDFDIR)/%.pdf: %.md $(PDFDIR)
|
||||||
|
pandoc $(TEMPLATE_ARGS) $(PANDOC_ARGS) $< -o $@
|
69
programma/background.pdf
Normal file
69
programma/background.pdf
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
%PDF-1.5
|
||||||
|
%µí®û
|
||||||
|
3 0 obj
|
||||||
|
<< /Length 4 0 R
|
||||||
|
/Filter /FlateDecode
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
xœeŽKÂ@@÷s
|
||||||
|
. Â8†GpaÛE]¨÷OdÒØÖ4,ø=^x†ï ®w‚éS\=@C±šÁeí“yÀ˜kBsX²p1ÒèÇLHÄðÜ*†a
ßr<C39F>¹œøÕ¬VUb/ÒLPÝ1D®È<ì¢?ç‘\u¢Þ³·jÚmlŽœïp$Ž$Š“~.g~,·òž·>å
|
||||||
|
endstream
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
150
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/ExtGState <<
|
||||||
|
/a0 << /CA 1 /ca 1 >>
|
||||||
|
>>
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<< /Type /Page
|
||||||
|
/Parent 1 0 R
|
||||||
|
/MediaBox [ 0 0 595.275574 841.889771 ]
|
||||||
|
/Contents 3 0 R
|
||||||
|
/Group <<
|
||||||
|
/Type /Group
|
||||||
|
/S /Transparency
|
||||||
|
/I true
|
||||||
|
/CS /DeviceRGB
|
||||||
|
>>
|
||||||
|
/Resources 2 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
1 0 obj
|
||||||
|
<< /Type /Pages
|
||||||
|
/Kids [ 5 0 R ]
|
||||||
|
/Count 1
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<< /Creator (cairo 1.14.8 (http://cairographics.org))
|
||||||
|
/Producer (cairo 1.14.8 (http://cairographics.org))
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<< /Type /Catalog
|
||||||
|
/Pages 1 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 8
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000564 00000 n
|
||||||
|
0000000264 00000 n
|
||||||
|
0000000015 00000 n
|
||||||
|
0000000242 00000 n
|
||||||
|
0000000336 00000 n
|
||||||
|
0000000629 00000 n
|
||||||
|
0000000756 00000 n
|
||||||
|
trailer
|
||||||
|
<< /Size 8
|
||||||
|
/Root 7 0 R
|
||||||
|
/Info 6 0 R
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
808
|
||||||
|
%%EOF
|
143
programma/cybersecurity_linux.md
Normal file
143
programma/cybersecurity_linux.md
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
---
|
||||||
|
title: Cybersecurity con sistemi GNU/Linux
|
||||||
|
subtitle: Programma del corso
|
||||||
|
author: Andrea Fazzi
|
||||||
|
data: 17.01.202
|
||||||
|
urlcolor: blue
|
||||||
|
---
|
||||||
|
|
||||||
|
# Presentazione
|
||||||
|
|
||||||
|
Il corso ha lo scopo di fornire una comprensione approfondita di Arch
|
||||||
|
Linux, configurandolo opportunamente per utilizzarlo nel campo della
|
||||||
|
sicurezza informatica e del penetration testing. Il corso copre una
|
||||||
|
vasta gamma di argomenti, tra cui l'installazione di Arch Linux,
|
||||||
|
l'analisi delle informazioni pubbliche e lo scanning di reti, le
|
||||||
|
tecniche e le problematiche di sniffing, la sicurezza dei servizi come
|
||||||
|
posta, DNS, web e SSH, l'hardening di Arch Linux, la prevenzione da
|
||||||
|
tecniche di hacking comuni, e infine l'uso del bash scripting per la
|
||||||
|
cybersecurity. Attraverso una combinazione di lezioni teoriche e
|
||||||
|
pratiche, gli studenti avranno l'opportunità di acquisire competenze
|
||||||
|
pratiche nel campo della sicurezza informatica.
|
||||||
|
|
||||||
|
# Obiettivi
|
||||||
|
|
||||||
|
* Fornire una comprensione delle caratteristiche e dei vantaggi di
|
||||||
|
Arch Linux.
|
||||||
|
* Insegnare le tecniche di raccolta di informazioni e di scanning di
|
||||||
|
reti.
|
||||||
|
* Spiegare le tecniche e le problematiche di sniffing e come
|
||||||
|
proteggersi.
|
||||||
|
* Fornire una comprensione della sicurezza dei servizi di posta, DNS,
|
||||||
|
web e SSH.
|
||||||
|
* Insegnare come rafforzare un sistema Arch Linux attraverso
|
||||||
|
l'hardening.
|
||||||
|
* Fornire una comprensione delle tecniche di hacking comuni e come
|
||||||
|
prevenirle.
|
||||||
|
* Insegnare l'uso del bash scripting per automatizzare le attività di
|
||||||
|
sicurezza e migliorare la cybersecurity.
|
||||||
|
|
||||||
|
# Metodologie
|
||||||
|
|
||||||
|
Le lezioni saranno dialogiche e partecipate. Gli studenti verranno
|
||||||
|
condotti verso la costruzione delle conoscenze e competenze attraverso
|
||||||
|
esempi, compiti di realtà, attività di problem solving.
|
||||||
|
|
||||||
|
# Mezzi e strumenti
|
||||||
|
|
||||||
|
Ciascuno studente avrà a disposizione un'installazione di Arch Linux
|
||||||
|
GNU/Linux predisposta all'interno di una macchina virtuale.
|
||||||
|
|
||||||
|
# Articolazione dei contenuti (40 ore)
|
||||||
|
|
||||||
|
## Installazione di Arch Linux
|
||||||
|
* Caratteristiche della distribuzione: Arch Linux è una distribuzione
|
||||||
|
Linux basata su Debian che è stata progettata specificamente per il
|
||||||
|
penetration testing e la sicurezza informatica. Include numerose
|
||||||
|
utility preinstallate per l'hacking etico, come Wireshark, Nmap,
|
||||||
|
Metasploit e altre.
|
||||||
|
* Installazione su macchina laptop: l'installazione di Arch Linux su
|
||||||
|
un laptop comporta il download dell'immagine ISO dal sito ufficiale,
|
||||||
|
la creazione di una chiavetta USB avviabile, il boot da questa
|
||||||
|
chiavetta e infine la configurazione dell'installazione. Durante
|
||||||
|
l'installazione, è possibile selezionare le utility specifiche che
|
||||||
|
si desidera installare.
|
||||||
|
|
||||||
|
## Analisi delle Informazioni pubbliche e network scanning
|
||||||
|
* Tecniche di raccolta di informazioni: utilizzo di strumenti come
|
||||||
|
Whois, Nslookup e Dig per ottenere informazioni su un dominio o un
|
||||||
|
indirizzo IP.
|
||||||
|
* Utilizzo di scanner di rete: utilizzo di strumenti come Nmap per
|
||||||
|
identificare i dispositivi sulla rete e le porte aperte su questi
|
||||||
|
dispositivi.
|
||||||
|
* Analisi delle vulnerabilità: utilizzo di strumenti come Nessus o
|
||||||
|
OpenVAS per identificare le vulnerabilità nei dispositivi e nei
|
||||||
|
servizi di rete.
|
||||||
|
* Metodi di mitigazione: implementazione di patch e aggiornamenti,
|
||||||
|
configurazione di firewall e IDS, utilizzo di VPN e crittografia.
|
||||||
|
|
||||||
|
## Tecniche e problematiche di sniffing
|
||||||
|
* Cos'è lo sniffing e come funziona: lo sniffing è una tecnica
|
||||||
|
utilizzata per intercettare e leggere il traffico di rete. Può
|
||||||
|
essere fatto utilizzando strumenti come Wireshark o Tcpdump.
|
||||||
|
* Tecniche di sniffing: sniffing passivo, sniffing attivo, sniffing
|
||||||
|
diretto, sniffing indiretto.
|
||||||
|
* Protezione da sniffing: utilizzo di protocolli crittografati come
|
||||||
|
HTTPS e SSH, configurazione di VPN, utilizzo di firewall e IDS.
|
||||||
|
|
||||||
|
## Sicurezza dei servizi: posta, dns, web, ssh
|
||||||
|
* Sicurezza del servizio di posta elettronica: configurazione di
|
||||||
|
protocolli sicuri come SMTPS, POP3S e IMAPS, implementazione di SPF,
|
||||||
|
DKIM e DMARC.
|
||||||
|
* Sicurezza del servizio DNS: implementazione di DNSSEC,
|
||||||
|
configurazione di firewall per limitare le query DNS, monitoraggio
|
||||||
|
del traffico DNS per rilevare attività sospette.
|
||||||
|
* Sicurezza del servizio web: configurazione di HTTPS, implementazione
|
||||||
|
di HSTS, utilizzo di WAF, attuazione di politiche di sicurezza del
|
||||||
|
contenuto.
|
||||||
|
* Sicurezza del servizio SSH: disabilitazione dell'accesso root,
|
||||||
|
limitazione degli utenti che possono utilizzare SSH, configurazione
|
||||||
|
di chiavi SSH, utilizzo di Fail2ban.
|
||||||
|
|
||||||
|
## Hardening di Arch Linux
|
||||||
|
* Cosa significa hardening: l'hardening è il processo di rafforzamento
|
||||||
|
di un sistema informatico per ridurre la sua superficie di attacco.
|
||||||
|
* Passaggi per l'hardening di un sistema Arch Linux: aggiornamento del
|
||||||
|
sistema, rimozione di servizi non necessari, configurazione di
|
||||||
|
firewall e IDS, implementazione di politiche di sicurezza avanzate.
|
||||||
|
* Strumenti e tecniche per l'hardening: utilizzo di strumenti come
|
||||||
|
Lynis per l'hardening automatizzato, implementazione di SELinux o
|
||||||
|
AppArmor, configurazione di auditd.
|
||||||
|
|
||||||
|
## Prevenzione da tecniche di hacking comuni
|
||||||
|
* Tipi comuni di attacchi hacking: attacchi brute force, attacchi
|
||||||
|
DDoS, phishing, SQL injection, cross-site scripting.
|
||||||
|
* Tecniche di prevenzione: utilizzo di password complesse, limitazione
|
||||||
|
del numero di tentativi di login, configurazione di firewall e IDS,
|
||||||
|
aggiornamento e patching del sistema e delle applicazioni,
|
||||||
|
formazione degli utenti.
|
||||||
|
* Strumenti di monitoraggio e rilevamento degli attacchi: utilizzo di
|
||||||
|
strumenti come Snort, Wireshark, Syslog, ELK Stack.
|
||||||
|
|
||||||
|
## Bash Scripting e Cybersecurity
|
||||||
|
* Introduzione al bash scripting: cos'è lo scripting bash, perché è
|
||||||
|
utile, come scrivere script bash di base.
|
||||||
|
* Utilizzo di script bash per automatizzare le attività di sicurezza:
|
||||||
|
creazione di script per l'automazione di attività come il
|
||||||
|
monitoraggio del sistema, la scansione di rete, l'hardening del
|
||||||
|
sistema.
|
||||||
|
* Esempi di script bash utili per la cybersecurity: script per
|
||||||
|
l'analisi dei log, script per l'automazione di Nmap o Wireshark,
|
||||||
|
script per la generazione di report di sicurezza.
|
||||||
|
* Best practices per la scrittura di script bash sicuri: utilizzo di
|
||||||
|
variabili non modificabili, controllo degli input, gestione degli
|
||||||
|
errori, limitazione dei privilegi.
|
||||||
|
|
||||||
|
# Verifiche e valutazione
|
||||||
|
|
||||||
|
Le verifiche saranno somministrate nella forma di test strutturati a
|
||||||
|
risposta chiusa (4 risposte di cui solo una corretta). All'inizio del
|
||||||
|
corso verrà proposto agli studenti un test per verificare le loro
|
||||||
|
competenze iniziali. Al termine del corso verrà proposto una
|
||||||
|
simulazione di test utile alla preparazione dell'esame conclusivo.
|
||||||
|
|
1048
programma/default.latex
Normal file
1048
programma/default.latex
Normal file
File diff suppressed because it is too large
Load diff
BIN
programma/pdf/cybersecurity_linux.pdf
Normal file
BIN
programma/pdf/cybersecurity_linux.pdf
Normal file
Binary file not shown.
Loading…
Reference in a new issue