eingehend AKZEPTIEREN Sie alle iptables-Regeln, die noch angezeigt werden

8

Ich folge dieser Anleitung hier: http://isalazyadmin.net/2009/07/02/configuring-a-basic-firewall-for-debian-linux/

Und ich habe die aufgelisteten iptables angezeigt, aber mein Server scheint immer noch alle eingehenden Verbindungen zu akzeptieren (dh: Bittorrent-Peers stellen immer noch eine Verbindung her, obwohl ich diese Ports nicht zugelassen habe).

/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

Wenn ich nach einem Neustart iptables -L ausführe, wird dies immer noch als erste Regel angezeigt:

iptables -L

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

Ich bin mir nicht sicher, woher das kommt.

Hier ist die vollständige Liste:

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

Hier ist die Ausgabe von 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

Hier ist die Ausgabe von 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      
chovy
quelle
Haben Sie Ihre erste INPUT-Regel nicht bemerkt ACCEPT all -- anywhere anywhere?
ott--
1
Es scheint, dass Regeln beim Booten nicht geladen werden. Stellen Sie sicher, dass Sie Ihrer Datei / etc / network / interfaces die Zeile "pre-up iptables-restore </etc/iptables.rules" hinzugefügt haben (wie der Autor des Tutorials vorschlägt)
mzet
1
@ott: es betrifft nur lo inteface, also ist es ok
mzet
2
Können Sie Ihren Eintrag mit wiederholen iptables -vL?
ott--
Ihre Regeln und Ihr Post-Boot-Status stimmen tatsächlich überein, das ist nicht das Problem - siehe meine Antwort;)
Goldlöckchen

Antworten:

17

Die Linie, um die Sie sich Sorgen machen:

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

ist eigentlich aus diesem Grund in Ihren Regeln:

-A INPUT -i lo -j ACCEPT

Beachten Sie, dass die Schnittstelle in der Regel explizit, in der -LAusgabe jedoch nicht angegeben ist . Verschieben Sie diese Regel in die Mitte der Liste, verwenden Sie iptables-restoreund beachten Sie, dass auch "AKZEPTIEREN Sie alles - überall" nach unten verschoben wurde. Versuchen Sie nun, die Regel ein wenig zu ändern:

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

und die -LAusgabe wird:

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

"localhost.localdomain" ist Ihr 127.0.0.1-Hostname von /etc/hosts. Dies macht zumindest klarer, woher diese Regel stammt.

Sie können auch detailliertere Informationen einschließlich der Schnittstellen mit anzeigen iptables -vL.

Übrigens möchten Sie vielleicht Ihre Regeln beginnen:

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

Lassen Sie aus Sicherheitsgründen standardmäßig alles fallen. Dies wird jedoch als schlechtes Benehmen angesehen (siehe den Link im Gilles-Kommentar unten). Daher möchten Sie möglicherweise für jede verwendete Tabelle einen endgültigen Fang erstellen -j REJECT --reject-with icmp-net-prohibited.

Goldlöckchen
quelle
4
Zu Ihrer Information iptables -vLwird die vollständige Regel einschließlich der Benutzeroberfläche angezeigt. So wird Verwirrung wie diese beseitigt.
Derobert
Danke @derobert - ich hatte diese Anzeige vergessen. Wird dies in die Antwort bearbeiten!
Goldlöckchen
2
Standardmäßig alles löschen: IP-Pakete mit einem ICMP-Fehler ablehnen oder einfach verwerfen?
Gilles 'SO - hör auf böse zu sein'
@derobert +1 am -vSchalter. Meine Firewall-Regeln sehen nicht so schlecht aus, wie ich dachte :)
Matt Borja
1

Um dieses Problem in Zukunft zu vermeiden, verwenden Sie der Vollständigkeit -vhalber die ausführliche Befehlszeilenoption, wenn Sie die Tabelle anzeigen. Wie also:

iptables -Lv

Die Ausgabe sollte nun die betroffene Schnittstelle in den Spalten "in" und "out" enthalten:

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
db_
quelle
-1

Das Problem liegt in diesem Teil der INPUT-Kette:

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

vor allem in der letzten Zeile. Alles nach dieser Zeile ist unnötig, da diese Zeile alles akzeptiert.

Sie müssen diese Zeile mit diesem Befehl aus den Regeln löschen:

iptables -D INPUT 1

Sie müssen Ihre Firewall-Regeln überprüfen, wo ist Regel, die diese Zeile hinzufügen.

Jan Marek
quelle
7
"Alle akzeptieren - überall überall" ergibt sich aus dieser Regel: "-A INPUT -i lo -j ACCEPT", es handelt sich also nur um die Schnittstelle, es ist also nicht das Problem.
Mzet
Ich habe alles gelöscht, aber es wird immer noch mit iptables -L
chovy
ok, das hat jemand anderes erwähnt. Vielen Dank. Ich kann es sicher ignorieren.
Chovy
1
@chovy: deine Regeln sind in Ordnung. Das Problem liegt in der Wiederherstellung nach dem Neustart. Versuchen Sie, diese Schritte zu befolgen: debian-administration.org/articles/445
mzet