Ответ
Для защиты от DDoS в Go можно использовать:
- Rate Limiting - ограничение запросов с одного IP:
import "golang.org/x/time/rate"
limiter := rate.NewLimiter(100, 200) // 100 запросов/сек, burst до 200
if !limiter.Allow() {
http.Error(w, "Too many requests", 429)
return
}
- Таймауты - защита от медленных соединений:
srv := &http.Server{
ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second,
IdleTimeout: 120 * time.Second,
}
- Connection Limiting - ограничение одновременных соединений:
sem := make(chan struct{}, 100) // макс 100 соединений
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
sem <- struct{}{}
defer func() { <-sem }()
// обработка запроса
})
Дополнительно стоит настроить:
- Firewall (iptables/nftables)
- Reverse Proxy (nginx/haproxy)
- Cloudflare или аналоги
Для сложных атак лучше использовать специализированные решения.