Este é um bom ponto de partida para iptables no Linux?

Este é um bom ponto de partida para iptables no Linux?

Sou novo no iptables e estou tentando montar um firewall cujo objetivo é proteger um servidor web. As regras abaixo são as que juntei até agora e gostaria de saber se as regras fazem sentido - e se deixei de fora algo essencial?

Além da porta 80, também preciso ter as portas 3306 (mysql) e 22 (ssh) abertas para conexões externas.

Qualquer feedback é muito apreciado!

#!/bin/sh

# Clear all existing rules.
iptables -F

# ACCEPT connections for loopback network connection, 127.0.0.1.
iptables -A INPUT -i lo -j ACCEPT

# ALLOW established traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# DROP packets that are NEW but does not have the SYN but set.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# DROP fragmented packets, as there is no way to tell the source and destination ports of such a packet.
iptables -A INPUT -f -j DROP

# DROP packets with all tcp flags set (XMAS packets).
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# DROP packets with no tcp flags set (NULL packets).
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# ALLOW ssh traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport ssh -m limit --limit 1/s  -j ACCEPT

# ALLOW http traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport http -m limit --limit 5/s -j ACCEPT

# ALLOW mysql traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport mysql -m limit --limit 25/s -j ACCEPT

# DROP any other traffic.
iptables -A INPUT -j DROP

Responder1

Experimente o shorewall, que fornece um firewall razoável pronto para uso. Habilite o acesso da rede para os serviços que você deseja. Existem exemplos de conjuntos de regras para uma, duas e três interfaces. A documentação é boa e é mantida ativamente.

Espero que você queira limitar quais endereços podem acessar o MySQL, o que é feito facilmente. Você também pode proteger o SSH com batidas de porta onde a porta está fechada, a menos que você tenha testado a outra porta recentemente.

Responder2

  1. Você realmente deseja permitir o ICMP.
  2. 5/seg provavelmente não é suficiente para HTTP
  3. Não vejo sentido nas regras para pacotes XMAS/NULL
  4. Também não vejo uma razão para a regra especial de NOVOS pacotes

ETA: 5. Ter esse tipo de limite de taxa torna os ataques DoS realmente simples. Eu só preciso enviar 1 pacote SYN por segundo ao seu servidor para negar acesso ssh a VOCÊ.

Responder3

Eu pensaria em usar algo como NARC para fazer a configuração das regras do iptables:

http://www.knowplace.org/pages/howtos/firewalling_with_netfilter_iptables/netfilter_automatic_rule_configurator.php

Existem alguns padrões sensatos já implementados neste pacote nos quais você deve poder confiar.

Responder4

O filtro para comunicação de saída do servidor para a Internet também é importante. Especialmente o SMTP é recomendado para permitir apenas um servidor.

Eu gerencio firewalls Mikrotik, e costumo fazer por exemplo:

  • Solte pacotes recebidos da Internet com endereço de destino de faixa privada
  • Eliminar portscans (acima de 5 verificações de porta por segundo)
  • SSH para outra porta (obscuridade, eu sei, mas funciona!:-)) e limitar IPs de origem
  • Descartar transmissões para roteador
  • Eliminar TCP RST

E mais alguns. Eu recomendaria ler isto:http://wiki.mikrotik.com/wiki/Dmitry_on_firewallingA sintaxe do Mikrotik é direta e contém boas dicas para iniciantes.

informação relacionada