ฉันจะบล็อกการแฮ็คที่พยายามกำหนดเป้าหมาย phpMyAdmin ได้อย่างไร


34

เว็บไซต์ของฉันได้รับความนิยมหลายพันครั้งต่อวันจาก IP ที่พยายามเข้าถึง:

/php-myadmin/
/myadmin/
/mysql/

... และรูปแบบอื่น ๆ อีกนับพัน ไม่มีไดเรกทอรีเหล่านี้อยู่ฉันไม่มี phpmyadmin บนเซิร์ฟเวอร์ของฉัน

ฉันไม่คิดว่าความพยายามใด ๆ เหล่านี้ประสบความสำเร็จ แต่พวกเขาต้องใช้ทรัพยากรของเซิร์ฟเวอร์และเสียแบนด์วิดท์ดังนั้นฉันจึงอยากหยุดถ้าเป็นไปได้ ฉันได้บล็อกไอพีเหล่านี้จำนวนหนึ่ง แต่พวกเขากลับมาพร้อมกับไอพีสดใหม่มีวิธีใดที่ฉันจะสามารถป้องกันได้อย่างถาวรมากขึ้น?


8
การเข้าชมนับพันครั้งต่อวันนั้นไม่เกิดอะไรขึ้น คุณประสบปัญหาประสิทธิภาพการทำงานจริงหรือคุณแค่สมมติ? ไม่กี่พัน 404 ในวันนี้คือมันไม่มีอะไร
MDMarra

ไม่ฉันไม่ประสบปัญหาประสิทธิภาพการทำงาน แต่มันน่ารำคาญฉันและฉันสงสัยว่ามีอะไรที่ฉันสามารถทำได้
amba88

6
ระวังด้วยการบล็อกด้วย IP - IP จำนวนมากจบลงด้วยการขี่จักรยานให้กับผู้ใช้ที่ถูกกฎหมาย นอกจากนี้ผู้ใช้ที่ชอบด้วยกฎหมายบางคนอาจติดเชื้อซึ่งเป็นส่วนหนึ่งของบ็อตเน็ต หากคุณใช้การบล็อกด้วย IP โปรดตรวจสอบว่าการหมดอายุนั้นสั้นพอสมควร
บ๊อบ

ไม่มีการกล่าวถึงmod_securityในหัวข้อนี้จึงตรวจสอบว่า หมายเหตุความคิดเห็นด้านล่างบันทึกว่านี่จะทำให้เซิร์ฟเวอร์ทำงานได้มากขึ้น ดังนั้นบางทีmod_evasiveก็จะเป็นสิ่งที่ดีในการดำเนินการ fail2banแต่ที่อยู่ด้านล่าง
mbrownnyc

คำตอบ:


42

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

อย่างจริงจัง; ไม่ต้องกังวลกับมัน นี่เป็นเพียงส่วนหนึ่งของการใช้งานเซิร์ฟเวอร์บนอินเทอร์เน็ต


14
Hell-Banning: แสดงหน้าปกติ (200 OK) ด้วยเอาต์พุตซึ่งพูดพล่อยๆ เครื่องมือที่ใช้เด็กจะรายงานหน้าพบและพวกเขาจะต้องตรวจสอบด้วยมือ (หน้าเข้าสู่ระบบของปลอมแน่นอนจะเป็นปีศาจอุปกรณ์) :)
Arul

4
@arul - ผู้โจมตีบางคนอาจทำสิ่งนี้เป็นสิ่งที่ท้าทายและให้ความสนใจเป็นพิเศษกับเซิร์ฟเวอร์ของคุณ การให้บริการ 404 ที่เล็กกว่าหรือแตกต่างกันจะมีประโยชน์หรือไม่ ตัวอย่างเช่นหากโฮสต์ให้บริการ 404 โดยมีลิงค์สนับสนุนควร / ควรให้บริการ 404 ธรรมดาโดยไม่มีเนื้อหาไปยัง URL เป้าหมายเหล่านี้หรือไม่
Freiheit

1
วัตถุประสงค์คือเพื่อให้ฝ่ายตรงข้ามใช้ทรัพยากรเพิ่มเติม (เวลา) เพื่อวิเคราะห์ผลลัพธ์ หากคุณได้รับ 404 คุณจะรู้ว่าไม่มีความเป็นไปได้ที่การโจมตีจะทำงาน ผลลัพธ์ OK ที่มีความยาวผันแปรคือ [โดยไม่ต้องตรวจสอบเพิ่มเติม] แยกไม่ออกจากผลลัพธ์ที่คาดหวัง พวกเขาใช้สแกนเหล่านี้เพราะความอดทนไม่ได้อาศัยอำนาจของพวกเขาดังนั้น demotivate นรกออกจากพวกเขาและพวกเขาจะหยุด :)
Arul

1
สำหรับคะแนนโบนัสให้ส่งคืนหน้าสแตติกที่ดูเหมือนหน้า phpmyadmin จริง แต่ไม่สามารถใช้งานได้ทั้งหมด
captncraig

1
สำหรับคะแนนโบนัสเพิ่มเติมให้สร้างความล่าช้า 0.5 - 1 วินาที นี่จะไม่เพิ่มเวลาในการโหลดโดยผู้ใช้ที่ถูกกฎหมาย แต่มันจะชะลอการสแกนที่คนร้ายกำลังทำอยู่ (คุณเพียงแค่ต้องตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ของคุณมีความสามารถในการระงับการเชื่อมต่อที่เปิดไว้นานเกินความจำเป็นและยังคงดำเนินการตามคำขอที่ถูกกฎหมาย)
Moshe Katz

38

น่าเสียดายสำหรับคุณนี่คือวิธีการทำงานของอินเทอร์เน็ต เพียงแค่เพิกเฉย บอท / โทรจันนับพันสแกนอินเทอร์เน็ต Source IP จะสุ่มตลอดเวลา ไม่มีทางรักษา

วิธีแก้ปัญหาเพียง 100% สำหรับการกำจัดทราฟฟิกแสดงไว้ด้านล่าง ป้อนคำอธิบายรูปภาพที่นี่

อีกทางเลือกหนึ่งคือ
- เพื่อย้ายด้วย https / http จากพอร์ต 80/443 ไปเป็นอย่างอื่น โดยทั่วไปแล้วบอตจะไม่ค้นหาเซิร์ฟเวอร์ http บนพอร์ต 65k อื่นทั้งหมด
- ใช้ VPN เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ (ฉันคิดว่ามันเป็นไปไม่ได้ถ้าคุณโฮสต์เว็บไซต์สาธารณะ)


LOL +1 สำหรับไดอะแกรม :-) ฉันมีปัญหาที่น่ารำคาญ (เช่นเดียวกับพวกเราทุกคน) ในเว็บไซต์คงที่และนี่เป็นคำตอบที่มีประโยชน์ที่สุด
Dave Everitt

30

สิ่งที่คุณต้องการคือFail2ban (สมมติว่านี่เป็นเครื่อง linux คุณไม่ได้พูด ... )

Fail2ban คืออะไร

Fail2ban จะแยกวิเคราะห์บันทึกระบบค้นหานิพจน์ทั่วไปเพื่อบล็อก เมื่อพบการแข่งขัน (หรือการแข่งขันหลายรายการจาก IP เดียวกันขึ้นอยู่กับวิธีที่คุณกำหนดค่า) มันจะบล็อกโดยทั่วไปผ่าน IPTables โดยทั่วไปจะใช้เพื่อบล็อกการพยายามรับรองความถูกต้องล้มเหลวกับ SSH หรือเว็บเซิร์ฟเวอร์

คุณกำหนดค่าให้แบนพวกเขาตามระยะเวลาที่กำหนด (อาจเป็นนาทีอาจเป็นวัน ... ขึ้นอยู่กับว่าพวกเขาเป็นอย่างไร) หลังจากนั้นการแบนจะหมดอายุเว้นแต่พวกเขาจะลองอีกครั้ง

วิธีนี้ช่วยบล็อกบอทสแกน phpmyadmin ได้อย่างไร

สามารถใช้เพื่อจับคู่สัญญาณทั่วไปของการโจมตีได้อย่างง่ายดายเช่นพยายามเข้าถึงโฟลเดอร์ phpmyadmin ที่ไม่มีอยู่จริง คุณจะต้องค้นหานิพจน์ทั่วไปที่ถูกต้องเพื่อให้ตรงกับความพยายามดังกล่าวและให้แน่ใจว่าคุณไม่ปิดกั้นผู้ใช้ที่ถูกกฎหมาย

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

เหตุใดฉันจึงควรปิดกั้นพวกเขา ข้อผิดพลาด 404 มีค่าใช้จ่ายไม่มาก

การปิดกั้นพวกเขาใน iptables มีประโยชน์บางอย่าง - อัตราต่อรองคือถ้าพวกเขากำลังตรวจสอบช่องโหว่ phpmyadmin พวกเขาอาจลองใช้บริการอื่น ๆ เพื่อหาช่องโหว่เช่นกันจนกว่าพวกเขาจะตีสิ่งที่ใช้งานได้ การแบนพวกเขาจะทำให้บอท / สคริปต์ส่วนใหญ่ยอมแพ้หลังจากชั่วขณะหนึ่งและพวกเขาจะไปยังเป้าหมายที่ดีกว่า

แม้ผ่านการสแกนจะไม่เสียค่าใช้จ่ายมากนัก (ยกเว้นว่าพวกเขาพบช่องโหว่) พวกเขาทำบันทึกของคุณทำให้ยากที่จะเห็นการโจมตีที่ประสบความสำเร็จและปัญหากับเว็บเซิร์ฟเวอร์ของคุณ

ตามความคิดเห็นด้านล่างบอกว่า Fail2ban จำเป็นต้องใช้ทรัพยากรระบบบางอย่าง แต่ไม่มาก อย่างน้อยที่สุดฉันก็บอกได้ว่าฉันไม่เคยมีปัญหาเรื่องประสิทธิภาพเลย อย่างไรก็ตามฉันมีปัญหาด้านประสิทธิภาพจากสคริปต์ที่ก้าวร้าวซึ่งพยายามบังคับให้ใส่รหัสผ่านหรือพยายามฉีด SQL หลายพันครั้งและหาช่องโหว่อื่น ๆ ต่อวินาทีที่เซิร์ฟเวอร์ของฉัน การบล็อกที่ระดับไฟร์วอลล์จะใช้ทรัพยากรน้อยกว่าการบล็อกในระดับเซิร์ฟเวอร์ / แอปพลิเคชัน นอกจากนี้ยังสามารถขยายเพื่อเรียกใช้สคริปต์ที่กำหนดเองเพื่อห้ามที่อยู่ IP - ดังนั้นแทนที่จะแบนใน IPtables คุณอาจจะห้ามมันในไฟร์วอลล์ฮาร์ดแวร์หรือส่งอีเมลถึงใครบางคนถ้าบุคคลเดียวกันพยายามโจมตีคุณเพื่อให้คุณสามารถบ่น ไปยัง ISP ของพวกเขาหรือให้ดาต้าเซ็นเตอร์ของคุณบล็อกพวกเขาบนไฟร์วอลล์

เคล็ดลับอื่น ๆ ?

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


6
ที่จะเป็นผู้ผลาญทรัพยากร :) ฉันคิดว่าคุณจะใช้รอบการทำงานเพิ่มเติมเกี่ยวกับ fail2ban กว่าเพียงแค่การให้บริการบางครั้ง 404 :)
Bartłomiej Zarzecki

4
@ BartłomiejZarzeckiการรักษาความปลอดภัยที่ดีกว่าต้องการทรัพยากรมากขึ้นเสมอ
11153

3
@ heinrich5991 มันจะบล็อกหลังจากความพยายามครั้งแรก ไม่มีความแตกต่างสำหรับการสแกน แต่มีความแตกต่างอย่างมากสำหรับการสแกนที่ลองหลายครั้งบนเซิร์ฟเวอร์
แกรนท์

2
Fail2ban (หรือคล้ายกัน) หวังว่าจะเป็นมากกว่า / phpmyadmin สมมติว่าเขามีการเข้าถึงระยะไกลใด ๆ การบล็อกประเภท F2B (3 รหัสผ่านและคุณ ... ไปแล้ว ... หายไป!) นั้นมีมากกว่า 404 วินาที
WernerCD

3
หากคุณทำสิ่งนี้ตรวจสอบให้แน่ใจว่าการแบนนั้นจะหมดอายุอย่างรวดเร็ว (บางชั่วโมงสูงสุด) หรือคุณเสี่ยงต่อการล็อคผู้ใช้ที่ถูกกฎหมายหากการโจมตีนั้นมาจาก IP ที่จัดสรรแบบไดนามิก
Jens Neubauer

7

สิ่งที่ฉันทำคือการใส่สคริปต์เล็ก ๆ ลงในไดเรกทอรีที่เหมาะสมดังนั้นมันจะทำงานถ้ามีคนเข้าถึง / phpmyadmin / สคริปต์นั้นไม่ทำอะไรเลยนอกจากเรียกใช้ iptables (ภายใต้ Linux) ซึ่งบล็อกที่อยู่ IP ที่เข้าถึงสคริปต์เป็นเวลา 30 นาที (หลังจากที่งาน cron-flushes เครือข่าย iptables จะได้รับการเพิ่มที่อยู่ IP)

ข้อได้เปรียบเหนือ fail2ban คือคุณไม่ได้ใช้ทรัพยากรใด ๆ ในการแยกวิเคราะห์ syslog / access-log แน่นอนว่าข้อเสียคือคุณไม่ได้ตรวจสอบสิ่งอื่นใดนอกจากการเข้าถึงที่อยู่ที่เฉพาะเจาะจงนี้

ทำไมฉันถึงทำเช่นนี้? แน่นอนว่าการให้บริการ 404 นั้นเป็นเรื่องง่ายสำหรับเซิร์ฟเวอร์ แต่ฉันไม่ต้องการให้พวกเขาแหย่ง่ายๆอย่างนั้น ฉันต้องการเสียเวลาเครื่องมือของพวกเขารอให้เซิร์ฟเวอร์ตอบกลับลองอีกครั้งจนในที่สุดก็ยอมแพ้ นอกจากนี้หากคุณไม่ปิดกั้นพวกเขาจะลองURL ที่แตกต่างกันมากก่อนที่จะไปต่อ - ในที่สุดบางครั้งอาจเป็นพัน ขึ้นอยู่กับเครื่องมือมันอาจจะ "ดี" และเว้นระยะห่างไม่กี่ชั่วโมงหรืออาจจะไม่สนใจและทำให้เซิร์ฟเวอร์ของคุณล้มเหลวด้วยเครื่องมือทั้งหมดภายในไม่กี่นาที

เหตุใดฉันจึงไม่แสดงหน้าเว็บที่ถูกต้อง เครื่องมือของพวกเขาอาจหยุดการสแกนคุณและแจ้งเตือน skiddie ที่กำลังเรียกใช้ - ใครจะต้องตรวจสอบด้วยตนเอง สิ่งนี้คือการที่พวกเขาจะทำให้เซิร์ฟเวอร์ของคุณดูใกล้ชิดกว่าที่พวกเขาจะได้รับหากการสแกนของพวกเขาไม่ได้ทำให้คุณปรากฏในผลลัพธ์ของพวกเขา บางทีพวกเขาอาจจะกระตุ้นอีกเล็กน้อยอาจจะสแกนพอร์ตไม่กี่ครั้งคุณอาจทำให้พวกเขาคลั่งและพวกเขาก็เปิดตัว DoS เพื่อดูว่าพวกเขาสามารถทำอะไรได้บ้าง เพียงปิดกั้นพวกเขา - ซึ่งในมุมมองของพวกเขาทำให้เซิร์ฟเวอร์หมดเวลาเมื่อพวกเขาเข้าถึงสคริปต์ phpmyadmin - มีประสิทธิภาพเสียเวลาเครื่องมือของพวกเขาในขณะที่หลีกเลี่ยงความสนใจที่ไม่พึงประสงค์

หากคุณมี phpMyAdmin บนเซิร์ฟเวอร์โซลูชันที่มีประสิทธิภาพอาจวางไว้ในไดเรกทอรีแยกต่างหากและใช้การควบคุมรหัสผ่านของเว็บเซิร์ฟเวอร์ (. htpasswd สำหรับ Apache) เพื่อปิดกั้นการเข้าถึงก่อนที่จะถึงสิ่งใด ๆ


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

1
ปรับนามแฝงสำหรับเครื่องมือเช่น phpMyAdmin เปลี่ยนไฟล์ config อย่างง่ายดายเพื่อเปลี่ยนเป็น adminMyPhp หรือ chrisPhpAdmin ... หรือบางอย่างที่จะไม่เป็นแบบสคริปต์
WernerCD

ขออภัยสำหรับการตอบกลับล่าช้า - มันไม่ได้ (จำเป็น) คุณสามารถใช้ sudo (พร้อมไฟล์ sudoers) เพื่ออนุญาตให้เว็บเซิร์ฟเวอร์เรียกใช้งานสคริปต์ที่รู้จักกันดีหนึ่งตัว (และเพียงแค่สคริปต์นั้น) ที่มีสิทธิ์ใช้งานรูท สคริปต์นั้นจะยอมรับ (เป็นพารามิเตอร์) IP และคุณตรวจสอบกับนิพจน์ทั่วไป ([0-9] + \. [0-9] + \. [0-9] + \. [0-9] + ) เพื่อให้แน่ใจว่ามันไม่ได้เป็นการฉีดอะไรแปลก ๆ
Aaa

1

FWIW เรา จำกัด การเข้าถึง / phpmyadmin / เพื่อที่อยู่ IP ที่อนุญาตพิเศษเท่านั้น

นอกจากนี้เรายังใช้ mod_evasive (ใน apache2) เพื่อยับยั้งการโจมตีแบบสคริปต์ / DOS ที่มีพฤติกรรมไม่ดี


1

ผูกเครื่องมือผู้ดูแลระบบ mysql กับที่อยู่ลูปแบ็คเครื่องของคุณ 127.0.0.1

จากนั้นใช้ ssh ด้วยการส่งต่อพอร์ตเพื่อเข้าถึงผู้ดูแลระบบของคุณด้านหลัง

เพิ่มเลเยอร์ความปลอดภัยเพิ่มเติมซึ่งสามารถค่อนข้างโปร่งใส


-4

วิธีที่ดีที่สุดที่เราพบคือการใช้รหัสผ่านเพื่อป้องกันโฟลเดอร์ที่ phpmyadmin อยู่นอกจากนี้อย่าใช้สิ่งที่เกี่ยวข้องกับ phpmyadmin เป็นชื่อโฟลเดอร์: pma, phpmy และอื่น ๆ ...


2
จากคำถาม: None of these directories exist, I don't even have phpmyadmin on my server.- เขาไม่ได้ถามถึงวิธีการติดตั้งที่มีอยู่ให้แข็งขึ้น ... เขาถามว่าจะทำอย่างไรกับสิ่งที่ไม่มีอยู่จริง คุณไม่สามารถเปลี่ยนชื่อPMAหรือสิ่งที่มีถ้ามันไม่ได้อยู่
WernerCD
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.