it-swarm.dev

Accesso FTP sicuro; migliori pratiche

Abbiamo diverse applicazioni web (B2B, B2C eCommerce) a cui gli sviluppatori hanno accesso per caricare file.

Devo assicurarmi che la parte FTP sia ben protetta.

Qual è il modo (i) migliore (i) per farlo?

Attualmente ho:

  • Numero di porta modificato e
  • Imposta un IP statico (solo il nostro IP locale) per i caricamenti

È abbastanza per rendere sicuro l'accesso FTP?

21
Smart Bird

anche se @ mahbubut-r-aaman lo menziona di sfuggita, ho pensato di espandermi un po 'su SSH. La risposta che direi per proteggere FTP è non usare FTP. Il motivo è che (per impostazione predefinita) invia nomi utente e password in chiaro, che non è considerato un approccio molto sicuro.

Invece potresti guardare SFTP (che usa il protocollo SSH) o FTP (S) che usa il protocollo FTP con SSL per la crittografia.

Inoltre suggerirei di cercare una soluzione come fail2ban per aiutare a bloccare i tentativi di indovinare la password.

cambiare la porta su cui è in ascolto è un po 'utile per evitare il rumore nei registri degli attacchi casuali, ma non dovresti fare affidamento su di esso.

bloccare l'accesso a specifici indirizzi IP di origine è una buona idea se è pratico in quanto limiterà chi può tentare di accedere al sito.

21
Rory McCune

Il problema con FTP standard

Il protocollo FTP standard non è protetto. Chiunque nella rete (qualsiasi "uomo in mezzo", come viene chiamato, in grado di leggere e/o modificare i dati sulla connessione) può vedere ciò che si sta inviando e modificare i dati inviati. Un tipico login FTP è il seguente:

* TCP connection is made to the server
220 Welcome to this FTP server!
USER <username>
331 Password required for <username>
PASS <password>
<a positive or negative response>

Come puoi vedere, non esiste alcuna protezione per la password. Poiché chiunque sulla rete può leggere questo, un utente malintenzionato può accedere facilmente con un nome utente e una password rubati.

Esistono diversi modi per risolvere questo problema. Potresti usare qualcosa di diverso da FTP, ma dato che è fuori tema qui non entrerò in questo. FTP stesso conosce due popolari versioni sicure: FTPS e SFTP. Puoi tenerli separati come segue: FTPS ha una S alla fine, proprio come HTTPS. E in effetti, funziona esattamente come HTTPS, che è tramite il protocollo SSL/TLS. SFTP, con una S con prefisso, utilizza SSH per connettersi ed è più popolare sui server Linux.

In questo post mi concentrerò su FTPS.

A proposito delle misure che hai preso finora

Prima di tutto, è una buona cosa che tu stia cercando attivamente di proteggerlo. Molte persone semplicemente non se ne curerebbero!

  • Modifica del numero di porta

    Questo aiuta in due modi, anche se entrambi non ne valgono davvero la pena.

    1. L'uso di una porta alternativa rende un po 'meno ovvio che si tratta di traffico FTP, ma è ancora banale notare quando qualcuno sta attivamente cercando di hackerarti e può monitorare la tua rete.
    2. Vedo regolarmente persone che eseguono la scansione di server casuali sulla porta 21 per vedere se sono attivi account non garantiti, ma una password come "1Q3XX" non sarebbe già stata indovinata da loro (per lo più fanno attacchi con dizionario). Quindi non è davvero vantaggioso cambiare la porta se le password sono migliori di "admin" o "123456".
  • Il caricamento può essere effettuato da un IP fisso (locale)

    Questo aiuta un po 'di più, ma ti limita anche. Se sei a casa e noti un enorme buco nella sicurezza del tuo sito Web, dovrai passare sopra. Con una password decente, non dovrebbe essere necessario limitare l'IP, soprattutto se si dispone di un server che supporta il banning automatico dopo troppi tentativi di accesso non validi.

    Potresti configurare una VPN per evitare di dover passare sopra, ma qual è il punto se potessi semplicemente scegliere una password FTP sicura?

Suggerimento software

Dal momento che non l'hai menzionato, suppongo che tu sia aperto a qualsiasi client FTP e implementazione del server disponibile per qualsiasi sistema operativo.

Anche se non ho testato molti server FTP, FileZilla Server funziona bene per i miei scopi, e immagino che funzionerebbe bene per qualsiasi piccola organizzazione. Le caratteristiche includono:

  • Più utenti e gruppi di utenti
  • Consentire o negare l'accesso da determinati IP, sia per utente che a livello globale per il server
  • FTPS. Come HTTPS è HTTP sicuro, FTPS è FTP sicuro. Funziona interamente su SSL/TLS e protegge i dati inviati. I dati (il login e il codice) non possono essere letti o modificati da qualcuno nel mezzo (come un hacker su una rete wifi pubblica, o anche il tuo governo o ISP). Puoi semplicemente installare il tuo certificato.
  • È possibile forzare l'uso di FTPS per utente e anche forzare l'invio di file crittografati (alcuni client crittografano solo i dati di accesso)
  • È possibile il divieto automatico dopo troppi accessi non validi (vieta l'IP per qualche tempo, che è possibile impostare)
  • La registrazione è supportata ed è possibile impostare la durata di memorizzazione dei registri, la loro dimensione, ecc.
  • Molte altre funzioni non legate alla sicurezza come la limitazione/limitazione della velocità, la limitazione del numero di client simultanei, l'impostazione della porta su cui è in ascolto, l'impostazione di un messaggio di benvenuto, ecc.
  • La configurazione è in XML e c'è un pannello di amministrazione (il pannello di amministrazione può essere collegato in remoto ed è protetto da una password). Ciò significa che puoi anche automatizzare l'aggiunta di utenti al file XML, se lo desideri.
  • Uno svantaggio è che è solo per Windows.

Se si utilizza un server Linux, è possibile cercare server FTP con opzioni simili. La funzione di gran lunga più importante da cercare in un server è FTPS o SFTP, e la possibilità di forzarla in modo tale che nessuno possa connettersi accidentalmente senza crittografia. Oltre a ciò, l'autobanning e la registrazione sono piuttosto importanti.

Quindi per il client, penso di nuovo che FileZilla sia un'ottima opzione.

  • Supporta FTPS e SFTP e persino certificati client per l'autenticazione.
  • È necessario considerare esplicitamente il certificato inviato dal server, eventualmente archiviando e attendendo il certificato. Se un hacker emette un certificato, lo saprai perché ti chiede di nuovo "vuoi fidarti di questo certificato sconosciuto?".
  • Multipiattaforma (funziona su Windows, Mac e Linux)
  • Molte altre opzioni come la navigazione della directory sincronizzata, un gestore del sito (archivia gli accessi per server diversi), confronta i file nell'elenco di directory locale e remoto in base a dimensioni e data di modifica, velocità limite e trasferimenti simultanei, ecc.
15
Luc

I seguenti passaggi ti aiuteranno a proteggere l'accesso FTP

  • Disabilita l'accesso anonimo
  • Imposta il tuo sito FTP come Blind Put
  • Abilita quote disco
  • Utilizzare le restrizioni sul tempo di accesso
  • Limitare l'accesso tramite IP
  • Audit Logon Events
  • Abilita requisito password complessa
  • Abilita blocco account e soglia blocco account
  • Rendi obbligatorio l'accesso SSH

EDIT:

EDIT: Esempio di implementazione

EDIT: Mi piace la risposta di @Rory McCune. Bella e ottima spiegazione.

Invece di utilizzare FTP, meglio se si potesse guardare SFTP (che utilizza il protocollo SSH) o FTP (S) che utilizza il protocollo FTP con SSL per la crittografia.

fail2ban è una buona soluzione per bloccare i tentativi di indovinare la password.

Cambiare la porta su cui è in ascolto è un po 'utile per evitare il rumore nei registri degli attacchi casuali.

EDIT: Preferisco il commento di Rook

don't use ftp! Your password and your code in in plain text!
2