13.云服务器部署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 提供软件被其他人使用

13.云服务器部署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 云服务: 阿里云、腾讯云、百度云、华为云等。

亚马逊(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客户端工具 远程连接到云服务器端接口

13.云服务器部署springboot项目_第2张图片

13.云服务器部署springboot项目_第3张图片

云服务器安装jdk

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

13.云服务器部署springboot项目_第4张图片

以CentOS为例,切换到root账户,检查是否已安装过jdk。

yum list --installed|grep jdk 或者

或者java -version看下能不能执行。

如果已安装过但jdk版本不符合要求,先yum remove卸载。

从软件源下载安装

1.列出可用的jdk

yum  list|grep jdk   
  1. yum install java-11-openjdk.x86_64

13.云服务器部署springboot项目_第5张图片

y:yum -y

不带-y的话,如果执行过程中要选择,会提示你,需要你手动选择y|n,比如“确定安装码?y|N”

带-y的话,如果执行过程中要选择,系统会自动选择y。y即yes。

安装目录为usr/lib/jvm,会自动配置环境变量。

3.执行java -version,显示jdk版本就说明安装成功。

13.云服务器部署springboot项目_第6张图片

安装目录为usr/lib/jvm,会自动配置环境变量。

云服务器部署springboot项目

部署 springboot项目

1.java -jar springboot.jar -----运行 springboot项目----需要先安装jdk环境的

2.制作镜像 以容器化的形式运行 不需要额外的jdk环境

1.编写一个springboot项目 打包成 .jar包

13.云服务器部署springboot项目_第7张图片

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

13.云服务器部署springboot项目_第8张图片

3.使用FileZilla将该mayikt-springboot-nginx-1.0-SNAPSHOT.jar包上传服务器端即可。

进入:linux 目录/usr/local 创建 mkdir mayikt文件夹

/usr/local/mayikt 该目录存放我们的 jar包

13.云服务器部署springboot项目_第9张图片

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.直接在虚拟机服务器上访问测试

img

云服务器防火墙配置

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

13.云服务器部署springboot项目_第10张图片

2.需要在对应的云服务器后台开放端口号码

注意:直接关闭防火墙是无效的!

需要单独 在云服务器后台开放端口

https://console.cloud.tencent.com/lighthouse/instance/detail?rid=4&id=lhins-j4hs26dc&tab=firewall

13.云服务器部署springboot项目_第11张图片

3.添加规则 →点击确定

13.云服务器部署springboot项目_第12张图片

13.云服务器部署springboot项目_第13张图片

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

13.云服务器部署springboot项目_第14张图片

云服务器安装宝塔

宝塔安装

纯原生方式安装 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

13.云服务器部署springboot项目_第15张图片

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 端口

13.云服务器部署springboot项目_第16张图片

13.云服务器部署springboot项目_第17张图片

13.云服务器部署springboot项目_第18张图片

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

13.云服务器部署springboot项目_第19张图片

注意事项

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

点击安全→系统防火墙→ 放开端口即可

13.云服务器部署springboot项目_第20张图片

利用宝塔安装nginx

nginx的安装

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

13.云服务器部署springboot项目_第21张图片

13.云服务器部署springboot项目_第22张图片

13.云服务器部署springboot项目_第23张图片

2.点击首页设置显示

img

3.首页中可以显示 nginx

13.云服务器部署springboot项目_第24张图片

13.云服务器部署springboot项目_第25张图片

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

13.云服务器部署springboot项目_第26张图片

nginx安装目录:

/www/server/nginx/conf/nginx.conf

启动/停止nginx

13.云服务器部署springboot项目_第27张图片

nginx的配置

反向代理

server {
        listen       80;
        server_name  42.192.229.245;
        location / {
            proxy_pass   http://127.0.0.1:8081;
            index  index.html index.htm;
        }
}  

同时应该关闭8081端口外网访问权限

13.云服务器部署springboot项目_第28张图片

利用宝塔安装docker

1.软件商店 →搜索docker 即可(耐心等待5分钟左右即可)

13.云服务器部署springboot项目_第29张图片

2.开始安装docker

13.云服务器部署springboot项目_第30张图片

3.安装docker 成功之后

13.云服务器部署springboot项目_第31张图片

img

利用docker部署springboot项目

第八期docker教程

1.编写Dockerfile文件

# Docker image for springboot file run
# VERSION 0.0.1
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER mayikt <[email protected]>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD mayikt-springboot-nginx-1.0-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2.将Dockerfile 和 mayikt-springboot-nginx-1.0-SNAPSHOT.jar 上传到同一个

目录中

img

3.执行下面命令, 最后面有个"."点!

进入到:/usr/local/mayikt 执行下面命令

docker build -t mayikt-springboot .

13.云服务器部署springboot项目_第32张图片

4.docker images

img

5.docker run -d -p 8081:8081 mayikt-springboot

-d参数是让容器后台运行

-p 是做端口映射,此时将服务器中的8080端口映射到容器中的8085(项目中端口配置的是8085)端口

6.http://42.192.229.245/

13.云服务器部署springboot项目_第33张图片

利用宝塔安装mysql

root

ae3004cccac8b8c6

13.云服务器部署springboot项目_第34张图片

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

  1. 流量攻击?

服务器带宽 128kb/s 1兆 8兆

8*128=1024kb

加载一个网页 9000kb /1024kb =8s

该服务器下载速度1024kb /S

8*128=1024kb

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

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

阿里云对DDOS攻击介绍

https://help.aliyun.com/document_detail/28401.html

1.对接口限流 (nginx、网关)

2.对ip 黑名单机制

3.图形验证码 防止机器模拟调用接口

流量攻击? 需要接入高防服务器

13.云服务器部署springboot项目_第35张图片

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;

13.云服务器部署springboot项目_第36张图片

3.访问http://42.192.229.245/

13.云服务器部署springboot项目_第37张图片

更加高级的限流 可以采用 lua脚本实现。

防御xss攻击

什么是XSS注入: 脚本攻击

常见类型:论坛、评论

访问页面:http://127.0.0.1:8081/showUser

解决办法:使用过滤器将特殊字符做转移

        userEntity.setUserName(StringEscapeUtils.escapeHtml(userName));

将小于号:< 大于号:>

一级与二级域名的区别

一级域名就是顶级域名,这只是同一种域名的两种叫法,很多人误以为认为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

13.云服务器部署springboot项目_第38张图片

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

13.云服务器部署springboot项目_第39张图片

3.使用ping

13.云服务器部署springboot项目_第40张图片

13.云服务器部署springboot项目_第41张图片

13.云服务器部署springboot项目_第42张图片

笔记:如何对nginx集群控制访问

选择购买 dns 轮询 解析

你可能感兴趣的:(springboot,每特教育第十期,服务器,spring,boot,运维)