Estou usando o iptables no Ubuntu Server. É um servidor web em um VPS.
Gostaria de saber se devo limitar os pacotes de taxa. Em caso afirmativo, como devo limitar a taxa? E devo fazer isso globalmente ou por endereço IP?
Referência
: vi pessoas sugerindo isso:
# Limit packet traffic on a TCP or UDP port:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m limit --limit $lim/s --limit-burst $lb -j ACCEPT
# Limit established/related packet traffic:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit $lim/s --limit-burst $lb -j ACCEPT
Acima, um limite de taxa global não parece muito útil, pelo menos nos casos que posso imaginar. Existe algum caso em que eu deva limitar a taxa globalmente?
Eu acredito que um limite de taxa por IP geralmente é melhor:
# Add the IP to the list:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --set --name RATELIMITED
# Drop if exceeded limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --update --seconds $sec --hitcount $hc --rttl --name RATELIMITED -j DROP
# Accept if inside limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -j ACCEPT
Pergunta adicional: IPs remotos podem ser falsificados. Como limitá-los corretamente?
Foi adicionada outra pergunta para isso:
/server/340258/how-to-rate-limit-spoofed-ips-with-iptables
O objetivo
que estou tentando reduzir é o risco de alguns ataques D / DoS e abuso geral.
Relacionado
Como posso classificar conexões SSH limitadas com iptables?
PS : Acabei de abrir uma pergunta relacionada apenas para o ICMP e inclui limitação de taxa para este protocolo: iptables | Tipos de ICMP: quais são (potencialmente) prejudiciais?
O problema com -m limit é a limitação de todos os pacotes TCP, independentemente dos endereços IP de origem. Portanto, se você tem uma limitação baixa para pacotes syn como
somente um cliente com a linha de comando hping pode derrubar o servidor enviando tantos pacotes tcp com sinalizador SYN, porque a regra de limite corresponderá e eliminará muitos pacotes, independentemente dos endereços IP de origem. O limite não faz diferença entre tráfego bom e tráfego ruim. Isso reduzirá também o bom tráfego de entrada.
hping pode ser algo como:
É melhor usar o hashlimit para limitar as conexões TCP recebidas por endereço IP . A regra a seguir corresponderá apenas se 30 pacotes por segundo forem recebidos, reduzindo o número de pacotes autorizados por IP para 15 pacotes por segundo.
De fato, estou convencido de que muitos servidores que estão desativados hoje não estão esgotados durante um ataque, mas devido ao módulo de limite diminuir todo o tráfego de entrada.
fonte
Normalmente, limite as regras de limitação de taxa aos servidores que espero ter:
Por exemplo, a página de login de um painel de controle de hospedagem, POP3, IMAP, SSH etc. Geralmente, deixo os serviços HTTP abertos e bloqueio apenas se houver algum problema.
Você não deseja descartar um bom tráfego na web. Um link no slashdot pode enviar muito tráfego e, com as regras globais, você pode não perceber um problema.
Com relação aos IPs falsificados, eles não podem ser bloqueados usando esse método e normalmente não são uma preocupação, pois essas regras se concentram principalmente na limitação de conexões TCP estabelecidas. Com um IP falso, a conexão TCP nunca pode ser estabelecida.
fonte