[ 
https://issues.apache.org/jira/browse/THRIFT-3970?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claudius Heine updated THRIFT-3970:
-----------------------------------
    Attachment: TestServer.patch
                ThriftDOSAttack.py

> Server does not limititate client connections
> ---------------------------------------------
>
>                 Key: THRIFT-3970
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3970
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9.3
>            Reporter: Claudius Heine
>         Attachments: TestServer.patch, ThriftDOSAttack.py
>
>
> Currently the connection from clients are only closed by the server when a 
> receive timeout is configured or the client is sending invalid messages that 
> cause exceptions on the server (with THRIFT-3957 and THRIFT-3961 merged).
> That means that the client can continue to occupy a limited open connection, 
> as long as it sends valid messages in regular intervals.
>  
> The appended patch enables the connection limit and receive timeout on the 
> TestServer and the appended python script opens many connections to it, thus 
> rapidly exhausting the client connection limit.
> Starting the server:
> {code}
> $ bin/TestServer --protocol=json --transport=http --server-type=thread-pool 
> --port=9080
> {code}
> Starting the script:
> {code}
> $ ./ThriftDOSAttack.py http://localhost:9080 3
> {code}
> After a short period the connection limit of the server should be exhausted 
> and new connections are denied.
> To stop the python script you have to do this in a seperate terminal:
> {code}
> $ kill $(pgrep -f "ThriftDOSAttack.py")
> {code}
> Here are a view ideas to prevent this scenario:
> - Implement traffic limitation of every connection, after limit is reached, 
> disconnect the client.
> - Limit size of a single RPC call and limit number of calls per connection
> - Limit number of connections per IP



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to