หลีกเลี่ยงการโจมตี 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) สำหรับที่อยู่ IP แต่ละรายการในช่วง 10 วินาทีที่ผ่านมา หากถึง 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)
- สคริปต์ที่มีเงื่อนไข (MaliByte.net)
- เป็นตัวอย่างที่ดีมาก (LinuxGuruz.org)
- การป้องกันการโจมตี DDoS (LinuxSecurity.com)
- การทำให้ TCP / IP Stack แข็งตัวเพื่อป้องกันการโจมตี (SecurityFocus.คอม)
และนี่คือเหตุผลที่ฉันใส่บทช่วยสอนก่อนที่ DDoS จะโจมตี😉
เพื่อใส่ / อธิบายเหตุผลหรือปัญหา (บทช่วยสอนก่อนหน้า) และยังให้วิธีแก้ปัญหา (บทช่วยสอนนี้) 🙂
สมบูรณ์
ขนมเด็ก ...
บทความที่ดี
สองเซ็นต์ของฉัน:
ในกรณีของแพ็กเก็ต UDP จะไม่มีแฟล็ก SYN เนื่องจากเป็นโปรโตคอลที่ไม่มีการควบคุมสถานะ อย่างไรก็ตามในทางตรงกันข้ามรัฐใหม่และสถานะที่จัดตั้งขึ้นนั้นมีอยู่จริงเนื่องจาก iptables มีตารางภายในเพื่อจุดประสงค์นี้
ในทางกลับกันในความคิดของฉันควรใช้ปลายทาง DROP แทน REJECT ด้วยเหตุผลสองประการประการแรกการปฏิเสธเป็นการให้ข้อมูลแก่ผู้โจมตีที่เป็นไปได้และคอมพิวเตอร์กำลังใช้ส่วนหนึ่งของการเชื่อมต่อเพื่อส่ง การแจ้งเตือนไปยังทีมโจมตี
อีกประการหนึ่งคือในกรณีของโปรโตคอล ICMP (และโดยทั่วไป) สะดวกในการควบคุมทั้งคำขอและการตอบสนองเนื่องจากเราอาจสนใจในบางจุดในการ ping ตัวเองและโดยการเปิดใช้งานฟังก์ชันนี้อาจมีคนใช้บ็อตเน็ตและปลอมแปลง จากที่อยู่ต้นทางให้ทำการ ping ที่ไม่มีที่สิ้นสุดไปยังพีซีที่ถูกบุกรุกเหล่านี้จำนวนมากและการตอบสนองจะไปที่เซิร์ฟเวอร์ของเราโดยจะยุบลงหากไม่มีการกำหนดขีด จำกัด
ฉันมักจะอนุญาต ICMP ประเภท 0,3,8,11 และ 12 โดยมีขีด จำกัด อินพุตหนึ่งต่อวินาทีและการระเบิดสูงสุดสองหรือสี่ครั้งและทุกอย่างจะเหลือให้ DROP
ในความเป็นจริงยกเว้นโปรโตคอล TCP ที่สามารถควบคุมได้ดีกว่าอื่น ๆ ทั้งหมดควรได้รับการป้องกันด้วยมาตรการต่อต้าน DDoS ผ่านการจับคู่ประเภทล่าสุด เกี่ยวกับเรื่องนี้เนื่องจากความอยากรู้ผู้เขียนโมดูลนี้ชอบที่จะวางการอัปเดตก่อนแล้วจึงกำหนดชุด
Iptables มีความยืดหยุ่นและทรงพลังมากจนถึงตอนนี้สิ่งเดียวที่ฉันเสนอให้ทำและฉันยังไม่ประสบความสำเร็จ (แม้ว่าฉันใกล้จะบรรลุแล้วก็ตาม) คือการเปิดใช้งานโมดูล psd เพื่อหลีกเลี่ยงการพอร์ตสแกน แต่ถึงแม้จะมีทุกสิ่งที่ฉันได้เรียนรู้เกี่ยวกับเรื่องนี้ เครื่องมือฉันไม่คิดว่าฉันยังมีรอยขีดข่วนบนพื้นผิว 😉
อย่างไรก็ตามในโลกนี้คุณต้องศึกษาอยู่เสมอ
จุดดี Hugo ในไฟล์สำหรับอภิธานศัพท์ของเรา: D เช่นเคยเรียนรู้ ...
ยังไงก็ตามฉันมีโมดูล psd ที่ใช้งานได้แล้ว ปัญหาคือตอนแรกขึ้นอยู่กับฟังก์ชันเคอร์เนลที่เลิกใช้แล้วพร้อมกับ patch-o-matic ดังนั้นจึงถูกลบออกจากโมดูลในตัวใน netfilter ตามค่าเริ่มต้น ดังนั้นใน Debian เพื่อใช้ส่วนขยาย psd ก่อนอื่นคุณต้องทำสิ่งนี้:
aptitude -RvW install iptables-dev xtables-addons-{common,source} module-assistant
module-assistant auto-install xtables-addons-source
จากนั้นสามารถใช้งานได้ตามปกติตามคำแนะนำ:
man xtables-addons
Hugo ทำไมคุณไม่เผยแพร่ iptables.sh พร้อมคำแนะนำของคุณเพื่อปรับปรุงสคริปต์ของโพสต์นี้ (ซึ่งดี) รวมถึง psd
กราเซีย
บทความยอดเยี่ยม iptables ที่ยอดเยี่ยมและคำอธิบายที่ยอดเยี่ยมจาก @hugo ฉันเริ่มเชื่อมั่นมากขึ้นเรื่อย ๆ ว่าฉันยังมีอะไรให้เรียนรู้อีกมาก
ไม่ใช่คุณคนเดียวอย่างน้อยฉัน ... ฉันหายไปเป็นล้าน ... 😀
สวัสดีทุกคนและขอบคุณสำหรับการมีส่วนร่วม แต่ความจริงก็คือเราหมดหวังแล้วเราไม่รู้ว่าจะทำอย่างไรในตอนนี้และเรามาหาคุณสำหรับ iptables นี้ซึ่งเรารู้ว่าคุณเป็นผู้เชี่ยวชาญในระบบ
ฉันเป็นผู้นำของชุมชนในสเปนของแหล่งที่มาของการโต้กลับและเราเป็นหนึ่งในไม่กี่คนที่ยังแทบยืนไม่อยู่เราได้รับการโจมตีอย่างต่อเนื่องบนเครื่องและการโจมตีอื่น ๆ ในช่วงเวลาหนึ่งค่าคงที่จะลบออกไปเล็กน้อย เซิร์ฟเวอร์เพียงเล็กน้อย แต่เป็นช่วงเวลาที่สร้างความเสียหายมากกว่า เครื่องของเราติดตั้งบน 6.2 เซนโตส
และเรามี tcadmin เพื่อควบคุมเซิร์ฟเวอร์ คุณสามารถกำหนดรูปแบบที่สามารถหยุดการโจมตีประเภทนี้ได้แม้เพียงเล็กน้อยก็เท่ากับว่าเราหมดหวังแล้ว
และเราไม่รู้ว่าจะหันหน้าไปหาใครเรารู้ว่ามีบ็อตเน็ตสองอันอันหนึ่งโฮมเมดและอีกอันจ่ายเงินตามเวลาและแรง ดังนั้นเราจึงอดทนต่อการโจมตีที่โหดร้ายประเภทนี้มาเกือบหนึ่งปีแล้วหากคุณสามารถช่วยเราได้เราจะขอบคุณตลอดไปเพราะตอนนี้มันไม่ยั่งยืนฉันชอบที่จะกำหนดค่าเซิร์ฟเวอร์เช่น hoobie และฉันไม่ใช่เด็กที่ฉันรับรอง แต่ นี่เป็นสิ่งที่มากสำหรับฉัน หากคุณต้องการให้ ts3 ของฉันพูดคุยหรือสิ่งใดก็ตามที่ฉันรักให้คุณช่วยเราดังนั้นเราจะโพสต์ผลลัพธ์และทุกสิ่งที่ได้รับการแก้ไขเพื่อประโยชน์ของคนจำนวนมากมันจะเป็นบล็อกที่มีผู้เยี่ยมชมมากที่สุดแห่งปีที่ฉันรับรองเพราะ มันเหลือเชื่อมากที่มันสร้างความรำคาญให้กับ ddos การโจมตีเหล่านี้ เนื่องจากเราพยายามกำหนดค่าด้วยตัวเองและบล็อกการเข้าถึงเครื่องเราจึงต้องฟอร์แมตจากไบออสดังนั้นลองนึกดูว่าเราเป็นอย่างไร
ฉันส่งคำอวยพรอย่างจริงใจ และขอแสดงความยินดีกับบล็อกที่หายไปหลายคนพบว่ามีการอัปเดตด้วยบล็อกนี้ - มิเกลแองเจิล -
สวัสดีคุณเป็นอย่างไรบ้าง🙂
เขียนถึงอีเมลของฉัน เรายินดีที่จะช่วยเหลือคุณ 😀 -» kzkggaara[@]desdelinux[.]สุทธิ
สวัสดีทุกคนจนถึงตอนนี้ที่ฉันทำงานใช้สคริปต์นี้ดีมาก ... มีข้อสงสัยประการหนึ่ง: โมดูล "ล่าสุด" ไม่ลดประสิทธิภาพหรือไม่?
ทักทาย - ขอบคุณ / ชอบใคร?
การสนับสนุนที่ยอดเยี่ยมเพื่อนของฉันฉันจะนำคุณไปสู่การอ้างอิงของวิดีโอแนะนำที่เรากำลังดำเนินการกอดจากคอสตาริกา
สวัสดี
ไม่สามารถใช้สคริปต์ในหลายพอร์ตได้หรือไม่?
ฉันมีเซิร์ฟเวอร์เกมและฉันได้รับการโจมตีทั้งบนเว็บและพอร์ตเซิร์ฟเวอร์เกม
คำอวยพร