首先将防火墙改为trusted模式
前提案例:
为虚拟机 server 配置以下虚拟Web主机
- 实现三个网站的部署
- 实现客户端访问server0.example.com网页内容为 卖女孩的小火柴
- 实现客户端访问www0.example.com网页内容为 奔跑吧骆驼
- 实现客户端访问webapp0.example.com网页内容为 20里春风不如你
服务端:
[root@server0 ~]# yum -y install httpd
root@server0 ~]# vim /etc/httpd/conf.d/zz.conf
<virtualhost *:80>
servername server0.example.com
documentroot /var/www/abc01
</virtualhost>
<virtualhost *:80>
servername www0.example.com
documentroot /var/www/abc02
</virtualhost>
<virtualhost *:80>
servername webapp0.example.com
documentroot /var/www/abc03
</virtualhost>
[root@server0 ~]# cd /var/www
[root@server0 www]# mkdir abc01 abc02 abc03
[root@server0 www]# echo ' < h1 >卖女孩的小火柴 ' > abc01/index.html
[root@server0 www]# echo '< h1>奔跑吧骆驼' > abc02/index.html
[root@server0 www]# echo '< h1>20里春风不如你' > abc03/index.html
[root@server0 www]# systemctl restart httpd
客户端:
[root@desktop0 ~]# firefox server0.example.com
[root@desktop0 ~]# firefox www0.example.com
[root@desktop0 ~]# firefox webapp0.example.com
配置目录文件
文件夹权限:
针对documentroot网页目录权限
httpd运行身份(用户/组):apache
客户机地址权限:
使用< directory >配置区段
每个文件夹自动继承其父目录的ACL访问权限
除非针对子目录有明确设置
<Directory "目标的绝对路径">
......
Require all granted | denied #允许或拒绝所有人访问
Require IP IP地址或网段 #仅允许某IP或网段访问
</Directory>
案例:
在web网站http://server0.example.com的documentroot目录下创建private子目录
要求:
1)从http://classroom/pub/materials/private.html下载一个文件副本到这个目录,重命名为index.html
2)不要对文件index.html的内容有任何修改
3)从server0上任何人都可以浏览private的内容,但从其他系统上不可以访问这个目录的内容
[root@server0 ~]# cat /etc/httpd/conf.d/zz.conf #先查看当前web的存放路径
virtualhost *:80>
servername server0.example.com
documentroot /var/www/abc01
[root@server0 ~]# mkdir /var/www/abc01/private #在当前web路径下创建private子目录
[root@server0 ~]# echo '<h1>wo shi private' > /var/www/abc01/index.html
[root@server0 ~]# cat /var/www/abc01/index.html
[root@server0 ~]# vim /etc/httpd/conf.d/xxx.conf #修改调用配置文件,只能让本机访问
<Directory "/var/www/abc01/private">
Require ip 172.25.0.11
</Directory>
[root@server0 ~]# systemctl restart httpd #重起服务
[root@server0 ~]# firefox server0.example.com/private #本机访问(其他系统是无法访问的!!!)
案例2:使用自定Web根目录
调整 Web 站点 http://server0.example.com 的网页目录,要求如下:
1)新建目录 /webroot,作为此站点新的网页目录
2)从http://classroom/pub/materials/private.html下载一个文件副本到这个目录,重命名为index.html
3)不要对文件index.html的内容有任何修改
4)确保站点hhtp://server0.example.com仍然可以访问
[root@server0 ~]# mkdir /webroot #创建目录
[root@server0 ~]# echo '<h1>wo shi webroot' > /webroot/index.html
[root@server0 ~]# cat /webroot/index.html
<h1>wo shi webroot
[root@server0 ~]# vim /etc/httpd/conf.d/xx.conf #针对/webroot网页进行访问控制
<Directory "/webroot">
Require all granted #允许所有人访问
</Directory>
[root@server0 ~]# vim /etc/httpd/conf.d/zz.conf #修改调用配置文件
<virtualhost *:80>
servername server0.example.com
documentroot /webroot
</virtualhost>
[root@server0 ~]# systemctl restart httpd #重起服务(此时服务无法启动,显示没有权限)
[root@server0 ~]# ls -Zd /webroot #查看该目录的上下文信息
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /webroot
[root@server0 ~]# ls -Zd /var/www #查看目录的上下文信息
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www
[root@server0 ~]# chcon -R --reference=/var/www /webroot #重新设置目录属性
[root@server0 ~]# ls -Zd /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www
[root@server0 ~]# ls -Zd /webroot
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /webroot
[root@server0 ~]# systemctl restart httpd #重起服务
SELinux策略:布尔值 安全上下文值 非默认端口的开放
安全上下文值:非默认端口开放,类似于标签,起标识作用
chcon -R --reference=模板目录 新目录
部署动态网站
静态网站的运行
• 服务端的原始网页 = 浏览器访问到的网页
– 由Web服务软件处理所有请求
– 文本(txt/html)、图片(jpg/png)等静态资源
动态网站的运行
• 服务端的原始网页 ≠ 浏览器访问到的网页
– 由Web服务软件接受请求,动态程序转后端模块处理
– PHP网页、Python网页、JSP网页…
一、下载Python页面文件
为站点 webapp0.example.com 配置提供动态Web内容
[root@server0 ~]# cat /etc/httpd/conf.d/zz.conf #查看当前网页文件默认路径
[root@server0 ~]# cd /var/www/qwe #切换到默认网页路径
[root@server0 qwe]# wget http://classroom.example.com/pub/materials/webinfo.wsgi #下载Python页面文件
[root@server0 qwe]# cat webinfo.wsgi
#!/usr/bin/env python
import time
def application (environ, start_response):
response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
status = '200 OK'
response_headers = [('Content-Type', 'text/plain'),
('Content-Length', '1'),
('Content-Length', str(len(response_body)))]
start_response(status, response_headers)
return [response_body]
[root@server0 qwe]# vim /etc/httpd/conf.d/zz.conf #修改调用配置文件
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/abc03
Alias / /var/www/abc03/webinfo.wsgi
#当客户端直接访问 网页文件根目录时,呈现/var/www/abc03/webinfo.wsgi
</VirtualHost>
[root@server0 qwe]# systemctl restart httpd
[root@server0 ~]# yum -y install mod_wsgi #安装mod_wsgi软件,可以翻译执行Python页面的代码
[root@server0 ~]# vim /etc/httpd/conf.d/zz.conf #修改调用配置文件
Listen 8909 #设置httpd程序监听8909端口
<VirtualHost *:8909> #设置本虚拟Web主机将在8909端口呈现
ServerName webapp0.example.com
DocumentRoot /var/www/abc03
WsgiScriptAlias / /var/www/abc03/webinfo.wsgi
</VirtualHost>
[root@server0 ~]# semanage port -a -t http_port_t -p tcp 8909 #修改非默认端口的开放策略 -a 添加 -t 类型 -p 协议
[root@server0 ~]# systemctl restart httpd #重起服务
页面跳转:Alias 网络路径 实际呈现的网页文件路径
网络路径 /:网页文件的根目录,匹配客户端浏览器中直接输入域名
安全Web服务
http:超文本传输协议
https:安全的超文本传输协议
PKI公钥基础设施
• Public Key Infrastructure,公钥基础设施
– 公钥:主要用来加密数据
– 私钥:主要用来解密数据(与相应的公钥匹配)
– 数字证书:证明拥有者的合法性/权威性(单位名称、有效期、公钥、颁发机构及签名、…)
– Certificate Authority,数字证书授权中心:负责证书
的申请/审核/颁发/鉴定/撤销等管理工作
虚拟机server:构建安全的Web,以www0.example.com为例
1.下载网站证书(营业执照)
[root@server0 ~]# cd /etc/pki/tls/certs/
[root@server0 certs]# wget http://classroom/pub/tls/certs/server0.crt
2.下载根证书(工商局信息)
[root@server0 certs]# wget http://classroom/pub/example-ca.crt
3.下载私钥(解密数据)
[root@server0 certs]# cd ..
[root@server0 tls]# cd private/
[root@server0 private]# wget http://classroom/pub/tls/private/server0.key
4.下载软件,支持安全的加密通信
[root@server0 ~]# yum remove mod_ssl
5.修改配置文件
[root@server0 ~]# vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/server0.crt
SSLCertificateKeyFile /etc/pki/tls/private/server0.key
SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt
6.重起服务
[root@server0 ~]# systemctl restart httpd
7.客户端访问
[root@desktop0 ~]# firefox www0.example.com
Samba共享(共享文件)
Samba共享服务,专门用于Windows和Linux跨平台的共享
NFS共享,专门用于Linux和Linux之间的共享
服务端:
1.安装Samba软件
[root@server0 ~]# yum -y install samba
建立Samba共享用户(账号):专用于访问Samba共享的时候,验证的用户,基于本地用户,需要设置Samba共享独立的密码
2.创建用户,将其加入Samba共享用户,为其设置密码
[root@server0 ~]# useradd zzz
[root@server0 ~]# pdbedit -a zzz
new password:
retype new password:
[root@server0 ~]# pdbedit -L #查看该用户是否存在
zzz:1001:
3.创建Samba共享的目录
[root@server0 ~]# mkdir /asd
[root@server0 ~]# echo 1233465 > /asd/a.txt
4.修改配置文件
[root@server0 ~]# vim /etc/samba/smb.conf
[haha] #在文件末尾书写
path = /asd
[root@server0 ~]# systemctl restart smb
5.修改SELinux策略:布尔值(功能的开关)
[root@server0 ~]# getsebool -a | grep samba #查看当前布尔值
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
[root@server0 ~]# setsebool samba_export_all_ro on #修改布尔值
[root@server0 ~]# getsebool -a | grep samba #再次查看布尔值
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> on
6.重起服务
[root@server0 ~]# systemctl restart smb
客户端:
1.安装软件
[root@desktop0 ~]# yum -y install cifs-utils
2.挂载访问
NFS格式: mount IP地址:/共享的路径 挂载点目录
Samba格式:mount -o user=xxxxx,pass=xxxxx //IP地址/共享名 挂载点目录
[root@desktop0 ~]# mount -o user=zzz,pass=123 //172.25.0.11/haha /mnt
3.设置开机自启
[root@desktop0 ~]# vim /etc/fstab
//172.25.0.11/haha /mnt cifs defaults,user=zzz,pass=123,_netdev 0 0
[root@desktop0 ~]# umount /mnt
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
来源:CSDN
作者:tian1345
链接:https://blog.csdn.net/tian1345/article/details/103519655