12:构建一个web服务器
实验环境
主机名称 | 操作系统 | IP地址 / 域名 |
---|---|---|
system1 | RHEL7 | 172.24.10.11 / system1.group10.example.com |
system2 | RHEL7 | 172.24.10.12 / system2.group10.example.com |
server | RHEL7 | server.group10.example.com |
针对RHCE考点:
1.apache的默认目录/var/www/html相关配置
2.wget -O /var/www/html/index.html
3.<requireall >下的配置要求,指域名下的客户端可访问web,拒绝某域的访问Require not hosts
第一步:装包
system1:
yum install -y httpd httpd-manual
systemctl enable httpd #(安装HTTP软件包并设置开机自启)
第二步:改配置文件
#修改配置文件(此环境针对RHCE考试仅修改域名,生产环境视情况而定)
vim /etc/httpd/conf/httpd.conf
# If your host doesn't have a registered DNS name, enter its IP address here.
ServerName system1.group10.example.com:80 #(此为修改内容)
第三步:下载html代码
#下载服务端html代码#(地址随服务端为准)
wget -O /var/www/html/index.html http://server/pub/system1.html
systemctl restart httpd
第四步:配置防火墙规则(firewalld)
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=172.24.10.0/24 service name=http accept"
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=172.13.10.0/24 service name=http reject"
firewall-cmd --reload
第五步:测试访问
curl http://system1.group10.example.com #(出现html有效内容即为成功)
13:配置安全web服务
第一步:装包
system1:
yum install -y mod_ssl
第二步:配置防火墙(https)
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
第三步:下载证书:
wget -O /etc/pki/tls/certs/system1.crt http://server/pub/tls/certs/system1.crt
wget -O /etc/pki/tls/private/system1.key http://server/pub/tls/private/system1.key
wget -O /etc/pki/tls/certs/ssl-ca.crt http://server/pub/tls/certs/ssl-ca.crt
chmod 0600 /etc/pki/tls/private/system1.key
第四步:编写配置文件
虚拟主机的配置语法可以参照: /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
TLS 的配置语法请参照: /etc/httpd/conf.d/ssl.conf
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName system1.group10.example.com
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName system1.group10.example.com
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/pki/tls/certs/system1.crt
SSLCertificateKeyFile /etc/pki/tls/private/system1.key
SSLCertificateChainFile /etc/pki/tls/certs/ssl-ca.crt
</VirtualHost>
#检查语法
httpd -S
#重启HTTP服务
systemctl restart httpd
第五步:访问测试
#测试访问:
curl -k https://system1.group10.example.com
14:配置虚拟主机
准备(确保解析正常): ping www10.group10.example.com
第一步:创建目录并做ACL规则,以及检查上下文
mkdir -p /var/www/virtual
setfacl -m u:andy:rwx /var/www/virtual
getfacl /var/www/virtual
ls -lZd /var/www/virtual
drwxrwxr-x+ root root unconfined_u:object_r:httpd_sys_content_t:s0
#如果安全上下文不正确使用以下命令恢复
restorecon -R /var/www/virtual
第二步:下载网页
wget -O /var/www/virtual/index.html http://server/pub/www10.html
第三步:修改配置文件
编辑虚拟主机配置文件 vim /etc/httpd/conf.d/vhost.conf,增加*:80 配置项:
#vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
DocumentRoot "/var/www/virtual"
ServerName www10.group10.example.com
</VirtualHost>
#执行语法检查
httpd -S
#重启httpd服务
systemctl restart httpd
第四步:测试
[root@system2 ~]# curl http://www10.group10.example.com
Site:www10.group10.example.com
在 system1 上,测试 andy 创建文件:
[root@system1 ~]# su - andy
-bash-4.2$ touch /var/www/virtual/11.html
-bash-4.2$ ls /var/www/virtual/
11.html index.html
15:配置 WEB 内容的访问控制
第一步:创建目录
在system1:
mkdir /var/www/html/private
mkdir /var/www/virtual/private
第二步:下载html网页内容
wget -O /var/www/html/private/index.html http://server/pub/private.html
wget -O /var/www/virtual/private/index.html http://server/pub/private.html
第三步:添加配置文件
vim /etc/httpd/conf.d/vhost.conf (此配置语法在主配置文件有例子)
#添加以下内容:
<Directory "/var/www/html/private/">
AllowOverride none #禁用.htaccess 文件,可以不写,不影响访问
Require all denied #拒绝所有用户访问
Require local #但允许本地用户访问,满足题意要求
</Directory>
<Directory "/var/www/virtual/private/">
AllowOverride none #禁用.htaccess 文件,可以不写,不影响访问
Require all denied #拒绝所有用户访问
Require local #但允许本地用户访问,满足题意要求
</Directory>
#检查语法
httpd -S
#重启httpd
systemctl restart httpd
第四步:测试
在 system1 上测试:
curl http://www10.group10.example.com/private/
This a private file,only for local access!
curl http://system1.group10.example.com/private/
This a private file,only for local access!
在system2 上测试:
curl http://www10.group10.example.com/private/
\#You don't have permission to access /private/
curl http://system1.group8.example.com/private/
\#You don't have permission to access /private/
16:动态 WEB 内容
第一步:装包(mod_wsgi)
yum install -y mod_wsgi
ping wsgi
第二步:添加防火墙
firewall-cmd --add-rich-rule="rule family=ipv4 source address=172.24.10.0/24 port port=8909 protocol=tcp accept" --permanent
firewall-cmd --reload
第三步:配置 8909 端口 SELinux 上下文
semanage port -a -t http_port_t -p tcp 8909 (记)
第四步:修改配置文件
vim /etc/httpd/conf/httpd.conf
#vim /etc/httpd/conf/httpd.conf
Listen 80
Listen 8909
vim /etc/httpd/conf.d/vhost.conf 增加配置项
#vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:8909>
ServerName wsgi.group10.example.com
WSGIScriptAlias / /var/www/html/webinfo.wsgi
</VirtualHost>
#检查语法
httpd -S
第五步:下载 cgi 文件:
wget -O /var/www/html/webinfo.wsgi http://server/pub/webinfo.wsgi
#重启服务
systemctl restart httpd
第六步:测试
#分别在 system1 和 system2 上测试访问:
curl http://wsgi.group10.example.com:8909