Apache、mod_ssl、不安全的重新协商和分段错误

Apache、mod_ssl、不安全的重新协商和分段错误

我有一个新安装的 CentOS 7 服务器,运行 Apache httpd 2.4.6,我刚刚注意到它的审计日志增长得太快,有很多像这样的条目:

type=ANOM_ABEND msg=audit(06/02/15 15:44:09.341:906003) : auid=unset uid=apache gid=apache ses=unset subj=system_u:system_r:httpd_t:s0 pid=44258 comm=httpd reason="memory violation" sig=SIGSEGV

将调试器附加到随机 Apache 子进程并等待其崩溃将产生以下结果:

Program received signal SIGSEGV, Segmentation fault.                                                                                                                                          
0x00007f8433bf47f8 in main_arena () from /lib64/libc.so.6                                                                                                                                     
(gdb) backtrace                                                                                                                                                                               
#0  0x00007f8433bf47f8 in main_arena () from /lib64/libc.so.6                                                                                                                                 
#1  0x00007f8428e4de43 in ssl_hook_Access () from /etc/httpd/modules/mod_ssl.so                                                                                                               
#2  0x00007f8435370490 in ap_run_access_checker ()                                                                                                                                            
#3  0x00007f8435372d75 in ap_process_request_internal ()                                                                                                                                      
#4  0x00007f843538dbe0 in ap_internal_redirect ()                                                                                                                                             
#5  0x00007f843538e074 in ap_process_async_request ()                                                                                                                                         
#6  0x00007f843538e404 in ap_process_request ()                                                                                                                                               
#7  0x00007f843538adb2 in ap_process_http_connection ()                                                                                                                                       
#8  0x00007f8435382e30 in ap_run_process_connection ()                                                                                                                                        
#9  0x00007f842acdc7ef in child_main () from /etc/httpd/modules/mod_mpm_prefork.so                                                                                                            
#10 0x00007f842acdca26 in make_child () from /etc/httpd/modules/mod_mpm_prefork.so                                                                                                            
#11 0x00007f842acdd6be in prefork_run () from /etc/httpd/modules/mod_mpm_prefork.so                                                                                                           
#12 0x00007f84353600fe in ap_run_mpm ()                                                                                                                                                       
#13 0x00007f8435359726 in main () 

看来这是由 mod_ssl 引起的。查看 httpd 日志,我可以从不同的日志文件关联以下事件:

[Fri Feb 06 15:44:09.343116 2015] [ssl:error] [pid 44258] [client X.X.X.39:29260] AH02225: Re-negotiation request failed
[Fri Feb 06 15:44:09.343167 2015] [ssl:error] [pid 44258] SSL Library Error: error:14080152:SSL routines:SSL3_ACCEPT:unsafe legacy renegotiation disabled

和:

[Fri Feb 06 15:44:10.147381 2015] [core:notice] [pid 2689] AH00052: child pid 44258 exit signal Segmentation fault (11)

因此,一方面,我不想允许 Apache httpd 中不安全的 SSL 重新协商。但我每秒都会收到一两个这样的错误,这会导致 Apache 日志中出现 3 行日志,审计日志中出现 1 行日志,并且 Apache 子进程崩溃。

是否有可能防止这些进程崩溃?仅仅因为不允许不安全的遗留重新协商,是否意味着它需要分段错误?有什么想法可以改善这种情况?

注:软件版本:

  • OpenSSL 1.0.1e-fips 2013 年 2 月 11 日
  • 服务器版本:Apache/2.4.6 (CentOS);服务器建立时间:2015 年 1 月 12 日 13:22:31

相关内容