Depois de o problema surgir mais algumas vezes nas semanas seguintes ao "ataque" inicial, tive que ir mais fundo, pois achava que poderia estar usando o DDoS como desculpa.
Embora os registros de acesso e os instantâneos netstat (obtenham os IPs superiores ordenados pelo número de conexões anexadas a um arquivo de log) mostrassem definitivamente uma quantidade muito distribuída de endereços IP, consegui identificar uma página específica nos logs de acesso que Parecia suspeito.
Aparentemente, a equipe de desenvolvimento criou uma página de "proxy" para exibir solicitações de API de terceiros por meio do AJAX. O problema parece ser que essa página de proxy estava usando slots de conexão valiosos no HAProxy e, quando o serviço de terceiros tinha problemas na entrega de solicitações de API, demorava muito tempo para expirar. Eventualmente, as solicitações de proxy demoradas levaram nosso back-end HAProxy ao limite máximo (para que todas as novas solicitações fossem enfileiradas). A partir desse ponto, as contagens de conexões começaram a aumentar em nossa rede, e nosso site voltado para o público iniciou o tempo limite de solicitações normais não AJAX.
A solução, no nosso caso, foi criar um backend adicional no HAProxy especificamente para essas chamadas AJAX. Na próxima vez que o serviço terceirizado tiver problemas, ele só atingirá o tempo limite das chamadas da página proxy do AJAX, e o restante do site continuará a se movimentar.
Obrigado pelas respostas. Acho que a maioria de vocês estava no local para mitigar um ataque DDoS "real", mas acho que é útil para outros leitores saberem que vale a pena olhar internamente para ter certeza de que você não está atirando no próprio pé.