Score:-1

DDOS Attack ไปยังเซิร์ฟเวอร์ http และ iptables ไม่ช่วย (ฉันมี access_log)

ธง in

ฉันอยู่ภายใต้การโจมตี DDOS ที่กำหนดเป้าหมายเซิร์ฟเวอร์ http ฉันลองใช้ iptables และมาตรการอื่น ๆ แต่ดูเหมือนจะไม่มีอะไรทำงาน นี่เป็นส่วนหนึ่งของ access_log:

https://pastebin.com/6JFKmUi8

การเชื่อมต่อจำนวนมาก แต่ iptables จะไม่หยุดการโจมตี มีกฎ iptables ของฉัน:

iptables -A INPUT -i lo -j ยอมรับ
iptables -A อินพุต -s 147.135.37.113 -j ยอมรับ

iptables -A อินพุต -f -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ไม่มีทั้งหมด -j DROP
iptables -A อินพุต -p tcp ! --syn -m state --state ใหม่ -j DROP

iptables -N LOG_AND_DROP

iptables -N PORT21
iptables -A PORT21 -m ล่าสุด --set --name lp21
iptables -A PORT21 -m ล่าสุด --update --seconds 30 --hitcount 3 --name lp21 -j DROP
iptables -A PORT21 -m ล่าสุด --update --seconds 300 --hitcount 10 --name lp21 -j LOG_AND_DROP

iptables -N PORT22
iptables -A PORT22 -m ล่าสุด --set --name lp22
iptables -A PORT22 -m ล่าสุด --update --seconds 30 --hitcount 3 --name lp22 -j DROP
iptables -A PORT22 -m ล่าสุด --update --seconds 300 --hitcount 10 --name lp22 -j LOG_AND_DROP

iptables -N PORT80
iptables -A PORT80 -m ล่าสุด --set --name lp80
iptables -A PORT80 -m ล่าสุด --update --seconds 30 --hitcount 20 --name lp80 -j LOG_AND_DROP

iptables -N PORT443
iptables -A PORT443 -m ล่าสุด --set --name lp433
iptables -A PORT443 -m ล่าสุด --update --seconds 30 --hitcount 20 --name lp443 -j LOG_AND_DROP

iptables -N PORT10000
iptables -A PORT10000 -m ล่าสุด --set --name lp10000
iptables -A PORT10000 -m ล่าสุด --update --seconds 30 --hitcount 20 --name lp10000 -j LOG_AND_DROP

iptables -N PORT6900
iptables -A PORT6900 -m ล่าสุด --set --name lp6900
iptables -A PORT6900 -m ล่าสุด --update --seconds 30 --hitcount 10 --name lp6900 -j LOG_AND_DROP
iptables -A PORT6900 -m ล่าสุด --update --seconds 50 --hitcount 20 --name lp6900 -j LOG_AND_DROP

iptables -N PORT6121
iptables -A PORT6121 -m ล่าสุด --set --name lp6121
iptables -A PORT6121 -m ล่าสุด --update --seconds 30 --hitcount 10 --name lp6121 -j LOG_AND_DROP
iptables -A PORT6121 -m ล่าสุด --update --seconds 50 --hitcount 20 --name lp6121 -j LOG_AND_DROP

iptables -N PORT5121
iptables -A PORT5121 -m ล่าสุด --set --name lp5121
iptables -A PORT5121 -m ล่าสุด --update --seconds 30 --hitcount 10 --name lp5121 -j LOG_AND_DROP
iptables -A PORT5121 -m ล่าสุด --update --seconds 50 --hitcount 20 --name lp5121 -j LOG_AND_DROP

iptables -A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-name pings --hashlimit-mode srcip --hashlimit 10/min --hashlimit-burst 10 --hashlimit-htable-expire 30000 -j ยอมรับ
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/min -j LOG --log-prefix "[Pings]"
iptables -A อินพุต -p icmp -j DROP

iptables -A INPUT -m state --state ที่เกี่ยวข้อง ก่อตั้ง -j ACCEPT

iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j PORT21
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j PORT22
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j PORT80
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j PORT443
iptables -A INPUT -p tcp --dport 10,000 -m state --state NEW -j PORT10000

iptables -A INPUT -p tcp --dport 6900 -m state --state NEW -j PORT6900
iptables -A INPUT -p tcp --dport 6121 -m state --state ใหม่ -j PORT6121
iptables -A INPUT -p tcp --dport 5121 -m state --state ใหม่ -j PORT5121

iptables -A INPUT -p tcp --dport 21 -j ยอมรับ
iptables -A INPUT -p tcp --dport 22 -j ยอมรับ

iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-name p80 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10,000 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m hashlimit --hashlimit-name p443 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10,000 -j ACCEPT
iptables -A INPUT -p tcp --dport 10,000 -m hashlimit --hashlimit-name p10000 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10,000 -j ACCEPT

iptables -A INPUT -p tcp --dport 6900 -j ยอมรับ
iptables -A อินพุต -p tcp --dport 6121 -j ยอมรับ
iptables -A อินพุต -p tcp --dport 5121 -j ยอมรับ

iptables -A LOG_AND_DROP -m limit --limit 10/min -j LOG --log-prefix "[บันทึก]"
iptables -A LOG_AND_DROP -j DROP

#iptables -A INPUT -m limit --limit 10/min -j LOG --log-prefix "[ค่าเริ่มต้น]"
iptables -A อินพุต -d 147.135.37.113 -j DROP

คำแนะนำใด ๆ จะได้รับการต้อนรับ ฉันลองทุกอย่างแต่ไม่มีอะไรทำงาน

Score:1
ธง in

พูดคุยกับผู้ให้บริการของคุณ (ดูเหมือน OVH) เกี่ยวกับการป้องกัน anti-ddos ในระบบของคุณ ไม่ใช่ทั้งหมด แต่ผู้ให้บริการที่มีชื่อเสียงส่วนใหญ่มีวิธีที่สามารถช่วยคุณในเรื่องนี้ได้นอกเหนือจากนั้น คุณอาจลองสร้างกฎfail2ban ที่ดูบันทึกเว็บเซิร์ฟเวอร์ของคุณสำหรับไคลเอนต์ที่กด foro url นั้นและเพิ่มกฎ IPTables ให้กับพวกเขาโดยอัตโนมัติ นอกจากนั้น คุณสามารถใส่อะไรลงไปที่นั่นได้ ... อาจจะเป็นไฟล์ 1 ไบต์ที่เล็กมาก? หรือวางเว็บเซิร์ฟเวอร์ของคุณไว้เบื้องหลังบางอย่าง เช่น cloudflare หรือบริการ CDN อื่นๆ การรับส่งข้อมูลส่วนใหญ่สามารถจัดการได้หลายวิธีและไม่ควรสร้างความเครียดให้กับเซิร์ฟเวอร์หรือตัวคุณมากนัก ระวังไฟล์บันทึกที่เติมเต็มระบบไฟล์ของคุณ! นั่นสามารถสร้างปัญหาอื่น ๆ ที่ไม่มีใครต้องการ

ตรวจสอบสิ่งนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ fail2ban เพื่อป้องกัน apache จากการโจมตี DoS: https://apache.tutorials24x7.com/blog/protect-apache-from-brute-force-and-ddos-attacks-using-fail2ban

Nikita Kipriyanov avatar
za flag
ฉันพยายามใช้ fail2ban เพื่อลดการโจมตี DDoS มันใช้ไม่ได้สำหรับสิ่งนี้ ตัวอย่างเช่น เมื่อคุณเริ่ม/หยุดหรือโหลดซ้ำ (ซึ่งคุณมักจะทำบ่อยๆ สำหรับ DDoS) ขั้นแรก *เลิกแบน* ทุกคน แล้วจึงแบนอีกครั้งในภายหลัง กระบวนการนี้ใช้เวลาประมาณหนึ่งชั่วโมงในกรณีที่คุณแบนที่อยู่มากกว่า 20,000 ที่อยู่ ซึ่งไม่น่าเป็นไปได้! จริงๆ แล้ว fail2ban เป็นซอฟต์แวร์ที่มีคุณภาพค่อนข้างต่ำ แม้จะได้รับความนิยมก็ตาม แม้ว่าปัญหาจะถูกออกแบบมาเพื่อแก้ไขก็ตาม
t3ln3t avatar
in flag
หากคุณมีที่อยู่มากกว่า 20,000 แห่งในรายการแบนของคุณ ความล้มเหลว 2 แบนไม่ใช่วิธีแก้ปัญหาที่เหมาะสม! คุณต้องมีโซลูชันฮาร์ดแวร์ที่ทำสิ่งนี้ CiscoGuard หรืออะไรก็ตามที่พวกเขาแทนที่ผลิตภัณฑ์นั้นด้วย ซอฟต์แวร์ UNIX/Linux ส่วนใหญ่เริ่มมีอาการสะอึกเมื่อคุณมีจำนวนข้อความในรายการ Postfix และ sendmail ย้ายไปที่ฐานข้อมูลและแฮชที่คอมไพล์แล้วเมื่อ 20 ปีก่อน เนื่องจากไม่สามารถแยกวิเคราะห์ไฟล์ข้อความได้อย่างรวดเร็ว
Nikita Kipriyanov avatar
za flag
ไม่ ไม่จำเป็นต้องใช้ฮาร์ดแวร์เฉพาะ โปรดจำไว้ว่า "ฮาร์ดแวร์เฉพาะ" แบบนั้นไม่มีอะไรมากไปกว่าซิลิกอนโบราณที่มีราคาสูงเกินจริงซึ่งใช้ซอฟต์แวร์ที่ชาญฉลาด หากคุณสามารถเรียกใช้ซอฟต์แวร์ดังกล่าวบนคอมพิวเตอร์เครื่องเดียวกันได้ นั่นก็ใช้ได้ผลดี ตัวอย่างเช่น หากคุณกำลังจะบล็อกบางสิ่งโดยใช้ linux netfilter ให้ใช้ ipset (ซึ่งใช้บิตแมปหรือแฮช เช่น "software CAM") และปัญหาหลักคือวิธีเติม ipset Failed2ban แทบไม่สามารถช่วยได้ ปัญหาคือ ถ้าคุณมี DDoS แบบ "ครบถ้วนสมบูรณ์" คุณ *จะมี* ที่อยู่ที่ต้องแบนมากกว่า 20,000 ที่อยู่ ดังนั้น Fail2ban จะไม่ช่วยในเรื่อง DDoS ดังกล่าว
Hermenegildo Gonzalez avatar
in flag
ขอบคุณ. ฉันจะลอง fail2ban และใช่ Cloudflare ช่วยด้วย บันทึก http ถูกปิดใช้งานในขณะที่การโจมตีดำเนินต่อไป
Score:0
ธง in

ปัญหาได้รับการแก้ไขด้วย iptables แบบง่ายนี้ (บางทีกฎอื่นอาจยุ่งเกินไป)

iptables -A INPUT -i eno1 -m state --state RELATED,ESTABLISHED -j ยอมรับ
iptables -A INPUT -i eno1 -m state --state INVALID -j DROP
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 22 -m state --state NEW -j ยอมรับ
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 21 -m state --state NEW -j ยอมรับ
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 80 -m state --state NEW -j ยอมรับ
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 443 -m state --state NEW -j ยอมรับ
iptables -A INPUT -i eno1 -p icmp -j ยอมรับ
iptables -A อินพุต -i eno1 -j DROP

การโจมตียังคงดำเนินต่อไป แต่อย่ายุบเซิร์ฟเวอร์

exeral avatar
lk flag
ตามบันทึกของคุณ DDOS ดูเหมือนคำขอ http(s) ที่ไม่ต้องการ ฉันไม่เข้าใจว่ากฎเหล่านี้ที่อนุญาต http(s) จะบรรเทาการโจมตีได้อย่างไร แต่ปัญหาของคุณได้รับการแก้ไขแล้ว สิ่งที่สำคัญกว่า !
Score:0
ธง id

มีสองสิ่งที่อยู่ในใจของฉัน:

  1. คุณสามารถใช้การจับคู่สตริงกับ iptables:

iptables -A INPUT -m สตริง --algo bm --string "GET /foro" -j DROP

หรือถ้าเป็นไปได้ในระบบของคุณ ด้วย TARPIT

iptables -A INPUT -m สตริง --algo bm --string "GET /foro" -j TARPIT

  1. แทนที่จะใช้ fail2ban ให้สร้างสคริปต์ของคุณเองซึ่งจะสแกนหาบันทึก 1,000 บรรทัดล่าสุดและบล็อกการจับคู่ด้วย ipsets เพิ่มสิ่งนี้ในสคริปต์ iptables ของคุณ:
  • ipset ทำลายห้องน้ำ
  • ipset -N ห้องน้ำ iphash
  • ipset ชักโครก

จากนั้นใช้สคริปต์ของคุณเพื่อเพิ่มที่อยู่ IP ที่คุณต้องการบล็อกลงในไฟล์ข้อความในที่สุดคุณเพียงแค่ต้องวนซ้ำที่อยู่ IP ทั้งหมดไปยังรายการห้องน้ำนั้น

  • ipset -ห้องน้ำ "$ipaddress"

การใช้ ipset และโดยเฉพาะอย่างยิ่งมาสก์เป็นวิธีที่มีประสิทธิภาพมากกว่าการบล็อกที่อยู่ IP ฉันมีที่อยู่ประมาณ 20,000 ที่อยู่ที่ถูกบล็อกและประมาณ 200 เครือข่าย

คุณอาจได้รับแนวคิดเกี่ยวกับสคริปต์ที่ยุ่งเหยิงของฉัน https://pastebin.com/4v5se0kh

ฉันรู้ว่ามันยุ่งเหยิง แต่มันได้ผลสำหรับฉัน เร็วกว่ามากและง่ายกว่าการห้ามล้มเหลว ฉันตั้งชื่อสคริปต์นั้นว่า suc2ban คุณเพียงแค่ต้องค้นหาไฟล์บันทึกของคุณเองที่ตรงกัน (คุณอาจมี apache access.log แทนตัวอย่างของฉันที่ใช้ auth.log)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา