从零开始学习网络安全渗透测试之基础入门篇——(一)Web应用&架构搭建&站库分离&配置受限&DNS解析

从零开始学习网络安全渗透测试之基础入门篇——(一)Web应用&架构搭建&站库分离&配置受限&DNS解析一、Web应用
Web应用,全称Web应用程序(Web Application)&#xff0c

一、Web应用

Web应用程序的正式名称是“Web应用程序”,是指通过Web浏览器访问和使用的应用软件。它们通常基于HTML、CSS 和JavaScript 等Web 技术,在服务器上运行,并且用户可以使用各种设备(例如计算机、平板电脑、智能手机应用程序)通过网络(例如互联网)进行访问。 )。

以下是Web 应用程序的一些特征:

无需安装:用户通过网络浏览器访问应用程序,无需在本地设备上安装任何软件。跨平台:Web应用程序依赖于标准的Web技术,因此它们可以在各种操作系统和设备上运行。易于更新:开发者可以在服务器端更新Web应用程序,而无需用户手动更新。网络依赖性:使用网络应用程序需要网络连接。一些应用程序支持离线功能,但这通常是有限的。强大的交互性:现代Web应用程序可以提供丰富的用户交互体验,接近甚至超越传统的桌面应用程序。

常见的网络应用程序包括:

电子邮件服务(例如Gmail) 社交媒体平台(例如微博、Facebook) 在线办公软件(例如Google Workspace、Microsoft Office 365) 电子商务网站(例如淘宝、京东)

开发和维护Web 应用程序通常涉及前端和后端技术。前端负责用户界面和用户体验,而后端处理应用程序逻辑、数据库交互等。随着技术的进步,Web应用程序的功能、性能和用户体验显着提高,使其成为互联网服务的重要形式。

二、前后端技术

Web应用程序有许多前端和后端技术。下面介绍一些常用的前端和后端技术。

前端技术:

HTML(超文本标记语言):一种用于Web 内容的结构化语言。 CSS(层叠样式表):一种用于描述网页外观和布局的语言。 JavaScript:一种脚本语言,用于在网页上实现动态效果和交互功能。

前端框架和库:

React:Facebook 开发的用于构建用户界面的前端JavaScript 库。 Angular:Google开发的前端框架,提供了一整套解决方案。 Vue.js:一个易于使用且灵活的渐进式JavaScript 框架。 jQuery:一个快速、小型且功能丰富的JavaScript 库。 Bootstrap:一种流行的前端框架,用于快速开发响应式布局和Web 应用程序。

前端构建工具:

Webpack:一个模块捆绑器,可将浏览器无法直接运行的代码(ES6、TypeScript 等)转换为可执行代码。 Gulp:基于流程的自动化构建工具。 npm:节点包管理器。用于管理项目内的包依赖关系。

后端技术:

服务器端语言:

Node.js:基于Chrome V8引擎的JavaScript执行环境。 Python:高级编程语言。常用的框架有Django和Flask。 Java:一种广泛使用的编程语言。常用的框架有Spring和Hibernate。 PHP:一种流行的服务器端脚本语言。 Ruby:一种面向对象的脚本语言。常用的框架包括Ruby on Rails。 数据库:

关系数据库:MySQL、PostgreSQL、SQLite、Oracle等。非关系型数据库:MongoDB、CouchDB、Redis 等。

后端框架和库:

Express.js:基于Node.js 的快速、即用型Web 应用程序框架。 Django:一种先进的Python Web 框架,可促进快速开发和简洁的功能性设计。 Flask:一个轻量级的Python Web 框架。 Spring Boot:用于快速开发、运行和测试Java 应用程序的框架。 Laravel:一个流行的PHP Web 框架。

服务器和托管:

Apache:开源HTTP 服务器软件。 Nginx:高性能HTTP 和反向代理服务器。云服务:AWS、Azure、谷歌云平台等。

您可以根据项目的需求、团队的熟悉程度以及特定场景的性能要求来选择和组合这些技术。随着技术的发展,新的工具和框架不断出现。

三、WEB服务器中间件

Web 服务器中间件软件是位于客户端和服务器之间的软件,处理客户端请求、服务器响应并执行各种与请求处理相关的任务。以下是一些流行的Web 服务器中间件软件。

1. 反向代理和负载均衡器:

Nginx:高性能HTTP 和反向代理服务器,也常用于负载平衡。 Apache HTTP Server:一种广泛使用的开源HTTP 服务器,通过模块支持反向代理功能。 HAProxy:主要用于负载均衡和高可用性。

2. 应用服务器:

Node.js:基于Chrome V8引擎的JavaScript运行环境。它可用于构建高性能服务器端应用程序。 Tomcat:用于运行Java Web 应用程序的Java servlet 和JSP 容器。 Jetty:轻量级Java HTTP 服务器和servlet 容器。 IIS(Internet信息服务):Microsoft为Windows平台提供的Web服务器和中间件。

3. Web服务器网关接口(WSGI)中间件(Python):

Gunicorn:用于部署Python Web 应用程序的Python WSGI HTTP 服务器。 uWSGI:一个功能齐全的HTTP服务器,也可以用作Web应用程序的WSGI容器。

4. 容器化和编排:

Docker:一个容器化平台,允许开发人员将应用程序及其依赖项打包到可移植容器中。 Kubernetes:一个用于自动化容器化应用程序的部署、扩展和管理的开源系统。

5. API网关:

Kong:用于管理和运行微服务的开源API 网关。 Apache APISIX:开源高性能API 网关。 Traefik:开源反向代理和负载均衡器。也用作API 网关。

6. 缓存和会话管理:

Varnish:高性能HTTP加速器,也用作缓存服务器。 Redis:键值存储系统。通常用于缓存、会话管理和消息队列。 Memcached:高性能分布式内存对象缓存系统。

7. 安全性和认证:

ModSecurity:开源Web 应用程序防火墙(WAF)。 OAuth:开放的授权标准。 JWT(JSON Web 令牌):用于创建身份验证和授权令牌的中间件。

这些中间件软件可以根据您的Web应用程序的具体需求进行选择和配置,并且可以单独或组合使用,以提供更强大的功能和性能。

四、搭建WEB服务器

设置Web 服务器涉及许多步骤。这是适用于各种操作系统和环境的基本指南。

1. 选择Web服务器软件

首先,您需要选择您的网络服务器软件。以下是一些常见选项。

Apache HTTP 服务器NginxMicrosoft IIS(仅限Windows)

2. 安装Web服务器软件

在Linux上:

对于Apache 或Nginx,您可以使用包管理器安装它们。在基于Debian 的系统(例如Ubuntu)上,命令是:

#阿帕奇

须藤apt更新

须藤安装阿帕奇2

#Nginx

须藤apt更新

sudo apt安装nginx

对于基于Red Hat 的系统(例如CentOS),请使用以下命令:

#阿帕奇

须藤yum 安装httpd

#Nginx

使用sudo yum 安装nginx

在Windows上:

对于IIS,请从“控制面板”、“程序和功能”、“打开或关闭Windows 功能”进行安装。对于Apache 或Nginx,您通常需要下载并运行安装程序。

3. 配置Web服务器

Apache:

编辑配置文件通常位于/etc/apache2/apache2.conf 或/etc/httpd/httpd.conf。

Nginx:

编辑配置文件通常位于/etc/nginx/nginx.conf。

IIS:

通过IIS 管理器进行配置。

4. 测试配置

更改配置文件后,通常需要重新加载或重新启动服务器。

Apache:

sudo systemctl 重新加载apache2

或者

sudo systemctl 重新启动apache2

Nginx:

sudo systemctl 重新加载nginx

或者

sudo systemctl 重新启动nginx

IIS:

从IIS 管理器重新启动服务。

5. 设置文档根目录

这是网络服务器存储网页文件的地方。例如:

Apache:默认为/var/www/html/Nginx:默认为/var/www/html/或/usr/share/nginx/html/IIS:默认为C:\\inetpub\\wwwroot\\

6. 测试Web服务器

当您在浏览器中输入服务器的IP 地址或域名时,它会显示默认的欢迎页面或您放置在文档根目录中的任何页面。

7. 安全配置

设置防火墙规则以仅允许所需的端口(例如80 或443)。安装SSL 证书并配置HTTPS。更新并强化您的服务器。

8. 安装额外的组件(可选)

您可能需要安装其他组件,例如数据库(MySQL、PostgreSQL)、脚本语言解释器(PHP、Python)或其他中间件。

五、站库分离

“Web服务器分离”是指将网站的前端(即Web服务器或静态内容)和后端数据库服务器分开部署。这种架构设计的目的主要是为了提高性能、安全性和可维护性。站点隔离的要点是:

优点:

性能提升:前后端分离,减少单台服务器的负载,更高效地处理请求。提高安全性:您可以将数据库服务器放置在更安全的环境中,仅允许访问特定的应用程序或服务器,并降低直接暴露于Internet 的风险。可维护性:分离后,Web服务器和数据库服务器可以独立维护和升级,互不影响。可扩展性:Web服务器或数据库服务器可以根据需要独立扩展,以实现更灵活的扩展策略。

实现方式:

物理分离:将Web服务器和数据库服务器部署在不同的物理服务器上。虚拟化分离:利用虚拟化技术,在同一台物理服务器上创建独立的虚拟机,分别运行Web服务器和数据库服务器。容器化分离:利用容器技术(如Docker),可以将Web服务器和数据库服务器运行在同一台物理服务器上,但容器之间是分离的。

实践步骤:

选择合适的硬件/软件:根据您的业务需求选择合适的Web服务器软件(Apache、Nginx等)和数据库服务器软件(MySQL、PostgreSQL等)。配置您的网络。确保您的Web 服务器和数据库服务器可以通信,并且仅向外界公开必要的端口。安全设置:在数据库服务器上设置防火墙规则,仅允许来自Web 服务器的连接。性能优化:分别对Web服务器和数据库服务器进行性能优化,如数据库缓存策略、Web服务器负载均衡等。监控和维护:实施监控系统来跟踪网络和数据库服务器的状态并执行定期维护和备份。

基于站点的隔离是一种常见的架构模式,特别是对于大型网站和高流量应用程序。这有助于提高整体系统的稳定性和可靠性。

六、WEB服务器权限配置

配置Web服务器权限是保证服务器安全的重要一步。以下是在Apache 和Nginx 服务器上配置权限的一般准则。

Apache权限配置:

文件和目录权限:

Web 根目录(通常为/var/www/html/或/var/www/)及其中的文件连接到Web 服务器(通常为www-data(对于Debian/Ubuntu)或Apache(对于Debian/Ubuntu)(在Hat/CentOS 上为红色)。设置适当的文件权限。通常将文件设置为644,将目录设置为755。对于需要写入的目录,可以设置更宽松的权限,例如775,并确保组权限设置正确。 sudo chown -R www-data:www-data /var/www/html/

sudo find /var/www/html/-type d -exec chmod 755 {} \\;

sudo find /var/www/html/-type f -exec chmod 644 {} \\;

个人资料权限:

保护Apache 配置文件,例如httpd.conf 和apache2.conf,并使其只能由root 用户写入。一般情况下,配置文件权限应限制在640或更高。须藤chmod 640 /etc/apache2/apache2.conf

使用.htaccess 文件:

如果允许.htaccess 文件,请确保它们具有正确的权限(通常为644)。 SELinux(如果启用):

配置SELinux 以便您的Web 服务器可以访问所需的文件和目录。使用Audit2allow 和setebool 命令调整SELinux 策略。

Nginx权限配置:

文件和目录权限:

与Apache 一样,请确保Web 根目录及其中的文件由运行Nginx(通常是nginx)的用户拥有。设置适当的文件权限。通常将文件设置为644,将目录设置为755。 sudo chown -R nginx:nginx /var/www/html/

sudo find /var/www/html/-type d -exec chmod 755 {} \\;

sudo find /var/www/html/-type f -exec chmod 644 {} \\;

个人资料权限:

保护Nginx配置文件,例如nginx.conf,使其只能由root用户写入。一般情况下,配置文件权限应限制在640或更高。须藤chmod 640 /etc/nginx/nginx.conf

使用include 指令。

Nginx 通常不使用.htaccess 文件,而是通过include 指令将其他配置文件包含在主配置文件中。

七、DNS解析

DNS解析(域名系统解析)是将域名(例如www.example.com)转换为Internet上相应的IP地址(例如192.0.2.1)的过程。虽然这个过程对于互联网用户来说是透明的,但保证网络通信的顺畅非常重要。以下是有关DNS 解析的一些基本概念。

(一)DNS是什么?

DNS(域名系统)是一个分布式数据库,负责将易于记忆的域名转换为机器可读的IP 地址。 DNS是互联网的核心组成部分,允许用户使用简单、易记的域名访问网站,而无需记住复杂的数字序列。

DNS解析的工作原理:

用户输入:用户在浏览器中键入域名(例如www.example.com)。查询本地缓存:浏览器首先检查本地缓存,看是否有您域名的IP地址记录。查询本地DNS 服务器:如果本地缓存中没有记录,浏览器会向本地网络中的DNS 服务器发送查询请求。递归查询:本地DNS 服务器可能需要递归查询其他DNS 服务器以找到相应的IP 地址。这个过程可能会涉及多个DNS 服务器,直到您找到负责您域名的权威DNS 服务器。获取IP地址:权威DNS服务器将域名对应的IP地址返回给本地DNS服务器。缓存并返回结果:本地DNS服务器缓存IP地址并返回给浏览器。建立连接:浏览器使用获取到的IP地址与目标Web服务器建立连接并请求页面内容。

DNS记录类型:

记录:将域名解析为IPv4 地址。 AAAA记录:将域名解析为IPv6地址。 CNAME记录:将您的域名指向另一个域名(别名)。 MX记录:用于指定哪个邮件服务器接收电子邮件及其优先级。 TXT记录:用于添加描述性文本,常用于验证域名的所有权。

DNS解析的重要性:

易用性:用户可以通过域名而不是IP地址访问网站,使互联网更易于使用。可维护性:网站所有者可以通过简单地更新其DNS 记录来更改IP 地址,而无需通知用户。可扩展性:DNS 允许您的网站使用多个服务器地址,使负载平衡和故障转移更加容易。

DNS解析是网络访问的关键环节,其效率和安全性直接影响用户体验。因此,保证DNS解析服务的稳定性和可靠性是网络运行的关键任务。

(二)如何在阿里云配置DNS解析

在阿里云上配置DNS解析,必须使用阿里云提供的域名服务(也称为阿里云解析或阿里云DNS)。在阿里云上配置DNS解析的基本步骤如下:

步骤 1:登录阿里云控制台

访问阿里云官网:https://www.alibabacloud.com/使用阿里云账号登录控制台。

步骤 2:添加域名

在控制台主页上,找到“域名和网站”部分,然后单击“域名服务”。在“域名服务”页面,单击“添加域名”。输入您要添加的域名,然后单击“验证”。

步骤 3:配置DNS记录

在域名列表中找到刚刚添加的域名,单击“管理”。在域名管理页面上,找到“DNS解析”或“解析设置”部分。单击“添加记录”以设置您的DNS 记录。

以下是一些常见的DNS 记录类型以及如何配置它们。

A记录(将域名解析到IP地址)

记录类型:选择“A”。 主机记录:输入子域名,例如“www”或留空以解析为主域名。解析行:选择默认行或根据需要选择特定行。记录值:输入服务器的IP地址。 TTL:选择合适的TTL值(如600秒)。

CNAME记录(将域名指向另一个域名)

记录类型:选择CNAME。 主机记录:输入您的子域名,例如“www”。解析行:选择默认行或根据需要选择特定行。记录值:输入您要引用的域名,例如“example.com”。 TTL:选择合适的TTL值。

MX记录(用于邮箱服务)

记录类型:选择MX。 主机记录:通常留空或输入“@”。解析行:选择默认。记录值:输入您的邮件服务器地址。优先级:输入优先级值。值越低,优先级越高。

步骤 4:保存并生效

完成DNS 记录设置后,单击“确认”保存设置。 DNS 记录通常会在几分钟内生效,但最长可能需要48 小时才能在全球范围内完全生效。

#从零开始学习网络安全渗透测试基础知识——以上相关内容(1)构建Web应用架构、隔离站点库、配置网络的有限DNS解析。相关信息请参考官方网站。公告!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93977.html

(0)
CSDN's avatarCSDN
上一篇 2024年7月26日 下午4:57
下一篇 2024年7月26日 下午4:57

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注