우분투 서버에서 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의 유형 : 어느 것이 (잠재적으로) 유해합니까?
답변
속도 제한은 예방이 아니라 DoS에 대한 초대입니다. 특히 상태 정보가없는 인증되지 않은 패킷의 특정 비율이 초과 된 경우 패킷이 삭제되는 위에서 제시된 방식에서 특히 좋습니다. 모든 사람이 더 큰 노력없이이 연결 상태에서 패킷 (소스 IP 주소 포함)을 위조 할 수 있으므로 속도 제한 기능을 활용하는 새로운 DoS 공격 벡터가 발생합니다.
일반적으로 요율 제한은
- 구성에서 예측 가능한 하드 또는 소프트 연결 제한
- 부하에 관계없이 우선 순위 또는 관리 트래픽에 대한 연결을 설정할 수 있으려면 일반 트래픽에 대한 속도 제한을이 제한 아래로 설정하십시오.
1. 종종 귀찮게 결정하기에는 충분하지 않지만, 2. 연결 설정시 “우선 순위 또는 관리”트래픽을 나머지 트래픽과 안정적으로 구별 할 수있는 경우에만 작동합니다 (예 : 다른 네트워크 인터페이스를 통해 오는 경우).
다른 경우에는 시스템의 복원력을 시스템에 추가하는 것보다 오히려 줄입니다.
답변
-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
사실, 오늘 중단 된 많은 서버는 공격 중에 리소스가 부족하여 가져 오지 않고 제한 모듈로 인해 들어오는 모든 트래픽이 삭제되는 것으로 판명되었습니다.
답변
일반적으로 속도 제한 규칙을 다음과 같은 서버로 제한합니다.
- 적은 양의 예상 트래픽
- 인증 서비스
예를 들어 호스팅 제어판의 로그인 페이지, POP3, IMAP, SSH 등이 있습니다. 일반적으로 HTTP 서비스를 크게 열어두고 문제가있는 경우에만 차단합니다.
좋은 웹 트래픽을 삭제하지 않으려 고합니다. slashdot의 링크는 많은 트래픽을 보내고 글로벌 규칙을 사용하면 문제를 인식하지 못할 수 있습니다.
스푸핑 된 IP와 관련하여이 방법을 사용하여 IP를 차단할 수 없으며 이러한 규칙은 주로 설정된 TCP 연결 제한에 중점을두기 때문에 문제가되지 않습니다. 스푸핑 IP를 사용하면 TCP 연결을 설정할 수 없습니다.