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

 

 

 

 

 

 

去客户端访问

https://192.168.10.20/

 

##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  是代表最大 文件打开数

 

posted @ 2020-08-01 11:37  浅唱I  阅读(622)  评论(0)    收藏  举报