Se fatto correttamente, potrebbe essere un'aggiunta utile al tuo protocollo di sicurezza. Tuttavia, sarei molto riluttante a utilizzarlo per sostituire un fattore preesistente nella tua autenticazione, in quanto gli indirizzi IP non sono informazioni segrete (lo dai ad ogni sito web che visiti) e dipendono da come / dove prendi l'IP indirizzo da, potrebbe essere banale per parodia. Ma se si utilizza l'indirizzo IP da una connessione TCP insieme a dire un cookie protetto solo http memorizzato, è possibile aggiungere un po 'di sicurezza. In particolare, invaliderei il cookie ogni volta che l'indirizzo IP cambia (che potrebbe cambiare per ragioni benigne come l'ISP che riassegna il tuo IP) e per motivi dannosi (l'attaccante ha ottenuto il tuo cookie).
Poiché Ladadadada ha affermato, gli indirizzi IP nelle connessioni TCP non sono più facilmente falsificati. TCP richiede una procedura di handshaking per ottenere un numero di sequenza a 32 bit casuale dal server prima di poter scambiare le informazioni. Se si crea un indirizzo IP casuale completamente falso all'avvio della procedura di sincronizzazione, i pacchetti non verranno instradati sul computer tramite Internet, quindi non è possibile completare l'handshake. A meno che non si controllino i router intermedi dell'ISP o un computer su una delle stesse reti locali in grado di catturare i pacchetti indirizzati altrove, nel qual caso è possibile creare indirizzi IP casuali.
Tuttavia, se si progetta un'app Web e si registra l'indirizzo IP, è necessario prestare attenzione. Supponiamo che tu disponga di un'app Web con due server Web (ad esempio, uno per contenuto dinamico / uno per statico), dietro a un servizio di bilanciamento del carico o un altro proxy. È possibile vedere per tentativi ed errori che l'indirizzo IP del client è presente solo nell'intestazione HTTP X-Forwarded-For
. Tuttavia, questo campo è facile da cambiare. Ad esempio, telnet www.whatismyip.org 80
e digita quanto segue con / senza X-Forwarded-For
della riga (ricorda di premere Invio due volte dopo l'ultima riga per indicare la fine della richiesta HTTP).
GET / HTTP/1.1
Host: www.whatismyip.org
X-Forwarded-For: 1.2.3.4
e vedrai che questa web app pensa che il tuo indirizzo IP sia cambiato in 1.2.3.4
. Quindi assicurati di testare accuratamente. Nel complesso, ritengo che farlo da solo sia più importante del suo valore, soprattutto perché potrebbe frustrare gli utenti i cui indirizzi IP cambiano abbastanza frequentemente.
EDIT: mi sono reso conto dopo averlo scritto che mentre rispondevo alla domanda del titolo ("può IP address essere un componente di 2 factor auth?"), ma non la parte specifica che si riferisce alla gestione di ssh, direi ssh passphrase protected la chiave è essenzialmente un'autenticazione a due fattori: qualcosa che hai (la chiave ssh) e qualcosa che conosci (la chiave della passphrase).