netflowとlightsquidを使用してネットワークトラフィックをカウントする

私たちの小さなオフィスに来たら、Linux用のトラフィックアカウンティングシステムをセットアップする必要がありました。 既製のソリューションをすばやく見て、私はもっとシンプルなものを使用することにしました。 グーグルでは、netflow統計をsquid互換のログに変換する自己記述スクリプトを使用するアプローチが好きでした 。 Googleを歩いて完成したスクリプトを使用しませんでした。 それは、debianとubuntuにはないipcadを使用します。 NetFlowセンサーとフローツールをコレクターとして使用して、独自のバージョンを作成しました。 スクリプトは徐々に複雑になり、その結果、小さなトラフィックアカウンティングシステムに成長しました。 この喜びのアーカイブの重量は約50kbですが、









次のようになります。ユーザー管理と統計へのアクセスは、Webインターフェイス( デモ )を介して実行されます。 各ユーザーは、ip、ma​​c、またはip + macを介して認証できます。 許可されていないユーザーには「アクセス拒否」エラーが表示されます。 各ユーザーにsquidフラグを割り当てて、Webトラフィックを透過的なsquidにリダイレクトできます。 各ユーザーにipblockフラグを割り当てて、ipsetを介したトラフィックをブロックできます。 ブロックリスト管理およびその他の微調整は、コンソールを介して行われます。 すべてをインストールして構成する必要はありません。必要なコンポーネントのみを構成できます。

名前としてlightwrapper(lightsquid wrapperから派生)が選択され、 sourceforgeのプロジェクトが作成されました 。 試す方法:



  1. 推奨される依存関係のインストール:apache2 softflowd ipset lightsquid perl iptables flow-tools dnsutils conntrack iptables-persistent
  2. アーカイブをダウンロードし、debをインストールするか、インストーラーを実行します。


実際、多くの依存関係があり、それらの多くは調整が必要です-これはマイナスです。 しかし、このアプローチでは、他の何かが可能になることはほとんどありません。 簡単に説明すると、セットアップは次のように要約されます。

  1. netflowセンサーとコレクターの構成(両方の構成の1行)
    フローツールを構成する
    設定ファイルに入力します(debian-/etc/flow-tools/flow-capture.conf)

    -N 0 -w / tmp -R / usr / sbin / lw-export -n 95 0 / 127.0.0.1 / 2055


    softflowdを構成する
    設定ファイルに入力します(debian-/ etc / default / softflowd):

    INTERFACE = "ローカルネットワークインターフェイスの名前、たとえばeth0"

    OPTIONS = "-n 127.0.0.1:2055"
    Softflowdは簡単に設定できますが、パケットが失われる可能性があります。 パフォーマンスが不足している場合は、 ipt-netflowを試してください。
  2. lightsquidをカスタマイズする
    apache2を構成する
    アーカイブには例が含まれています:lightwrapper.conf-apache2およびaccess_denied.htmlの仮想ホスト構成-非ユーザーに表示するためのスタブ。 例は/ usr / share / doc / lightwrapper / examplesにあります。 lightsquidの仮想ホスト設定(パスワードなしでアクセスできるため)をオフにし、lightwrapperの設定を有効にする必要があります。 debianでは、/ etc / apache2 / sites-enabled / 000-default.confファイルを指定されたファイルで置き換えることができます。 また、cgiモジュールを有効にする必要があります。 debianでは、/ etc / apache2 / mods-enabledの/etc/apache2/mods-available/cgi.loadでリンクを作成する必要があります。 その後、パスワード保護を使用してアクセスを有効にする必要があります。 htpasswdユーティリティがない場合は、apache2-utilsパッケージをインストールします。サイトのルートにetcディレクトリを作成し、管理者パスワードを設定します。htpasswd-c / www / etc / passwd administrator



    lightsquidをカスタマイズする
    システム上にlightparser.plが存在する場合は、cronジョブを削除する必要があります。

    構成ファイルは、インストールスクリプトによって自動的に構成されます。 以下の設定は変更できませんが、lightsquidを好みに合わせてカスタマイズできます。

    $ graphmaxuser = 1

    $ graphmaxall = 1

    $ showgroupid = 0

    $ showputpost = 1

    $ templatename = 'lightwrapper'

    $ logpath = '/ var / log / lightwrapper'

    $ lang = 'lw-eng'

    または別の言語(lw-ru)

  3. 構成ファイルを編集します。 最も単純なケースでは、2つのネットワークインターフェイスの名前を入力するだけです。
    / etc / lightwrapper / cfg:

    in_ifおよびout_if

  4. iptables構成スクリプトを実行します(すべてを自動的に行います。これは一度必要です)
    lw-geniprulesを起動します。 ip v4転送が有効になっていることを確認します(net.ipv4.ip_forward = 1を/etc/sysctl.confに追加し、sysctl --system変更を適用します)。
  5. 追加の依存関係がある場合は、インストールおよび構成します
    透明なイカのインストールは説明されていません。 トラフィックをブロックするためのipset設定は説明されていません。 詳細な手順については、manまたはwikiをご覧ください。
  6. すべてのサービスを再起動して設定を適用するか、再起動します。


デフォルトでは、統計は15分ごとに1回補充されます。 センサーは、少し遅れてストリームを提供する場合があります。

これはすべて、 wikiおよびman lightwrapperで英語で段階的に詳細に説明さています 。 可能なすべての構成ファイルの例がありますが、ほとんどの場合、それらをシステムに単純にコピーできます。



レポートの詳細について少し。 Netflowは次の情報を提供します:IPアドレス、送信元および宛先ポート、プロトコル。







ペア(プロトコル:宛先ポート)の/ etc / servicesにサービス名がある場合、lightwrapperはそれを統計に表示します。 digユーティリティがインストールされている場合、IPアドレスは自動的に名前に解決されます(dnsにそのような一致がある場合)。







透明なsquidがインストールされており、一部のユーザーがリダイレクトされた場合、lightwrapperはsquidログをスキャンし、見つかったIPアドレスと名前を照合します。 squidにリダイレクトさないユーザーの名前にIPアドレスを解決するようにlightwrapperを構成できます。 同時に、明らかな理由により、そのような認識の正確性を保証することはできません。







フィードバックやバグ報告を歓迎します。



All Articles