entrant ACCEPTER toutes les règles iptables apparaissent toujours

8

Je suis ce guide ici: http://isalazyadmin.net/2009/07/02/configuring-a-basic-firewall-for-debian-linux/

Et j'ai les iptables répertoriés, mais mon serveur semble toujours accepter toutes les connexions entrantes (c'est-à-dire que les pairs de bittorrent se connectent toujours, même si je n'ai pas autorisé ces ports).

/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

Lorsque j'exécute iptables -L après un redémarrage, j'obtiens toujours ceci comme ma première règle:

iptables -L

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

Je ne sais pas d'où cela vient.

Voici la liste complète:

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

Voici la sortie de 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

Voici la sortie 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
la source
Vous n'avez pas remarqué votre première règle INPUT ACCEPT all -- anywhere anywhere?
ott--
1
Il semble que les règles ne soient pas chargées au démarrage. Assurez-vous d'avoir ajouté la ligne «pre-up iptables-restore </etc/iptables.rules» à votre fichier / etc / network / interfaces (comme le suggère l'auteur du tutoriel)
mzet
1
@ott: cela concerne uniquement l'interface lo, donc ça va
mzet
2
Pouvez-vous refaire votre annonce avec iptables -vL?
ott--
Vos règles et votre état de post-démarrage correspondent en fait, ce n'est pas le problème - voir ma réponse;)
goldilocks

Réponses:

17

La ligne qui vous inquiète:

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

est en fait à cause de cela dans vos règles:

-A INPUT -i lo -j ACCEPT

Notez que l'interface est explicite dans la règle, mais pas dans la -Lsortie. Déplacez cette règle au milieu de la liste, utilisez iptables-restoreet notez que "ACCEPTER tout - n'importe où" a également baissé. Essayez maintenant de changer un peu la règle:

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

et la -Lsortie deviendra:

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

"localhost.localdomain" sera votre nom d'hôte 127.0.0.1 à partir de /etc/hosts. Cela rend au moins plus clair l'origine de cette règle.

Vous pouvez également voir des informations plus détaillées, y compris les interfaces avec iptables -vL.

BTW, vous voudrez peut-être commencer vos règles:

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

Déposez tout par défaut comme une chute pour plus de sécurité. Cependant, cela est considéré comme de mauvaises manières (voir le lien dans le commentaire de Gilles ci-dessous), donc vous pouvez créer un crochet final pour chaque table qui utilise -j REJECT --reject-with icmp-net-prohibited.

boucle d'or
la source
4
FYI, iptables -vLmontrera la règle complète, y compris l'interface. Cela éliminera donc la confusion comme celle-ci.
derobert
Merci @derobert - j'avais oublié cet affichage. Éditera ceci dans la réponse!
goldilocks
2
Concernant la suppression de tout par défaut: rejeter les paquets IP avec une erreur ICMP, ou simplement les supprimer?
Gilles 'SO- arrête d'être méchant'
@derobert +1 sur le -vcommutateur. Mes règles de pare-feu ne sont pas aussi mauvaises que je le pensais :)
Matt Borja
1

Par souci d'exhaustivité, afin d'éviter ce problème à l'avenir, utilisez l' -voption de ligne de commande détaillée lors de l'affichage du tableau. Comme ainsi:

iptables -Lv

La sortie devrait maintenant inclure l'interface qu'elle affecte dans les colonnes "in" et "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
db_
la source
-1

Le problème est dans cette partie de la chaîne INPUT:

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

surtout dans la dernière ligne. Tout ce qui se trouve après cette ligne est inutile, car cette ligne accepte chaque pensée.

Vous devez supprimer cette ligne des règles par cette commande:

iptables -D INPUT 1

Vous devez inspecter vos règles de pare-feu, où est la règle, qui ajoute cette ligne.

Jan Marek
la source
7
"ACCEPTER tout - n'importe où n'importe où" vient de cette règle: "-A ENTRÉE -i lo -j ACCEPTER" donc cela ne concerne que l'interface lo, donc ce n'est pas le problème.
mzet
J'ai tout supprimé, mais il apparaît toujours avec iptables -L
chovy
ok, c'est ce que quelqu'un d'autre a mentionné. Merci. Je peux l'ignorer en toute sécurité.
chovy
1
@chovy: vos règles sont ok. Le problème réside dans sa restauration après le redémarrage. Essayez de suivre ces étapes: debian-administration.org/articles/445
mzet