因为没有网关,我的服务器被 DDoS 了(一)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 大家好,我是鸭血粉丝,想起来之前生产发生的事故,阿粉我的内心到现在都还很忐忑不安,今天我们来学习一个 Kong 以及跟你们聊聊做好网关限流控制的重要性。

大家好,我是鸭血粉丝,想起来之前生产发生的事故,阿粉我的内心到现在都还很忐忑不安,今天我们来学习一个 Kong 以及跟你们聊聊做好网关限流控制的重要性。

背景

事情是这样的,阿粉记得那是一个阳光明媚的早上,窗外一片祥和,整个世界充满了和谐。谁知九点半的时候突然微信报警消息如狂风暴雨般袭来,让人猝不及防,原来是线上的一个接口流量突然暴增,而且居高不下,导致部分业务瘫痪,无法使用。

按照正常的用户量,平常的上班时间不会出现如此大的流量,而且还是在这么短的时间里,对比了下往常的数据,发现访问量飙升几十倍,为了不影响正常的用户,紧急联系运维扩容服务器,稳定业务。然后紧急分析问题,一开始以为是客户端的 APP 升级出现了问题,导致死循环了,但是问了下终端负责人,并没有发布新的 APK。然后事情都这里想必大家都猜到原因了,没错,那就是我们被 DDoS 了。

关于什么是 DDoS,我想大家都是有经验的开发人员,应该都知道,不知道的朋友可以在公众号后台回复【安全】,获取一份 Web 安全相关电子书。

那么遇到这种情况,我们除了扩容服务器还有哪些解决方案呢?

知乎上有一篇问答,里面提到有下面几种方式

  1. 高防服务器
  2. 黑名单
  3. DDoS 清洗
  4. CDN 加速

这几种方案都有相应的特性,不过阿粉我在这里想给大家介绍另一种方案,简单,快速,但是对用户不友好,那就是采用网关限流。当然不同的业务有不同的特性,需要选择适合自己的方式,如果是金融证券企业的话还是请第三方专业的公司去做防护。

API 网关 Kong

介绍

Next-Generation API Platform for Multi-Cloud and Hybrid Organizations. Connect all your microservices and APIs with the industry’s most performant, scalable and flexible API platform.

在 Kong 的官网赫然的写了上面的一句话,翻译起来有点别扭,我就不直译了,大家自己看英文更能理解。简单来说 Kong 就是下一代的 API 网关,用起来就对了。

96.jpg

Kong 是在客户端和服务端之间的 API 网关,Kong 作为网关可以统一转发请求,并且因为 Kong 是基于 Nginx 的,所以本身支持水平扩展;另外 Kong 可以对请求做统一的限流,认证和授权管理,而且这些功能都是基于插件式,即插即用,根据自身业务的特性,可以选择合适的插件来控制相关业务。如果已有的插件不适合,还可以自己开发相应的插件,不过插件的开发是基于 lua 的。

安装步骤

安装数据库

因为 Kong 的底层存储是采用 PostgreSQL 9.5+ 或者 Cassandra 3.x.x 的,所以我们在安装 Kong 之前需要先安装数据库,阿粉这里采用的是 PostgreSQL 9.5,并且服务器是 CentOS7 的版本。

  1. 使用 yum 安装依次执行如下命令
~$ yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
~$ yum install postgresql95
~$ yum install postgresql95-server

在提示安装y/n 的时候,输入y 即可。

  1. 安装过程很快,没什么难度,就不赘述,主要是安装过后的配置大家需要注意一下,安装完毕过后,我们初始化一下数据库,输入/usr/pgsql-9.5/bin/postgresql95-setup initdb
  2. 初始化完毕过后,我们设置一下服务,然后启动即可,输入如下命令。
~$ systemctl enable postgresql-9.5
~$ systemctl start postgresql-9.5
  1. 到这一步我们 PostgreSQL 的安装已经完整了,但是为了后面Kong 能正常的运行起来,我们需要做一些配置,这里的配置比较重要,网上各种文章说的也都不清不楚,阿粉在多次探索之后终于搞清了其中的缘由,来全场跟着我整齐划一,先说下我们要做的操作步骤,然后我们再依次完成。
    1) 给超级管理员设置密码:安装完 PostgreSQL 后,会自动帮我们创建一个 Linux 的用户 postgres,而且这个用户默认是 PostgreSQL  的超级管理员。
    2) 创建 Kong 的数据存储环境,包括用户,密码和数据库:因为我们后面需要启动 Kong ,需要让 Kong 能访问到数据库,所以需要配置数据库,用户和密码。
    3) 修改PostgreSQL配置文件

我们首先使用命令 su - postgres , 然后输入 psql,进入 PostgreSQL 的命令行模式,如下图

97.jpg

我们首先使用命令 su - postgres , 然后输入 psql,进入 PostgreSQL 的命令行模式,如下图

98.jpg

进入命令行模式过后,我们先后完成上面 1 和 2 的步骤,先修改密码,输入\password postgres 如下图,连续输入两次你需要设定的密码,例如 postgres123 一定要记住,后面需要用到这个密码登录的。

99.jpg

修改完密码过后,我们进行第二步操作,创建用户,密码和数据库,输入语句 CREATE USER kong WITH PASSWORD 'kong123';  我这里因为之前已经创建过这个用户了,所以提示已经存在,正常是显示 CREATE ROLE

100.jpg

然后再输入 CREATE DATABASE kong OWNER kong; 创建数据库,并且把这个数据库授权给 kong 用户,输入 GRANT ALL PRIVILEGES ON DATABASE kong to kong; 同样的,我这边已经创建 kong 数据库了,所以显示错误,正常是可以创建成功的。

101.jpg

到这里,我们在检查一下是否都创建成功,通过输入命令 \du\l 来看下

102.jpg

  1. 能看到用户和数据库都有的话,那就说明创建成功了,如果没有说明没有设置成功,按照上面的操作再仔细来一遍。
  2. 现在我们再来修改配置文件,我们先退出命令模式,使用命令 \q 然后再输入 exit 即可推到 Linux 的正常模式。我们输入命令 vim /var/lib/pgsql/9.5/data/pg_hba.conf 来编辑 pg_hba.conf 文件,将最后的几行设置成如图所示,也就是将默认的 peer 修改成 md5

103.jpg

存退出,使用 systemctl restart postgresql-9.5 重启服务,这时我们在使用postgres 用户去登录一下看看

104.jpg

这里需要我们输入密码了,这里的密码就是我们上面步骤 1 设定了 postgres123,输入即可,如果提示psql: FATAL: password authentication failed for user "postgres" 说明密码不对,如果正常进去,那我们再退出来用设置的 kong 用户再去登录看看。输入 psql -U kong -W 再输入之前 kong 的密码,如何能正常的如下图进去说明整个配置都正确。

105.jpg

相关文章
|
2月前
|
监控 安全 数据挖掘
网络游戏服务器如何有效防护DDoS与CC攻击
随着网络游戏行业的蓬勃发展,其背后的服务器架构日益复杂,同时也面临着前所未有的网络安全威胁。其中,分布式拒绝服务(DDoS)和CC(Challenge Collapsar,一种针对网页的攻击方式)攻击尤为突出,它们通过大量伪造请求或恶意流量,使服务器资源耗尽,导致服务中断或响应缓慢。因此,保障网络游戏服务器的安全,有效防护DDoS与CC攻击,已成为游戏行业亟待解决的问题。
|
2月前
|
存储 安全 数据可视化
如何规避DDoS攻击带来的风险?服务器DDoS防御软件科普
如何规避DDoS攻击带来的风险?服务器DDoS防御软件科普
56 0
|
3月前
|
监控 安全 网络安全
inishConnect(..) failed: Connection refused,服务本地正常服务器网关报400,nacos服务实例不能下线
总之,这种问题需要通过多方面的检查和校验来定位和解决,并可能需要结合实际环境的具体情况来进行相应的调整。在处理分布式系统中这类问题时,耐心和细致的调试是必不可少的。
72 13
|
4月前
|
负载均衡 监控 网络协议
高防服务器如何处理DDoS攻击?关于高防服务器的一些技术细节
DDoS攻击是网络威胁,通过大量请求淹没服务器。防御措施包括:备份网站以备切换,拦截异常HTTP请求,增加带宽抵御流量攻击,使用CDN分发内容并隐藏源IP。防御策略涉及流量清洗、黑洞路由、负载均衡等。硬件如防火墙、IDS/IPS也重要,云服务提供自动防护和弹性扩容。
|
5月前
|
云安全 监控 安全
云服务器遇到DDOS的防护方案
DDoS攻击是云服务器面临的重要安全威胁之一。为了保障服务器的稳定性和安全性,我们需要采取多种措施进行防范
|
23天前
|
云安全 缓存 网络协议
如何防护DDoS攻击,筑牢网络安全防线
随着信息技术的飞速发展,网络已成为现代社会不可或缺的一部分,极大地便利了个人社交和商业活动。然而,网络空间在创造无限机遇的同时,也潜藏着诸多威胁,其中分布式拒绝服务攻击(DDoS,Distributed Denial of Service)以其高破坏力和难以防范的特点,成为网络安全领域的一大挑战。本文将从DDoS攻击的原理出发,详细探讨如何有效防护DDoS攻击,以筑牢网络安全防线。
|
1月前
|
负载均衡 监控 安全
DDoS 攻击:如何运作及防范之道
【8月更文挑战第31天】
85 1
|
2月前
|
监控 安全 网络安全
保护网络免受 DDoS 攻击的最佳实践
【8月更文挑战第24天】
74 1
|
2月前
|
云安全 负载均衡 安全
CC攻击和DDoS攻击
【8月更文挑战第17天】
63 4
|
2月前
|
安全 物联网 网络安全
300万电动牙刷被当肉鸡拿去DDOS攻击!
一则新闻称300万支电动牙刷被黑客植入恶意软件发动DDoS攻击,后证实为假新闻。此事件源于瑞士一媒体报道,实为采访中提出的假设场景。尽管如此,物联网设备安全问题日益严峻,如智能家居被黑客控制,可能成为攻击工具。电动牙刷虽不易直接用于此类攻击,但提醒我们需加强对所有联网设备的安全防护,包括采用注重安全的供应商、实施零信任安全模型、网络分段等措施,确保设备安全更新并强化物理安全。
下一篇
无影云桌面