1. ホーム
  2. linux

[解決済み] SYN_SENTを停止するには?

2022-02-07 12:31:58

質問

実行中 netstat は、サーバーを再起動しても、この行が何百も表示されます - 再び送信を開始し、そのIPへの多くの接続を引き起こします。

tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT
tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT
tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT
tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT
tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT

すべてのスクリプトを停止しましたが、まだ試行錯誤が続いています。

これは、IPが応答していないことを意味していると思いますが SYN_SENT を止めるにはどうすればよいのでしょうか? SYN_SENT ? または、これに対する最良の解決策は何ですか?

ありがとうございます。

解決方法は?

この質問は多くのビューを得るが、まだ答えがないようなので、解決策を探している人のために私自身の質問に答えることにしました。

まず最初に、原因を知ることは解決策の半分です。私は、HTTPプロトコルの動作を自分自身に対して使用するSYNフラッディング攻撃と呼ばれるものにさらされていました。

簡単に説明すると、リモートクライアントがSYNを送信してサーバーとの接続を確立しようとすると、サーバーはSYN_ACKで応答し(ログにはSYN_SENTと表示されます)、ACKを受け取るまで待ちます。ACKがxx秒以内に受信されない場合、サーバーはSYN_ACKを再度送信し、・・・・・・・・・・・・・・・を繰り返します。最終的には設定された閾値に達し、それ以上のSYNリクエストは受け付けなくなり、サーバーは応答しなくなります。私に起こった症状の1つは、私のウェブサイトが何事もなかったかのように一度は反応したが、次のxx回で反応しなくなったというものです。

私の場合は、SYNクッキーを有効にして、サーバーにSSH接続し、お気に入りのエディターで以下のファイルを開いて、解決策を得ました。この例ではviを使用しています。

vi /etc/sysctl.conf

そして、これらの行をファイルに追加し、サーバーを再起動します。うまくいけば、私の場合のように、これで攻撃を止めることができます。

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3

私はCentOSを使用していたので、上記の解決策はすべてのディストリビューションで動作すると思いますが、そうでない場合は、お使いのLinuxディストリビューションの "How to stop SYN Flooding Attack" を検索してください。

余談ですが、SYNリクエストを開始したIPをブロックしても、攻撃者がIPを偽装している可能性が高いので、おそらく役に立ちません。