entrante ACEPTAR todas las reglas de iptables siguen apareciendo

8

Estoy siguiendo esta guía aquí: http://isalazyadmin.net/2009/07/02/configuring-a-basic-firewall-for-debian-linux/

Y tengo las iptables en la lista que se muestran, pero mi servidor todavía parece estar aceptando todas las conexiones entrantes (es decir: los pares de bittorrent todavía se están conectando, aunque no permití esos puertos).

/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

Cuando ejecuto iptables -L después de un reinicio, todavía obtengo esto como mi primera regla:

iptables -L

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

No estoy seguro de dónde viene esto.

Aquí está la lista completa:

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

Aquí está la salida 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

Aquí está la salida 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
fuente
¿No has notado tu primera regla de ENTRADA ACCEPT all -- anywhere anywhere?
ott--
1
Parece que las reglas no se cargan en el momento del arranque. Asegúrese de agregar la línea "pre-up iptables-restore </etc/iptables.rules" a su archivo / etc / network / interfaces (como sugiere el autor del tutorial)
mzet
1
@ott: se trata de lo inteface solamente, así que está bien
mzet
2
¿Puedes rehacer tu listado con iptables -vL?
ott--
Sus reglas y su estado de arranque posterior realmente coinciden, ese no es el problema - vea mi respuesta;)
goldilocks

Respuestas:

17

La línea que te preocupa:

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

en realidad se debe a esto en sus reglas:

-A INPUT -i lo -j ACCEPT

Observe que la interfaz es explícita en la regla, pero no en la -Lsalida. Mueva esa regla al medio de la lista, use iptables-restorey observe que "ACEPTAR todo en cualquier lugar" también se ha movido hacia abajo. Ahora intenta cambiar un poco la regla:

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

y la -Lsalida se convertirá en:

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

"localhost.localdomain" será su nombre de host 127.0.0.1 de /etc/hosts. Esto al menos aclara de dónde proviene esa regla.

También puede ver información más detallada, incluidas las interfaces con iptables -vL.

Por cierto, es posible que desee comenzar sus reglas:

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

Deje todo por defecto como una falla por seguridad. Sin embargo, esto se considera de mala educación (vea el enlace en el comentario de Gilles a continuación), por lo que es posible que desee crear una captura final para cada tabla que utilice -j REJECT --reject-with icmp-net-prohibited.

encerrada dorada
fuente
44
FYI, iptables -vLmostrará la regla completa, incluida la interfaz. Entonces eliminará la confusión como esta.
derobert
Gracias @derobert: me había olvidado de esa pantalla. ¡Editaré esto en la respuesta!
Ricitos de Oro
2
Con respecto a descartar todo de forma predeterminada: ¿ Rechazar paquetes IP con un error ICMP o simplemente descartarlos?
Gilles 'SO- deja de ser malvado'
@derobert +1 en el -vinterruptor. Las reglas de mi firewall no se ven tan mal como pensaba :)
Matt Borja
1

Solo como una cuestión de integridad, para evitar este problema en el futuro, use la -vopción de línea de comando detallada cuando muestre la tabla. Como así:

iptables -Lv

El resultado ahora debe incluir la interfaz que afecta en las columnas "dentro" y "fuera":

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_
fuente
-1

El problema está en esta parte de la cadena INPUT:

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

Especialmente en la última línea. Todo después de esta línea es innecesario, porque esta línea acepta todo.

Debe eliminar esta línea de las reglas con este comando:

iptables -D INPUT 1

Debe inspeccionar las reglas de su firewall, donde está la regla, que agrega esta línea.

Jan Marek
fuente
77
"ACEPTAR todo, en cualquier lugar, en cualquier lugar" proviene de esta regla: "-A ENTRADA -i lo -j ACEPTAR", por lo que solo concierne a la interfaz, por lo que no es el problema.
mzet
Eliminé todo, pero aún aparece con iptables -L
chovy
ok, eso es lo que alguien más mencionó. Gracias. Puedo ignorarlo con seguridad.
chovy
1
@chovy: tus reglas están bien. El problema radica en restaurarlo después de reiniciar. Intente seguir estos pasos: debian-administration.org/articles/445
mzet