HTTP服务基础 网页内容访问 安全Web服务 部署动态网站-day09
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP服务基础 网页内容访问 安全Web服务 部署动态网站-day09相关的知识,希望对你有一定的参考价值。
############################################################################################
检测两台虚拟机:
1.ip地址
#ifconfig | head -2
2.检测dns是否可以解析
#vim /etc/resolv.conf //dns配置文件
#nslookup desktop0.example.com //dns检测
3.检测yum是否可以使用
#yum clean all //清空yum缓存
#yum repolist
4.将防火墙默认区域设置为trusted
#firewall-cmd --set-default-zone=trusted //设置防火墙默认区域
#firewall-cmd --get-default-zone //查看防火墙默认区域
###########################################################################################
基于 B/S (Browser/Server)架构的网页服务
– 服务端提供网页
– 浏览器下载并显示网页
Hyper Text Markup Language,超文本标记语言
Hyper Text Transfer Protocol,超文本传输协议
软件包:httpd
系统服务:httpd
提供的默认配置
– Listen:监听地址:端口(80)
– ServerName:本站点注册的DNS名称(空缺)
– DocumentRoot:网页根目录(/var/www/html)
– DirectoryIndex:起始页/首页文件名(index.html)
############################################################################################
一、搭建基本Web服务
虚拟机Server0上:
1.安装httpd软件
2.启动httpd服务,并且设置 为开机自起
3.书写 网页文件
# echo My First Web > /var/www/html/index.html
虚拟机Desktop0上:
# elinks -dump 172.25.0.11 //通过ip地址进行访问
##########################################################################################
– ServerName:本站点注册的DNS名称(空缺)
虚拟机Server0上:
1.修改主配文件的内容/etc/httpd/conf/httpd.conf
vim中命令行模式全文查找: /ServerName
ServerName server0.example.com:80
2. 重起httpd服务
虚拟机Desktop0上:
# elinks -dump server0.example.com //通过域名进行访问
######################################################################################3####
– DocumentRoot:网页根目录(/var/www/html)
虚拟机Server0上:
1.修改主配文件的内容/etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/abc"
2.创建目录/var/www/abc
3.重起httpd服务
4.书写网页文件
# echo wo shi abc > /var/www/abc/index.html
虚拟机Desktop0上:
# elinks -dump server0.example.com //访问的目录不再是/var/www/html 变为/var/www/abc
注意:修改配置文件将网页根目录改为(DocumentRoot “/var/www/abc”),创建目录(mkdir /var/www/abc),最后重启服务。
##########################################################################################
虚拟Web主机
– 由同一台服务器提供多个不同的Web站点
区分方式
– 基于域名的虚拟主机
– 基于端口的虚拟主机
– 基于IP地址的虚拟主机
配置文件路径
– /etc/httpd/conf/httpd.conf #主配置文件
– /etc/httpd/conf.d/*.conf #从配置文件
帮助文档:/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
1.建立从配置文件
[[email protected] ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
DocumentRoot /var/www/test
ServerName www0.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/nsd
ServerName webapp0.example.com
</VirtualHost>
2. 建立目录及相应的网页内容
# echo wo shi test > /var/www/test/index.html
# echo wo shi nsd > /var/www/nsd/index.html
3. 重起httpd服务
注意:1.为什么可以访问显示网页,因为系统会读取从配置文件;为什么会读取从抛弃只文件,因为在主配置文件底部有这样一条配置IncludeOptional conf.d/*.conf。
2.在书写配置文件时,一定要细心,本次实验中曾将/var/www/nsd/错误的写为/var/www/nad ,导致的结果为404 Not Found (找不到网页)。
#################################################
启用虚拟Web主机,所有的站点都必须用虚拟Web主机来实现
保证 server0.example.com可以访问
1.修改从配置文件
[[email protected] ~]# vim /etc/httpd/conf.d/nsd01.conf
追加写入
<VirtualHost *:80>
DocumentRoot /var/www/abc
ServerName server0.example.com
</VirtualHost>
2. 重起httpd服务
虚拟机Desktop0上:
# elinks -dump server0.example.com
#####################################################################################################
httpd服务访问控制
虚拟机server0:
1.创建目录与网页文件
# mkdir /var/www/abc/private
# echo 小蝌蚪找妈妈 > /var/www/abc/private/index.html
# cat /var/www/abc/private/index.html
2.建立新的配置文件
[[email protected] ~]# vim /etc/httpd/conf.d/nsd02.conf
<Directory "/var/www/abc/private">
Require ip 172.25.0.11 127.0.0.1 #仅允许本机访问
</Directory>
3 重起httpd服务
测试: 在Desktop0上访问失败,在Server0上访问可以
elinks -dump server0.example.com/private
#########################################################################################
思路:客户端访问服务端资源
1.防火墙是否限制
2.服务本身的访问控制
3.SELinux 是否限制
SELinux策略保护
1.安全上下文(标签)
[[email protected] ~]# chcon -R --reference=/var/www /webroot
方式1:参照标准目录,重设新目录的属性
– chcon [-R] --reference=模板目录 新目录
使用自定Web根目录
1.修改配置文件 /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
DocumentRoot /webroot
ServerName server0.example.com
</VirtualHost>
2.创建目录与网页文件
# mkdir /webroot
# echo wo shi webroot > /webroot/index.html
注释:当我们将配置文件中的web根目录改为/webroot ,为什么访问不成功?
<Directory />
AllowOverride none
Require all denied
</Directory>
因为在主配置文件当中,我们时拒绝访问/下面的内容的,只允许访问/var/www/下的内容。所以我们修改访问控制文件nsd02.conf
3.修改访问控制配置文件,/etc/httpd/conf.d/nsd02.conf
<Directory "/webroot">
Require all granted
</Directory>
注释:当我们允许客户端访问/webroot时,为什么还是访问不了网站内容?
因为SElinux,当客户端访问时,SElinux只是允许访问以下文件/etc/httpd/conf/httpd.conf;/etc/httpd/conf.d/*.conf;/var/www,所以拒绝访问。我们可以通过查看SElinux标签值来验证。
# ls -Zd /var/www //查看SElinux标签值
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www
# ls -Zd /webroot
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /webroot
标签值不同SElinux拒绝访问;
4.修改SELinux标签值
# chcon -R --reference=/var/www /webroot
5.重起httpd服务验证
6.在Desktop0上: elinks -dump server0.example.com
########################################################################################## 安全Web服务
安全的超文本协议 https 端口为:443
PKI公钥基础设施
Public Key Infrastructure,公钥基础设施
– 公钥:主要用来加密数据
– 私钥:主要用来解密数据(与相应的公钥匹配)
– 数字证书:证明拥有者的合法性/权威性(单位名称、
有效期、公钥、颁发机构及签名、......)
– Certificate Authority,数字证书授权中心:负责证书
的申请/审核/颁发/鉴定/撤销等管理工作
HTTPS 加密Web通信(TCP 443端口)
– Secure Sockets Layer ,安全套接字层
– Transport Layer Security,安全传输层协议
实现条件
– 启用 SSL 模块支持
– 部署好加密素材:网站服务器的数字证书、网站服务
器的私钥、根证书(CA管理机构的证书)
虚拟机server0上操作:
1.安装mod_ssl软件包
[[email protected] ~]# yum -y install mod_ssl
[[email protected] ~]# ls /etc/httpd/conf.d/ssl.conf
2.部署网站的证书(营业执照)
# cd /etc/pki/tls/certs/
# wget http://172.25.254.254/pub/tls/certs/server0.crt
3.部署网站的根证书(公安局信息)
# cd /etc/pki/tls/certs/
# wget http://172.25.254.254/pub/example-ca.crt
4.部署私钥(用于解密)
# cd /etc/pki/tls/private/
# wget http://172.25.254.254/pub/tls/private/server0.key
5.修改配置文件/etc/httpd/conf.d/ssl.conf
<VirtualHost _default_:443>
59行 DocumentRoot "/webroot"
60行 ServerName server0.example.com:443
100行 SSLCertificateFile /etc/pki/tls/certs/server0.crt //数字证书 (单位名称,有效期,公钥等。。。。)
107行SSLCertificateKeyFile /etc/pki/tls/private/server0.key //私钥 用于解密
122行SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt //数字证书授权中心(CA)
6.重起httpd服务
虚拟机desktop0上验证:
[[email protected] ~]# firefox https://server0.example.com //导航栏出现一把锁,表示成功。
#######################################################################################
部署动态网站
静态网站的运行
服务端的原始网页 = 浏览器访问到的网页
动态网站的运行
服务端的原始网页 ≠ 浏览器访问到的网页
– 由Web服务软件接受请求,动态程序转后端模块处理
案例6:部署并测试WSGI站点
1.安装支持Python软件
[[email protected] /]# yum -y install mod_wsgi
2.切换到相应/var/www/nsd目录下载动态页面
# cd /var/www/nsd/
# wget http://172.25.254.254/pub/materials/webinfo.wsgi
# cat webinfo.wsgi
3.在Desktop0上查看,可以看到源代码
# firefox webapp0.example.com/webinfo.wsgi //显示的为源代码
4.server0上修改 /etc/httpd/conf.d/nsd01.conf
/var/www/nsd ==== 客户端的 /
<VirtualHost *:80>
DocumentRoot /var/www/nsd
ServerName webapp0.example.com
alias / /var/www/nsd/webinfo.wsgi //别名设置,直接访问/var/www/nsd/相当于访问/var/www/nsd/webinfo.wsgi
</VirtualHost>
5.重起httpd服务验证
6.验证
# elinks -dump webapp0.example.com
7.server0上修改 /etc/httpd/conf.d/nsd01.conf
/var/www/nsd ==== 客户端的 /
<VirtualHost *:80>
DocumentRoot /var/www/nsd
ServerName webapp0.example.com
wsgiscriptalias / /var/www/nsd/webinfo.wsgi
</VirtualHost>
8.重起httpd服务验证
9.验证
# elinks -dump webapp0.example.com
UINX时间戳:自1970-1-1 0:0:0到达当前所经过的秒数
#####################################################################################################
10.修改webapp0.example.com监听端口8909
server0上修改 /etc/httpd/conf.d/nsd01.conf
Listen 8909
<VirtualHost *:8909>
DocumentRoot /var/www/nsd
ServerName webapp0.example.com
wsgiscriptalias / /var/www/nsd/webinfo.wsgi
</VirtualHost>
11. SELinux 限制非默认端口 8909
# semanage port -l | grep http #查看允许的端口
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
# semanage port -a -t http_port_t -p tcp 8909 #添加端口
# semanage port -l | grep http //查看允许的端口
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 8909, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
# elinks -dump webapp0.example.com:8909
以上是关于HTTP服务基础 网页内容访问 安全Web服务 部署动态网站-day09的主要内容,如果未能解决你的问题,请参考以下文章
linux学习笔记-工程师技术:HTTP服务基础(Web服务基本搭建)网页内容访问安全Web服务动态网站的部署