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

一、Web应用

Web应用,全称Web应用程序(Web Application),指的是通过Web浏览器进行访问和使用的应用软件。它们通常基于Web技术,如HTML、CSS和JavaScript,运行在服务器上,用户可以通过网络(例如互联网)使用各种设备(如个人电脑、平板电脑、智能手机等)访问这些应用。
在这里插入图片描述

以下是Web应用的一些特点:

  1. 无需安装:用户通过Web浏览器访问应用,无需在本地设备上安装软件。
  2. 跨平台性:由于Web应用依赖于标准的Web技术,因此它们可以在多种操作系统和设备上运行。
  3. 易于更新:开发者可以在服务器端更新Web应用,用户无需手动进行更新。
  4. 网络依赖性:Web应用需要网络连接才能使用,尽管有些应用支持离线功能,但这通常是有限的。
  5. 交互性强:现代Web应用可以提供丰富的用户交互体验,接近甚至超过传统的桌面应用程序。
    常见的Web应用包括:
  • 电子邮件服务(如Gmail)
  • 社交媒体平台(如微博、Facebook)
  • 在线办公软件(如Google Workspace、Microsoft Office 365)
  • 电子商务网站(如淘宝、京东)
    Web应用的开发和维护通常涉及前端和后端技术。前端负责用户界面和用户体验,后端则处理应用逻辑、数据库交互等。随着技术的发展,Web应用在功能、性能和用户体验方面都有了显著提升,成为互联网服务的重要形式。
    在这里插入图片描述

二、前后端技术

Web应用的前后端技术非常多样,下面列举了一些常用的前后端技术:
在这里插入图片描述

前端技术:

  1. HTML (HyperText Markup Language):网页内容的结构化语言。
  2. CSS (Cascading Style Sheets):用于描述网页外观和布局的语言。
  3. JavaScript:一种脚本语言,用于实现网页的动态效果和交互功能。
前端框架和库:
  • React:由Facebook开发的前端JavaScript库,用于构建用户界面。
  • Angular:由Google开发的前端框架,提供了一整套解决方案。
  • Vue.js:渐进式JavaScript框架,易于上手,灵活性高。
  • jQuery:一个快速、小巧且功能丰富的JavaScript库。
  • Bootstrap:一个流行的前端框架,用于快速开发响应式布局和Web应用。
前端构建工具:
  • Webpack:模块打包器,它将浏览器不能直接运行的代码(如ES6、TypeScript)转换为可运行的代码。
  • Gulp:基于流的自动化构建工具。
  • npm:Node包管理器,用于管理项目中的包依赖。

后端技术:

  1. 服务器端语言
    • Node.js:基于Chrome V8引擎的JavaScript运行时环境。
    • Python:一种高级编程语言,常用框架有Django和Flask。
    • Java:一种广泛使用的编程语言,常用框架有Spring和Hibernate。
    • PHP:一种流行的服务器端脚本语言。
    • Ruby:一种面向对象的脚本语言,常用框架有Ruby on Rails。
  2. 数据库
    • 关系型数据库:如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、Google Cloud Platform。
    这些技术可以根据项目的需求、团队的熟悉度以及特定场景下的性能要求进行选择和组合。随着技术的发展,新的工具和框架也在不断出现。

三、WEB服务器中间件

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

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

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

2. 应用服务器:

  • Node.js:基于Chrome V8引擎的JavaScript运行时环境,可以用来构建高性能的服务器端应用程序。
  • Tomcat:Java Servlet和JSP容器,用于运行Java Web应用程序。
  • Jetty:轻量级的Java HTTP服务器和Servlet容器。
  • IIS (Internet Information Services):微软提供的Web服务器和中间件,用于Windows平台。

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

  • Gunicorn:Python WSGI HTTP服务器,用于部署Python Web应用程序。
  • 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 Tokens):用于创建token的中间件,用于身份验证和授权。
    这些中间件软件可以根据Web应用的具体需求进行选择和配置,它们可以单独使用,也可以组合使用,以提供更强大的功能和更好的性能。
    在这里插入图片描述

四、搭建WEB服务器

搭建Web服务器涉及多个步骤,以下是一个基本的指南,适用于不同的操作系统和环境:

1. 选择Web服务器软件

首先,你需要选择一个Web服务器软件。以下是一些流行的选项:

  • Apache HTTP Server
  • Nginx
  • Microsoft IIS(仅适用于Windows)

2. 安装Web服务器软件

在Linux上:

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

# Apache
sudo apt update
sudo apt install apache2
# Nginx
sudo apt update
sudo apt install nginx

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

# Apache
sudo yum install httpd
# Nginx
sudo yum install 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 reload apache2
# 或
sudo systemctl restart apache2
Nginx:
sudo systemctl reload nginx
# 或
sudo systemctl restart nginx
IIS:

通过IIS管理器重启服务。

5. 设置文档根目录

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

  • 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服务器或静态内容)与后端数据库服务器分开部署。这种架构设计的目的主要是为了提高性能、安全性和可维护性。以下是站库分离的一些关键点:

优点:

  1. 性能提升:分离前端和后端可以减少单个服务器的负载,提高处理请求的效率。
  2. 安全性增强:数据库服务器可以放在一个更加安全的环境中,只允许特定的应用程序或服务器访问,减少了直接暴露在互联网上的风险。
  3. 可维护性:分离后,可以独立地对Web服务器和数据库服务器进行维护和升级,不会相互影响。
  4. 可扩展性:可以根据需要独立扩展Web服务器或数据库服务器,实现更灵活的扩展策略。

实现方式:

  1. 物理分离:在不同的物理服务器上部署Web服务器和数据库服务器。
  2. 虚拟化分离:在同一个物理服务器上,通过虚拟化技术创建不同的虚拟机来分别运行Web服务器和数据库服务器。
  3. 容器化分离:使用容器技术(如Docker)来部署Web服务器和数据库服务器,它们可以在同一个物理服务器上运行,但容器之间是隔离的。

实践步骤:

  1. 选择合适的硬件/软件:根据业务需求选择合适的Web服务器软件(如Apache、Nginx)和数据库服务器软件(如MySQL、PostgreSQL)。
  2. 配置网络:确保Web服务器和数据库服务器之间可以通信,同时对外只暴露必要的端口。
  3. 安全设置:在数据库服务器上设置防火墙规则,只允许来自Web服务器的连接。
  4. 性能优化:对Web服务器和数据库服务器分别进行性能优化,比如数据库的缓存策略、Web服务器的负载均衡等。
  5. 监控和维护:部署监控系统来跟踪Web服务器和数据库服务器的状态,定期进行维护和备份。
    站库分离是一种常见的架构模式,特别是在大型网站和高流量应用中。它有助于提高系统的整体稳定性和可靠性。

六、WEB服务器权限配置

Web服务器权限配置是确保服务器安全的重要步骤。以下是一些通用的指南,用于配置Apache和Nginx服务器的权限。

Apache权限配置:

  1. 文件和目录权限
    • 确保Web根目录(通常是/var/www/html//var/www/)和其中的文件归运行Web服务器的用户所有,通常是www-data(在Debian/Ubuntu上)或apache(在Red 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 {} \;
    
  2. 配置文件权限
    • 保护Apache的配置文件,如httpd.confapache2.conf,确保只有root用户可以写入。
    • 通常配置文件的权限应该是640或更严格。
    sudo chmod 640 /etc/apache2/apache2.conf
    
  3. 使用.htaccess文件
    • 如果允许使用.htaccess文件,确保它们有正确的权限,通常是644
  4. SELinux(如果启用):
    • 配置SELinux以允许Web服务器访问必要的文件和目录。
    • 使用audit2allowsetsebool命令来调整SELinux策略。

Nginx权限配置:

  1. 文件和目录权限
    • 类似于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 {} \;
    
  2. 配置文件权限
    • 保护Nginx的配置文件,如nginx.conf,确保只有root用户可以写入。
    • 通常配置文件的权限应该是640或更严格。
    sudo chmod 640 /etc/nginx/nginx.conf
    
  3. 使用include指令
    • Nginx通常不使用.htaccess文件,而是通过include指令在主配置文件中包含其他配置文件。

七、DNS解析

DNS解析(Domain Name System Resolution)是互联网上将域名(如 www.example.com)转换为与之相对应的IP地址(如 192.0.2.1)的过程。这个过程对于互联网用户来说是透明的,但对于确保网络通信的顺利进行至关重要。以下是关于DNS解析的一些基本概念:

(一)DNS是什么?

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

DNS解析的工作原理:

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

DNS记录类型:

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

DNS解析的重要性:

  • 易用性:用户可以通过域名而不是IP地址来访问网站,这使得互联网更加易于使用。
  • 可维护性:网站所有者可以更改IP地址而无需通知用户,只需更新DNS记录即可。
  • 扩展性:DNS允许网站使用多个服务器地址,便于负载均衡和故障转移。
    DNS解析是网络访问的关键环节,它的效率和安全性对用户体验有直接影响。因此,确保DNS解析服务稳定可靠是网络运营的重要任务。

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

在阿里云上配置DNS解析,您需要使用阿里云提供的域名服务(也称为阿里云解析或Alibaba Cloud DNS)。以下是在阿里云上配置DNS解析的基本步骤:

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

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

步骤 2:添加域名

  1. 在控制台首页,找到“域名与网站”(Domain and Websites)部分,点击“域名服务”。
  2. 在域名服务页面,点击“添加域名”。
  3. 输入您要添加的域名,然后点击“确认”。

步骤 3:配置DNS记录

  1. 在域名列表中,找到您刚刚添加的域名,点击“管理”。
  2. 在域名管理页面,找到“DNS解析”或“解析设置”部分。
  3. 点击“添加记录”来配置您的DNS记录。
    以下是几种常见的DNS记录类型及其配置方式:
A记录(将域名解析到IP地址)
  • 记录类型:选择“A”
  • 主机记录:输入子域名,如“www”或直接留空表示解析主域名。
  • 解析线路:选择默认或根据需要选择特定线路。
  • 记录值:输入您的服务器IP地址。
  • TTL:选择一个合适的TTL值(如600秒)。
CNAME记录(将域名指向另一个域名)
  • 记录类型:选择“CNAME”
  • 主机记录:输入子域名,如“www”。
  • 解析线路:选择默认或根据需要选择特定线路。
  • 记录值:输入您要指向的域名,如“example.com”。
  • TTL:选择一个合适的TTL值。
MX记录(用于邮箱服务)
  • 记录类型:选择“MX”
  • 主机记录:通常留空或输入“@”。
  • 解析线路:选择默认。
  • 记录值:输入您的邮件服务器地址。
  • 优先级:输入优先级数值,越小优先级越高。

步骤 4:保存并生效

完成DNS记录配置后,点击“确认”保存设置。DNS记录通常在几分钟内生效,但可能需要最长48小时全球范围内完全生效。
在这里插入图片描述

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love6a6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值