AST-2014-007: Fix DOS by consuming the number of allowed HTTP connections.
authorRichard Mudgett <rmudgett@digium.com>
Thu, 12 Jun 2014 17:00:08 +0000 (17:00 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Thu, 12 Jun 2014 17:00:08 +0000 (17:00 +0000)
commit4ca5745dbe4c177d9be36f0fb64eda714c613c4b
treef0f359d02cc77e055b08fb1bee514357ffe00c25
parent435343cfea85d54b59a271685530e09c3844ec7b
AST-2014-007: Fix DOS by consuming the number of allowed HTTP connections.

Simply establishing a TCP connection and never sending anything to the
configured HTTP port in http.conf will tie up a HTTP connection.  Since
there is a maximum number of open HTTP sessions allowed at a time you can
block legitimate connections.

A similar problem exists if a HTTP request is started but never finished.

* Added http.conf session_inactivity timer option to close HTTP
connections that aren't doing anything.  Defaults to 30000 ms.

* Removed the undocumented manager.conf block-sockets option.  It
interferes with TCP/TLS inactivity timeouts.

* AMI and SIP TLS connections now have better authentication timeout
protection.  Though I didn't remove the bizzare TLS timeout polling code
from chan_sip.

* chan_sip can now handle SSL certificate renegotiations in the middle of
a session.  It couldn't do that before because the socket was non-blocking
and the SSL calls were not restarted as documented by the OpenSSL
documentation.

* Fixed an off nominal leak of the ssl struct in
handle_tcptls_connection() if the FILE stream failed to open and the SSL
certificate negotiations failed.

The patch creates a custom FILE stream handler to give the created FILE
streams inactivity timeout and timeout after a specific moment in time
capability.  This approach eliminates the need for code using the FILE
stream to be redesigned to deal with the timeouts.

This patch indirectly fixes most of ASTERISK-18345 by fixing the usage of
the SSL_read/SSL_write operations.

ASTERISK-23673 #close
Reported by: Richard Mudgett
........

Merged revisions 415841 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 415854 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 415896 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@415907 65c4cc65-6c06-0410-ace0-fbb531ad65f3
UPGRADE.txt
channels/chan_sip.c
configs/http.conf.sample
include/asterisk/tcptls.h
include/asterisk/utils.h
main/http.c
main/manager.c
main/tcptls.c
main/utils.c
res/res_http_websocket.c