공격을 피하십시오 DDoS 공격 와 iptables에 패킷 크기, 연결 제한 등에 따라 여러 가지 방법이 있습니다. 여기에서는 쉽고 직관적이며 잘 설명 된 방법으로 목표를 달성하고 서버에 대한 다른 성가신 공격을 차단하는 방법을 살펴 봅니다.
# Iptables
IPT="/sbin/iptables"
ETH="eth0"
#Todo el tráfico syn
$IPT -P INPUT DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -P OUTPUT DROP
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A OUTPUT -m state --state INVALID -j DROP
$IPT -P FORWARD DROP
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A FORWARD -i lo -o lo -j ACCEPT
#Cuando sube la carga
$IPT -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable
#La que mejor va
$IPT -N syn-flood
$IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
$IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
$IPT -A syn-flood -j DROP
#Igual que el de arriba pero muy raw
$IPT -N syn-flood
$IPT -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
#Descartar paquetes mal formados
$IPT -N PKT_FAKE
$IPT -A PKT_FAKE -m state --state INVALID -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
$IPT -A PKT_FAKE -f -j DROP
$IPT -A PKT_FAKE -j RETURN
#Syn-flood
$IPT -N syn-flood
$IPT -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
$IPT -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence --log-tcp-options --log-ip-options -m limit --limit 1/second
$IPT -A syn-flood -j DROP
#Requiere módulo "recent"
modprobe ipt_recent
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP
# explicación:
# Se añade cada ip que se conecte a la tabla de recent
# Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
$IPT -I INPUT -p tcp --syn -m recent --set
$IPT -I INPUT -p tcp --syn -m recent --update --seconds 10 --hitcount 30 -j DROP
#UDP Flood
$IPT -A OUTPUT -p udp -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
$IPT -A OUTPUT -p udp -j DROP
그것이하는 일은 SYN 패킷의 수를 세는 것입니다 (TCP 연결 시작) 지난 10 초 동안 각 IP 주소에 대해. 30에 도달하면 해당 패킷을 폐기하므로 연결이 설정되지 않습니다 (TCP는 설정할 수있는 제한 아래로 떨어지면 여러 번 재 시도합니다.).
#Evitando Layer7 DoS limitando a 80 la máxima cantidad de conexiones
$IPT -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min --hashlimit-burst 80 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j DROP
#Permitir el ping, pero a 1 paquete por segundo, para evitar un ataque ICMP Flood
$IPT -A INPUT -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
$IPT -A INPUT -p icmp -j DROP
#Evitando que escaneen la máquina
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,RST SYN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,RST FIN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,FIN FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,URG URG –j DROP
다음은 붙여 넣기의 스크립트입니다. 풀.DesdeLinux.net(이전 스크립트)
참조 :
- DDoS 중지 시도 (ElHacker.net 포럼)
- DDoS 공격을 피하는 방법과 실제 서버에서 어떻게 경험할 수 있습니까? (ElHacker.net 포럼)
- 조건부 (말리바이트.net)
- 아주 좋은 예 (LinuxGuruz.org)
- DDoS 공격 방지 (LinuxSecurity.com)
- 공격을 방지하기 위해 TCP / IP 스택 강화 (시큐리티포커스닷컴)
이것이 제가 DDoS 공격 전에 튜토리얼을 넣은 이유입니다 😉
이유 또는 문제 (이전 자습서)를 입력 / 설명하고 솔루션 (이 자습서)도 제공합니다.
완벽한.
어린이 사탕 ...
좋은 기사.
내 XNUMX 센트 :
UDP 패킷의 경우 SYN 플래그는 상태 제어가없는 프로토콜이기 때문에 존재하지 않습니다. 그러나 역설적이게도 NEW 및 ESTABLISHED 상태는 iptables가이 목적을 위해 내부적으로 테이블을 전달하기 때문에 존재합니다.
반면에 제 생각에는 두 가지 이유로 REJECT 대신 DROP 대상을 사용하는 것이 좋습니다. 첫째, 거부 대상은 가능한 공격자에게 정보를 제공하고 컴퓨터는 연결의 일부를 사용하여 전송합니다. 공격 팀에 알림.
또 다른 한 가지는 ICMP 프로토콜 (및 일반적으로)의 경우 요청과 응답을 모두 조절하는 것이 편리하다는 것입니다. 왜냐하면 우리는 자신을 핑하는 데 어느 시점에서 관심이 있고이 기능을 활성화함으로써 누군가가 봇넷을 사용하여 소스 주소를 위조하여 이러한 손상된 PC를 끝없이 핑하면 응답이 서버로 이동하여 제한이 적용되지 않으면이를 무너 뜨립니다.
일반적으로 ICMP 유형 0,3,8,11 및 12를 허용하며 입력 제한은 초당 XNUMX 개이고 버스트는 최대 XNUMX 개 또는 XNUMX 개이며 나머지는 모두 DROP으로 남겨 둡니다.
실제로는 더 잘 조절할 수있는 TCP 프로토콜을 제외하고 다른 모든 프로토콜은 최근 유형 일치를 통해 anti-DDoS 조치로 보호되어야합니다. 이와 관련하여 호기심으로이 모듈의 작성자는 업데이트를 먼저 배치 한 다음 세트를 배치하는 것을 좋아합니다.
Iptables는 정말 매우 유연하고 강력합니다. 지금까지 제가 제안한 유일한 작업은 아직 성공하지 못했습니다 (하지만 거의 달성 할 수는 있지만). 도구에 대해 배웠지 만 아직 표면을 긁지 않은 것 같습니다. 😉
어쨌든이 세상에서는 항상 공부해야합니다.
Hugo, 용어집에 대한 좋은 점 : D, 항상 그렇듯이 학습 ...
그건 그렇고, 나는 이미 나를 위해 일할 psd 모듈을 가지고 있습니다. 문제는 처음에는 패치-오 매틱과 함께 사용되지 않는 커널 기능에 의존했기 때문에 기본적으로 netfilter의 내장 모듈에서 제거되었습니다. 이제 데비안에서 psd 확장을 사용하려면 먼저 다음을 수행해야합니다.
aptitude -RvW install iptables-dev xtables-addons-{common,source} module-assistant
module-assistant auto-install xtables-addons-source
그런 다음 지침에 따라 정상적으로 사용할 수 있습니다.
man xtables-addons
Hugo, psd를 포함하여이 게시물의 스크립트를 개선하기위한 제안과 함께 iptables.sh를 게시하는 것이 어떻습니까?
감사합니다
@hugo의 훌륭한 기사, 훌륭한 iptables 및 훌륭한 설명. 아직도 배울 것이 많다는 확신이 점점 더 커지고 있습니다.
너 혼자가 아니야, 적어도 나 ... 백만이 빠졌어 ... 😀
안녕하세요 여러분, 기여 해주셔서 감사합니다.하지만 진실은 우리가 절망적이며 지금 무엇을해야할지 모르겠습니다. 여러분이 시스템 전문가라는 것을 알고있는이 iptables를 위해 여러분에게 왔습니다.
나는 스페인의 카운터 스트라이크 소스 커뮤니티의 리더이며 우리는 아직 거의 서 있지 않은 소수 중 하나입니다. 우리는 일정 간격으로 기계 및 기타 공격을 받고 있으며 상수는 거의 제거하지 않지만 서버를 지연시킵니다. 시간이 지나면 더 많은 피해를 입 힙니다. 우리의 기계는 6.2 centos에 장착됩니다.
서버를 제어하는 tcadmin이 있습니다. 이런 유형의 공격을 조금이라도 막을 수있는 구성을 만들 수 있습니다. 우리는 이미 절망적입니다.
그리고 우리는 누구에게 의지해야할지 모릅니다. 두 개의 봇넷이 있다는 것을 압니다. 하나는 수제이고 다른 하나는 시간과 힘을 지불했습니다. 따라서 우리는 거의 3 년 동안 이런 유형의 잔인한 공격을 견뎌 왔습니다. 지금은 지속 할 수 없기 때문에 우리를 도울 수 있다면 영원히 감사 할 것입니다. 저는 hoobie와 같은 서버를 구성하는 것을 좋아합니다. 그리고 저는 여러분에게 확신하는 어린 아이가 아닙니다. 이것은 나에게 많은 것입니다. 내 tsXNUMX가 이야기하거나 우리를 도울 수 있다면 내가 좋아하는 것을 원한다면 여기에 결과와 많은 사람들의 이익을 위해 해결 된 모든 것을 게시 할 것입니다. 올해의 가장 많이 방문한 블로그가 될 것입니다. 이러한 공격 ddo를 얼마나 짜증나게하는지 놀랍기 때문입니다. 우리가 직접 구성하려고했고 시스템에 대한 액세스를 차단했기 때문에 BIOS에서 포맷해야했기 때문에 우리가 어떤지 상상해보세요.
따뜻한 인사를 보냅니다. 누락 된 블로그를 축하합니다. 많은 사람들이이 블로그로 업데이트 된 블로그를 찾습니다. -미구엘 엔젤-
안녕하세요 어떻게 지내세요 🙂
제 이메일로 편지를 보내주시면 기꺼이 도와드리겠습니다 😀 -» kzkggaara[@]desdelinux[.]그물
안녕하세요 여러분, 지금까지 제가 일하고있는 동안이 스크립트를 사용하십시오. 그런데 한 가지 의심이 있습니다.«최근»모듈이 성능을 저하시키지 않습니까?
인사말-감사합니다 / 누가 당신을 좋아합니까?
훌륭한 공헌 제 친구, 코스타리카의 포옹 인 우리가 마운트하고있는 튜토리얼 비디오의 참고 문헌에 여러분을 넣을 것입니다.
안녕하세요
여러 포트에서 스크립트를 사용할 수 없습니까?
게임 서버가 있고 웹 및 게임 서버 포트 모두에 대한 공격을받습니다.
인사말.