in arrivo ACCETTA tutte le regole di iptables ancora visualizzate


8

Sto seguendo questa guida qui: http://isalazyadmin.net/2009/07/02/configuring-a-basic-firewall-for-debian-linux/

E ho mostrato gli iptables elencati, ma il mio server sembra ancora accettare tutte le connessioni in entrata (es .: i peer bittorrent si stanno ancora connettendo, anche se non ho permesso quelle porte).

/etc/iptables.rules

*filter

# This will allow all loopback (lo0) traffic and drop all traffic to 127/8
# that does not use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

#  This accepts all already established connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# This allows all outbound traffic
-A OUTPUT -j ACCEPT

# This will allow HTTP and HTTPS connections from anywhere, this are the normal
# ports used for a web server
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Allow SSH connections
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Allow bittorrent/rtorrent ports, from ~/.rtorrent.rc
## -A INPUT -p tcp --dport 8071:8079 -j ACCEPT


# Allow ICMP ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# Reject all other inbound traffic
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

Quando eseguo iptables -L dopo un riavvio, ottengo ancora questo come prima regola:

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere  

Non sono sicuro da dove provenga.

Ecco l'elenco completo:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             loopback/8          reject-with icmp-port-unreachable 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere

Ecco l'output di iptables-save:

# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*raw
:PREROUTING ACCEPT [6701:942626]
:OUTPUT ACCEPT [8927:989420]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*nat
:PREROUTING ACCEPT [3281:284415]
:INPUT ACCEPT [9:720]
:OUTPUT ACCEPT [1758:148908]
:POSTROUTING ACCEPT [1758:148908]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*mangle
:PREROUTING ACCEPT [6701:942626]
:INPUT ACCEPT [6701:942626]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8928:989684]
:POSTROUTING ACCEPT [8928:989684]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT 
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -j ACCEPT 
COMMIT
# Completed on Fri Jan 11 09:54:19 2013

Ecco l'output di iptables -vL:

$ sudo iptables -vL
[sudo] password for ettinger: 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 8303 1206K ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 REJECT     all  --  !lo    any     anywhere             loopback/8          reject-with icmp-port-unreachable 
  12M 7191M ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
   18   980 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:www 
    7   344 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:https 
  379 22728 ACCEPT     tcp  --  any    any     anywhere             anywhere            state NEW tcp dpt:ssh 
18316 1110K ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpts:8071:8079 
 120K   15M ACCEPT     udp  --  any    any     anywhere             anywhere            udp dpt:6881 
24809 1489K ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:9001 
  688 35244 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:9030 
  874 73072 ACCEPT     icmp --  any    any     anywhere             anywhere            icmp echo-request 
12705  871K REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-port-unreachable 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-port-unreachable 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  14M   12G ACCEPT     all  --  any    any     anywhere             anywhere      

Non hai notato la tua prima regola INPUT ACCEPT all -- anywhere anywhere?
ott--

1
Sembra che le regole non vengano caricate all'avvio. Assicurati di aver aggiunto la riga "pre-up iptables-restore </etc/iptables.rules" al tuo file / etc / network / interfaces (come suggerisce l'autore del tutorial)
mzet

1
@ott: riguarda solo lo inteface, quindi va bene
mzet

2
Puoi rifare la tua inserzione con iptables -vL?
ott--

Le tue regole e il tuo stato post boot in realtà coincidono, non è questo il problema - vedi la mia risposta;)
goldilocks

Risposte:


17

La linea di cui sei preoccupato:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere       

è proprio per questo nelle tue regole:

-A INPUT -i lo -j ACCEPT

Si noti che l'interfaccia è esplicita nella regola, ma non -Lnell'output. Sposta quella regola in mezzo all'elenco, usa iptables-restoree nota che anche "ACCETTA tutto - dovunque" si è spostato verso il basso. Ora prova a cambiare un po 'la regola:

-A INPUT -i lo -s 127.0.0.1 -j ACCEPT

e l' -Loutput diventerà:

target     prot opt source                 destination  
ACCEPT     all  --  localhost.localdomain  anywhere

"localhost.localdomain" sarà il tuo nome host 127.0.0.1 da /etc/hosts. Questo almeno rende più chiaro da dove provenga questa regola.

È inoltre possibile visualizzare informazioni più dettagliate, comprese le interfacce con iptables -vL.

A proposito, potresti voler iniziare le tue regole:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

Rilascia tutto per impostazione predefinita come sicurezza. Tuttavia, si tratta di cattive maniere (vedi il link nel commento di Gilles di seguito), quindi potresti voler creare un catch finale tutto per ogni tabella che utilizza -j REJECT --reject-with icmp-net-prohibited.


4
Cordiali saluti, iptables -vLmostrerà la regola completa, compresa l'interfaccia. Quindi eliminerà la confusione in questo modo.
derobert l'

Grazie @derobert - Mi ero dimenticato di quel display. Lo modificherò nella risposta!
Riccioli d'oro

2
Per quanto riguarda l'eliminazione di tutto per impostazione predefinita: rifiutare i pacchetti IP con un errore ICMP o semplicemente eliminarli?
Gilles 'SO- smetti di essere cattivo'

@derobert +1 -vsull'interruttore. Le mie regole del firewall non sembrano male come pensavo :)
Matt Borja,

1

Proprio per completezza, al fine di evitare questo problema in futuro utilizzare l' -vopzione della riga di comando dettagliata quando si visualizza la tabella. In questo modo:

iptables -Lv

L'output dovrebbe ora includere l'interfaccia interessata nelle colonne "in" e "out":

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  151 13073 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
  126 33414 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

-1

Il problema è in questa parte della catena INPUT:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere

specialmente nell'ultima riga. Tutto ciò che segue questa linea non è necessario, perché questa linea accetta ogni pensiero.

Devi eliminare questa riga dalle regole con questo comando:

iptables -D INPUT 1

Devi ispezionare le regole del firewall, dove si trova la regola, che aggiunge questa riga.


7
"ACCETTA tutto - ovunque ovunque" deriva da questa regola: "-A INPUT -i lo -j ACCEPT" quindi riguarda solo l'interfaccia, quindi non è un problema.
mzet,

Ho eliminato tutto, ma viene ancora visualizzato con iptables -L
chovy

ok, questo è ciò che qualcun altro ha menzionato. Grazie. Posso tranquillamente ignorarlo.
amorevole

1
@chovy: le tue regole sono ok. Il problema sta nel ripristinarlo dopo il riavvio. Prova a seguire questi passaggi: debian-administration.org/articles/445
mzet
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.