Come posso bloccare tutte le porte tranne tre su Ubuntu?


22

Come posso bloccare tutte le porte tranne 1962, 999, 12020?

Una porta per SSH e altre due per una specie di script. Quindi, è necessario consentire l'uscita su queste porte, giusto?

I miei iptables:

# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*mangle
:PREROUTING ACCEPT [643521:136954367]
:INPUT ACCEPT [643521:136954367]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
:POSTROUTING ACCEPT [645723:99904505]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*filter
:INPUT ACCEPT [643490:136950781]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
-A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*nat
:PREROUTING ACCEPT [5673:734891]
:POSTROUTING ACCEPT [2816:179474]
:OUTPUT ACCEPT [2816:179474]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012

Mi dispiace, ma sono un vero principiante quando si tratta di queste cose e voglio solo rendere il mio server più sicuro.


Perché non usare UFW?
Soviero,

Risposte:


25

All'inizio dovresti sempre sciacquare per essere sicuro di ciò che è già stato definito ... niente

iptables -F

Quindi impostare il criterio predefinito della catena INPUT su DROP se viene raggiunta la fine e nessuna regola corrisponde:

iptables -P INPUT DROP

Per garantire che il loopback non sia interessato, è necessario aggiungere

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

per consentire tutto il traffico sul lo-if e ogni traffico in entrata per le connessioni che hai creato. Dopo di che aggiungi tutte le regole di cui hai bisogno per i tuoi servizi (non dimenticare di aprire ssh se ne hai bisogno! Altrimenti sei fuori) :

iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 

Un piccolo trucco che faccio per impedire a me stesso e agli altri di praticare accidentalmente buchi nella sicurezza e infine aggiungo:

iptables -A INPUT -j DROP

Questa riga corrisponde a tutto per la catena INPUT e la politica non dovrebbe ottenere nulla. il vantaggio di questo è anche se aggiungi una regola ACCEPT dopo l'inizializzazione del tuo set di regole che non verrà mai verificato perché tutto è stato eliminato prima. quindi ti assicura di tenere tutto in un unico posto.

Per la tua domanda, tutto appare così in sintesi:

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 
iptables -A INPUT -j DROP

1
Giusto per chiarire: -Pimposta la politica sulla catena. In realtà non sta aggiungendo una regola. La politica della catena indica l'azione da eseguire sul pacchetto se viene raggiunta la fine della catena. Per questo motivo, è consigliabile aggiungere le regole prima di impostare una DROPpolitica.
Belmin Fernandez,

Se lo ricordo correttamente, normalmente non importa dove impostare il criterio ... forse dovrei dare alla mia risposta una piccola modifica.
Mose,

3
una nota: fare molta attenzione a impostare la negazione e lo svuotamento dei criteri predefiniti quando si imposta un firewall tramite ssh. Ti chiuderai fuori. Sì, l'ho fatto. :-) Ora in genere faccio l'ultima regola iptables -A INPUT -j DROP, proprio per questo motivo.
Sirex,

Ho evidenziato un po 'il mio avvertimento ssh ;-)
Mose

@Mose: corretto su di esso non importa in generale. Stavo cercando di evidenziarlo. Ma potrebbe farti bloccare perché è già stato menzionato eh.
Belmin Fernandez,

20

Una risposta di un novizio come te :-) Avevo bisogno di proteggere anche il mio server Ubuntu, imparare iptables era un dolore che non riuscivo a superare. UFW (Uncomplicated Firewall) è un programma per rendere la configurazione del firewall il più semplice possibile.

  • installa ufw:

    sudo apt-get install ufw
    
  • disabilitarlo immediatamente (ho dovuto eseguire il ripristino di avvio perché ero bloccato dal mio login SSH):

    sudo ufw disable
    
  • imposta "nega" come regola predefinita (questo blocca tutte le porte):

    sudo ufw default deny
    
  • consentire le porte necessarie:

    sudo ufw allow to 1962
    sudo ufw allow to 999
    sudo ufw allow to 12020
    
    sudo ufw allow from 1962
    sudo ufw allow from 999
    sudo ufw allow from 12020
    
  • se sei sicuro che le regole sopra non interrompono la tua connessione ssh, abilita ufw:

    sudo ufw enable
    

I documenti sono ben scritti e forniscono altri esempi: https://help.ubuntu.com/community/UFW


1
Quando si lavora con le configurazioni del firewall, potrebbe essere una buona idea creare un cron job che disabiliti nuovamente il firewall. Nel caso in cui vieni bloccato.
pymkin,

Si noti che questo non funziona con la nuova 0,35, generando errori come ERROR: Bad destination addresseERROR: Bad source address
Dave

E come consentire tutte le porte tranne una porta per un'interfaccia specifica? Sto usando la regola di negazione predefinita e voglio bloccare la porta DNS 53 sull'interfaccia Ethernet per prevenire la perdita di DNS quando si utilizza una VPN. Attualmente devo consentire tutte le porte che desidero utilizzare per intervalli IP privati ​​che non sono molto convenienti.
Baptx
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.