Regra de tráfego HTTP / HTTPS de saída do iptables mais restritiva

1

Estou tentando fazer a conexão HTTP / HTTPS TCP menos permissível de saída no iptables. Até agora eu tenho:

iptables -A OUTPUT -p tcp -m multiport --sports 80,443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

Estou assumindo que o novo é necessário para handshakes ssl iniciados pelo cliente, se meu objetivo era tornar o tráfego da web de saída o mais restritivo possível, há algo mais na regra que você recomendaria?

Muito obrigado

    
por Rice 26.12.2017 / 09:07

2 respostas

2

Sua regra iptables é suficiente, desde que você também tenha:

# Permit replies to existing (e.g. inbound) connections
iptables -A OUTPUT -j RELATED,ESTABLISHED -j ACCEPT

# Reject all other output traffic
iptables -A OUTPUT -j REJECT

REJECT é melhor que DROP na cadeia OUTPUT para acelerar falhas.

No entanto, não tenho certeza do que você está tentando impedir / proteger? É muito fácil rodar qualquer serviço na porta 80 ou 443. Por exemplo botnets, ou até mesmo servidores VPN ou SSH serão executados com prazer nessas portas e se alguém assumir o seu servidor você não o impedirá de conectando-se a seus serviços restringindo o tráfego de saída apenas para as portas 80 e 443.

Você pode ser mais bem servido com um proxy HTTP com uma lista de permissões de URLs permitidos ou pelo menos com uma lista de IPs na sua corrente iptables -A OUTPUT (pode ser feito facilmente em ipset ).

Restringir apenas as portas de saída provavelmente não fará o que você deseja.

    
por 26.12.2017 / 09:30
1

Você precisa reescrever suas regras da seguinte forma:

iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
iptables -P OUTPUT DROP

Aqui está um resumo do que essas regras significam:

  • A primeira regra permite todo o tráfego relacionado (respostas iniciadas
  • A segunda regra permite o tráfego HTTP / HTTPS.
  • A última regra é necessária para eliminar todo o tráfego restante restante.

Você precisa ter cuidado com duas coisas:

  1. Você precisa permitir outros tipos de tráfego sempre que necessário.
  2. Essas regras são adicionadas à OUTPUT chain, o que significa que elas serão aplicadas ao tráfego originado da mesma máquina. Se esta máquina estiver agindo como roteador / firewall, você precisará adicionar essas regras a FORWARD chain.
  3. Pode ser necessário considerar a adição de regras a outras redes, como INPUT . Isso depende da configuração e dos requisitos.
por 26.12.2017 / 09:33