Il titolo dice probabilmente tutto. Voglio solo sapere quali sono le migliori tecniche per evitare di avere un port scanner che rileva le porte aperte sul mio server. Sto usando una distro Linux come mio sistema operativo (Ubuntu Server).
Portknocking è un metodo per aprire porte che il firewall normalmente mantiene chiuso eseguendo una serie di tentativi di connessione (colpi) ad altre porte. Sulla sequenza valida di porte bussate, si aprirà la porta richiesta.
Pensa al portknocking come a un colpo speciale sulla porta da aprire.
Ecco un esempio di wiki ArchLinux :
$ ssh username@host
(Ctrl+c to exit) ^C
$ nmap -Pn --host_timeout 201 --max-retries 0 -p 1111 host
$ nmap -Pn --host_timeout 201 --max-retries 0 -p 2222 host
$ ssh user@host
user@host's password:
L'utente batte la porta 1111
seguita da 2222
per aprire la porta 22
per SSH.
Portspoof è un programma che rende molto difficile interpretare i risultati della scansione delle porte, rallentando quindi la capacità di identificare le porte aperte.
The Portspoof program primary goal is to enhance OS security through a set of new techniques:
- All TCP ports are always open
Instead of informing an attacker that a particular port is CLOSED or FILTERED state Portspoof will return SYN+ACK for every port connection attempt.
As a result it is impractical to use stealth (SYN, ACK, etc.) port scanning against your system, since all ports are always reported as OPEN.
Every open TCP port emulates a services
Portspoof has a huge database of dynamic service signatures, that will be used to fool scanners to believe there's a legitimate service running. Scanning software usually tries to determine a service version that is running on an open port. Portspoof will respond to every service probe with a valid service signature, that is dynamically generated based on a service signature regular expression database. As a result an attacker will not be able to determine which port numbers your system is truly using.
Citato da link
Portspoof rende molto più difficile l'identificazione dei servizi di ascolto e, come afferma il README, occorrerebbero più di 8 ore per identificare quali porte sono effettivamente in ascolto. Identificare le porte reali è così dispendioso in termini di tempo che gli hacker probabilmente abbandoneranno.
Questa guida mostra come installare Portspoof:
- Compile the software, go in the directory where you have unzipped/put the sources and give these commands:
$./configure $ make $ sudo make install
OR
$ g++ -lpthread -Wall -g Configuration.cpp connection.cpp Portspoof.cpp revregex.cpp Utils.cpp Fuzzer.cpp Server.cpp -o portspoof
- Configure your firewall rules:
iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 1:65535 -j REDIRECT --to-ports 4444
iptables-restore < iptables-config (system_files directory)
Run Portspoof with service emulation:
$ portspoof -c portspoof.conf -s portspoof_signatures -D
Run Portspoof in “open port” mode:
$ portspoof -D
- Add portspoof to your system’s startup scripts. To do this modify or use the default init.d script that you can found in the ‘system_files’ directory.
Combina Portknocking con Portspoof e hai una buona difesa dai port scanner.
Se vuoi essere in grado di connettersi al tuo server senza ulteriori dolori dal lato client, non c'è modo di proteggere quelle porte dalla scansione. È un ossimoro. Port scanning è semplicemente un tentativo di connettersi e guardare a quale risposta ritorna.
Se sei disposto ad implementare misure aggiuntive dal lato del cliente, puoi usare qualcosa come "bussare alla porta". Nota che questo lascerà ancora alcune porte aperte per un tentativo di scansione, semplicemente non saranno quelle su cui sono in esecuzione server.
Mentre ci sono alcuni trucchi che puoi giocare, ad es. bloccando le fonti dopo tentativi di connessione sospetti, tutte le nmap del mondo hanno già delle contromisure (scansione lenta, scansione casuale, ecc.).
IMHO dovresti fare un passo indietro e chiediti di cosa hai paura, alias qual è il tuo modello di minaccia? Se un utente malintenzionato sa quali porte sono aperte, ciò indebolisce la tua sicurezza? Perché non dovrebbe Non provi a nascondere la porta di casa, installi un lucchetto adeguato, vero?
Un'altra soluzione è usare i servizi nascosti Tor se la velocità e la latenza non sono un grosso problema. In questo modo è impossibile scoprire il servizio utilizzando la scansione delle porte ed è abbastanza facile da fare. Offre anche un po 'più di privacy, come la crittografia e l'anonimato. Tutto ciò di cui hai bisogno per accedere al servizio è Tor e la possibilità di connettersi tramite Tor (predefinito alla porta 9050) usando SOCKS5. È possibile utilizzare proxychains o torsocks per proxify dei programmi che non supportano SOCKS5. È inoltre possibile impostare una password per il servizio nascosto.
Puoi avere tutte le tue porte come servizi nascosti e poi chiuderli da Internet.
Per definizione, port scanning è il processo di connessione a porte e controllo della risposta e qualsiasi metodo ovvio di arresto della scansione porta risulterà in problemi connessi al server stesso.
Ci sono un certo numero di soluzioni che sono là fuori che richiedono un po 'più di configurazione e quella più semplice è probabilmente il knock-out della porta.
Alcuni articoli su knockout:
Leggi altre domande sui tag linux network port-knocking ports network-scanners