第7篇:Linux网络安全 预防DDoS攻击

古语有云:“防人之心不可无,害人之心不可有”,他们可能愿意花几杯咖啡的钱令你的服务器瘫痪。因此,不用说您的企业站点需要防御DDoS攻击,发起DDos攻击的人不外乎几种情形。

  • 攻击者对您怀有恶意,或者对贵公司的商业数据感兴趣。
  • 攻击者受雇于报复者,通常属于组织性网络犯罪。
  • 攻击者过于无聊通过网络扫描寻找肉鸡,以此证明自己技术高超。

但是,是否有针对DDoS的可靠解决方案?不,没有针对DDoS的完美解决方案,但是我们可以通过保护服务器和网络在很大程度上防止DDoS。

什么是DDoS?

在继续进行CentOS DDoS保护的步骤之前,让我们先了解一下DDoS。DDoS(分布式拒绝服务)是DoS(拒绝服务)的高级版本,换句话说,DDoS会通过向目标服务器发送大量流量,从而拒绝服务器上运行的重要服务,从而使服务器无法处理它们。攻击者利用服务器中的安全漏洞(易受攻击的应用程序,过时的软件等)来静默安装各种后门工具。因此,这会导致服务器停机,公司财务损失等。

防火墙兼容性问题

CentOS7目前还受到官方的支持,CentOS下的防火墙实体工具netfilter iptables,在CentOS 8中的firewalld后端程序已由nftables取代,在CentOS7完成CentOS8交棒的时期,此文对你也许仍然有价值。

  • 在CentOS8中你仍然可以通过direct规则创建你的防御规则,但非常不行的是,早期的nftable对iptable规则的语法的兼容性还是存在很大问题的,如下图所示

  • 当你的Linux防火墙安全方案部署到生产环境不是一味追求新技术潮流,最重要是稳定和循序渐进地规定到新的防火墙技术

基于上文这些原因,如果你正当部署CentOS 8的防火墙,我强烈建议你暂时将firewalld的后端从nftables切换回iptables,操作方法如下
以root管理员权限修改/etc/firewalld/firewalld.conf配置文件,如下图第58行的FirewallBackend为iptables

本文仍然以CentOS7为基础它是Linux系统上的默认防火墙管理实用程序-使用Linux系统的每个人都应该熟悉或至少听说过它。

iptables可用于过滤某些数据包,阻止源或目标端口和IP地址,通过NAT转发数据包以及许多其他功能。

梳理你的iptables规则

要了解为什么当前的iptables规则可以防止DDoS攻击,我们首先必须深入研究iptables的工作原理。iptables是用于建立和控制IP数据包过滤器规则表的命令行工具。 有不同用途的表格。

  • filter表:如果不使用-t(–table)选项,则过滤器表是规则使用的默认表,也是最常用的表。
  • nat:此表用于网络地址转换(NAT)。如果数据包创建新连接,则会检查NAT表中的规则。
  • mangle:mangle表用于修改或标记数据包及其标头信息。
  • raw:此表的主要目的是从使用NOTRACK目标的连接跟踪中排除某些数据包。

如您所见,一个普通的Linux系统上有四个不同的表,它们没有加载非标准内核模块。 这些表中的每一个都支持一组不同的iptables链。

根据您要拦截或修改的数据包类型,您可以选择某个iptables表和所选表支持的链。当然,我们仍然缺少对iptables目标(ACCEPT、DROP、REJECT等)的解释,但我们假设如果您正在阅读本文,您已经知道如何处理iptables了。

我们将解释为什么您的iptables规则会阻止DDoS,而不会教您如何使用iptables。如果要使用iptables阻止DDoS攻击,则iptables规则的性能非常重要。大多数基于TCP的DDoS攻击类型使用较高的数据包速率,这意味着每秒的数据包数量之多就是导致服务器宕机的原因。因此,您要确保每秒可以处理和阻止尽可能多的数据包。

您会发现,有关如何使用iptables阻止DDoS攻击的大部分(如果不是全部)指南都使用filter表和规则DDoS规则的INPUT链。这种方法的问题是,INPUT链只在PREROUTING和FORWARD链之后处理,因此只有当数据包与这两个链中的任何一个都不匹配时才适用。这导致消耗资源的分组的过滤中的延迟。总而言之,为了使我们的规则尽可能有效,我们需要将我们的防御DDoS规则尽可能移动。

第一个可以应用于数据包的链是PREROUTING链,所以理想情况下,我们应该已经过滤了这个链中的坏包。

然而,filter表不支持PREROUTING链。要解决此问题,我们可以简单地使用mangle表而不是filter表来执行防DDoS的direct规则。它支持filter表支持的大部分(如果不是全部)规则,同时还支持所有链(Chain)。那么你想知道为什么你的iptables DDoS保护规则很烂吗?这是因为您使用filter表和INPUT链来阻止恶意数据包!

缓解DDoS的最佳Linux内核设置,另一个常见的错误是,人们没有使用优化的内核设置来更好地减轻DDoS攻击的影响。请注意,本指南重点介绍CentOS 7作为选择的操作系统。CentOS 7包括iptables的最新版本并支持新的SYNPROXY目标。我们不会介绍您需要调整的每个内核设置,以更好地缓解iptables的DDoS。相反,我们提供了将要使用的一组CentOS 7内核设置。只需将以下内容放在您的/etc/sysctl.conf文件中,然后使用sysctl-p来应用设置

kernel.printk = 4 4 1 7 
kernel.panic = 10 
kernel.sysrq = 0 
kernel.shmmax = 4294967296 
kernel.shmall = 4194304 
kernel.core_uses_pid = 1 
kernel.msgmnb = 65536 
kernel.msgmax = 65536 
vm.swappiness = 20 
vm.dirty_ratio = 80 
vm.dirty_background_ratio = 5 
fs.file-max = 2097152 
net.core.netdev_max_backlog = 262144 
net.core.rmem_default = 31457280 
net.core.rmem_max = 67108864 
net.core.wmem_default = 31457280 
net.core.wmem_max = 67108864 
net.core.somaxconn = 65535 
net.core.optmem_max = 25165824 
net.ipv4.neigh.default.gc_thresh1 = 4096 
net.ipv4.neigh.default.gc_thresh2 = 8192 
net.ipv4.neigh.default.gc_thresh3 = 16384 
net.ipv4.neigh.default.gc_interval = 5 
net.ipv4.neigh.default.gc_stale_time = 120 
net.netfilter.nf_conntrack_max = 10000000 
net.netfilter.nf_conntrack_tcp_loose = 0 
net.netfilter.nf_conntrack_tcp_timeout_established = 1800 
net.netfilter.nf_conntrack_tcp_timeout_close = 10 
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 10 
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 20 
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 20 
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 20 
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 20 
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 10 
net.ipv4.tcp_slow_start_after_idle = 0 
net.ipv4.ip_local_port_range = 1024 65000 
net.ipv4.ip_no_pmtu_disc = 1 
net.ipv4.route.flush = 1 
net.ipv4.route.max_size = 8048576 
net.ipv4.icmp_echo_ignore_broadcasts = 1 
net.ipv4.icmp_ignore_bogus_error_responses = 1 
net.ipv4.tcp_congestion_control = htcp 
net.ipv4.tcp_mem = 65536 131072 262144 
net.ipv4.udp_mem = 65536 131072 262144 
net.ipv4.tcp_rmem = 4096 87380 33554432 
net.ipv4.udp_rmem_min = 16384 
net.ipv4.tcp_wmem = 4096 87380 33554432 
net.ipv4.udp_wmem_min = 16384 
net.ipv4.tcp_max_tw_buckets = 1440000 
net.ipv4.tcp_tw_recycle = 0 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_max_orphans = 400000 
net.ipv4.tcp_window_scaling = 1 
net.ipv4.tcp_rfc1337 = 1 
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_synack_retries = 1 
net.ipv4.tcp_syn_retries = 2 
net.ipv4.tcp_max_syn_backlog = 16384 
net.ipv4.tcp_timestamps = 1 
net.ipv4.tcp_sack = 1 
net.ipv4.tcp_fack = 1 
net.ipv4.tcp_ecn = 2 
net.ipv4.tcp_fin_timeout = 10 
net.ipv4.tcp_keepalive_time = 600 
net.ipv4.tcp_keepalive_intvl = 60 
net.ipv4.tcp_keepalive_probes = 10 
net.ipv4.tcp_no_metrics_save = 1 
net.ipv4.ip_forward = 0 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 
net.ipv4.conf.all.accept_source_route = 0 
net.ipv4.conf.all.rp_filter = 1

这些sysctl.conf设置有助于在DDoS下最大化服务器的性能以及本指南中将要提供的iptables规则的有效性

考虑到您现在已经知道需要使用mangle表和PREROUTING链以及优化的内核设置来减轻DDoS攻击的影响,我们现在继续介绍几个示例规则来减轻大多数TCP DDoS攻击。这个内容将在后文再说。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352