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 "/etc/httpd"
(2)配置文件规定了服务端口号为80.
Listen 80
(3)配置文件说明了加载的功能模块
Include conf.modules.d/*.conf
(4)配置文件说明了服务使用的用户身份。
User apache
Group apache
(5)配置文件说明了网站主页存放的目录,同时也有对目录中各种功能使用说明。
DocumentRoot "/var/www/html"
(6)配置文件对网站的访问权限进行了说明。
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
(7)配置文件对主页下文件的功能进行了规定,如是否共享、访问权限等。(什么叫做文件共享呢?假如/var/www/html目录下还有其他目录(文件也可以)为share,访问者通过输入http://192.168.1.8/share,则可以下载share下的文件,达到文件共享的目的)若需要关闭文件共享功能,则按下图所示删除indexes后保存即可,注意,要想编辑后的文件生效,需要重启Apache服务(输入命令systemctl restart httpd.service 重启)
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
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
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] 视频传送门
|