Best practice di sicurezza VPS

15

Mi sono appena iscritto a un VPS di Linux per ospitare un sito Web che ho creato e ho bisogno di alcuni consigli sull'approccio migliore per proteggerlo.

In precedenza l'ho ospitato da una VM in casa, ma voglio liberarmene. Quindi la sicurezza è stata gestita dal fatto che sono NAT'd e solo alcune porte sono state aperte / inoltrate alla macchina.

Ora mi trovo in una situazione in cui la macchina è essenzialmente completamente aperta a Internet, quindi sto pensando che devo iniziare a fare qualcosa con le tabelle IP? Questo è qualcosa di completamente nuovo per me.

Stavo pensando che potrebbe esserci una soluzione più elegante, che implica il collegamento alla mia vpn su un'interfaccia separata per connetterci, ma non sono sicuro da dove iniziare.

Ho bisogno di:

  1. Accesso SSH da qualsiasi luogo (utilizzando una porta non standard già configurata)
  2. Accesso Postgres da una singola posizione
  3. Accesso Web (http / https) da qualsiasi luogo
  4. Accesso FTP da una singola posizione

Domande:

  1. Qual è la migliore pratica per proteggere una macchina Linux come questa? è è iptables?
  2. Puoi indicarmi la direzione delle risorse (quelle decenti) per imparare come farlo.

Il mio livello di linux è abbastanza alto, posso scrivere / eseguire il debug di script di bash, modificare configurazioni da zero, ecc. e capisco un po 'dell'architettura, ma non sono un guru.

    
posta Martin 18.01.2012 - 20:39
fonte

3 risposte

9
  • Limita l'accesso ai servizi. IPtables è un buon modo per gestirlo. L'installazione collega le regole che applicano ciò che hai descritto per ogni servizio e rilascia tutto il resto.
  • Limita i tuoi demoni attraverso la corretta configurazione. Se esegui l'autenticazione solo con una chiave pubblica su ssh (e sei abbastanza sicuro di non perderlo e negare l'accesso a te stesso), disattiva la password e l'autenticazione della tastiera. Fail2Ban è utile per i tentativi di forza bruta, ma anche il rifiuto istantaneo è piuttosto soddisfacente. Configura il tuo server FTP per esportare solo l'albero delle directory correlato.
  • Supponiamo che ognuno dei tuoi demoni sia stato compromesso ora ... eccetto forse SSH perché è solo una di quelle cose. Usa le funzionalità esterne per limitare ciò che il demone può fare sul tuo host.

Sono un grande fan di AppArmor su Linux perché la configurazione è qualcosa che può essere ragionevolmente compreso ed è molto potente per le applicazioni sand-boxing. Ad esempio, è possibile limitare Postgres e qualsiasi cosa venga mai eseguita per influire solo sul campo di archiviazione del database. Lo stesso vale per i server Web e FTP: non hanno mai bisogno di leggere nulla di dati che si trovano al di fuori delle loro directory operative e non hanno mai bisogno di aprire un'altra porta di rete. Ricevi un avviso email per eventuali violazioni di tali serie di regole.

L'isolamento dei tuoi servizi in questo modo ti darà sicurezza nell'integrità della macchina nel suo complesso anche se un singolo servizio è compromesso.

    
risposta data 19.01.2012 - 15:23
fonte
6

a seconda del provider di host VPS possono offrire una soluzione firewall che ti consentirà di impostare ciò che è possibile accedere al mondo esterno.

per darti un esempio di recente ho lavorato su un host VPS per un client che non aveva nient'altro che l'accesso HTTP / HTTPS a Internet, ma il pannello di controllo per il VPS (parte del pacchetto hosts) forniva un sistema per configurare il firewall che era di fronte al VPS, questo mi ha permesso di aprire SSH, MYSQL e amp; Accesso FTP a un solo indirizzo IP statico che fa parte del mio pacchetto a banda larga di casa.

Le tabelle IP ti permetteranno di fare molto lavoro per assicurare che la scatola sia protetta dal mondo esterno e puoi anche fornire set di regole per aiutare a ridurre gli attacchi laddove le persone provano a bruteforce le password SSH (in pratica puoi dire nella regola , se questo indirizzo IP ottiene un accesso ssh errato 5 volte in un intervallo di tempo, inserisci l'IP in blacklist per un determinato periodo di tempo o perminantly).

Qualcosa che suggerirei di guardare è configurare SSH in modo che non permetta il login ROOT (questo può essere fatto nel file di configurazione SSH, in cima alla mia testa non posso ricordare dove questo file è memorizzato)

Un'altra cosa che dovrebbe essere configurata per l'accesso SSH è l'installazione dell'autenticazione basata su chiave, questo significa che SOLO il PC a cui il server Linux ha la chiave pubblica sarà autorizzato a connettersi al sistema, a quel punto è possibile disattivare l'autenticazione della password in modo da aiutare a mitigare gli attacchi Bruteforce sul server.

Se nel tuo caso l'host non fornisce alcuna opzione firewall e la casella è completamente aperta a Internet, allora la cosa migliore è configurare IPTables

questo è un link ad alcune informazioni relative a IPTables, purtroppo non ho avuto molto input con IPTables quindi non posso garantire il suo valore.

link

spero che questo aiuti.

    
risposta data 18.01.2012 - 21:00
fonte
3

Tratterai questa casella come qualsiasi box fisico che abbia un IP pubblico. Devi seguire le linee guida di base per hardening di Linux come:

  1. Mantieni l'aggiornamento della casella.
  2. Rimuovi i programmi non necessari.
  3. Avere iptables in esecuzione e bloccato il più stretto possibile.
    • Puoi fare tutte le regole specifiche basate sulla fonte che desideri, come ad esempio il tuo requisito FTP e Postgres.
  4. Esegui SSH su una porta non standard e non consentire accessi di root.
    • Puoi anche fare l'autenticazione basata su chiave per renderla più sicura.
    • Vorrei anche consigliare di eseguire denyhosts e / o fail2ban in modo da poter monitorare i log per tentativi di accesso falliti e quindi bloccare istantaneamente gli IP tramite /etc/hosts.deny. È solo un altro livello che ti farà sentire molto meglio riguardo all'apertura di SSH.
  5. Esegui un HIDS sulla scatola. Raccomando OSSEC sia per alcuni avvisi di malfunzionamenti sulla tua scatola, potenziali attacchi e anche come integrità del file e rilevamento del kit root.
  6. Monitora i tuoi servizi per assicurarti che siano tutti attivi e funzionanti correttamente. Usando un programma come Nagios.
  7. Etc.

Potresti anche configurare una VPN, ad esempio usando OpenVPN per entrare nella scatola. In questo modo puoi eseguire OpenVPN su una porta non standard e quindi puoi configurarlo per l'autenticazione basata su password e basata su chiave prima che ti consenta di entrare.

Di seguito sono 2 siti che consiglio vivamente di guardare.

link

link

    
risposta data 19.01.2012 - 15:01
fonte

Leggi altre domande sui tag