您的位置:首页 > 理论基础 > 计算机网络

linux学习笔记-工程师技术:HTTP服务基础(Web服务基本搭建)、网页内容访问、安全Web服务、动态网站的部署

2017-11-05 21:43 1206 查看
两台虚拟机,均要检测

1.IP地址 ifconfig
2.是否可以解析,nslookup server0.example.com
3.Yum是否可用 yum repolist
4.防火墙默认区域修改为trusted
-------------------------------------------------------------------------------------------

HTTP服务基础
Web通信基本概念

基于 B/S (Browser/Server)架构的网页服务
B/S服务是C/S服务衍生出的
– 服务端提供网页(下载提供相关服务的软件)
– 浏览器下载并显示网页
HTML(Hyper Text Markup Language),超文本标记语言
编写网页的语言
作用:是静态网页文件的标记规范。

HTTP(Hyper Text Transfer Protocol),超文本传输协议,默认端口:80
客户端访问服务端网页需要通过此协议
作用:主要为网站服务器程序与浏览器之间传输网页定义相关的标准。

客户端通过浏览器访问,服务端通过软件包(httpd,nginx,tomcat等)提供相应服务

RHEL7的Web服务
软件包:httpd
系统服务:httpd
提供的默认配置
– Listen:监听地址:端口(80)
– ServerName:本站点注册的DNS名称(空缺)
– DocumentRoot:网页根目录(/var/www/html):存放网页程序的
举例https://zhidao.baidu.com/question/20112828.html https://zhidao.baidu.com/就是根目录 https://zhidao.baidu.com/question/20112828.html根目录下的子目录

– DirectoryIndex:起始页/首页文件名(index.html)

默认站点域名的网页根目录是/var/www/html
-------------------------------------------------------------------------------------------
一、搭建基本Web服务
虚拟机Server0上:
1.安装httpd软件
2.启动httpd服务,并且设置 为开机自起
3.书写 网页文件
elinks:纯字符命令的浏览器
elinks-dump(纯字符)
# echo Kobe Bryant > /var/www/html/index.html #书写网页内容为Kobe Bryant

虚拟机Desktop0上:
# yum -y install elinks #安装elinks软件包
# elinks -dump 172.25.0.11/server0.example.com #IP或域名都行
Kobe Bryant

------------------------------------------------------------------------------------------
– ServerName:本站点注册的DNS名称(空缺)
classroom默认分配的域名:server0.example.com
www0.example.com
webapp0.example.com

虚拟机Server0上:
1.修改主配置文件的内容/etc/httpd/conf/httpd.conf
vim中命令行模式全文查找:/ServerName

95行: ServerName server0.example.com:80

2. 重起httpd服务

虚拟机Desktop0上:
# elinks -dump server0.example.com

补充: vim 命令模式
4yy:复制光标以下的4行
p:粘贴

------------------------------------------------------------------------------------------

– 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

通过server0.example.com此域名将/var/www/abc/index.html此目录提供给客户端提供网页内容

补充: ::1 #ipv6的本机回环测试

-------------------------------------------------------------------------------------------

虚拟Web主机
– 由同一台服务器提供多个不同的Web站点

区分方式
– 基于域名的虚拟主机
– 基于端口的虚拟主机
– 基于IP地址的虚拟主机

配置文件路径
– /etc/httpd/conf/httpd.conf #主配置文件
– /etc/httpd/conf.d/*.conf #从配置文件(从主配置文件调用)
主配置文件内容太多,庞杂,修改起来比较麻烦,可以用从配置文件调用主配置文件,简洁高效

man帮助文档:
#man /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
<VirtualHost *:@@Port@@>
ServerAdmin webmaster@dummy‐host2.example.com
DocumentRoot "@@ServerRoot@@/docs/dummy‐host2.example.com"
ServerName dummy‐host2.example.com
ErrorLog "/var/log/httpd/dummy‐host2.example.com‐error_log"
CustomLog "/var/log/httpd/dummy‐host2.example.com‐access_log"
common </VirtualHost>
在从配置文件中修改:
1.建立从配置文件
[root@server0 ~]# 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. 建立目录及相应的网页内容
#mkdir /var/www/test
#mkdir /var/www/nsd
# echo wo shi test > /var/www/test/index.html
# echo wo shi nsd > /var/www/nsd/index.html
3. 重起httpd服务

-------------------------------------------------------------------------------------------
启用虚拟Web主机,所有的站点都必须用虚拟Web主机来实现

保证 server0.example.com可以访问

1.修改从配置文件
[root@server0 ~]# 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服务访问控制(ACL)

虚拟机server0:
1.创建目录与网页文件
# mkdir /var/www/abc/private
# echo 小蝌蚪找妈妈 > /var/www/abc/private/index.html
# cat /var/www/abc/private/index.html
2.建立新的从配置文件
[root@server0 ~]# 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
若要desktop0也访问成功,则在新建的从配置文件里添加ip:
Require ip 172.25.0.11 172.25.0.10 127.0.0.1

-------------------------------------------------------------------------------------------
思路:客户端访问服务端资源
1.防火墙是否限制
2.服务本身的访问控制
3.SELinux 是否限制

SELinux策略保护

1.安全上下文(标签) chcon修改对象的安全上下文(标签)
从配置文件里修改
[root@server0 ~]# chcon -R(递归) --reference=/var/www /webroot #参考/var/www目录为模板设为新目录/webroot

方式1:参照标准目录,重设新目录的属性
– chcon [-R] --reference=模板目录 新目录

使用自定Web根目录 /Webroot
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

3.修改访问控制配置文件,/etc/httpd/conf.d/nsd02.conf
<Directory "/webroot">
Require all granted
</Directory>

4.修改SELinux标签值,只允许访问目录/webroot的内容
# 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软件包
[root@server0 ~]# yum -y install mod_ssl
[root@server0 ~]# ls /etc/httpd/conf.d/ssl.conf

2.部署网站的证书(营业执照) certs(证书)
# 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.部署私钥(用于解密) private(密钥)
# 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

6.重起httpd服务

虚拟机desktop0上验证:
[root@desktop0 ~]# firefox https://server0.example.com #页面显示连接不受信任,选择“我已充分了解可能的风险”确认安全例外 ,网页已加密
------------------------------------------------------------------------------------------
部署动态网站

静态网站的运行
服务端的原始网页 = 浏览器访问到的网页

动态网站的运行
服务端的原始网页 ≠ 浏览器访问到的网页
– 由Web服务软件接受请求,动态程序转后端模块处理

案例6:部署并测试WSGI站点

1.安装支持Python软件mod_wsgi
[root@server0 /]# 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上查看,可以看到源代码
# yum -y install mod_wsgi
# 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 #显示时间戳
UNIX EPOCH time is now: 1509760256.37

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 #查看允许的端口
# semanage port -a -t http_port_t -p tcp 8909 #添加端口
# semanage port -l | grep http
# elinks -dump webapp0.example.com:8909
拒绝连接的原因:要检查SElinux访问权限,防火墙权限和服务端的访问权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  计算机 红帽 达内
相关文章推荐