linux之 httpdCA安全证书,分割日志, 日志分析awstats 压力测试ab工具
httpdCA安全证书,分割日志, 日志分析awstats 压力测试ab工具
1、https原理和配置
安全的https协议,基于ssl协议实现的httpd(使用的ssl或tls-v1的版本),监听默认的443端口。
请求流程

请求中站点证书有效性验证:
1)日期检测
2)签名颁发者可信度检测
3)签名检测(证书合法性、内容是否完整(指纹信息和解密指纹信息完整度检测))
4)站点身份检测
1.配置httpd支持https
1)为服务器申请数字证书,首先CA自签证书
cd /etc/pki/CA/ ---到目录下产生一个私钥
openssl genrsa -out private/cakey.pem 2048 私钥 父shell
(umask 077;openssl genrsa -out private/cakey.pem 2048) 子shell
ll private/
touch index.txt ---索引文件
echo 01 > serial ---序号文件
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300
产生公钥,自签证书


2)web服务器(6)生成私钥
cd /etc/httpd/
mkdir ssl ---创建目录,存放生成的私钥公钥证书
cd ssl/
openssl genrsa -out httpd.key 2048 ----私钥
(umask 077;openssl genrsa -out httpd.key 2048)

Web服务器产生私钥
服务器基于私钥 产生公钥 即申请书
服务器将 公钥,申请书 发送给CA
CA依据申请书生成证书 将证书发送给服务器
服务器部署发送给客户端
3)web服务器生成证书请求文件,并发往CA
openssl req -new -key httpd.key -out httpd.csr
scp httpd.csr CA服务器IP:/root/
openssl req -new -key httpd.key -out httpd.csr ---生成公钥
scp httpd.csr root@192.168.10.11:/root ---发送给CA


4)CA服务器进行签证
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 730 生成自签证书
openssl ca -in /root/httpd.csr -out certs/httpd.crt -days 365 签证



5)验证签证请求记录和证书文件
ls newcerts/ 或者查看cat /etc/pki/CA/certs/httpd.crt --查看签证文件

6)发送文件 将已签证证书发往web服务器
格式scp 文件位置 web服务器IP:/etc/httpd/ssl放置目录
scp certs/httpd.crt 192.168.10.20:/etc/httpd/ssl

服务端查看

7)确定web服务器是否装载ssl模块,如没有进行安装
yum -y install mod_ssl --安装
httpd -M | grep ssl_module --查看


8)进行配置ssl.conf文件
vim /etc/httpd/conf.d/ssl.conf
修改以下两行,修改为私钥与证书所有的路径
SSLCertificateFile /etc/httpd/ssl/httpd.crt ---证书路径
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key ---生成私钥路径

9)重启服务,验证端口开放
/etc/init.d/httpd restart ---重启服务
netstat -antulp | grep :443
ps aux | grep http
netstat -antulp | grep httpd ---验证端口开放


10)在CA服务器使用openssl的命令行工具请求资源验证,是否为ssl加密会话。
格式: openssl s_client -connect web服务器ip:443 -CAfile /etc/pki/CA/cacert.pem
openssl s_client -connect 192.168.10.20:443 -CAfile /etc/pki/CA/cacert.pem


去客户端访问
##11.或者去配置ssl.confvim 增加基于域名的虚拟主机
配置文件 /etc/httpd/conf.d /ssl.conf
1.首先增加一块测试的网卡 ip为 192.168.10.22 增加网络适配器
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.10.22
NETMASK=255.255.255.0

2.为服务器申请数字证书
CA服务端进行自签证书
cd /etc/pki/CA/
openssl genrsa -out private/cakey.pem 2048
touch index.txt
echo 01 > serial
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
写入内容必须一致
Country Name (2 letter code) [XX]:CN #国家
State or Province Name (full name) []:Beijing #省份
Locality Name (eg, city) [Default City]:Beijing #城市
Organization Name (eg, company) [Default Company Ltd]:ca,Inc #公司名称
Organizational Unit Name (eg, section) []: #单位名
Common Name (eg, your name or your server's hostname) []: #用户或主机名
Email Address []: #邮箱
[root@lg CA]# ls
cacert.pem certs crl index.txt newcerts private serial
httpd服务端生成请求私钥

服务端 基于私钥生成公钥即 申请证书

#注:主机名为http服务器的主机名
将申请发送至CA服务器

CA服务器端进行签证

将签证的证书传回给http服务器

http服务端查看传回的数字证书

http服务端安装ssl模块

3.配置文件 /etc/httpd/conf.d /ssl.conf
新加入
NameVirtualHost 192.168.10.22:443
<VirtualHost 192.168.10.22:443>
DocumentRoot "/www/doc/kkk/"
ServerName kkk.ujiuye.com
ErrorLog logs/kkk-error_log
TransferLog logs/kkk_access_log
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
</VirtualHost>
<VirtualHost 192.168.10.22:443>
DocumentRoot "/www/doc/zzz/"
ServerName zzz.ujiuye.com
ErrorLog logs/zzz-error_log
TransferLog logs/zzz_access_log
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
</VirtualHost>
4.创建测试目录
cd /www/doc/ mkdir kkk mkdir zzz
cd kkk vim index.html
cd zzz vim index.html ---创建测试网页
5.关闭主配置文件 listen:80
# vim /etc/httpd/conf/httpd.conf

6.重启服务并检查服务开启端口
/etc/innit.d/httpd rstart
Netstat -anyulp | grep :443

7.linux端做主机映射DNS
vim /etc/hosts

8. linux端测试:
https://zzz.ujiuy.com https://kkk.ujiuye.com



2.切割日志 httpd的企业工具程序
1)apachectl:自带服务启停脚本
apachectl start /stop
apachectl restart 与/etc/init.d/httpd功能相同
apachectl -t 检测httpd.conf语法是否正确

2)httpd的日志滚动(切割)工具
由于在access_log访问日志中,记录了大量客户的访问信息,日志的监控和分析是非常有必要的,在日志非常庞大的情况下,要定期做日志切割。
Logrotate:系统自带,容易丢失日志,通常不使用
cronolog:第三方开源的日志切割工具,非常好用
默认的cronolog的主程序编译在/usr/local/sbin
1.)源码安装解压cronolog
源代码编译安装cronolog
tar zxvf cronolog-1.6.2.tar.gz --解压
cd cronolog-1.6.2 --到这个目录下
yum install gcc gcc-c++ gcc-g77 --安装编译软件Gcc
./configure
make
make install




2.)然后配置主配置文件vim /etc/httpd/conf/httpd.conf

改日志路径和名称
在域名那里更改日志存放位置,和存放的方式
vim /etc/httpd/conf/httpd.conf
ErrorLog "|/usr/local/sbin/cronolog /etc/httpd/logs/error_web_%Y%m%d%H.log"
CustomLog "|/usr/local/sbin/cronolog /etc/httpd/logs/access_web_%Y%m%d%H.LOG" combined
如果是虚拟主机,在虚拟主机容器内配置即可。
解析
"|/usr/local/sbin/cronolo --日志产生的时候直接通过| 管道符交给这条命令进行分割
/etc/httpd/logs --分割路径
/error_web_%Y%m%d%H.log --文件名称即分割方式 %y年%m月%d时
Combined --日志格式 为第三方图形工具AWStats做准备
示例
ErrorLog "|/usr/local/sbin/cronolog /etc/httpd/logs/error_www1_%Y%m%d%H.log"
CustomLog "|/usr/local/sbin/cronolog /etc/httpd/logs/access_www1_%Y%m%d%H.LOG" combined
3.)重启服务 访问 查看日志文件
/etc/init.d/httpd restart

在linux浏览器中访问网站测试,会自动生成新的日志文件
查看 www1.ujiuye.com

/etc/httpd/logs --日志路径

3.可以使用第三方的图形工具AWStats来进行日志分析
Awstats是一个免费非常简洁而且强大有个性的统计工具。
它可以统计您站点的如下信息:
a):访问量,访问次数,页面浏览量,点击数,数据流量等
b):精确到每月、每日、每小时的数据
c):访问者国家
d):访问者IP
e):Robots/Spiders的统计 (爬虫)
f):访客持续时间
g):对不同Files type文件类型 的统计信息
h):Pages-URL的统计
j):访客操作系统浏览器等信息
k):其它信息(搜索关键字)
1.解压,设置权限
将awstats的压缩包进行解压释放(释放到/usr/local,并且命名为awstats),
将awstats/tools中的perl脚本文件awstats_configure.pl和awstats_updateall.pl加上执行权
tar xf awstats-7.3.tar.gz -C /usr/local/ --- 解压 -C解压到/usr/local目录下
cd /usr/local/
mv awstats-7.3/ awstats ---命名为awstats
chmod a+x awstats_configure.pl ---设置权限
chmod a+x awstats_updateall.pl ---设置权限



2)执行awstats_configure.pl,进行配置安装
./awstats_configure.pl
输入自己的httpd主配置文件的位置
/etc/httpd/conf/httpd.conf
输入自己的web-server的主机域名
www1.ujiuye.com
./awstats_configure.pl

Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf 输入自己的httpd主配置文件的位置

-----> 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 --是否创建AWStats 新的配置文件 是

Your web site, virtual server or profile name: ---输入网站名称或虚拟主机
> www1.ujiuye.com 网站名称

-----> 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):
>
Press ENTER to continue... ---回车继续
/usr/local/awstats/tools/awstats_updateall.pl now --日志更新
http://localhost/awstats/awstats.pl?config=www1.ujiuye.com --访问网址
配置awstats的配置文件,关联服务日志
/etc/httpd/logs/ 日志文件位置
vim /etc/awstats/awstats.www1.ujiuye.com.conf
LogFile="/etc/httpd/logs/access_www1_2019103100.LOG0"写入
修改为网站的对应的日志文件


配置logfile,然后查看统计目录

需要建立此刷新统计记录: 创建目录 mkdir /var/lib/awstats

4.)进行执行日志统计分析
/usr/local/awstats/tools/awstats_updateall.pl now ---更新日志

Found 1 new qualified records. -找到一条记录因为访问了一下
5.)将其过程可以写进周期性计划任务,定时5分钟执行

6.)登录浏览器,浏览日志统计记录
(浏览的URL属于服务器内部专用,尽量好做好访问控制)
http://192.168.10.20/awstats/awstats.pl?config=www1.ujiuye.com

配置几个虚拟主机的日志
如果需要配置几个虚拟主机的日志,首先 复制www1为 www2 然后修改2的配置文件
修改为相应的网站观测配置文件,修改日志文件的路径与主机名:
cd /etc/awstats/ ---到目录下
cp awstats.www1.ujiuye.com.conf awstats.www2.ujiuye.com.conf -复制文件
vim awstats.www2.ujiuye.com.conf --修改配置内容

修改内容如下 到/etc/httpd/logs/ 目录下找要监测的日志www2

50 LogFile="/etc/httpd/logs/access_www2_2019103100.LOG"
154 SiteDomain="www2.ujiuye.com"
169 HostAliases="www2.ujiuye.com www.www1.ujiuye.com 127.0.0.1 localhost"
注:可以删除原日志后,重启httpd服务 /etc/init.d/httpd restart
然后访问:
http://192.168.10.20/awstats/awstats.pl?config=www1.ujiuye.com
http://192.168.10.20/awstats/awstats.pl?config=www2.ujiuye.com


4.httpd的压力测试工具 ab
webbench http_load
专业级的压力测试工具:jmeter(开源)loadrunner(商业)
tcpcopy(将流量拷贝进行新服务器重放)
1.)ab命令格式
ab [option] URL [option]:选项 URL:网址
-n:总请求数
-c:模拟的并发数
-k:以持久连接模式测试
例如: ab -c 100 -n 1000 -k http://192.168.10.20/index.html
Server Software: Apache/2.2.15 --阿帕奇版本
Server Hostname: 192.168.10.20 --请求的主机名或ip
Server Port: 80 --测试web服务器监听的端口
Concurrency Level: 100 --并发数量
Time taken for tests: 0.159 seconds--所有请求被处理完成的时间
Complete requests: 1000 --总请求数
Failed requests: 0--失败的总请求数
Requests per second: 6300.52 [#/sec] (mean) --并发量每秒处理的请求数
Time per request: 15.872 [ms] (mean) --用户评价请求的等待时间
Time per request: 0.159 [ms] (mean, across all concurrent requests)
----服务器平均处理请求时间
Percentage of the requests served within a certain time (ms) --描述每个请求处理的分布状况

2.)ulimit -a 参数 用来显示当前的各种用户进程限制 系统调优
1参 数:
-a 显示目前资源限制的设定。
-c <core文件上限> 设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可打开的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆栈大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t <CPU时间> 指定CPU使用时间的上限,单位为秒。
-u <进程数目> 用户最多可启动的进程数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
2. 系统调优
如前所述, ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
3.)永久??解除 Linux 系统的最大进程数和最大文件打开数限制:
暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
说明:* 代表针对所有用户
noproc 是代表最大 进程数
nofile 是代表最大 文件打开数

浙公网安备 33010602011771号