Note to Self

公開する緊張感で、読み返した時に??にならない自分用メモです

iptablesは DROP , REJECT or --reject-with tcp-rest

Fail2banの設定をしていて、BAN後の処理に迷ったのでメモ

DROP / REJECT 基礎知識

DROPにする理由

  • DROPして何も情報を渡さないほうが良い
  • DROPの方がアタッカーの時間が掛かる
  • REGECTで何度もアクセスされて反応を返すとサーバーの転送量が増える

REJECTにする理由

  • DROPでもREGECTでも、firewallがあることはアタッカーにわかってしまう。
  • 正規のユーザにとってDROPされると時間が掛かって迷惑だから、REGECTですぐに反応を返すべき
  • アクセス者がDROPされて接続がうまくいかないとき、どうせリトライするからサーバの転送量はREJECTと変わらない

REJECT --reject-with tcp-reset とは

アクセスに対して unreachable なのを伝えないことで、そのポートで何も listen していないかのように振る舞える

  • DROPでもREJECTでも"filtered"なのはアタッカーに分かってしまう
  • REJECTtcp-resetならポートが閉じている状態と同じ反応を返す

選択肢

  • DROP:相手に時間を掛けさせたい場合
  • REJECT --reject-with tcp-rest:無反応 相手に情報を渡さないのはtcp-restの方がDROPより優れている
  • FORWARD:DROPREJECTもしないで自然な様子を振舞う

結論

今回は、 REJECT --reject-with tcp-restで運用してみる