声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
云服务
定义
云服务是指通过互联网提供各种计算资源和服务的技术。它允许个人和企业按需访问、管理和使用这些资源,而无需自行购买和维护物理硬件或软件。云服务通常由第三方提供商管理,并根据使用量收费,这为企业提供了灵活性和成本效益。
云服务的主要类型
基础设施即服务 (IaaS):
提供虚拟化的计算资源,如虚拟机(VM)、存储、网络等。
用户可以在这些基础架构上安装操作系统和应用程序。
例子:Amazon Web Services (AWS) EC2, Microsoft Azure VMs, Google Cloud Compute Engine。
平台即服务 (PaaS):
除了 IaaS 提供的基础架构外,还提供了开发工具、数据库管理系统和其他中间件。
开发者可以专注于编写代码,而不必担心底层的硬件配置。
例子:Heroku, Google App Engine, AWS Elastic Beanstalk
软件即服务 (SaaS):
直接提供完整的应用程序,用户只需通过浏览器或其他客户端即可访问。
常见于办公软件、邮件服务、客户关系管理 (CRM) 等应用。
例子:Google Workspace (原 G Suite), Microsoft Office 365, Salesforce。
函数即服务 (FaaS) 或 无服务器计算:
用户只需上传代码片段(函数),并在触发事件时自动执行。
无需管理服务器,按实际使用的计算时间付费。
例子:AWS Lambda, Azure Functions, Google Cloud Functions。
云服务的优势
成本节约:无需投资昂贵的硬件设施,减少了前期资本支出。
可扩展性:能够根据需求快速增加或减少资源。
灵活性和敏捷性:支持快速部署新项目和服务。
全球覆盖:许多云服务商在全球设有数据中心,便于构建低延迟的应用程序。
安全性:专业的安全团队和技术保障数据的安全性和隐私。
自动化运维:自动化更新、备份和监控,降低人工干预的需求。
选择云服务商时考虑的因素
性能和可靠性:评估服务商提供的 SLA(服务水平协议)以及其历史上的正常运行时间记录。
安全性:了解服务商提供的安全措施,包括加密、身份验证机制等。
合规性:确保服务商符合行业标准和法规要求,如 GDPR、HIPAA 等。
价格结构:比较不同服务商的价格模型,选择最适合您预算和使用模式的服务。
技术支持:检查是否提供足够的技术文档和支持渠道。
生态系统和集成能力:考虑与其他工具和服务的兼容性和集成难易度。
主流云服务提供商
Amazon Web Services (AWS):市场领导者,提供广泛的服务和强大的全球基础设施。
Microsoft Azure:与微软产品深度集成,适合已有大量微软技术栈的企业。
Google Cloud Platform (GCP):在大数据处理和机器学习方面有优势。
阿里云:中国领先的云服务平台,拥有丰富的本地化解决方案。
Oracle Cloud:针对企业级应用和数据库优化。
IBM Cloud:强调混合云解决方案和企业级服务。
云架构设计
1. 确定业务需求
- 功能需求:明确应用程序需要实现的功能。
- 性能需求:评估预期的流量、响应时间和服务可用性。
- 安全性需求:确定数据保护、合规性和隐私要求。
- 成本效益:在满足上述需求的前提下,选择最具成本效益的解决方案。
2. 选择云服务提供商 (CSP)
根据您的需求选择合适的云服务提供商(如 AWS、Microsoft Azure、Google Cloud Platform 等)。每个 CSP 都有不同的优势和服务,例如:
- AWS:最全面的服务组合,适合大多数企业级应用。
- Azure:与微软生态系统集成良好,适合已有大量微软产品的公司。
- GCP:机器学习和大数据处理能力强,价格相对透明。
3. 设计架构
3.1 基础设施层
- 计算资源:选择虚拟机实例类型(如 EC2 实例)、容器服务(如 ECS/EKS)或无服务器函数(如 Lambda)。
- 存储:使用对象存储(如 S3)、块存储(如 EBS)或数据库服务(如 RDS, DynamoDB)。
- 网络:配置虚拟私有云(VPC),包括子网、路由表、安全组等。
3.2 数据库和缓存
- 关系型数据库:如 RDS for MySQL/PostgreSQL。
- NoSQL 数据库:如 DynamoDB 或 MongoDB。
- 缓存:使用 Redis 或 Memcached 提高读取性能。
3.3 安全性和监控
- 身份验证和授权:IAM 角色和策略管理访问权限。
- 日志记录和监控:CloudWatch、Logstash、Elasticsearch 和 Kibana (ELK) 栈用于监控和分析。
- 安全工具:WAF、Shield 等防护 DDoS 攻击和其他安全威胁。
3.4 CI/CD 和 DevOps
- 持续集成/持续部署:使用 CodePipeline、Jenkins、GitLab CI 等工具实现自动化构建和部署。
- 基础设施即代码 (IaC):使用 Terraform、CloudFormation 或 Pulumi 定义和管理云资源。
4. 实施和部署
- 创建环境:根据设计文档,在云平台上创建必要的资源和服务。
- 配置自动化脚本:编写 Ansible、Chef 或 Puppet 脚本以确保一致性和可重复性。
- 测试:进行全面的功能测试、负载测试和安全测试,确保系统按预期工作。
5. 维护和优化
- 监控和报警:设置实时监控和报警机制,及时发现并解决问题。
- 成本优化:定期审查账单,寻找节省成本的机会,如调整实例大小、启用自动扩展等。
- 安全审计:定期进行安全审计,更新安全措施以应对新出现的威胁。
示例架构图
Docker
什么是 Docker?
想象一下,你有一款游戏,这款游戏需要特定的版本的图形驱动、操作系统和其他软件才能完美运行。如果你直接在电脑上安装这些,可能会和你已有的软件冲突,导致问题。Docker 就像是一个神奇的盒子,它能把你游戏和所有它需要的东西(比如特定版本的驱动和软件)打包在一起。这样一来,无论在哪台电脑上,只要打开这个盒子,游戏都能正常运行,不会影响其他东西。
检查更新
sudo apt-get update
如果开了代理加载不出来呢
我们可以换个源
1、
sudo -i #获取系统最高权限命令
2、
vim /etc/apt/sources.list #使用vim访问源
3、把文件里原有的源都注释掉,就是看到哪条语句没注释就把他注释了
# 官方源
# deb http://http.kali.org/kali kali-rolling main non-free contrib
# deb-src http://http.kali.org/kali kali-rolling main non-free contrib
4、加入任意一国内源
#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#浙大
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
#东软大学
deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
#重庆大学
deb http://http.kali.org/kali kali-rolling main non-free contrib
deb-src http://http.kali.org/kali kali-rolling main non-free contrib
5、加入之后点击“ esc ”退出编辑,输入“ :wq!”回车保存并退出
:wq! #保存并退出命令
6、更新命令
apt-get update #更新索引
apt-get upgrade #更新软件
apt-get dist-upgrade #升级
apt-get clean #删除缓存包
apt-get autoclean #删除未安装的deb包
下载
sudo apt-get install docker.io
检查是否安装成功
docker -v
启用docker
sudo service docker start
启动后没有错误信息即可
查看是否正常启动
sudo docker ps
docker配置中国镜像源
vim /etc/docker/daemon.json
换成
{"registry-mirrors" :
[
"https://hub.littlediary.cn",
"https://hub.xdark.top",
"https://docker.kejilion.pro",
"https://registry.dockermirror.com",
"https://hub.rat.dev",
"https://dhub.kubesre.xyz",
"https://docker.nastool.de",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://docker.rainbond.cc"
]
}
然后保存退出
Docker中安装CentOS7
1、拉取CentOS7的官方Docker镜像
sudo docker pull centos:7
2、运行一个基于centos7的镜像容器
sudo docker run -it --name my_centos7 centos:7 /bin/bash
exit 退出后仍然存在,可使用 docker ps -a 进行查看
在这个命令中:
-it 选项允许你交互式地运行容器,会占用终端。OR或者 -d 选项(Detached,分离
模式),容器就会在后台启动并运行,不会占用当前终端
–name my_centos7 给容器命名为my_centos7。
执行上述命令后,你会进入到一个新的CentOS 7容器中,可以在这个环境中执行
CentOS 7系统的命令。
centos:7 指定使用的镜像。
/bin/bash 启动容器后执行的命令,这里启动了bash让你能与容器交互
现在就是进入了CentOS 7中而并非之前的服务器
输入 exit 就会退出容器
重开容器
docker start my_centos7
再次进入容器(先重开才能进入)
docker exec -it my-centos7 bash
容器与云
创建Apache容器后台运行
sudo container run -d --rm -p 8080:80 httpd
第一次运行镜像的容器时都会有Unable 这是很常见的情况,因为本来就没有,所以需要Docker去网上pull
使用curl命令检查搭建是否成功
curl localhostt:8080
存在回显,有具体标签,表示搭建成功
Docker 常用命令
查看所有正在运行容器
docker container ls
查看所有已经创建的容器
docker ps -a
查看特定容器的进程信息
docker top <container_name_or_id>
登陆后台运行的容器
容器名去ls那看
docker exec -it 容器名 /bin/bash
– 使用设置的参数name也是可以的.如: docker exec -it my_centos7/bin/bash
停止容器
docker container stop 容器名
挂载宿主机目录
什么是挂载?
挂载就像是在电脑里给一个文件夹添加一个“快捷方式”,但这个“快捷方式”指向的是另一个存储设备(如硬盘、U盘、网络驱动器等)上的内容。一旦你做了这个“快捷方式”,你就可以像访问普通文件夹一样访问那个存储设备上的文件和文件夹。
挂载的比喻
想象一下,你的电脑是一个大房子,里面有很多房间(文件夹)。现在你买了一个新的书架(新的硬盘或分区),你想把书架上的书(文件)放在房子里的一个特定房间里(某个目录)。挂载就是让你可以把书架直接“放进”这个房间,这样你就可以直接在这个房间里找到书架上的所有书,而不需要去外面找。
挂载的例子
假设你有一个 U 盘,插到电脑上后,你需要告诉电脑:“嘿,电脑,我有一个 U 盘,我希望你能把它显示在我的 ~/usb_drive 文件夹里。” 这个过程就叫做挂载。
sudo mount /dev/sdb1 ~/usb_drive
/dev/sdb1 是 U 盘上的第一个分区。
~/usb_drive 是你要挂载到的地方,即你在电脑里的一个文件夹。
挂载完成后,你就可以在 ~/usb_drive 文件夹里看到 U 盘上的所有文件了。
卸载是什么?
卸载就是把“快捷方式”移除掉,或者说把书架从房间里搬走。当你不再需要访问 U 盘上的文件时,你可以卸载它:
sudo umount ~/usb_drive
卸载后,~/usb_drive 文件夹又会变回原来的样子,里面的文件是之前隐藏的文件。
Docker 中的挂载
在 Docker 里,挂载有点类似,但它是指将你电脑上的一个文件夹(主机文件夹)连接到容器内部的一个文件夹。这样做的好处是可以让容器内的程序访问你电脑上的文件,就像它们是在容器里一样。
例如,如果你想让你的 Docker 容器访问你电脑上的 ~/my_project 文件夹,你可以这样做:
docker run -it --name my_container -v ~/my_project:/container/project centos:7 /bin/bash
这条命令的意思是:启动一个名为 my_container 的容器,并将你电脑上的 ~/my_project 文件夹挂载到容器内的 /container/project 文件夹。
总结
挂载就是让一个存储设备(如硬盘、U盘)或文件夹的内容出现在另一个地方,这样你可以更方便地访问这些内容。在 Docker 中,挂载可以帮助你共享数据,使容器内外的数据同步。
docker container run -d --rm -p 8080:80 -v
/home/user/webroot/:/usr/local/apache2/htdocs/ httpd
-d 参数
功能 :表示以 “分离(detached)” 模式运行容器。
含义和作用 :当容器以这种模式启动后,它会在后台运行,不会占用当前的命令行终端。这使得你可以在启动容器后,继续在终端中执行其他任务,比如启动其他容器、检查容器状态或者运行其他系统命令等。例如,你可以在
启动这个 httpd 容器后,马上使用 docker ps 命令查看容器是否已经成功启动并在后台运行。
–rm 参数
功能 :设置容器在退出时自动删除。
含义和作用 :一旦容器内的任务完成或者因为某种原因(如发生错误、手动停止等)停止运行,Docker 会自动删除这个容器。这有助于保持 Docker 环境的整洁,避免大量无用的容器占用磁盘空间。特别是在临时测试或者短期运
行容器的场景下非常有用,比如你只是想快速测试一下 httpd 服务器的配置,使用完后容器自动删除,不需要手动清理。
-p 8080:80 参数
功能 :进行端口映射。
含义和作用 :左边的 8080 是宿主机(运行 Docker 的物理机或虚拟机)上的端口,右边的 80 是容器内 httpd 服务器默认监听的端口。通过这种映射,外部客户端(如浏览器)访问宿主机的 8080 端口时,请求会被转发到容器内 httpd 服务器监听的 80 端口。这就使得你可以通过宿主机的 8080端口来访问容器内 httpd 服务器提供的网页服务。例如,在浏览器中输入宿主机的 IP 地址加上 8080 端口(如 http://[宿主机IP]:8080 ),就可以访问容器内 httpd 服务器上的网页。
-v /home/user/webroot/:/usr/local/apache2/htdocs/ 参数
功能 :进行目录挂载。
含义和作用 :左边的 /home/user/webroot/ 是宿主机上的一个目录,右边的 /usr/local/apache2/htdocs/ 是容器内 httpd 服务器存放网页文档的默认目录。通过这种挂载,将宿主机上的目录挂载到容器内相应的目录。这样做有很多好处,一是方便在宿主机上直接对要提供给 httpd 服务器的网页文档进行编辑、更新等操作。例如,你在宿主机的/home/user/webroot/目录下新建一个 index.html 文件,容器内的 httpd 服务器就能直接使用这个文件来提供网页服务。二是实现了数据的持久化和共享,即使容器重新启动或者被删除后重新创建,只要宿主机上挂载的目录中的数据没有丢失,容器内的 httpd 服务器就可以继续使用这些数据来提供网页服务。
httpd 部分
功能 :指定要运行的容器所基于的镜像名称。
含义和作用 : httpd 是一个常用的用于搭建 Apache HTTP 服务器的镜像。
通过运行基于这个镜像的容器,容器内部会启动 httpd 服务器,从而能够对外提供网页服务。当容器启动后, httpd 服务器会根据容器内的配置和挂载的网页文档目录来提供相应的网页内容
docker container run -d --rm --network host -v
/home/user/webroot/:/usr/local/apache2/htdocs/ httpd
–network host 参数
功能:将容器的网络模式设置为 “host” 模式。
含义和作用:在这种模式下,容器会直接使用宿主机的网络栈。容器内的网络接口和端口将直接与宿主机相同,不再进行端口映射操作。例如,容器内 httpd服务器监听的 80 端口,将直接在宿主机的 80 端口上进行监听。这对于一些需要直接使用宿主机网络资源或者需要避免网络地址转换(NAT)带来的复杂性的应用场景很有用。不过,这种模式也有一定的风险,因为容器内的服务将直接暴露在宿主机网络上,可能会增加安全风险
网恋
前提:服务器、FinaShell或者Xshell
1、更新源
bash <(curl -sSl https://linuxirrors.cn/main.sh)
任选推荐火山引擎
不用选直接enter
宝塔
yum install -y wget && wget -o install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh
上面不成功用这个
sudo yum install -y wget
wget -O install.sh https://download.bt.cn/install/install_6.0.sh
sudo sh install.sh
运行
chmod +x install.sh
sudo sh install.sh
获得用户密码,保存在你的电脑上
复制外网面板地址登录、访问不了去弄一下你买的服务器
登陆宝塔、下载推荐的、之后的就要服务器和ip了