avatar

Catalog
网络安全基础06(上):WEB服务器

定义

Web服务器又称网页服务器HTTP服务器

协议

协议,是通话的前提;客户端想要与服务端进行通信,就需要满足规定的协议。拿前两天学习的DHCP与DNS协议来说,Win+R,输入services.msc,查看本地服务。

可以发现,当前主机作为DHCP和DNS的客户端,这两个服务都是打开的,若是将它们关闭,则当前主机无法再自动获取IP地址或是对域名进行解析了,而想要从服务端获取服务,就要遵循相应的协议,所有的通信都是建立在遵循同一套协议的基础上。Web服务器使用的是协议是HTTPHTTPS

端口

HTTP协议端口号:TCP80

HTTPS协议端口号:TCP443

Web服务器发布软件

网站,需要包含多个网页,也需要具备IP地址,DNS以及端口相关信息。想要发布一个网站供人们访问,就需要通过web服务器发布软件,下面介绍几类:

  • 微软:IIS(可发布Web网站和FTP站点)
  • Linux:Apache/LAMP/Tomcat/Nginx .etc
  • 第三方:phpStudy、XAMPP(均内嵌LAMP,主要用于学习和测试)

网站类型

  1. 静态网站:一般扩展名为.html或.htm,无后台数据库。
  2. 动态网站:这里需要稍作扩展的讲一下,在过去,没有前端这个概念,排版布局,页面渲染,数据库查询动态数据都会放在一起。能够实现这种功能的语言,例如PHP,就很受欢迎。那段时期,动态网站的扩展名通常为.asp或.php。现如今,前后端已经分离,并迈入了云端时代,网站界面通常用框架编写,会混入大量逻辑,文件可能是.tpl .vue .jsx这种框架独有格式的文件,但最后编译打包时,都会转为对应的html和js文件。前端和后台数据逻辑,已经分开了。

实验

实验环境:客户机(Windows XP)、服务端(Windows 2003)

Web服务器发布软件:IIS

安装IIS

  1. 进入Windows组件向导(参考DNS安装) -> 应用程序服务器 -> Internet信息服务(IIS) -> 勾上万维网服务(会自动勾上公用文件),这里把下一篇要用到的文件传输协议(FTP)服务也给勾上。完成安装后,可以在管理工具中找到IIS。

  2. 安装之后,进入命令行输入netstat -an,可以发现,21端口(ftp)与80端口(http)已经打开。

发布网站

  1. 打开IIS管理器软件,在网站目录下,可以看到一个默认网站

  2. 我们试图去访问一下这个默认网站,切换到客户机(Windows XP),打开任一游览器,访问10.1.1.1(服务器地址)。会看到如下所示情形。

  3. 这并不是访问出错了,切回服务器(Windows 2003),在C盘下,可以看到一个叫做Inetpub目录,进入后会发现有多个目录,其中wwwroot这个目录就是存放网站信息的目录

  4. 进入后,会看到一个.htm文件,点开它,会发现它就是先前从客户机访问的网站。验证了刚刚实验的成功。

  5. 接下来,我们自己手动发布一个网站,网站是由网页和站点组成的,所以我们需要先编写一个网页,为了方便,这里只简单编写一个html文件,并将其存到指定目录下,名为index.html。

  6. 回到IIS管理器,选择网站,右键->新建->网站,关于网站描述,随便写就可以了,这里填的是Web0x1。

  7. 下一步,这里分别需要配置IP,端口以及主机头,这三个单位在部署多个站点时会有所用处。这里IP地址有两个选项,选择全部未分配时,会任意选择当前主机(服务器)下的IP地址作为网站的IP地址,由于当前只有一个IP地址,所以无论选择哪个都无所谓。端口这里默认填写80,主机头默认就不填了。后面会说到。

  8. 然后填写路径,这里选择刚刚编写的网页所在文件夹的路径。这里允许匿名访问网站一定要勾上!不然访问个网站还让你输用户名密码啥的

  9. 来到下一步,完成后情况如下。为了不影响实验,这里先把默认网站给它停止运行。右键Web0x1进入属性->文档。在右侧添加,将先前编写的index.html添加到默认内容文档,并移到最上方。保存设置。

  10. 这时,我们回到客户机(Windows XP)上来,再次试图访问10.1.1.1(服务器地址),就可以看到先前编写的index.html作为网站页面出现。

  11. 这里作个小结,在使用IIS发布网站时需要指定网站的IP,端口,以及主机头值(域名),在IP与端口确定的情况下,也可以不指定主机头值。此外需要设置网站属性,将要展示的页面,放到默认文档的最前面,这样访问时,就可以直接打开该网页。

部署多个站点

前面学习了使用IIS发布网站,但是一个服务器只发布一个网站,那实在太浪费了,假设公司想弄一个业务系统出来,同样放在这个服务器上,该如何操作呢?接下来就介绍如何在一个Web服务器上部署多个站点:

  1. 首先,创建一个网页(为了方便,就不写一个业务系统了,随意写一个简单网页)

  2. 接着,新建一个网站,描述就写Web0x2,其它和手动发布网站一样,选择上一步创建的网页。创建完发现,该网站默认被停止运行了,当我们试图启动时,会出现如下弹窗。

  3. 它告诉我们,80端口已经被占用了,需要重新绑定端口号,进入Web0x2属性,在网站一栏,找到TCP端口,将其设置为任一1000以上的端口号即可。完了别忘记在文档一栏,将该站点对应的网页添加并移到默认内容文档的最上方。

  4. 设置完后,切回客户机,当访问10.1.1.1:8080时,就会进入Web0x2站点对应的网页,当访问10.1.1.1:80时就会进入Web0x1站点对应的网页(http协议默认是80端口因此会不显示)。这是通过控制端口完成对单服务器多网站的实现。

  5. 当然,除了控制端口,也可以通过控制IP地址来实现,首先进入服务器(Windows 2003),给它增加一个地址。操作如下图所示

  6. 然后修改Web0x2,将其IP地址修改为10.1.1.3,端口则改回80

  7. 也可以实现单服务器多网站

  8. 虽然控制IP或者端口都可以实现单服务器部署多个网站的操作,但这不是最优解。因为用户不会记住你的IP或者是端口,真实网站发布时也是如此,所以才有了第三种方法,通过设定网站主机头,也就是域名,来实现同样的操作。这里进行演示,例如进入Web0x2的属性后,选择网站->高级->编辑,设定主机值。然后对Web0x1使用类似的操作。

  9. 接下来就可以按照前一篇DNS正向解析的方式,给两个网站分别在正向查找区域中创建一个区域,并添加主机记录

  10. 再回到客户机(Windows XP),将DNS服务器指向我们的Windows 2003系统。此时便可通过域名访问同一台服务器上的不同站点了。在同IP地址,同端口的情况下。但是这样就不可以通过IP访问了。

动态网站部署(旧)

这里就不进行完整的过程演示了,现如今,Asp项目在网上也已经很难找到了。不过对于sql注入等手法还是很有学习意义,这里只简单说明一下部署过程。

  1. DNS服务中新增一条关于此网站域名的正向解析记录。
  2. IIS中创建网站,勾上运行脚本(如ASP)和执行(如ISAPI应用程序或CGI)这两个选项。
  3. 网站属性中,找到对应的首页(如index.asp,default.asp),将其放到默认文档的最前面。
  4. 视频中介绍利用时有点翻车,进入网站属性->主目录->配置->选项->启用父路径。经此操作后,可以在前端页面通过首页访问首页所在目录的子目录下的网页。我对这里的疑问在于,既然可以设置服务器选项了,那么也没有必要去从前端进入控制台了。

端口小结

Code
1
2
3
4
5
6
7
3389端口:	远程桌面
23端口: telnet
445端口: 共享服务
UDP67, 68: DHCP
53端口: DNS
TCP80: HTTP
TCP443: HTTPS

参考资料

参考教程:

参考链接:

Author: cataLoc
Link: http://cataloc.gitee.io/blog/2020/09/30/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%9F%BA%E7%A1%8006-%E4%B8%8A-Web%E6%9C%8D%E5%8A%A1%E5%99%A8/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶