Apache访问与连接控制配置文件解剖,日志分割,部署AWstats日志分析 理论加实操

Apache连接保持

◆Apache连接保持相关参数

●KeepAlive
   是否打开连接保持,OFF关闭,ON打开

●keepAliveTimeout
一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开

●MaxKeepAliveRequests
一次长连接能够传输的最大请求数量

Apache访问控制概述

◆Apache访问控制:

●作用
控制对网站资源的访问
为特定的网站目录添加访问授权

●常用访问控制方式
客户机地址限制
用户授权限制

在这里插入图片描述

◆基于客户端地址的访问控制

通过Require配置项,可以根据客户端的主机名或IP地址来决定是否允许客户端访问

1、Require all granted : 允许所有主机访问;

2、Require all denied : 拒绝所有主机访问;

3、Require loca l: 仅允许本地主机访问;

4、Require [not] host <主机名或域名列表> : 允许或拒绝指定主机或域名访问;

5、Require [not] ip <IP地址或网段列表>∶允许或拒绝指定IP地址网络访问。

通常情况下,网站服务器是对所有客户机开放的,网页文档目录并未做任何限制,因此
使用的是“Require all granted”的策略,表示允许从任何客户机访问,策略格式如下所示。

默认目录允许所有

[root@localhost ~] # vi /usr/local/httpd/conf/httpd.conf


<Directory "/usr/local/httpd/htdocs">
                 #####省略部分内容
Require all granted
</Directory>

只希望一个IP地址能够访问

#若只希望IP地址为192.168.100.2的主机能够访问,目录区域应做如下设置。

<Directory "/usr/local/httpd/htdocs/bbs">
                  ####省略部分内容
Require ip 192.168.100.2
</Directory>

禁止某IP网段访问,其他网段不受影响

#若只希望禁止来自两个内网网段192.168.100.0/24和192.168.1.0/24的主机访问,但允许其他任何主机访问

<Directory "/usr/local/httpd/htdocs/bbs">
.... //省略部分内容
<RequireAll>
Require all granted
Require not ip 192.168.0.0/24 192.168.1.0/24
</RequireAll>
</Directory>

当未被授权的客户机访问网站目录时,将会被拒绝访问。

◆基于用户授权限制

●httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用
户账号需要事先建立,并保存在固定的数据文件中。使用专门的htpasswd工具程序,可以
创建授权用户数据文件,并维护其中的用户账号。
使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文

●执行以下操作可以新建数据文件/usr/local/httpd/conf/.awspwd,其中包含一个名
为webadmin的用户信息


[root@localhost ~]# cd /usr/local/httpd/

[root@localhost httpd]# htpasswd -c/usr/local/httpd/conf/.awspwd webadmin
New password:                                            ####根据提示设置密码
Re-type new password:                                    ####根据提示设置密码
Adding password for user webadmin

[root@www httpd]# cat/usr/local/httpd/conf/.awspwd        ####确认用户数据文件
webadmin:$apr1$L53Ws/Y2$3L4xhs4zZKDbJb.9p1fNg.

●若省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有
用户的密码

#需要向.awspwd数据文件中添加一个新用户zzz1时,可以执行以下操作
[root@localhost httpd]# bin/htpasswd /usr/local/httpd/conf/.awspwd zzz1
New password:
Re-type new password:
Adding password for user zzz1

[root@localhost httpd] cat /usr/local/httpd/conf/.awspwd          确认用户数据文件
webadmin:$apr1$L53Ws/Y2$3L4xhs4zZKDbJb.9p1fNg.51xit$apr1$OIFi4TA$FaVYZnH2KH5KcOsHJHAWDO

●有了授权用户账号以后,还需要修改httpd.conf配置文件,在特定的目录区域中添加授
权配置,以启用基本认证并设置允许哪些用户访问。

#若只允许.awspwd数据文件中的任一用户访问系统,可以执行以下操作。
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
…….
<Directory "/usr/local/httpd/htdocs">.                                                                 ####省略部分内容
AuthName "DocumentRoot"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
Require valid-user
</Directory>

[root@localhost ~]# systemctl restart httpd      ####重启服务使配置生效

在上述配置内容中,相关配置项的含义如下。
1、AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
2、AuthType:设置认证的类型,Basic表示基本认证。
3、AuthUserFile:设置用于保存用户账号、密码的认证文件路径。
4、require valid-user:要求只有认证文件中的合法用户才能访问。其中,valid-user
表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如webadmin)

●接下来你可以打开你的浏览器验证了: 用户名:wbadmin 和密码:
在这里插入图片描述

日志分割

为什么要日志分割?

●随着网站的访问量增加,默认情况下Apache的单个日志文件也会越来越大
日志文件占用磁盘空间很大,查看相关信息不方便

●如果不对日志进行分割,那么如果日志文件占用磁盘空间很大的话势必会将整个日志
文件删除,这样也丢失了很多对网站比较宝贵的信息,而这些日志可以用来进行访问分析、
网络安全监察、网络运行状况监控等。

● 另外,如果服务器遇到故障时,运维人员要打开日志文件进行分析,打开的过程会消耗
很长时间,也势必会增加处理故障的时间。因此管理好这些海量的日志对网站的意义很大,
我们会将Apache的日志进行按每天的日期自动分割

◆Apache自带rotatelogs分割工具

● 首先我们将Apache主配置文件httpd.conf打开,配置网站的日志文件转交给rotatelogs
分割处理。

#第一步:等会会将正确访问与错误访问日志放在这个目录下
[root@localhost ~]# mkdir /var/log/httpd/     

#第二步:修改配置文件
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf

ErrorLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/erro_%Y%m%d.log 86400"
#修改错误日志路径并加上时间戳,|的作用,将错误信息递给rotatelogs工具,然后进行输出(-l)到
/var/log/httpd/下,存储名为:erro_时间戳  86400代表:86400/60/60=24小时,每24小时分割一次

CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" 
##修改正确访问日志路径并加上时间戳


[root@localhost ~]# systemctl restart httpd
#用你的电脑浏览器访问一下主机然后输入下一步

[root@localhost ~]# ll /var/log/httpd
total 8
-rw-r--r-- 1 root root 381 Sep  1 14:05 access_20200901.log
-rw-r--r-- 1 root root 288 Sep  1 14:04 erro_20200901.log
#看到这两个文件就无需多说, 完成了

◆第三方工具cronolog分割

除了Apache自带rotatelogs分割工具,也可使用第三方工具cronolog对Apache日志

##1、编译安装cronolog工具##我放在opt下了,小伙伴可以使用wget下载

#第一步
[root@www~]# cd /opt
[root@www~]# tar zxvf cronolog-1.6.2.tar.gz
[root@www ~]# cd cronolog-1.6.2
[root@www cronolog-1.6.2]# ./configure
[root@www cronolog-1.6.2]# make && make install


#第二步:修改配置文件
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf

ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/www.zzxit.top-error_%Y%m%d.log"
#修改错误日志路径并加上时间戳,|的作用,将错误信息递给cronolog工具,存储路径为:
/var/log/httpd/下,存储名为:www.zzxit.top-error_时间戳.log

CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/www.zzxit.top-access_%Y%m%d.log" common

[root@www~]# systemctl restart httpd

[root@www~]#ll /var/log/httpd/ |grep "www.zzxit.top"
-rw-r-r- 1 root root 6037718:15 www.zzxit.com-access_20180707.log
-rw-r-r- 1 root root 5847718:14 www.zzxit.com-error_20180707.log


注意:如果只有error文件,你需要打开你的电脑浏览器访问一下你VM的IP地址,再看就会出来

AWStats

●AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache网
站服务器的访问日志,也可以用来分析Samba、Vsftpd、IlS等服务的日志信息。

●结合crond等计划任务服务,可以对不断增长的日志内容定期进行分析。

●AWStats的软件包可以从官方网站下载。下面以awstats-7.7.tar.gz软件包为例,介绍
为Web站点www.kcce.com添加AWStats日志分析系统的过程。

◆第一步:安装AWStats软件包

如果你做了上面的配置,请重装一下http或者还远初始配置 再执行以下操作,不然会报错

awstats软件包的安装非常简单,只需将软件包解压到httpd服务器中的/usr/local/目录下即可
[root@localhost httpd]# cd /opt

[root@www ~]# wget http://awstats.org/files/awstats-7.7.tar.gz

[root@localhost opt]# tar zxvf awstats-7.7.tar.gz

[root@localhost opt]# mv awstats-7.7 /usr/local/awstats

◆第二步:为要统计的站点建立配置文件

●首先切换到awstats/tools目录下,并执行其中的awstats_configure.pl脚本。

[root@www~]# cd /usr/local/awstats/tools/

[root@www tools]# chmod +x awstats_configure.pl

[root@localhost tools]# vi /usr/local/httpd/conf/httpd.conf 
ServerName www.bbzzt.com:80

[root@www tools]# ./awstats_configure.pl

●然后将会进入一个交互式的配置过程,将会检查awstats的安装目录、httpd服务的配
置文件路径、日志记录格式等系统环境,并提示用户指定站点名称、设置配置文件路径

----- AWStats awstats_configure 1.o (build 20140126)(c)Laurent Destailleur -----

-----> Running OS detected: Linux,BSD or Unix
----->Check for web server install
Enter full config file path of your Web server. Example:/etc/httpd/httpd.conf
Example:/usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path ('none' to skip web server setup):
>/usr/local/httpd/conf/httpd.conf                       ####输入httpd.conf配置文件的路径

●设置日志类型
将httpd服务器的日志记录格式改为“combined”,服务器可以在日志文件中记录更加详
细的Web访问信息。因此,当提示是否修改日志类型时,建议选择“y”。然后配置脚本,将
会自动修改httpd.conf配置文件,以添加访问AWStats系统的相关配置内容

----->Check and complete web server config file '/usr/local/httpd/conf/httpd.conf' Warning: You Apache config file
contains directives to write 'common' log files
This means that some features can't work (os,browsers and keywords
detection). Do you want me to setup Apache to write 'combined' log files [y/N]?             ####输入y
Add 'Alias/awstatsclasses "/usr/local/awstats/wwwroot/classes/""
Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/
Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
Add '<Directory>' directive
AWStats directives added to Apache config file.
-----> Update model config file
'/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf' File awstats.model.conf

●为指定Web站点创建配置文件
根据提示继续选择“y”以创建站点配置文件,并指定要统计的目标网站名称、站点配置
文件的存放位置(默认为/etc/awstats)。

-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file(required if first install)[y/N]? y                     ##确认创建新的站点配置文件

-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
>www.51xit.top                                             ##指定要统计的目标网站名称

-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default:/etc/awstats
Directory path to store config file(s)(Enter for default):   ##直接按Enter键接受默认设置

-----> Create config file '/etc/awstats/awstats.www.51xit.top.conf
Config file /etc/awstats/awstats.www.kgc.com.conf created.

◆后续配置工作

后续配置工作接下来将会尝试重启httpd服务

注意: Apache 2.4以上版本,因为重新定义了访问权限,所以需要将自动生成的awstats
访问权限进行相应修改。同时,加载CGI模块。

##为了方便实验,帮这两个文件修改为初始文件
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf

ErrorLog "logs/error_log"
CustomLog "logs/access_log" combined
<IfModule !mpm_prefork_module>
LoadModule cgid_module modules/mod_cgid.so              这边修改下将#去掉
</lfModule>
<lfModule mpm prefork module>
LoadModule cgi_module modules/mod_cgi.so                这边修改下将#去掉
</IfModule>
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
#Order allow,deny                           ####注释掉
#Allow from all                                 ####注释掉
Require all granted                          ####添加
</Directory>


[root@www ~]# systemctl restart httpd         重启一下

●修改站点统计配置文件
为站点www.51xit.top建立好配置文件以后,还需要对其做进一步的修改。修改的内容
主要包括指定要分析的Web日志文件和指定用来存放统计数据的目录

[root@www~]# vi /etc/awstats/awstats.www.51xit.top.conf
LogFile="/usr/local/httpd/logs/access_log"       ##必须要和http指定日志文件存放的路径一致
DirData="/var/lib/awstats"                       ##这个是默认的
[root@www~]# mkdir /var/lib/awstats
其中,LogFile用来指定日志路径,应设置Web日志文件的实际位置; DirData用来指
定数据目录,可以采用默认值,但需要创建指定的目录(/var/lib/awstats)

◆执行日志分析,并设置cron计划任务

●使用AWStats提供的awstats_updateall.pl脚本,可以更新所有站点(根据站点配置文
件)的日志统计数据。执行该脚本时,系统将会自动分析新增的日志内容,并将分析结果更
新到统计数据库中。

[root@www~]# cd /usr/local/awstats/tools/
[root@www tools]# chmod +x awstats_updateall.pl
[root@www tools]#./awstats_updateall.pl now

Running " /usr/local/awstats/wwwroot/cgi-bin/awstats.pl"-update
-config=www.kgc.com -configdir="/etc/awstats"" to update config www.51xit.top
Create/Update database for config "/etc/awstats/awstats.www.51xit.top.conf" by
AWStats version 7.7 (build 20180105)
From data in log file "/usr/local/httpd/logs/access_log ...Phase 1:First bypass old records, searching new record.
Searching new records from beginning of log file...Jumped lines in file:0
Parsed lines in file: 0
Found 0 dropped records
Found 0 comments
Found 0 blank records
Found 0 corrupted records
Found 0 old records
Found 0 new qualified records.



#######基本上我们看到Found 0 就没问题了

●由于Web日志文件的内容是在不断更新的,为了及时反馈网站访问情况,日志分析工
作也需要定期、自动地执行。通过crond服务可设置计划任务,一般建议每五分钟执行一次日志分析任务


[root@www ~]# crontab -e
*/5* * * * /usr/local/awstats/tools/awstats_updateall.pl now
[root@www ~]# systemctl start crond
[root@www ~]# systemctl enable crond

●做完上面这些我们就可以测试了

http://20.0.0.21/awstats/awstats.pl?config=www.51xit.top ###没做映射的访问方式
http://www.51xit.top/awstats/awstats.pl?config=www.51xit.top ###做过映射的访问方式

在这里插入图片描述

◆优化域名

●因为访问的域名过于长,我们这时候可以进行优化
让用户只要访问http://www.51xit.top/awb.html,
即可自动跳转到www.51xit.top 站点的AWStats日志分析页面。

[root@localhost tools]# cd /usr/local/httpd/
[root@localhost httpd]# ll               ##内容我就不展示了,关键找htdocs/

[root@localhost httpd]# cd htdocs/

[root@localhost htdocs]# vi awb.html 
<html>
<head>
<meta http-equiv=refresh content="0;
url=http://20.0.0.21/awstats/awstats.pl?config=www.51xit.top">
</head>
<body></body>
</html>

[root@localhost htdocs]# systemctl restart httpd

●验证:
http://20.0.0.25/awb.html 没做映射
http://www.51xit.top/awb.html 做过映射

在这里插入图片描述

本章总结:

●Apache链接保持相关参数

●Apache访问控制作用及常用控制方式

●Apache日志分割方法

●AWStats分析系统部署及应用

猜你喜欢

转载自blog.csdn.net/weixin_48190891/article/details/108352384