--string Debian 8을 사용하여 iptables HTTP 속도 제한을 제외하세요.

--string Debian 8을 사용하여 iptables HTTP 속도 제한을 제외하세요.

HTTP 요청을 초당 최대 20개 요청으로 제한하려고 합니다(그 이상인 경우 거부). 하지만 이 규칙에서 (.png, .js, .css) 파일에 대한 요청을 제외하고 싶습니다. 다음을 사용했습니다. 암호

iptables -N RATELIMITING
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "/" -j RATELIMITING
iptables -A RATELIMITING -p tcp --dport 80 -m string --algo bm --string "\.(jpe?g|png|gif|js|css|woff)$" -j RETURN
iptables -A RATELIMITING -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -A RATELIMITING -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 1 --hitcount 20 -j REJECT --reject-with tcp-reset
iptables -A RATELIMITING -j RETURN

20개가 넘는 요청을 차단하지만 규칙에서 (.png, .js, .css) 파일을 제외하지는 않습니다. 이 파일에 20개의 요청을 보내면 귀하도 차단됩니다. 여기서 뭔가 문제가 있는 것 같습니다. 무엇을 잘못하고 있습니까?

답변1

iptables-extensions매뉴얼 페이지에는 여기에서 정규 표현식이 허용된다는 언급이 없으므로 그렇지 않은 것 같습니다. 선택 항목에 대해 별도의 규칙을 만들어야 합니다. (그런데 체인 -p tcp --dport 80의 일부를 반복할 필요는 없습니다 RATELIMITING. 설정에서는 항상 그렇습니다.)

관련 정보