iptables, o que é verdadeiramente aberto?

2

Temos um dispositivo RSA. Revisei as regras de firewall neste appliance para determinar quais portas estão ativadas. Para mim, parece estar bem aberto; mas o vendedor afirma que estou errado sobre isso, que não estou lendo corretamente. Eu não posso postar todo o iptables por razões de segurança, mas aqui está o que o vendedor está dizendo:

Trust me it's locked down. I cannot educate any customer on iptables, but you can reference iptables documentation online to better understand how each rule is setup e.g. http://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/

Example below, this is the DROP policy not the allow policy, take note of that vs reading ACCEPT all anywhere and thinking it's open.

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

Mais tarde eles disseram

  1. are all ports open?

No. Iptables is not like a pam configuration file where the first rule satisfies a procedure. In iptables, ALL rules must be satisfied. If there were no ACCEPT all anywhere , nothing would get through the firewall.

Para mim, não faz sentido. O exemplo começa com accept any any any e a política é solta. Pelo que eu li on-line, queda de política é apenas configurá-lo para negar por padrão, em vez de aceitar por padrão. Não entendo como configurar o exemplo para queda ou aceitação da política alteraria o resultado.

O que estou perdendo?

    
por gunslingor 07.11.2014 / 14:11

1 resposta

3

Iptables is not like a pam configuration file where the first rule satisfies a procedure. In iptables, ALL rules must be satisfied.

Isso está completamente errado. As regras são percorridas na ordem e, quando uma regra que corresponde a um dos destinos internos ( ACCEPT , DROP ou QUEUE ), o processamento do pacote termina aí: não há mais regras sendo percorridas. A afirmação posterior de que "Se não houvesse ACEITAR tudo em qualquer lugar, nada passaria pelo firewall" é verdadeira (com uma política DROP), mas um pacote não precisa corresponder a todas as regras ACCEPT para ser verdade, ele só precisa alcançar um.

É possível que um pacote seja processado por várias regras de correspondência, porque pode haver regras que saltem para cadeias definidas pelo usuário (caso em que as regras da cadeia são tentadas em ordem), ou que não saltem para tudo e está presente apenas por algum outro motivo, como o registro. Mas uma vez que ACCEPT ou DROP seja alcançado, é isso, o pacote é enviado ou descartado; se QUEUE for atingido, o pacote é passado para a userland para processamento adicional; e de qualquer forma não mais regras são processadas para este pacote. Finalmente, se (e somente se) o processamento chegar ao final de uma cadeia interna, a política da cadeia será aplicada.

Por exemplo, suponha que iptables -L mostre

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

Como a política é DROP , somente os pacotes explicitamente ACEITOS por alguma regra serão aprovados. A regra parece que aceita tudo, mas isso não é necessariamente o caso: pode haver condições que iptables -L omite. Execute iptables -vL para imprimir todas as condições. Uma condição comum omitida é a interface; ter uma regra que aceite todo o tráfego de loopback é bastante comum. Você veria algo como

# iptables -L INPUT 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
# iptables -vL INPUT
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            

Se a regra aceitasse todo o tráfego, você veria any na coluna in de iptables -vL INPUT .

    
por 09.11.2014 / 02:10