[TOC]

云服务器部署springboot项目

标题: 云服务器实战模拟网站被DDOS攻击?到底应该如何防御?
课程内容:
1.云服务器部署项目 被人攻击了怎么办?
2.DNS是如何解析域名的?
3.一级、二级、三级域名区别
4.什么是DNS轮询策略?如何配置
5.域名访问一个网站具体细节流程
6.什么是DDOS/CC攻击
7.什么是XSS脚本攻击?模拟脚本攻击上传管理员cookie信息。
8.防御DDOS攻击细节流程
9.访问一个网站非常卡?如何优化?
20点25分准时开始

相关概念
物理机器 ——-项目 1万
专线(公网的ip—-固定ip) 100兆 3万
家用带宽与专线区别?
家用带宽 电信 2000/年 1000兆 上行/下行 不对等 下载1000兆 上行30兆
没有固定ip 动态ip
专线 电信 50-100万 1000兆 上行/下行对等 下载1000兆 上行1000兆
公网的ip—-固定ip——-
上行:例如:上传文件、直播
下行:下载速度

Saas/Paas/IaaS 相关概念
IaaS:基础设施服务,Infrastructure-as-a-service 云服务器厂商
PaaS:平台服务,Platform-as-a-service 使用编程语言开发 项目
SaaS:软件服务,Software-as-a-service 提供软件被其他人使用

云服务器部署springboot项目 - 图1

Saas概念
1.软件即服务:SaaS,是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务。 SaaS 应用软件有免费、付费和增值三种模式。付费通常为“全包”费用,囊括了通常的应用软件许可证费、软件维护费以及技术支持费,将其统一为每个用户的月度租用费,SaaS不仅适用于中小型企业,所有规模企业都可以从SaaS中获利。
以上摘自于百度百科:https://baike.baidu.com/item/SaaS
2.Saas简单通俗易懂理解为就是:
2.1:比如每特教育开发了一套在线教育平台系统,使用Java语言编写、在传统的模式的情况下,将整套在线教育的软件产品部署到企业内多个终端交付之后,企业还需要专门请专门的IT人员来维护;
2.2:就像买房,你需要装修、买家具,之后东西坏了还需要自己来维护、而Saas模式,为企业搭建所有网络基础设施软件、硬件、运营平台,进行前期的实施和后期的维护、企业无需购买硬件 也不需要自己建机房、招聘IT人员,就像现在市面上各种精装修房一样 对外出租大家可以直接拎包入住,而且东西坏了有专门的人来维护 这时候更像是租赁公司提供的服务,简单理解saas模式的核心: 将软件的所有权 变成了使用权。
2.3: 比如腾讯课堂提供Saas服务,很多机构入职腾讯课堂使用腾讯课堂在线教育系统。
3.SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。普通用户接触到的互联网服务,几乎都是 SaaS。

Paas概念
1.Paas平台 Pass平台即(Platform-as-a-Service:平台即服务),把应用服务的运行和开发环境作为一种服务提供的商业模式。
2.Paas可以简单理解为,构建在IaaS之上提供软件应用开发组件、运行环境存储接口和中间件,
通常Paas和IaaS是需要懂一定的技术背景。
3.提供给消费者的服务是把客户采用提供的开发语言和工具(例如Java,python, .Net等)开发的或收购的应用程序部署到供应商的云计算基础设施上去。
4.客户不需要管理或控制底层的云基础设施,包括网络、服务器、操作系统、存储等,但客户能控制部署的应用程序,也可能控制运行应用程序的托管环境配置;
IaaS概念
1.IaaS(Infrastructure as a Service),即基础设施即服务。指把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式;
2.在这种服务模型中,普通用户不用自己构建一个数据中心等硬件设施,而是通过租用的方式,利用 Internet从IaaS服务提供商获得计算机基础设施服务,包括服务器、存储和网络等服务;
3.提供给消费者的服务是对所有计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。
消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用,也有可能获得有限制的网络组件(例如路由器、,防火墙,、负载均衡器等)的控制。
4..IaaS 云服务: 阿里云、腾讯云、百度云、华为云等。
常见云服务器有哪些
国内:
阿里云: https://www.aliyun.com/activity/daily/specialoffer
百度云:https://cloud.baidu.com
华为云:https://activity.huaweicloud.com
腾讯云:https://cloud.tencent.com

如果是站在学习成本角度 不追求稳定性!
百度云 或者 腾讯云 价格非常便宜 一年 70元钱 学生的话 还可以免费申请
追求稳定性选择 价钱比较贵 阿里云或者华为云
国外:
亚马逊(aws):https://aws.amazon.com/

云服务器基本使用

腾讯云轻量级云服务器:
https://console.cloud.tencent.com/lighthouse/instance/index
云服务器IP:
外网IP:42.192.229.245
内网IP:10.0.4.17
远程登录云服务器
1.使用linux客户端工具 远程连接到云服务器端接口

云服务器安装jdk

如果我们的 容器化运行——不需要额外在去安装jdk环境

以CentOS为例,切换到root账户,检查是否已安装过jdk。
yum list —installed|grep jdk 或者
或者java -version看下能不能执行。
如果已安装过但jdk版本不符合要求,先yum remove卸载。

从软件源下载安装
1.列出可用的jdk
2yum install java-11-openjdk.x86_64

y:yum -y
不带-y的话,如果执行过程中要选择,会提示你,需要你手动选择y|n,比如“确定安装码?y|N”
带-y的话,如果执行过程中要选择,系统会自动选择y。y即yes。
安装目录为usr/lib/jvm,会自动配置环境变量。
3.执行java -version,显示jdk版本就说明安装成功。

安装目录为usr/lib/jvm,会自动配置环境变量。
云服务器部署springboot项目
部署 springboot项目
1.java -jar springboot.jar ——-运行 springboot项目——需要先安装jdk环境的
2.制作镜像 以容器化的形式运行 不需要额外的jdk环境
1.编写一个springboot项目 打包成 .jar包

2.jar包打好之后 存放在:D:\path\data\mayikt-springboot-nginx\target

3.使用FileZilla将该mayikt-springboot-nginx-1.0-SNAPSHOT.jar包上传服务器端即可。
进入:linux 目录/usr/local 创建 mkdir mayikt文件夹
/usr/local/mayikt 该目录存放我们的 jar包

4.java -jar mayikt-springboot-nginx-1.0-SNAPSHOT.jar 运行该jar包即可
前台启动: java -jar mayikt-springboot-nginx-1.0-SNAPSHOT.jar
后台启动:nohup java -jar mayikt-springboot-nginx-1.0-SNAPSHOT.jar > mayikt.log &

ps aux | grep ‘java’
kill -9
5.直接在虚拟机服务器上访问测试

云服务器防火墙配置

1.通过外网IP访问 无法访问

2.需要在对应的云服务器后台开放端口号码
注意:直接关闭防火墙是无效的!
需要单独 在云服务器后台开放端口
https://console.cloud.tencent.com/lighthouse/instance/detail?rid=4&id=lhins-j4hs26dc&tab=firewall

3.添加规则 →点击确定

3.在访问:http://42.192.229.245:8081/

云服务器安装宝塔
宝塔安装
纯原生方式安装 docker 30分钟
宝塔 点击下一步即可
如果我们使用纯原生方式安装 nginx、docker 需要很多依赖配置,安装的过程中容易发生版本安装冲突问题,我们可以利用宝塔可以实现傻瓜式安装软件 nginx、redis 、docker,点击下一步 即可。
1.宝塔官网 https://www.bt.cn/
2.宝塔安装文档流程 https://www.bt.cn/download/linux.html
Centos安装脚本 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
Ubuntu/Deepin安装脚本 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
Debian安装脚本 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
Fedora安装脚本 wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
注意:必须为没装过其它环境如Apache/Nginx/php/MySQL的新系统,推荐使用centos 7.X的系统安装宝塔面板
3.yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

4.安装成功之后
Complete!
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
success
==================================================================
Congratulations! Installed successfully!
==================================================================
==================================================================

若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口

5.需要在腾讯云后台开放:8888 端口

6.宝塔监控 cpu使用率、内存使用率 负载状态。

注意事项
宝塔会自动开启Linux操作系统的防火墙(firewalld.service),如果需要访问某个端口,既需要放通服务器安全组,还需要同步在宝塔面板中设置系统防火墙放通对应端口。
点击安全→系统防火墙→ 放开端口即可

利用宝塔安装nginx
nginx的安装
1.软件商店→应用搜索“nginx”→点击安装即可

2.点击首页设置显示

3.首页中可以显示 nginx

4.nginx的安装 ps aux | grep ‘nginx’

nginx安装目录:
/www/server/nginx/conf/nginx.conf
启动/停止nginx

nginx的配置

反向代理
同时应该关闭8081端口外网访问权限

利用宝塔安装docker
1.软件商店 →搜索docker 即可(耐心等待5分钟左右即可)

2.开始安装docker

3.安装docker 成功之后

利用docker部署springboot项目
第八期docker教程

1.编写Dockerfile文件
2.将Dockerfile 和 mayikt-springboot-nginx-1.0-SNAPSHOT.jar 上传到同一个
目录中

3.执行下面命令, 最后面有个”.”点!
进入到:/usr/local/mayikt 执行下面命令
docker build -t mayikt-springboot .

4.docker images

5.docker run -d -p 8081:8081 mayikt-springboot
-d参数是让容器后台运行
-p 是做端口映射,此时将服务器中的8080端口映射到容器中的8085(项目中端口配置的是8085)端口
6.http://42.192.229.245/

利用宝塔安装mysql

root
ae3004cccac8b8c6

mysql -u root -p
use mysql;
GRANT ALL PRIVILEGES ON . TO’root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION
DDOS攻击

分布式拒绝服务(Distributed Denial of Service,简称DDoS)将多台计算机联合起来作为攻击平台,通过远程连接利用恶意程序,对一个或多个目标发起DDoS攻击,消耗目标服务器性能或网络带宽,从而造成服务器无法正常地提供服务。

云服务器 带宽 cpu资源() 内存
云服务器 cpu使用率瞬间飙高
ddos攻击?
1.模拟请求 httpclient——-cpu资源 网络带宽 nginx(网关) 用户的IP 限流 (对服务器资源 集群扩容)
2.判断用户真实性?图形验证码
3.客户端 用户 脚本攻击 或者sql 注入 log4j
4流量攻击?
服务器带宽 128kb/s 1兆 8兆
8128=1024kb
加载一个网页 9000kb /1024kb =8s
该服务器下载速度1024kb /S
8
128=1024kb

记住:黑客攻击服务器端 攻击的是IP 不是域名。

1nginx(网关)对接口限流
2对ip 黑名单 (网关或者nginx)
3机器模拟访问该网站 (图形验证码)—-不是真实用户 算法角度破解图形验证码

阿里云对DDOS攻击介绍
https://help.aliyun.com/document_detail/28401.html

1.对接口限流 (nginx、网关)
2.对ip 黑名单机制
3.图形验证码 防止机器模拟调用接口
流量攻击? 需要接入高防服务器

nginx限制用户访问的频率

vip2.mayikt.com dns cname →高防服务器(后台配置 真实nginxip 多个 负载均衡策略)
1.对接口限流(网关或者nginx 入口 限流—-高防服务器)
2.黑名单—-(网关或者nginx 入口 —高防服务器)
3.防御XSS攻击
ddos 攻击 攻击ip 不是域名——-
什么是流量攻击? 黑客 使用流量攻击导致服务器端带宽资源不足
正常的用户就是无法进行访问——正常的用户就会浏览器 一直转圈圈卡死。—

A.限制用户访问的频率
例如 同一个客户端端IP 只能够访问一次,防止通过机器模拟请求攻击。
1.在nginx的http模块中添加以下配置
limit_req_zone $binary_remote_addr zone=myRateLimit:10m rate=1r/s;
是$remote_addr(客户端IP)的二进制格式
2.在server location 中配置
limit_req zone=myRateLimit;

3.访问http://42.192.229.245/

更加高级的限流 可以采用 lua脚本实现。
防御xss攻击
什么是XSS注入: 脚本攻击

解决办法:使用过滤器将特殊字符做转移
将小于号:&lt 大于号:>

一级与二级域名的区别

一级域名就是顶级域名,这只是同一种域名的两种叫法,很多人误以为认为mayikt.com这样的是顶级域名,www.mayikt.com这样的是一级域名,其实这是错误的认识,mayikt.com是顶级域名,也是一级域名。
购买一级域名是需要收费的,通过顶级域名衍生二级、三级域名 这些属于免费的
所谓的二级域名实际就是一个一级域名下面的主机名,顾名思义,它是在一级域名前面加上一个字符串,比如member.mayikt.com,它可以拥有与根顶级域名同样的功能,并且通过设置,可以拥有和跟顶级域名完全一样的功能。
只是通常更多人习惯使用www.mayikt.com. 使用www
二级域名,即: www.baidu.com,另外 .baidu.com也属于二级域名,上可以填写任意内容,都属于二级域名。
域名如何配置DNS解析
腾讯云——备案系统(上传 身份证信息 企业)
vip2.mayikt.com——dns 解析的 ip 42.192.229.245 (部署nginx)
域名(备案 对应购买域名运营 找到对应备案系统即可 域名管理局)——配置 DNS 解析
1.将我们的域名:vip2.mayikt.com dns 解析到42.192.229.245 10分钟左右生效。
我们就可以通过域名访问 vip.mayikt.com

2.阿里云后台配置该域名 dns 解析的io

3.使用ping

笔记:如何对nginx集群控制访问
选择购买 dns 轮询 解析
云服务器部署springboot项目 - 图2
云服务器部署springboot项目 - 图3
云服务器部署springboot项目 - 图4
云服务器部署springboot项目 - 图5
云服务器部署springboot项目 - 图6
云服务器部署springboot项目 - 图7
云服务器部署springboot项目 - 图8
云服务器部署springboot项目 - 图9
云服务器部署springboot项目 - 图10
云服务器部署springboot项目 - 图11
云服务器部署springboot项目 - 图12
云服务器部署springboot项目 - 图13
云服务器部署springboot项目 - 图14
云服务器部署springboot项目 - 图15
云服务器部署springboot项目 - 图16
云服务器部署springboot项目 - 图17
云服务器部署springboot项目 - 图18
云服务器部署springboot项目 - 图19
云服务器部署springboot项目 - 图20
云服务器部署springboot项目 - 图21
云服务器部署springboot项目 - 图22
云服务器部署springboot项目 - 图23
云服务器部署springboot项目 - 图24
云服务器部署springboot项目 - 图25
云服务器部署springboot项目 - 图26
云服务器部署springboot项目 - 图27
云服务器部署springboot项目 - 图28
云服务器部署springboot项目 - 图29
云服务器部署springboot项目 - 图30
云服务器部署springboot项目 - 图31
云服务器部署springboot项目 - 图32
云服务器部署springboot项目 - 图33
云服务器部署springboot项目 - 图34
云服务器部署springboot项目 - 图35
云服务器部署springboot项目 - 图36
云服务器部署springboot项目 - 图37
云服务器部署springboot项目 - 图38
云服务器部署springboot项目 - 图39
云服务器部署springboot项目 - 图40
云服务器部署springboot项目 - 图41
云服务器部署springboot项目 - 图42
云服务器部署springboot项目 - 图43
云服务器部署springboot项目 - 图44
云服务器部署springboot项目 - 图45
云服务器部署springboot项目 - 图46
云服务器部署springboot项目 - 图47