---
title:  Disable TCP SYN Cookies
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

Most default Linux installations use SYN cookies to protect the 
system against malicious attacks (such as DDOS) that flood TCP SYN packets.

This feature is not compatible with stable and busy <%=vars.product_name%> clusters. SYN Cookies protection gets
incorrectly activated by normal <%=vars.product_name%> traffic, severely limiting bandwidth and new connection
rates, and destroying SLAs. Security implementations should instead seek to prevent DDOS types of
attacks by placing <%=vars.product_name%> server clusters behind advanced firewall protection.

To disable SYN cookies permanently:

1. Edit the `/etc/sysctl.conf` file to include the following line:

    ``` pre
    net.ipv4.tcp_syncookies = 0
    ```
    Setting this value to zero disables SYN cookies.
2. Reload `sysctl.conf`:

    ``` pre
    sysctl -p
    ```
