HAProxyでIPアドレスをブロックする方法は?


回答:


21

ACLを作成し、ACLが一致する場合は接続拒否を使用することにより、tcpレベルでIPをドロップできます。

    acl bad_ip src 10.10.10.0
    tcp-request connection reject if bad_ip

HTTPレベルで実行したい場合は、403バックエンドを設定して送信することもできます。

frontend foo
        ...
        acl bad_ip src 10.10.10.0
        use_backend bad_guy if bad_ip
...

backend bad_guy
        mode http
        errorfile 403 /etc/haproxy/errors/403.http

これらのACLは非常に柔軟で、1つのACL内の複数の条件、またはアクション内の複数のACLを満たす必要があるようにすることができます。詳細については、http://haproxy.1wt.eu/download/1.5/doc/configuration.txtをご覧ください


4
カスタム403エラーページを使用する場合にのみ、別のバックエンドが必要です。それ以外の場合は、「http-request deny if bad_ip」で回避できます
sh-beta

1
dbや別のフラットファイルなど、より柔軟なストアからIPを読み取る方法を知っていますか?
UpTheCreek 2013年

1
そのバックエンドbad_guyは、サーバーが定義されていないため、期待どおりに機能しません。「ダウン」していると見なされ、常に503を返します-サービスは利用できません。フロントエンドの設定に "block if bad_ip"と書けば、403ページが適切にスローされます。編集:bad_ipが@ sh-betaでアドバタイズされたとおりに機能する場合、http-request deny-基本的に同じことを行いますが、おそらくhttpリクエストだけですか?
Dalibor Filus 2013

blockとhttp-request denyの間には、もう1つのわずかな違いがあります。それは、「 'use_backend'ルールの後に配置された 'block'ルールは以前に処理されます」です。
Dalibor Filus 2013

2
「悪い」男に403を与えると、彼はブロックされていることを知っており、別のベクターを探します。「悪い」男に503を与えると、彼はDOSを正常に引き起こして攻撃を停止したと考えます。もちろん、彼はそれを理解できるかもしれませんが、それよりずっと長くかかります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.