A regra ACCEPT all de iptables recebida ainda aparece


8

Estou seguindo este guia aqui: http://isalazyadmin.net/2009/07/02/configuring-a-basic-firewall-for-debian-linux/

E eu tenho as tabelas de ip listadas, mas meu servidor ainda parece estar aceitando todas as conexões de entrada (ou seja: pares bittorrent ainda estão se conectando, mesmo que eu não tenha permitido essas portas).

/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 executo o iptables -L após uma reinicialização, ainda recebo isso como minha primeira regra:

iptables -L

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

Não tenho certeza de onde isso vem.

Aqui está a 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

Aqui está a saída do 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

Aqui está a saída do 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      

Você não notou sua primeira regra de ENTRADA ACCEPT all -- anywhere anywhere?
ott--

1
Parece que as regras não são carregadas no momento da inicialização. Certifique-se de que você adicionou "Pre-up iptables-restore </etc/iptables.rules" linha ao seu / etc / network arquivo / interfaces (como autor do tutorial sugere)
mzet

1
@ott: diz respeito lo inteface única, por isso é ok
mzet

2
Você pode refazer sua listagem iptables -vL?
ott--

Suas regras e seu estado de inicialização pós realmente não igualar-se, que não é o problema - veja a minha resposta;)
Goldilocks

Respostas:


17

A linha com a qual você está preocupado:

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

é realmente por causa disso em suas regras:

-A INPUT -i lo -j ACCEPT

Observe que a interface é explícita na regra, mas não na -Lsaída. Mova essa regra para o meio da lista, use iptables-restoree observe que "ACEITAR tudo - em qualquer lugar" também foi movido para baixo. Agora tente alterar um pouco a regra:

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

e a -Lsaída se tornará:

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

"localhost.localdomain" será o seu nome de host 127.0.0.1 /etc/hosts. Isso pelo menos deixa mais claro de onde veio essa regra.

Você também pode ver informações mais detalhadas, incluindo as interfaces com iptables -vL.

BTW, você pode querer começar suas regras:

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

Solte tudo por padrão como uma queda por segurança. Entretanto, isso é considerado falta de educação (veja o link no comentário de Gilles abaixo), portanto, você pode criar uma captura final para cada tabela que usar -j REJECT --reject-with icmp-net-prohibited.


4
Para sua informação, iptables -vLmostrará a regra completa, incluindo a interface. Portanto, eliminará a confusão como esta.
derobert

Obrigado @derobert - eu tinha esquecido essa exibição. Editará isso na resposta!
Goldilocks


@derobert +1 no -vinterruptor. Minhas regras de firewall não parecem tão mau como eu pensava :)
Matt Borja

1

Por uma questão de integridade, para evitar esse problema no futuro, use a -vopção de linha de comando detalhada ao exibir a tabela. Assim:

iptables -Lv

A saída agora deve incluir a interface que afeta nas colunas "dentro" e "fora":

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

O problema está nesta parte da cadeia INPUT:

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

especialmente na última linha. Tudo depois dessa linha é desnecessário, porque essa linha aceita tudo.

Você deve excluir esta linha das regras por este comando:

iptables -D INPUT 1

Você deve inspecionar suas regras de firewall, onde está a regra, que adiciona esta linha.


7
"ACEITAR tudo - em qualquer lugar e em qualquer lugar" vem dessa regra: "-A INPUT -i lo -j ACCEPT", portanto, trata-se apenas da interface, portanto não é o problema.
mzet

Eu apaguei tudo, mas ele ainda aparece com iptables -L
Chovy

ok, foi o que alguém mencionou. obrigado. Eu posso seguramente ignorá-lo.
chovy

1
@ chovy: suas regras estão bem. O problema está em restaurá-lo após a reinicialização. Tente seguir estas etapas: debian-administration.org/articles/445
mzet
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.