Haproxy: Verkehr vom Benutzeragenten aus Datei ablehnen

7

Ich versuche, Verbindungen von bestimmten Benutzeragenten abzulehnen (indem eine Teilzeichenfolge des Benutzeragenten-Headers abgeglichen wird), indem ich eine Haproxy-ACL mit der Option -f zum Lesen aus einer Datei verwende. Es funktioniert jedoch nicht, es wird so ausgeführt, als würde die Konfiguration ignoriert.

Kann jemand mit größerer Erfahrung mit Haproxy genau bestimmen, was mir fehlt? Oder einige Tipps zum Debuggen dieser Haproxy-Konfiguration?

Ich führe haproxy 1.4.18 aus.

Dies ist der Auszug aus haproxy.cfg:

listen http 0.0.0.0:80
    acl abuser hdr_sub(user-agent) -f /etc/haproxy/abuser.lst
    tcp-request content reject if abuser
    mode http
    server www1 127.0.0.1:8080 maxconn 10000

Dies ist der Inhalt der Datei abuser.lst:

# annoying bots
annoyingbot1
annoyingbot2
Raugfer
quelle

Antworten:

4

Diese Frage ist alt, aber falls jemand anderes auf dieses Problem stößt:

Ihr Problem ergibt sich aus der Tatsache, dass tcp-request contentHAProxy ausgeführt wird , bevor Layer 7-Daten empfangen / gelesen werden können.

Wie kann ich das beheben?

Einfach: Fügen Sie eine TCP-Anfrage Inspect-Delay hinzu :

listen http 0.0.0.0:80
    tcp-request inspect delay 15s

    acl abuser hdr_sub(user-agent) -f /etc/haproxy/abuser.lst
    tcp-request content reject if abuser
    mode http
    server www1 127.0.0.1:8080 maxconn 10000

Hier ist das Wichtige dazu aus der HAProxy-Dokumentation:

Beachten Sie, dass Haproxy bei der Inhaltsprüfung die gesamten Regeln für jeden neuen Chunk auswertet, der eingeht, und dabei berücksichtigt, dass diese Daten teilweise sind. Wenn vor der oben genannten Verzögerung keine Regel übereinstimmt, wird nach Ablauf eine letzte Überprüfung durchgeführt, diesmal unter Berücksichtigung der Tatsache, dass der Inhalt endgültig ist. Wenn keine Verzögerung eingestellt ist, wartet Haproxy überhaupt nicht und wendet sofort ein Urteil auf der Grundlage der verfügbaren Informationen an . Offensichtlich ist dies wahrscheinlich nicht sehr nützlich und kann sogar rassig sein, daher werden solche Setups nicht empfohlen.

Liquidität
quelle
Gibt es signifikante Auswirkungen auf die Leistung durch die Verwendung vontcp-request inspect delay 15s
Gaurav Pundir