Apache配置与应用 一、Apache 连接保持 二、Apache 访问控制 Apache访问控制概述 客户机地址限制 用户授权限制 1.创建用户认证数据文件 2. 添加用户授权配置 3. 验证用户访问授权 三、Apache访问日志 四、实验报告 资源列表 基础环境 一、安装依赖 二、源码编译及安装 1、解包 2、配置编译安装 3、优化执行路径 4、添加为系统服务 三、客户机地址限制 四、用户授权限制 1、创建用户认证数据文件 2、添加用户授权配置 3.验证用户访问授权 五、Apache 日志分割 1、Apache 自带 rotatelogs 分割工具 2、使用第三方工具 cronolog 分割 六、AWStats日志分析 1、部署 AWStats 分析系统 2、执行日志分析,并设置 cron 计划任务 七、访问 AWStats 分析系统
一、Apache 连接保持
Apache连接保持相关参数
KeepAlive KeepAliveTimeout 一次性连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开 MaxKeepAliveRequests
二、Apache 访问控制
Apache访问控制概述
客户机地址限制
通过 Require 配置项,可以根据客户端的主机名或 IP 地址来决定是否允许客户端访问。 在 httpd 服务主配置文件的、、、配置段中均可以使用 Require 配置项来控制客户端的访问。 使用 Require 配置项时,需要设置客户端地址以构成完整的限制策略,地址形式可以是 IP 地址、网络地址、主机名或域名。 当 Require 配置项之后为“all”时,表示匹配任意地址。限制策略的格式如下所示。 Require all granted:允许所有主机访问; Require all denied:拒绝所有主机访问; Require local:仅允许本地主机访问; Require [not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问; Require [not] ip <IP 地址或网段列表>:允许或拒绝指定IP 地址网络访问。
用户授权限制
httpd 服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。 使用摘要认证需要在编译 httpd 之前添加“–enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证; 而基本认证是 httpd 服务的基本功能,不需要预先配置特别的选项。 基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程。 认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。 下面将以基本认证方式为例,添加用户授权限制。
1.创建用户认证数据文件
httpd 的基本认证通过校验用户名、密码组合来判断是否允许用户访问。 授权访问的用户账号需要事先建立,并保存在固定的数据文件中。 使用专门的 htpasswd 工具程序,可以创建授权用户数据文件,并维护其中的用户账号。 使用 htpasswd 工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文件。 若省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。
2. 添加用户授权配置
有了授权用户账号以后,还需要修改 httpd.conf 配置文件,在特定的目录区域中添加授权配置,以启用基本认证并设置允许哪些用户访问。 AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。 AuthType:设置认证的类型,Basic 表示基本认证。 AuthUserFile:设置用于保存用户账号、密码的认证文件路径。 require valid-user:要求只有认证文件中的合法用户才能访问。 其中,valid-user 表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如 webadmin)。
3. 验证用户访问授权
当访问系统时,浏览器会首先弹出认证对话框,如图所示。 只有输入正确的用户名和密码后才能查看特定目录下的网站资源,否则将拒绝访问。
三、Apache访问日志
日志分割
随着网站的访问量增加,默认情况下Apache的单个日志文件也会越来越大 对日志文件进行分割 Apache自带rotatelogs分割工具实现 第三方工具cronolog分割
四、实验报告
资源列表
操作系统 配置 主机 IP CentOS7.3.1611 2C4G apache 192.168.72.154
基础环境
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed - i "s/^SELINUX=.*/SELINUX=disabled/g" / etc/ selinux/ config
一、安装依赖
yum - y install gcc gcc- * make
yum - y install apr- util- devel pcre- devel zlib- devel
二、源码编译及安装
1、解包
tar zxf httpd- 2.4 .25 . tar. gz - C / usr/ src
cd / usr/ src/ httpd- 2.4 .25 /
2、配置编译安装
. / configure - - prefix= / usr/ local/ httpd - - enable- so - - enable- rewrite - - enable- charset- lite - - enable- cgi
make & & make install
3、优化执行路径
通过源码编译安装的 httpd 服务,程序路径并不在系统默认的搜索路径中,为了使 该服务在使用时更加方便,可以为相关程序添加符号链接
ln - s / usr/ local/ httpd/ bin / * / usr/ local/ bin
ls - l / usr/ local/ bin / httpd / usr/ local/ bin / apachectl
4、添加为系统服务
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件, 用于控制由 Systemd 管理或监控的 httpd 服务
cat > / lib/ systemd/ system/ httpd. service << 'EOF'
[ Unit]
Description= The Apache HTTP Server
After= network. target
[ Service]
Type= forking
PIDFile= / usr/ local/ httpd/ logs/ httpd. pid
ExecStart= / usr/ local/ bin / apachectl $OPTIONS
ExecrReload= / bin / kill - HUP $MAINPID
[ Install]
WantedBy= multi- user. target
EOFsystemctl start httpd. service
systemctl enable httpd. service
三、客户机地址限制
[ root@bogon ~ ]
Require ip 127.0 .0 .1
Require ip 192.168 .73 .1 Require all granted :允许所有主机访问
Require all denied :拒绝所有主机访问
Require local :仅允许本地主机访问
Require [ not ] host < 主机名或域名列表> :允许或拒绝指定主机或域名访问
Require [ not ] ip < IP 地址或网段列表> :允许或拒绝指定 IP 地址网络访问
也可以写网段 写那个就是允许那个连接< RequireAll>
Require all granted
Require not ip 192.168 .0 .0 / 24 192.168 .1 .0 / 24
< / RequireAll>
[ root@bogon ~ ]
四、用户授权限制
1、创建用户认证数据文件
[ root@bogon ~ ]
[ root@bogon httpd]
New password:
Re- type new password:
Adding password for user webadmin
[ root@bogon httpd]
webadmin: $apr1$bwZSdpMv$p2m2yw2Vwxo8b7gPoB5Mb.
2、添加用户授权配置
[ root@bogon ~ ]
……
< Directory "/usr/local/httpd/htdocs" >
……
AuthName "DocumentRoot" AuthType BasicAuthUserFile / usr/ local/ httpd/ conf/ . awspwdRequire valid- user
< / Directory>
[ root@bogon ~ ] AuthName :定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
AuthType :设置认证的类型,Basic 表示基本认证。
AuthUserFile :设置用于保存用户账号、密码的认证文件路径。其中,valid- user 表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如 webadmin)。
3.验证用户访问授权
五、Apache 日志分割
1、Apache 自带 rotatelogs 分割工具
[ root@bogon ~ ]
[ root@bogon ~ ]
ErrorLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"
CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined
[ root@bogon ~ ]
[ root@bogon ~ ]
error_20240709. log
2、使用第三方工具 cronolog 分割
tar zxvf cronolog- 1.6 .2 . tar. gz
cd cronolog- 1.6 .2
. / configure
make & & make install
[ root@bogon ~ ]
ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/www.kgc.com-error_%Y%m%d.log"
CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/www.kgc.com-access_%Y%m%d.log" combined[ root@bogon ~ ]
六、AWStats日志分析
1、部署 AWStats 分析系统
tar zxf awstats- 7.7 . tar. gz
mv awstats- 7.7 / usr/ local/ awstatsyum - y install perl
cd / usr/ local/ awstats/ tools/
chmod + x awstats_configure. pl
. / awstats_configure. pl
/ usr/ local/ httpd/ conf/ httpd. conf
y
www. kgc. com
一律回车
[ root@bogon ~ ]
CustomLog "logs/access_log" combined
LoadModule cgid_module modules/ mod_cgid. so
LoadModule cgi_module modules/ mod_cgi. so
< Directory "/usr/local/awstats/wwwroot" > Options None A11owOverride None Require all granted
< / Directory>
[ root@bogon tools]
[ root@bogon tools]
[ root@bogon tools]
[ root@bogon tools]
access_log cgisock. 30029 error_log httpd. pid[ root@bogon tools]
LogFile= "/usr/local/httpd/logs/access_log"
2、执行日志分析,并设置 cron 计划任务
mkdir / var/ lib/ awstats
cd / usr/ local/ awstats/ tools/
chmod + x awstats_updateall. pl
. / awstats_updateall. pl now
http: // 192.168 .72 .154 / awstats/ awstats. pl?config= www. kgc. com
[ root@bogon ~ ]
no crontab for root - using an empty one
crontab: installing new crontab
[ root@bogon ~ ]
* / 5 * * * * / usr/ local/ awstats/ tools/ awstats_updateall. pl now
七、访问 AWStats 分析系统