Eu tenho um servidor CentOS 7 recém-instalado, rodando o Apache httpd 2.4.6 e notei que seus logs de auditoria crescem muito rápido, com muitas entradas como esta:
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
Anexar o depurador a um processo filho apache aleatório e aguardar a falha dá:
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 ()
Parece que é causado por mod_ssl. Observando os logs do httpd, posso correlacionar os seguintes eventos a partir de diferentes arquivos de log:
[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
e:
[Fri Feb 06 15:44:10.147381 2015] [core:notice] [pid 2689] AH00052: child pid 44258 exit signal Segmentation fault (11)
Portanto, por um lado, não quero permitir a renegociação SSL insegura no Apache httpd. Mas estou recebendo um ou dois erros como esses a cada segundo, o que significa 3 linhas de log nos logs do apache, 1 linha no log de auditoria e, bem, um processo filho do apache falhando.
É possível evitar que esses processos travem? Só porque a renegociação insegura do legado não é permitida, isso significa que ele precisa ser segmentado? Alguma idéia para melhorar esta situação?
PS: Versões de software:
Tags mod-ssl apache-2.4