【Linux系统】第13节 CentOS系统中采用Apache发布网站以及访问控制配置详解

1 CentOS系统中Apache的安装

本节只介绍CentOS系统中如何安装及启动Apache服务。而对于kali系统,apache在kali虚拟机中已自带,需要使用命令启动Apache2服务,并查看其状态,具体可参考《 《Kali Linux系统利用Apache发布网站并设置访问限制》》。

1.1 安装前检查

(1)使用root用户登陆系统,并打开终端。
(2)查询系统是否已安装过Apache。因为在Linux系统中,不同方式安装的软件其查询命令不一致,建议使用以下命名查询系统中是否已安装过Apache,在该系统中名称是httpd。查询结果如图所示,均查不到内容。

rpm -qa | grep httpd
yum list installed | grep httpd

在这里插入图片描述

1.2 配置IP地址

本实验采用yum方式安装软件,而yum方式安装软件需要联网下载安装包,所以需要保证电脑能够上网。因此需要首先配好IP并将CentOS虚拟机桥接到真实网络中。配置IP的具体步骤如下,具体过程还可以参考《 Linux系统网络信息查看与配置(包括CentOS和Kali)》
(1)将CentOS虚拟机的网络桥接到真实网络,如下。
在这里插入图片描述
(2)查看真实机网络信息。已知真实机IP地址为192.168.1.2,网关为192.168.1.1,DNS地址为192.168.1.1。
(3)查看相关配置文件, cd /etc/sysconfig/network-scripts/ ,该目录下有两个文件存放对应网卡的网络配置信息。
在这里插入图片描述
(4)配置网卡ens33。使用VIM编辑器打开ifcfg-ens33文件和进行配置,命令为 vim /etc/sysconfig/network-scripts/ifcfg-ens33 。打开配置文件后,按ins进入插入模式,可以输入命令。在该文件中的配置如下。vim编辑器的具体操作可参考《Linux系统vim编辑器简单应用》。之后按ESC键退出编辑模式,然后输入命令:wq保存并退出该网络配置文件.
在这里插入图片描述

(4)重新启动network服务使文件生效,输入命令/etc/init.d/network restart或者service network restart启动network服务管理该文件。然后输入ip addr查看IP地址是否配置完成,发现已配置完成。
在这里插入图片描述

(5)此时配置完毕,检验一下是否可以上外网,输入命令ping www.baidu.com,Linux的ping命令不同于Windows默认发4次包,Linux的ping命令会一直发,我们可以按Ctrl+C中止命令,如下图:
在这里插入图片描述

1.3 安装及检查

本实验apache的安装采用yum方式安装,具体步骤如下:
(1)输入yum install httpd* -y用这个命令来安装apache。其中,输入-y之后不用一直回复。
在这里插入图片描述
(2)需要一小会的等待……提示安装完完毕。
在这里插入图片描述

(3)输入命令systemctl start httpd.service启动Apache,并输入命令systemctl status httpd.service查看启动后的状态。看到已成功启动。
在这里插入图片描述
(4)通过查看端口验证。输入命令ss -antpl | grep 80查看是否已开启80端口,发现已正常开启。其中ss表示查询已开启端口号、a表示所有、n表示不用尝试解析服务名称、t表示TCP协议、p表示process进程、l表示监听状态、grep 80表示按80过滤。(也可以采用netstat -antpl | grep 80命令)。
在这里插入图片描述
(5)打开浏览器,输入IP地址访问网站,成功访问说明apache已安装完成。
在这里插入图片描述

2 主页建立与编辑

(1)新建主页及编辑。默认主页目录为/var/www/html,进入到主页所在目录/var/www/html下,输入命令vim /var/www/html/index.html新建主页并编辑。按ins键插入模式下输入以下命令,按Esc键回到命令模式,按:进入末行模式,输入wq保存并退出。
在这里插入图片描述

(2)打开win7虚拟机,将win7与CentOS虚拟机桥接到同一个网络且为win7配置IP地址(192.168.1.9),保证win7与CentOS虚拟机能互相ping通。
(3)CentOS虚拟机需要关闭防火墙和关闭selinux防火墙。输入命令systemctl stop firewalld.service关闭防火墙,之后输入命令firewall-cmd --state查看防火墙状态,此时可以看到防火墙已关闭。使用命令setenforce 0关闭selinux防火墙。另外,若想关闭防火墙开机自启动,可以使用命令systemctl disable firewalld.service
在这里插入图片描述
在这里插入图片描述
(4)用win7虚拟机去访问CentOS虚拟机网页。在浏览器输入IP地址进行访问,可以看到访问成功。
在这里插入图片描述

3 Apache主配置文件分析

在CentOS系统中,Apache主配置文件的路径为/etc/httpd/conf/httpd.conf,使用命令 vim /etc/httpd/conf/httpd.conf打开Apache主配置文件。文件较长,在末行模式下输入 :set nu 显示行号,方便查看或编辑。注意,在Kali系统中,Apache主配置文件的路径为/etc/apache2/apache2.conf 。该主配置文件主要规定了以下内容:
(1)配置文件规定了服务的根目录,也就是软件装在哪,其他子目录均在此根目录下展开。

# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path.  If you point
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used.  If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
ServerRoot "/etc/httpd"

在这里插入图片描述

(2)配置文件规定了服务端口号为80.

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

在这里插入图片描述

(3)配置文件说明了加载的功能模块

# To be able to use the functionality of a module which was built as a DSO y    ou
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
Include conf.modules.d/*.conf

在这里插入图片描述

(4)配置文件说明了服务使用的用户身份。

# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User apache
Group apache

在这里插入图片描述

(5)配置文件说明了网站主页存放的目录,同时也有对目录中各种功能使用说明。

# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

(6)配置文件对网站的访问权限进行了说明。

# Relax access to content within /var/www.
#
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

(7)配置文件对主页下文件的功能进行了规定,如是否共享、访问权限等。(什么叫做文件共享呢?假如/var/www/html目录下还有其他目录(文件也可以)为share,访问者通过输入http://192.168.1.8/share,则可以下载share下的文件,达到文件共享的目的)若需要关闭文件共享功能,则按下图所示删除indexes后保存即可,注意,要想编辑后的文件生效,需要重启Apache服务(输入命令systemctl restart httpd.service重启)

# Further relax access to the default document root:
<Directory "/var/www/html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

在这里插入图片描述

4 访问控制设定

4.1 客户机地址限制

在一台centos7上搭建apache网站后,一般都是允许所有人访问的,如下图所示,在主配置文件中规定了允许所有人访问。那么可能会有一些特殊情况,需要对访问网站的人进行限制,出于这种情况,apache可以通过Require配置项,来对客户端进行一些访问限制,可以基于IP地址、网段、主机名或域名。使用名称“all”时表示任意地址。
在这里插入图片描述

4.1.1 客户机地址限制原理

对客户机地址限制的常用格式有下面几种:

  • Require all granted:表示允许所有主机访问(也是默认的);
  • Require all denied:表示拒绝所有主机访问;
  • Require local:表示仅允许本地主机访问;
  • Require [not] host <主机名或域名列表>:表示仅允许或拒绝指定主机或域名访问;
  • Require [not] ip <地址或网段列表>:表示仅允许或拒绝指定IP地址或网段访问;

定义限制策略时,多个不带not的require配置语句之间是或的关系,就是满足任意一条require配置语句就可以访问;若即有不带not的require配置语句,又出现了带not的require配置语句,则语句之间是与的关系,即同时满足所有require配置语句才可访问。注意,只要更改了服务的配置文件,必须重启Apache服务才可生效,重启服务的命令为systemctl restart httpd.service

4.1.2 客户机地址限制示例1

要求:仅允许ip地址为192.168.1.10的主机能够访问网页目录下的内容,
具体步骤
(1)使用命令 vim /etc/httpd/conf/httpd.conf打开Apache主配置文件。
(2)进入网站主配置文件httpd.conf后,在末行模式下输入:/Directory,按n查找到相应的位置,并在输入模式下按如下修改配置文件,最后保存并退出。其中vim编辑器的具体操作可参考《【Linux系统】第7节 Linux系统vim编辑器简单应用》

<Directory "/var/www/html">
    ................   #省略部分内容
    Require ip 192.168.1.10           #仅允许192.168.1.10的主机访问网站服务
</Directory>

在这里插入图片描述

(3)输入命令systemctl restart httpd.service重启apache服务。
(4)用上述的win7虚拟机浏览器去访问CentOS虚拟机网页(此时win7的IP地址为192.168.1.9).,可以看到,没有看到真正的主页,访问失败。
在这里插入图片描述
(5)将win7虚拟机的IP地址修改为192.16.1.10,再去访问CentOS虚拟机网页,访问成功。
在这里插入图片描述

4.1.3 客户机地址限制示例2

要求:192.168.1.0网段的主机不能访问网站,但是别的网段的主机都可访问。
具体步骤
(1)使用命令 vim /etc/httpd/conf/httpd.conf打开Apache主配置文件。
(2)进入网站主配置文件httpd.conf后,在末行模式下输入:/Directory,按n查找到相应的位置,并在输入模式下按如下修改配置文件,最后保存并退出。注意,在下面的配置中,只要访问规则中出现了not语句,那么必须把规则放在 <RequireAll> </RequireAll>标签中。

<Directory "/var/www/html">
    ................   #省略部分内容
   <RequireAll>
   Require   all  granted                      #允许所有主机访问
   Require  not  ip  192.168.1.0/24            #但192.168.1.0网段不可访问
     </RequireAll>
</Directory>

在这里插入图片描述
(3)输入命令systemctl restart httpd.service重启apache服务。
(4)win7虚拟机浏览器去访问CentOS虚拟机网页(此时win7的IP地址为192.168.1.10).,可以看到,没有看到真正的主页,访问失败。
在这里插入图片描述
(4)若win7虚拟机浏览器一定要访问CentOS虚拟机index.html主页,可以在浏览器中输入http://192.168.1.8/index.html。可以看到,网站拒绝显示此网页。
在这里插入图片描述

4.2 用户授权限制

基于用户的访问控制包含认证和授权两个过程,httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证的话需要在编译http之前添加“–enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证,所以不推荐使用;而基本认证是httpd服务的基本功能,不需要预先配置特别的选项。以下介绍基本认证方式,具体步骤如下:
(1)创建用户和设置密码的数据文件,代码如下:

htpasswd -c /etc/httpd/conf/httpuser tom  #使用htpasswd工具创建用户,-c表示创建,/etc/httpd/conf/httpuser为所创建的用户的存放路径及文件名,tom为创建的用户名。
New password:                                   #输入密码
Re-type new password:                           #确认密码
Adding password for user webadmin               #提示添加成功

在这里插入图片描述

(2)查看该用户文件的权限及用户信息。
在这里插入图片描述
(3)另外建议将该文件的所属者改为apache,且只有apache用户可读。
在这里插入图片描述
(4)添加用户授权配置。输入命令vim /etc/httpd/conf/httpd.conf编辑网站主配置文件,网站主配置文件中添加用户授权配置代码如下,修改完后并保存退出。需要注意的是,用户访问授权与客户机地址访问控制同时设置时,设置的主机访问控制优先生效。所以在进行用户授权限制时,需要删除掉其中的require语句。要不然,用户访问授权不会生效。

 
<Directory "/var/www/html">
    authtype basic                   #设置认证类型,basic表示基本认证,即弹框的类型
    authname "please input username and password"       #定义弹框后的提示信息,不能写中文
    authuserfile /etc/httpd/conf/httpuser               #设置用于保存用户账号、密码的认证文件路径
    require valid-user                                  #要求只有认证文件中的有效用户才可访问。
#        其中valid-user表示所有合法用户,若只授权给单个用户,可改为指定的用户名,如tom。

在这里插入图片描述

(5)输入命令systemctl restart httpd.service重启apache服务。
(6)用win7虚拟机浏览器去访问CentOS虚拟机网页(此时win7的IP地址为192.168.1.10)。此时弹框,需要输入用户和密码。
在这里插入图片描述
(7)输入正确的用户和密码后可以访问。
在这里插入图片描述

5 归纳

(1)掌握CentOS Linux系统下部署apache网站的方法。
(2)熟悉CentOS Linux系统下apache网站的主配置文件。
(3)掌握CentOS Linux系统下apache网站访问控制的配置,包括客户机地址地址限制和用户授权限制。

参考文章

[1] 《Kali Linux系统利用Apache发布网站并设置访问限制》
[2]《基于Cent OS7搭建apache网站后的访问控制配置详解》
[3] 视频传送门

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值