1. ホーム
  2. オペレーティングシステム
  3. ユニックス/BSD

Freebsd+IPFWの組み合わせで、小規模なDDOS攻撃を防ぐ設定方法を採用。

2022-01-17 18:19:12

  I. Freebsdの魅力
LAN内のインターネットを仮想化し、WindowsクライアントでWindows Server、Linux Server、FreebsdにSyn Floodパケットを無警戒で送信し、Freebsdの効果を偶然発見しました(よくあるDDoS攻撃 Windowsは10パケットになると完全に応答しなくなり、Linuxは10パケットになると異常接続し始め、Freebsdは100パケット以上の Syn Floodに耐えました)。私は会社のウェブサーバをすべてFreebsdプラットフォームに切り替えることにしました。
   しかし、最近になって再び一部のユーザーから「Webサイトに正常にアクセスできない」という報告があり、その症状は「Webページを開くのが遅い」「Webサイトが見つからないと直接表示される」というものでした。そこで、このたび、Webサイトが正常に表示されないという現象が発生しました。
   IPFWは、セキュリティ上の理由から、システム自身を含むすべてのネットワークサービスをデフォルトで拒否するファイアウォールです。
   Freebsd 5.0 Releaseをインストールしたサーバーでテストしてみました。
   また、この機能をオンにする前に、いくつかの準備作業を行う必要があります。
  ここでは、IPFWの基本的なパラメータを設定するところから始めます。
  Step1:準備
  コマンドプロンプトで以下を実行します。
  #cd /sys/i386/conf
  これがない場合は、システムにportsサービスがインストールされていないため、忘れずにインストールする必要があります。
#cp GENERIC . /kernel_IPFW
  ステップ2:カーネルルール
  kernel_IPFWファイルをエディタで開き、以下の4行をファイルの末尾に追加してください。
  オプション IPFIREWALL
  パケットフィルタリング部分のコードをカーネルにコンパイルする。
  オプション IPFIREWALL_VERBOSE
  Syslogd経由のロギングを有効にします。このオプションを指定しないと、フィルタルールでロギングパケットを指定しても実際にはログが記録されません。
  オプション IPFIREWALL_VERBOSE_LIMIT=10
  Syslogdを通じて記録されるパケットルールごとのレコード数を制限します。このオプションは、多数の攻撃を受けていてファイアウォールの活動を記録したいが、一般的にSyslogのフラッディングのためにジャーナル書き込みが失敗することを望まない場合に有用でしょう。このルールでは、ルールチェーンのアイテムが制限値に達すると、それに対応するログはログされなくなります。
  オプション IPFIREWALL_DEFAULT_TO_ACCEPT
  この行が最も重要です。この行は、デフォルトのルールアクションを "deny"から "allow"に変更します。このコマンドは、デフォルトで、IPFWがどんなデータでも受け入れるということです。つまり、サーバはファイアウォールがないように見えるので、もしルールが必要なら、インストールが完了した後に追加すればよいのです。
  入力が終わったらkernel_IPFWファイルを保存して終了します。
  Freebsd は Linux と同様にオープンソースのオペレーティングシステムなので、コードがカプセル化されている Windows とは異なり、何か問題が発生した場合には推測したりマイクロソフトに相談したりするしかありません。Freebsd のシステムカーネルは常に更新されているので、新しいバージョンの機能を使用したり、より効率的で安定したシステムをカスタマイズするために、通常システムカーネルをコンパイルする必要があります。システムカーネルをコンパイルする必要があるのです。
  コンパイルの過程で、いくつかのエラーが表示されることがありますが、エラー表示を最小限にするために、設定ファイルを最小化しています。これ以上エラー表示が出る場合は、入力ミスなどの軽微な問題を再確認してください。必須コマンド
  コマンドラインで次のコマンドを実行します。
  #/usr/sbin/config kernel_IPFW
  実行後、次のようなメッセージが表示されます:Kernel build directory is . /compile/kernel_IPFW Don`t forget to do a make depend`.
  #cd ... /compile/kernel_IPFW
[...] [...] [...]   [...] [...] [...] [...] [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...]