iptables가있는 패킷을 속도 제한해야합니까?


8

우분투 서버에서 iptables를 사용하고 있습니다. VPS의 웹 서버입니다.
속도 제한 패킷을 사용해야하는지 알고 싶습니다. 그렇다면 요금 제한은 어떻게됩니까? 그리고 전 세계적으로 또는 IP 주소별로 그렇게해야합니까?

참조
나는 사람들이 이것을 제안하는 것을 보았습니다.

# Limit packet traffic on a TCP or UDP port:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m limit --limit $lim/s --limit-burst $lb -j ACCEPT

# Limit established/related packet traffic:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit $lim/s --limit-burst $lb -j ACCEPT

위의 글로벌 속도 제한은 적어도 내가 상상할 수있는 경우에는별로 유용하지 않습니다. 전 세계적으로 속도 제한이 필요한 경우가 있습니까?
IP 당 속도 제한이 일반적으로 더 좋다고 생각합니다.

# Add the IP to the list:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --set --name RATELIMITED
# Drop if exceeded limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --update --seconds $sec --hitcount $hc --rttl --name RATELIMITED -j DROP
# Accept if inside limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -j ACCEPT

추가 질문 : 원격 IP가 스푸핑 될 수 있습니다. 제대로 제한하는 방법?
이에 대한 또 다른 질문이 추가되었습니다 :
/server/340258/how-to-rate-limit-spoofed-ips-with-iptables


내가 D / DoS 공격과 일반적인 남용의 위험을 완화 시키려고하는 목표 .

관련
어떻게 iptables에와 제한 SSH 연결을 평가할 수 있습니까?

추신 : ICMP에 대한 관련 질문을 방금 열었 으며이 프로토콜에 대한 속도 제한이 포함됩니다. iptables | ICMP의 유형 : 어느 것이 (잠재적으로) 유해합니까?

답변:


6

속도 제한은 예방이 아니라 DoS에 대한 초대입니다. 특히 상태 정보가없는 인증되지 않은 패킷의 특정 비율이 초과 된 경우 패킷이 삭제되는 위에서 제시된 방식에서 특히 좋습니다. 모든 사람이 더 큰 노력없이이 연결 상태에서 패킷 (소스 IP 주소 포함)을 위조 할 수 있으므로 속도 제한 기능을 활용하는 새로운 DoS 공격 벡터가 발생합니다.

일반적으로 요율 제한은

  1. 구성에서 예측 가능한 하드 또는 소프트 연결 제한
  2. 부하에 관계없이 우선 순위 또는 관리 트래픽에 대한 연결을 설정할 수 있으려면 일반 트래픽에 대한 속도 제한을이 제한 아래로 설정하십시오.

1. 종종 귀찮게 결정하기에는 충분하지 않지만, 2. 연결 설정시 "우선 순위 또는 관리"트래픽을 나머지 트래픽과 안정적으로 구별 할 수있는 경우에만 작동합니다 (예 : 다른 네트워크 인터페이스를 통해 오는 경우).

다른 경우에는 시스템의 복원력을 시스템에 추가하는 것보다 오히려 줄입니다.


안녕하세요 syneticon-dj. 나는 잘못 구성된 방화벽이 DoS 공격을위한 또 다른 도구라는 것을 이해하고 동의합니다. 고마워요!
ML--

서버 당 또는 서버 당 속도 제한은 서버에 비해 너무 크지 만 발신자가 Bingbot의 악의적 인 행동 (예 : 악의적 인 행동)을 악용 할 가능성이없는 합법적 인 트래픽을 방어 할 때 의미가있는 것으로 보입니다. 페이스 북 봇.
Ján Lalinský

3

-m limit의 문제점은 소스 IP 주소에 관계없이 모든 TCP 패킷의 한계입니다. 따라서 syn 패킷에 대한 제한이 낮다면

-A INPUT -p tcp  --syn -m limit --limit 30/s --limit-burst 30 -j ACCEPT
-A INPUT -p tcp --syn -j DROP

제한 규칙이 일치하고 소스 IP 주소에 관계없이 많은 패킷을 삭제하므로 hping 명령 줄을 사용하는 클라이언트 하나만 SYN 플래그와 함께 많은 tcp 패킷을 전송하여 서버를 중단시킬 수 있습니다. 한도가 좋은 트래픽과 나쁜 트래픽의 차이를 만들지 않습니다. 들어오는 트래픽도 줄어 듭니다.

hping은 다음과 같습니다.

hping thetargetedhostip -p 80 -S -c 1000 -i u20000

IP 주소 당 들어오는 TCP 연결을 제한하기 위해 hashlimit를 사용하는 것이 좋습니다 . 다음 규칙은 초당 30 개의 패킷이 수신되는 경우에만 일치 하며 IP 당 인증 된 패킷 수를 초당 15 개의 패킷으로 줄입니다.

-A INPUT -p tcp --syn -m hashlimit --hashlimit 15/s --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-name synattack -j ACCEPT 
-A INPUT -p tcp --syn -j DROP

사실, 오늘 중단 된 많은 서버는 공격 중에 리소스가 부족하여 가져 오지 않고 제한 모듈로 인해 들어오는 모든 트래픽이 삭제되는 것으로 판명되었습니다.


1

일반적으로 속도 제한 규칙을 다음과 같은 서버로 제한합니다.

  • 적은 양의 예상 트래픽
  • 인증 서비스

예를 들어 호스팅 제어판의 로그인 페이지, POP3, IMAP, SSH 등이 있습니다. 일반적으로 HTTP 서비스를 크게 열어두고 문제가있는 경우에만 차단합니다.

좋은 웹 트래픽을 삭제하지 않으려 고합니다. slashdot의 링크는 많은 트래픽을 보내고 글로벌 규칙을 사용하면 문제를 인식하지 못할 수 있습니다.

스푸핑 된 IP와 관련하여이 방법을 사용하여 IP를 차단할 수 없으며 이러한 규칙은 주로 설정된 TCP 연결 제한에 중점을두기 때문에 문제가되지 않습니다. 스푸핑 IP를 사용하면 TCP 연결을 설정할 수 없습니다.


안녕하세요 jeffatrackaid, 답변 주셔서 감사합니다! 이러한 유형의 서비스 (SSH 등)를 (전 세계적으로) 속도 제한하는 경향이 있습니다. HTTP 트래픽과 관련하여 전역 제한을 적용하지 않으려는 이유입니다. 이 질문에서 나는 IP 당 한계가 흥미로울 수있는 경우가 있는지를 기대합니다. 스푸핑 된 IP에 대해서는 연결을 설정할 수 없지만 SYN 플러드를 사용하여 DoS가 발생할 가능성이 있습니다. 나는 이것이 어떻게 완화 될 수 있는지에 관심이있다.
ML--
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.