tags: Hardening Hardening_Kali_Linux
Installazione
Verifica Installazione
sha256sum kali-linux-*.isoFlashare
sudo dd if=kali-linux-*.iso of=/dev/sdX bs=4M status=progress syncAggiornamento
sudo apt update && sudo apt full-upgrade -yFirewall
Installazione
sudo apt install ufwsudo ufw statusBloccare connessione in entrata
Per impedire qualsiasi connessione in entrata puoi utilizzare questo comando:
sudo ufw default deny incomingE per concedere l’accesso ad una porta per una reverse shell per esempio puoi usare:
sudo ufw allow 4444/tcpPer toglierlo di nuovo puoi usare:
sudo ufw delete allow 4444/tcpPer consentire la connessione tramite ssh puoi usare:
sudo ufw allow sshConsentire tutto il traffico in uscita
Per consentire tutto il traffico in uscita puoi usare questo comando:
sudo ufw default allow outgoingFail2ban
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 fail2banAttivazione
Questo comando lo attiverà istantaneamente e ad ogni riavvio.
sudo systemctl enable --now fail2banProgrammi Anti-Rootkit
Installazione
sudo apt install chkrootkit rkhunterAttivazione
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 --checkSe 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-optionalSe 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 --propupdSe 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 9050Avvia Tor
sudo systemctl start torPer 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 targetIn 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.confAll’interno del file inseriamo:
nameserver 1.1.1.1
nameserver 1.0.0.1E siccome al riavvio viene cancellato dobbiamo renderlo permanente con questo comando:
sudo chattr +i /etc/resolv.confQuesto 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.confDNSCrypt-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-proxyPoi andiamo nel file /etc/resolv.conf e ci inseriamo:
nameserver 127.0.0.1Per vedere che tutto funzioni possiamo lanciare il seguente comando:
sudo systemctl status dnscrypt-proxyL’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.socketVanno eseguiti entrambi altrimenti il servizio continuarà ad andare.