我的 Squid(Ubuntu 13.04 上的 3.1.20)遭受了 DDoS 攻击(大约有 1000 个不同的 IP)。
我在其上使用基本身份验证,所有这些请求都得到了 DENIED 响应,但它们仍然增加了服务器的负载。
我如何防御 Squid 上的 DDoS 攻击?
答案1
将 fail2ban 与 squid 过滤器一起使用怎么样?
有一个配置示例这里:
# Fail2Ban configuration file for squid
#
# Author: Jackie Craig Sparks
#
# $Revision: 728 $
#
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
[Definition]
_daemon = squid
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = \d{0,10}.*\d{0,3}\ .* \ \d <HOST> TCP_DENIED\/407 .*$
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
答案2
如果您能够将 Squid 配置为仅绑定到本地主机并从 SSH 隧道(或通过 VPN,如果可以的话)访问它,那么您将把攻击面更改为对性能影响较小的东西。我会使用 iptables 对通过 SSH 访问它的传入 SSH 连接进行速率限制(实际上,这正是我对自己的 Squid 缓存所做的)。