tags: Hardening Hardening_Kali_Linux


Installazione

Verifica Installazione

sha256sum kali-linux-*.iso

Flashare

sudo dd if=kali-linux-*.iso of=/dev/sdX bs=4M status=progress sync

Aggiornamento

sudo apt update && sudo apt full-upgrade -y

Firewall

Installazione

sudo apt install ufw
sudo ufw status

Bloccare connessione in entrata

Per impedire qualsiasi connessione in entrata puoi utilizzare questo comando:

sudo ufw default deny incoming

E per concedere l’accesso ad una porta per una reverse shell per esempio puoi usare:

sudo ufw allow 4444/tcp

Per toglierlo di nuovo puoi usare:

sudo ufw delete allow 4444/tcp

Per consentire la connessione tramite ssh puoi usare:

sudo ufw allow ssh

Consentire tutto il traffico in uscita

Per consentire tutto il traffico in uscita puoi usare questo comando:

sudo ufw default allow outgoing

Fail2ban

Fail2Ban è uno strumento di difesa automatica. Il suo lavoro è monitorare i file di log dei tuoi servizi (come SSH, server web, FTP, ecc.) alla ricerca di tentativi di accesso falliti e ripetuti, ovvero i classici attacchi brute-force. Se non usi servizi che richiedono una autenticazione come ssh non c’è bisogno di attavarlo.

Installazione

sudo apt install fail2ban

Attivazione

Questo comando lo attiverà istantaneamente e ad ogni riavvio.

sudo systemctl enable --now fail2ban

Programmi Anti-Rootkit

Installazione

sudo apt install chkrootkit rkhunter

Attivazione

L’ideale è attivarlo su una macchina pulita e tenersi l’output per confrontarlo con controlli futuri.

#Questo programma è come una doppia verifica, ma quello più importante è quello successivo
sudo chkrootkit
 
# aggiorna definizioni rkhunter
sudo rkhunter --update
 
 
sudo rkhunter --check

Se un file viene segnalato come Warning puoi verificare la sua legittimità nel seguente modo:

# Chi fornisce il file
dpkg -S /usr/bin/lwp-request
 
# Info sul pacchetto (per confermare che viene da libwww-perl)
apt show libwww-perl --no-show-optional

Se dpkg -S mostra libwww-perl e apt show conferma il pacchetto ufficiale, il file è legittimo.

Con Rkhunter possiamo impostare una scansione come nuova baseline con il seguente comando:

# imposta lo stato corrente dei file come baseline fidata
sudo rkhunter --propupd

Se vuoi essere più esplicito (o se il warning persiste), puoi aggiungere il file alla lista degli script permessi:

 
sudo sh -c 'echo "SCRIPTWHITELIST=/usr/bin/lwp-request" >>
/etc/rkhunter.conf.local'
 
sudo rkhunter --propupd
 

Nota: la variabile SCRIPTWHITELIST è usata da rkhunter per riconoscere gli script legittimi. Alcune distribuzioni usano anche nomi diversi, ma la procedura sopra è la più comune.

AntiVirus

Usali entrambi per massimizzare l’efficacia

ClamAV — leggero, open source e sicuro

 
#Installa
 
sudo apt install clamav clamav-daemon
 
#Avvia
 
sudo systemctl enable --now clamav-freshclam
 
#Aggiorna le firme
 
sudo freshclam
 
#Lancia
 
clamscan -r /home/kali/
 

LMD (Linux Malware Detect) — buono per ambienti web o server

 
#Installa
sudo apt install maldet
 
#Aggiorna le firme
sudo maldet --update
 
#Lancia
sudo maldet --scan-all /var/www
 

Privacy

VPN

Per anonimizzarci possiamo usare diversi strumenti come una VPN:

 
sudo apt install openvpn
 
sudo openvpn --config arquivo.ovpn
 

Proxychains4

Questo strumento forza qualsiasi programma (come Nmap, curl, sqlmap) a passare attraverso un proxy (SOCKS4, SOCKS5, HTTP). Alcuni strumenti non funzionano bene dietro Proxychains, soprattutto scanner come Nmap o exploit che richiedono connessioni raw (es. TCP SYN scan).

 
sudo apt install proxychains4 tor
 
sudo nano /etc/proxychains4.conf
 

Nel file /etc/proxychains.conf, alla fine aggiungi questo per avere un proxy Tor per esempio:

socks5 127.0.0.1 9050

Avvia Tor

sudo systemctl start tor

Per i server proxy utilizza quelli a pagamento per dati sensibile e quelli gratuiti per i test.

In seguito puoi eseguire i comandi singolarmente attraverso proxychain come nel seguente modo, lasciando tutto il resto al di fuori del tunnel:

proxychains nmap scanme.nmap.org
proxychains firefox
proxychains curl example.com
proxychains nmap -sT target

In realtà per i browser è meglio utilizzare questa opzione che da molti meno problemi:

brave-browser --proxy-server="socks5://127.0.0.1:9050" &

Cambiare Mac Address

 
sudo ifconfig wlan0 down
 
sudo macchanger -r wlan0
 
sudo ifconfig wlan0 up
 

Cambiare Server DNS

Per cambiare il server DNS al quale fare le richieste possiamo seguire questi passaggi:

sudo nano /etc/resolv.conf

All’interno del file inseriamo:

nameserver 1.1.1.1
nameserver 1.0.0.1

E siccome al riavvio viene cancellato dobbiamo renderlo permanente con questo comando:

sudo chattr +i /etc/resolv.conf

Questo comando rende immutabile il file anche per l’utente root, quindi se volessimo modificarlo dovremmo utilizzare il seguente comando per renderlo di nuovo modificabile:

chattr -i /etc/resolv.conf
 
nano /etc/resolv.conf

DNSCrypt-Proxy

DNSCryp-Proxy è paragonabile ad una VPN per DNS, non è proprio così, ma l’idea è quella.

Per installarlo possiamo seguire i seguenti comando:

sudo apt update
sudo apt install dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
sudo systemctl enable dnscrypt-proxy

Poi andiamo nel file /etc/resolv.conf e ci inseriamo:

nameserver 127.0.0.1

Per vedere che tutto funzioni possiamo lanciare il seguente comando:

sudo systemctl status dnscrypt-proxy

L’output dovrebbe essere una cosa come:

sudo systemctl status dnscrypt-proxy
 dnscrypt-proxy.service - DNSCrypt client proxy
     Loaded: loaded (/usr/lib/systemd/system/dnscrypt-proxy.service; enabled; preset: disabled)
     Active: active (running) since Sun 2025-02-16 11:12:25 CET; 1min 45s ago
 Invocation: 685c7b1ea41343c2b40518b978d4e746
TriggeredBy: dnscrypt-proxy.socket
       Docs: https://github.com/DNSCrypt/dnscrypt-proxy/wiki
   Main PID: 49355 (dnscrypt-proxy)
      Tasks: 12 (limit: 27982)
     Memory: 8.9M (peak: 10.1M)
        CPU: 97ms
     CGroup: /system.slice/dnscrypt-proxy.service
             └─49355 /usr/sbin/dnscrypt-proxy -config /etc/dnscrypt-proxy/dnscrypt-proxy.toml
 
Feb 16 11:12:25 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:25] [NOTICE] dnscrypt-proxy 2.1.5
Feb 16 11:12:25 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:25] [NOTICE] Network connectivity detected
Feb 16 11:12:25 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:25] [WARNING] Systemd sockets are untested and unsupported - use at your own risk
Feb 16 11:12:25 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:25] [NOTICE] Wiring systemd TCP socket #0, dnscrypt-proxy.socket, 127.0.2.1:53
Feb 16 11:12:25 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:25] [NOTICE] Wiring systemd UDP socket #1, dnscrypt-proxy.socket, 127.0.2.1:53
Feb 16 11:12:33 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:33] [NOTICE] Source [public-resolvers] loaded
Feb 16 11:12:33 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:33] [NOTICE] Firefox workaround initialized
Feb 16 11:12:33 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:33] [NOTICE] [cloudflare] OK (DoH) - rtt: 54ms
Feb 16 11:12:33 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:33] [NOTICE] Server with the lowest initial latency: cloudflare (rtt: 54ms)
Feb 16 11:12:33 kali dnscrypt-proxy[49355]: [2025-02-16 11:12:33] [NOTICE] dnscrypt-proxy is ready - live servers: 1
                                                                                                                        

Se si volesse disabilitare temporaneamente questo servizio possiamo farlo tramite i seguenti comandi:

systemctl stop dnscrypt-proxy.service
systemctl stop dnscrypt-proxy.socket

Vanno eseguiti entrambi altrimenti il servizio continuarà ad andare.