Come posso bloccare la porta 6379 per il traffico esterno su Ubuntu?


8

Voglio bloccare l'accesso alla porta 6379 sul mio server, ma desidero comunque collegarmi internamente. L'applicazione redis-server funziona su quella porta e voglio collegarmi solo localmente (127.0.0.1). Come posso fare questo?

Risposte:


11

Per fare ciò, è necessario assicurarsi che le regole IPTables siano configurate correttamente. Ubuntu generalmente lascia i loro server spalancati per impostazione predefinita, motivo per cui ancora non consiglio il loro uso come server a meno che tu non sia abbastanza ben consapevole di come farlo già correttamente.

Immagino che il tuo iptables -L -nvassomigli a qualcosa del genere, sì?

# iptables -L -nv
Chain INPUT (policy ACCEPT 4M packets, 9M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 8M packets, 4M bytes)
 pkts bytes target     prot opt in     out     source               destination

È vuoto ed è spalancato. Ubuntu IPTables HowTo probabilmente aiuterà un po 'con questo. ( https://help.ubuntu.com/community/IptablesHowTo )

Raccomando qualcosa del genere, che consente SSH su qualsiasi interfaccia e tcp 6379 qualsiasi interfaccia ma quella che non si desidera:

*filter
:INPUT DROP [92:16679]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [203:36556]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -i lo -p udp -m udp --dport 6379 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
COMMIT

Dovresti quindi salvare questo file in /etc/iptables.rules.

Ovviamente, dovrebbero essere aggiunte tutte le altre porte che si desidera specificamente aprire.

Nota: ho aggiunto le linee specifiche 6379 per chiarezza. L'ACCETTA in basso proprio prima di COMMIT lo consentirebbe effettivamente perché tutte le connessioni di loopback devono essere consentite su un sistema Linux per il corretto funzionamento.

Dovrai anche mettere le regole nel tuo file / etc / network / interfaces, per assicurarti che vengano aggiunte quando viene visualizzata l'interfaccia e non più tardi nel processo di avvio. Si consiglia di aggiungere qualcosa di simile:

auto eth0
iface eth0 inet dhcp
  pre-up iptables-restore < /etc/iptables.rules

Modifica: per caricare inizialmente questa configurazione, è necessario eseguire il comando iptables-restore sopra indicato:

iptables-restore < /etc/iptables.rules

Presumo che questo aprirebbe la porta 6379 a tutto il web giusto? Cosa devo fare per renderlo aperto solo per 127.0.0.1?
Steve Rodrigue,

No, perché la regola predefinita è DROP. Se non ha una regola ACCEPT esplicita, viene bloccato dal DROP predefinito accanto a: INPUT nella parte superiore.
Magellan,

Personalmente, penso che la regola ACCEPT predefinita sia solo criminale in una distribuzione "server". Ma non è sorprendente dal momento che Ubuntu è prima di tutto una distribuzione desktop.
Magellan,

Ok, ho fatto esattamente quello che mi hai richiesto, ma sembra che riesca ancora a collegarmi alla porta 6379 dall'esterno. Devo riavviare il server o qualcosa del genere?
Steve Rodrigue,

1
Sì, ma non mi interessa molto dei contatori e questo funziona per me. Sentiti libero di modificare la risposta per adattarsi a un processo più rigoroso.
Magellan,

3

Bene, suggerirei di usare il "firewall semplice" (ufw), che è anche raccomandato da canonical. Leggere e scrivere iptables è troppo complicato solo per le attività di blocco delle porte occasionali.

Vedi qui: https://wiki.ubuntu.com/UncomplicatedFirewall


1
Le versioni precedenti di UFW non avevano la possibilità di applicare le regole alle porte selezionate, era tutto o niente. E gli amministratori di sistema professionisti dovrebbero prendere l'abitudine di capire cosa fanno le loro impostazioni di iptables e come funzionano le catene.
Magellano,

2

Qualcosa di simile a

iptables -A INPUT -s 0.0.0.0  -i eth0 --protocol tcp --dport 6379 -j DROP

Dovrebbe funzionare.


Questo mi dà questo errore: iptables v1.4.4: opzione sconosciuta `--dport '
Steve Rodrigue

Puoi riprovare con il nuovo comando? Ho aggiunto la parte --protocollo e -i (adatta alla tua interfaccia), ora dovrebbe funzionare.
Kedare,

Il problema che ho con questo suggerimento è che non si salva tra i riavvii a meno che non vengano eseguiti altri comandi richiesti e si presume che ci sia solo 1 interfaccia non loopback.
Magellan,

Consiglierei di usare l'operatore di negazione: -i! lo
Magellan,

Adrian: vuoi dire che se riavvio il server, quella modifica non sarebbe più attiva?
Steve Rodrigue,

0

Per le versioni più recenti di redis è possibile utilizzare bind 127.0.0.1in redis.confper farlo direttamente senza ulteriore configurazione di iptables

vedi questo articolo

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.