การจัดการกับการโจมตี HTTP w00tw00t


82

ฉันมีเซิร์ฟเวอร์ที่มี apache และฉันเพิ่งติดตั้ง mod_security2 เพราะฉันถูกโจมตีมากจากสิ่งนี้:

รุ่น apache ของฉันคือ apache v2.2.3 และฉันใช้ mod_security2.c

นี่คือรายการจากบันทึกข้อผิดพลาด:

[Wed Mar 24 02:35:41 2010] [error] 
[client 88.191.109.38] client sent HTTP/1.1 request without hostname 
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)

[Wed Mar 24 02:47:31 2010] [error] 
[client 202.75.211.90] client sent HTTP/1.1 request without hostname 
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)

[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)

[Wed Mar 24 02:48:03 2010] [error] 
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)

นี่คือข้อผิดพลาดจาก access_log:

202.75.211.90 - - 
[29/Mar/2010:10:43:15 +0200] 
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - - 
[29/Mar/2010:11:40:41 +0200] 
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - - 
[29/Mar/2010:12:37:19 +0200] 
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-" 

ฉันพยายามกำหนดค่า mod_security2 เช่นนี้:

SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"

สิ่งที่อยู่ใน mod_security2 คือ SecFilterSelective ไม่สามารถใช้ได้มันทำให้ฉันมีข้อผิดพลาด แต่ฉันใช้กฎเช่นนี้

SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"

แม้แต่สิ่งนี้ก็ใช้ไม่ได้ ฉันไม่รู้จะทำอะไรอีก ใครมีคำแนะนำบ้าง?

อัปเดต 1

ฉันเห็นว่าไม่มีใครสามารถแก้ปัญหานี้ได้โดยใช้ mod_security ถึงตอนนี้การใช้ ip-tables ดูเหมือนจะเป็นทางเลือกที่ดีที่สุด แต่ฉันคิดว่าไฟล์จะมีขนาดใหญ่มากเพราะ ip เปลี่ยน serveral วันละครั้ง

ฉันคิดหาวิธีแก้ปัญหาอื่นอีก 2 ข้อใครสามารถแสดงความคิดเห็นกับพวกเขาเกี่ยวกับความดีหรือไม่

  1. ทางออกแรกที่อยู่ในใจของฉันคือการยกเว้นการโจมตีเหล่านี้จากบันทึกข้อผิดพลาด apache ของฉัน สิ่งนี้จะทำให้ง่ายขึ้นสำหรับฉันที่จะเห็นข้อผิดพลาดเร่งด่วนอื่น ๆ เมื่อเกิดขึ้นและไม่ต้องถุยบันทึกยาว ๆ

  2. ตัวเลือกที่สองดีกว่าที่ฉันคิดและนั่นคือการปิดกั้นโฮสต์ที่ไม่ได้ส่งไปในทางที่ถูกต้อง ในตัวอย่างนี้การโจมตี w00tw00t ถูกส่งโดยไม่มีชื่อโฮสต์ดังนั้นฉันคิดว่าฉันสามารถบล็อกโฮสต์ที่ไม่ได้อยู่ในรูปแบบที่ถูกต้อง

อัปเดต 2

หลังจากไปรับคำตอบฉันมาถึงบทสรุปต่อไปนี้

  1. การมีการบันทึกแบบกำหนดเองสำหรับ apache จะใช้การกู้คืนที่ไม่จำเป็นและหากมีปัญหาจริงๆคุณอาจต้องการดูบันทึกแบบเต็มโดยไม่มีสิ่งใดขาดหายไป

  2. มันเป็นการดีกว่าที่จะเพิกเฉยต่อเพลงฮิตและจดจ่อกับวิธีที่ดีกว่าในการวิเคราะห์บันทึกข้อผิดพลาดของคุณ การใช้ตัวกรองสำหรับบันทึกของคุณเป็นวิธีที่ดีสำหรับสิ่งนี้

ความคิดสุดท้ายเกี่ยวกับเรื่อง

การโจมตีดังกล่าวข้างต้นจะไม่สามารถเข้าถึงเครื่องของคุณได้หากอย่างน้อยคุณมีระบบที่ทันสมัยดังนั้นจึงไม่ต้องกังวล

อาจเป็นการยากที่จะกรองการโจมตีปลอมทั้งหมดจากของจริงหลังจากผ่านไประยะหนึ่งเนื่องจากทั้งบันทึกข้อผิดพลาดและบันทึกการเข้าถึงมีขนาดใหญ่มาก

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

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

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

คำตอบ:


34

จากบันทึกข้อผิดพลาดของคุณพวกเขากำลังส่งคำขอ HTTP / 1.1 โดยไม่มีโฮสต์: ส่วนของคำขอ จากสิ่งที่ฉันอ่าน Apache ตอบกลับพร้อมข้อผิดพลาด 400 (คำขอไม่ดี) ไปยังคำขอนี้ก่อนส่งมอบให้ mod_security ดังนั้นดูเหมือนว่ากฎของคุณจะได้รับการประมวลผล (Apache จัดการกับมันก่อนที่จะต้องมอบให้ mod_security)

ลองด้วยตัวคุณเอง:

ชื่อโฮสต์ telnet 80
GET /blahblahblah.html HTTP / 1.1 (Enter)
(ป้อน)

คุณควรได้รับข้อผิดพลาด 400 และดูข้อผิดพลาดเดียวกันในบันทึกของคุณ นี่เป็นคำขอที่ไม่ดีและ apache ให้คำตอบที่ถูกต้อง

คำขอที่เหมาะสมควรมีลักษณะดังนี้:

GET /blahblahblah.html HTTP / 1.1
โฮสต์: blah.com

การแก้ไขสำหรับปัญหานี้อาจจะแก้ไข mod_uniqueid เพื่อสร้าง ID ที่ไม่ซ้ำกันสำหรับการร้องขอที่ล้มเหลวเพื่อให้ apache ส่งการร้องขอไปยังตัวจัดการการร้องขอ URL ต่อไปนี้เป็นการสนทนาเกี่ยวกับการทำงานนี้และรวมถึงการแก้ไขสำหรับ mod_uniqueid คุณสามารถใช้: http://marc.info/?l=mod-security-users&m=123300133603876&w=2

ไม่พบวิธีแก้ไขปัญหาอื่น ๆ และสงสัยว่าจำเป็นต้องมีโซลูชันจริงหรือไม่


ฉันเห็นปัญหาตอนนี้ คุณแนะนำวิธีการแก้ปัญหาที่ให้ไว้ในบทความหรือคุณคิดว่ามันจะดีกว่าที่จะทิ้งมันไว้เหมือนเดิม มันเป็นสแกนเนอร์สำหรับประตูหลังในระบบ ถ้าฉันปล่อยให้มันสแกนฉันจะได้โจมตีวันหนึ่ง
Saif Bechan

1
สวัสดี Saif ฉันคิดว่าตราบใดที่คุณติดตั้ง Apache ให้ทันสมัยด้วยแพทช์รักษาความปลอดภัย (หรือด้วยตนเอง) ของคุณคุณควรจะดี คำขอ HTTP / 1.1 ที่มีโครงสร้างไม่ดี (ตามที่คุณเห็น) ไม่ควรส่งคืนสิ่งอื่นใดนอกจากข้อผิดพลาด 400 จาก apache ดูเหมือนว่าอาจเป็นการสแกนช่องโหว่ที่เน้นไปที่เราเตอร์ DLink (อ้างอิงจากแหล่งข้อมูลอื่น)
Imo

อย่างน้อยมีวิธีในการรับเขตข้อมูลเหล่านี้ออกจาก apache error_log ของฉัน
Saif Bechan

คุณอาจจะสามารถทำมันได้ผ่าน mod_log :: httpd.apache.org/docs/2.2/mod/mod_log_config.html#customlog
Imo

คำแนะนำพิเศษของฉันคือ: กำหนดค่า virtualhost เริ่มต้นของคุณถัดจากที่ใช้งานจริง ความพยายามดังกล่าวข้างต้นจะสิ้นสุดในบันทึกสำหรับvirtualhost เริ่มต้น
Koos van den Hout

16

การกรอง IP ไม่ใช่ความคิดที่ดี ทำไมไม่ลองกรองสตริงที่คุณรู้จัก

ฉันหมายถึง:

iptables -I INPUT -p tcp --dport 80 -m string --to 60 --algo bm --string 'GET /w00tw00t' -j DROP

spamcleaner.org/en/misc/w00tw00t.htmlโซลูชันที่คล้ายกัน แต่มีรายละเอียดเพิ่มเติมเล็กน้อย
Isaac

ปัญหาหนึ่งของการกรองสตริงในไฟร์วอลล์ก็คือ "ค่อนข้างช้า"
Alexis Wilke

@AlexisWilke คุณมีหลักฐานแนะนำว่าการกรองสตริง iptables ช้ากว่าการกรองที่ระดับ apache หรือไม่
jrwren

@jrwren ที่จริงแล้วมันอาจจะค่อนข้างช้าถ้าหากคุณไม่ผ่านแพ็กเกจออฟเซ็ตเพื่อหยุดการค้นหาเช่น "- ถึง 60" ที่นี่ โดยค่าเริ่มต้นมันจะค้นหาผ่านแพ็กเก็ตทั้งหมดขีด จำกัด สูงสุดที่ตั้งไว้ที่ 65,535 ไบต์ความยาวของแพ็กเก็ต IP สูงสุด: blog.nintechnet.com/…คู่มือจะบอกอย่างชัดเจนว่า "หากไม่ผ่านค่าเริ่มต้นคือขนาดแพ็กเก็ต"
gouessej

นั่นคือค่าสูงสุดทางทฤษฎี ความยาวสูงสุดที่เหมือนจริงมากกว่าบนอินเทอร์เน็ตคือ ~ 1500
jrwren

11

ฉันก็เริ่มเห็นข้อความประเภทนี้ในไฟล์บันทึกของฉัน วิธีหนึ่งในการป้องกันการโจมตีประเภทนี้คือการตั้งค่า fail2ban ( http://www.fail2ban.org/ ) และการตั้งค่าตัวกรองเฉพาะเพื่อแสดงรายการที่อยู่ IP เหล่านี้ในกฎ iptables ของคุณ

นี่คือตัวอย่างของตัวกรองที่จะบล็อกที่อยู่ IP ที่เกี่ยวข้องกับการทำข้อความเหล่านั้น

[อังคารที่ 16 สิงหาคม 02:35:23 2011] [ข้อผิดพลาด] [ลูกค้า] ไม่มีไฟล์: /var/www/skraps/w00tw00t.at.blackhats.romanian.anti-sec :) === apache w00t w00t ข้อความจำคุก - regex และตัวกรอง === คุก

 [apache-wootwoot]
 enabled  = true
 filter   = apache-wootwoot
 action   = iptables[name=HTTP, port="80,443", protocol=tcp]
 logpath  = /var/log/apache2/error.log
 maxretry = 1
 bantime  = 864000
 findtime = 3600

กรอง

 # Fail2Ban configuration file
 #
 # Author: Jackie Craig Sparks
 #
 # $Revision: 728 $
 #
 [Definition]
 #Woot woot messages
 failregex = ^\[\w{1,3} \w{1,3} \d{1,2} \d{1,2}:\d{1,2}:\d{1,2} \d{1,4}] \[error] \[client 195.140.144.30] File does not exist: \/.{1,20}\/(w00tw00t|wootwoot|WootWoot|WooTWooT).{1,250}
 ignoreregex =

2
มันเป็นความจริงที่คุณสามารถบล็อกพวกเขาได้ แต่ไม่จำเป็นต้องทำเพราะมันเป็นเพียงคำขอที่ไม่ดี ดีกว่าที่จะเพิกเฉยพวกเขาช่วยคุณทำงานและคุณจะเพิ่มแหล่งข้อมูลให้ฟรี
Saif Bechan

ถูกต้อง @Saif Bechan ถ้ามีคนกังวลว่า "การทดสอบการโจมตี" นั้นประสบความสำเร็จเขา / เธอควรแก้ไขแอปพลิเคชันของตัวเองได้ดีกว่าแทนที่จะเสียเวลาเพื่อหาวิธีในการบล็อก
โทมัสเบอร์เกอร์

ให้ +1 ขอบคุณสำหรับคำตอบ
Saif Bechan

4
@ SaifBechan ฉันไม่เห็นด้วย w00tw00t เป็นเครื่องสแกนช่องโหว่และเครื่องที่ออกคำขอดังกล่าวไม่สามารถเชื่อถือได้ด้วยการพยายามส่งคำขอประเภทอื่นดังนั้นถ้าฉันเป็นผู้ดูแลระบบและฉันใช้เวลา 2 นาทีในการแบนลูกค้าในเวลาเดียวกัน ทำเช่นนั้น แม้ว่าฉันจะไม่ใช้การรักษาความปลอดภัยทั้งหมดในแนวทางดังกล่าว
ไอแซค

3

w00tw00t.at.blackhats.romanian.anti-sec เป็นความพยายามในการแฮ็คและใช้การปลอมแปลงของ IP ดังนั้นการค้นหาเช่น VisualRoute จะรายงานจีนโปแลนด์เดนมาร์กและอื่น ๆ ตาม IP ที่ถูกโจมตีในขณะนั้น ดังนั้นการตั้งค่า Deny IP หรือชื่อโฮสต์ที่แก้ไขได้นั้นแทบเป็นไปไม่ได้เพราะจะเปลี่ยนภายในหนึ่งชั่วโมง


การสแกนช่องโหว่เหล่านี้ไม่ได้ใช้ที่อยู่ IP ปลอมแปลง หากพวกเขาทำเช่นนั้นการจับมือ TCP 3 ทางจะไม่เสร็จสมบูรณ์และ Apache จะไม่บันทึกการร้องขอ สำหรับ caveats (ISP หลอกลวงผู้ให้บริการเราเตอร์และอื่น ๆ ) โปรดดูที่security.stackexchange.com/q/37481/53422
Anthony Geoghegan

2

ฉันเขียนสคริปต์ Python เป็นการส่วนตัวเพื่อเพิ่มกฎ IPtables โดยอัตโนมัติ

นี่เป็นเวอร์ชั่นย่อที่ไม่มีการบันทึกและขยะอื่น ๆ :

#!/usr/bin/python
from subprocess import *
import re
import shlex
import sys

def find_dscan():
        p1 = Popen(['tail', '-n', '5000', '/usr/local/apache/logs/error_log'], stdout=PIPE)
        p2 = Popen(['grep', 'w00t'], stdin=p1.stdout, stdout=PIPE)

        output = p2.communicate()[0].split('\n')

        ip_list = []

        for i in output:
                result = re.findall(r"\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b", i)
                if len(result):
                        ip_list.append(result[0])

        return set(ip_list)

for ip in find_dscan():
        input = "iptables -A INPUT -s " + ip + " -j DROP"
        output = "iptables -A OUTPUT -d " + ip + " -j DROP"
        Popen(shlex.split(input))
        Popen(shlex.split(output))

sys.exit(0)

นี่เป็นการป้องกันการโจมตี w00tw00t หรือไม่
Saif Bechan

ใช่ฉันได้สแกนไฟล์บันทึกข้อผิดพลาดของ Apache สำหรับ IP "w00tw00t" แล้วเพิ่มเข้าไปหากไม่มีอยู่ แต่เพื่อความง่ายฉันไม่ได้เพิ่มการตรวจสอบซ้ำ
Xorlev

สคริปต์นี้ควรใช้ตารางเพิ่มกฎพิเศษจำนวนมากให้กับเครือข่าย iptables จะทำให้การประมวลผลช้าลงเล็กน้อย
Eric

มันใช้ตาราง อย่างไรก็ตามฉันทำให้มันง่ายขึ้นมากเพราะมันปรับให้เข้ากับระบบของฉัน
Xorlev

คุณคิดว่านี่เป็นทางออกที่ดีกว่าหรือไม่ที่จะใช้ mod_security
Saif Bechan

2

ฉันเชื่อว่าเหตุผลที่ mod_security ไม่ทำงานสำหรับคุณนั่นคือ Apache ไม่สามารถแยกวิเคราะห์คำขอได้ด้วยตนเองเพราะพวกเขาไม่ได้มาตรฐาน ฉันไม่แน่ใจว่าคุณมีปัญหาที่นี่ - apache กำลังบันทึกอึแปลก ๆ ที่เกิดขึ้นในเน็ตถ้ามันไม่ได้เข้าสู่ระบบคุณจะไม่ได้ตระหนักถึงมันเกิดขึ้น ทรัพยากรที่จำเป็นในการเข้าสู่ระบบคำขออาจน้อยที่สุด ฉันเข้าใจว่ามันน่าหงุดหงิดที่มีคนกำลังเติมบันทึกของคุณ - แต่มันจะน่าหงุดหงิดมากขึ้นถ้าคุณปิดใช้งานการบันทึกเท่านั้นเพื่อค้นหาว่าคุณต้องการมันจริงๆ เหมือนมีคนบุกเข้าไปในเว็บเซิร์ฟเวอร์ของคุณและคุณต้องการบันทึกเพื่อแสดงว่าพวกเขาเข้ามา

ทางออกหนึ่งคือการตั้งค่า ErrorLogging ผ่าน syslog แล้วใช้ rsyslog หรือ syslog-ng คุณสามารถกรองและทิ้งการละเมิด RFC เหล่านี้โดยเฉพาะเกี่ยวกับ w00tw00t หรือมิฉะนั้นคุณสามารถกรองไฟล์เหล่านั้นลงในไฟล์บันทึกแยกต่างหากเพื่อให้ ErrorLog หลักของคุณอ่านได้ง่าย Rsyslog นั้นทรงพลังและยืดหยุ่นอย่างเหลือเชื่อในเรื่องนี้

ดังนั้นใน httpd.conf คุณอาจทำ:

ErrorLog syslog:user 

จากนั้นใน rsyslog.conf คุณอาจมี:

:msg, contains, "w00tw00t.at.ISC.SANS.DFind" /var/log/httpd/w00tw00t_attacks.log

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

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

การบล็อก IPTables เป็นแนวคิด แต่คุณอาจจบลงด้วยรายการบล็อก iptables ที่มีขนาดใหญ่มากซึ่งอาจมีผลกระทบด้านประสิทธิภาพในตัวมันเอง มีรูปแบบในที่อยู่ IP หรือว่ามาจากบ็อตเน็ตแบบกระจายขนาดใหญ่หรือไม่ จะต้องมี X% ซ้ำกันก่อนที่คุณจะได้รับประโยชน์จาก iptables


คำตอบที่ดีฉันชอบวิธีการที่แตกต่างกัน เมื่อคิดถึงเรื่องนี้แล้วการมีการบันทึกที่กำหนดเองจะสร้างการใช้การขอความช่วยเหลือมากกว่าเดิมเพราะทุกสิ่งต้องได้รับการตรวจสอบก่อนฉันเดาว่าตัวเลือกนี้จะไม่ได้ผล ตอนนี้ฉันได้เปิดใช้งาน logwatch แล้ว สิ่งนี้จะส่งรายงานวันละ 2 ครั้งพร้อมข้อมูลสรุปของทั้งระบบ บันทึก apache ได้รับการตรวจสอบด้วยและมันก็บอกว่า w00tw00t พยายาม 300 ครั้ง ฉันคิดว่าฉันจะออกจากการตั้งค่าตามที่เป็นอยู่ในขณะนี้
Saif Bechan

1

คุณพูดในการอัพเดท 2:

ปัญหาที่ยังคงอยู่ปัญหาที่ยังคงมีอยู่มีดังนี้ การโจมตีเหล่านี้มาจากบ็อตที่ค้นหาไฟล์บางไฟล์บนเซิร์ฟเวอร์ของคุณ เครื่องสแกนเฉพาะนี้ค้นหาไฟล์ /w00tw00t.at.ISC.SANS.DFind :)

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

จากคำตอบก่อนหน้าของฉันเรารวบรวมว่า Apache กำลังส่งคืนข้อความแสดงข้อผิดพลาดเนื่องจากการสอบถาม HTML 1.1 ที่มีรูปแบบไม่ดี webservers ทั้งหมดที่สนับสนุน HTTP / 1.1 อาจส่งคืนข้อผิดพลาดเมื่อพวกเขาได้รับข้อความนี้ (ฉันไม่ได้ตรวจสอบ RFC ซ้ำ - บางที RFC2616 บอกเรา)

มี w00tw00t.at.ISC.SANS.DFind: บนเซิร์ฟเวอร์ของคุณบางที่ไม่ได้หมายความว่าลึกลับ "คุณกำลังมีปัญหาบางอย่าง" ... หากคุณสร้างไฟล์ w00tw00t.at.ISC.SANS.DFind หรือแม้กระทั่ง DefaultDocumentRoot ไม่สำคัญ ... สแกนเนอร์กำลังส่งคำขอ HTTP / 1.1 ที่ใช้งานไม่ได้และ apache กำลังพูดว่า "ไม่นั่นเป็นคำขอที่ไม่ดี ... ลาก่อน" ข้อมูลในไฟล์ w00tw00t.at.ISC.SANS.DFind: จะไม่ถูกนำเสนอ

การใช้ mod_security สำหรับกรณีนี้ไม่จำเป็นเว้นแต่คุณต้องการ (ไม่มีประเด็น?) ... ในกรณีนี้คุณสามารถดูการแก้ไขด้วยตนเอง (ลิงก์ในคำตอบอื่น ๆ )

อีกสิ่งหนึ่งที่คุณอาจจะเห็นการใช้งานคือคุณสมบัติ RBL ใน mod_security บางทีอาจมี RBL ออนไลน์ที่ซึ่งให้บริการ w00tw00t IP (หรือ IP ที่เป็นอันตรายอื่น ๆ ที่รู้จัก) อย่างไรก็ตามนี่หมายความว่า mod_security ทำการค้นหา DNS สำหรับทุกคำขอ


ฉันไม่คิดว่า apache ปฏิเสธพวกเขามันแค่โยนข้อผิดพลาด แต่การค้นหายังคงผ่าน ฉันมี w00tw00t.at.ISC.SANS.DFind เดียวกันในบันทึกการเข้าถึง มันเป็น GET ดังนั้นการค้นหาจะเสร็จสิ้นและหากคุณมีไฟล์ในเครื่องของคุณมันจะถูกเรียกใช้งาน ฉันสามารถโพสต์รายการบันทึกการเข้าถึง แต่พวกเขาดูเหมือนกับบันทึกข้อผิดพลาดเฉพาะกับ GET ที่อยู่ข้างหน้า Apache ส่งข้อผิดพลาด แต่คำขอผ่าน นั่นคือเหตุผลที่ฉันถามว่าจะเป็นการดีหรือไม่ที่จะบล็อกคำขอเหล่านี้โดยไม่มีชื่อโฮสต์ แต่ฉันไม่ต้องการที่จะบล็อกผู้ใช้ปกติ
Saif Bechan

1
แน่นอนว่าคุณจะได้รับรายการเดียวกันในบันทึกการเข้าถึง แต่ดูที่รหัสข้อผิดพลาด ... 400 มันไม่ได้รับการประมวลผล HTTP / 1.1 (ชื่อโฮสต์) ใช้เพื่อบอก apache ว่าโฮสต์เสมือนใดที่ส่งคำขอไปที่ ... โดยไม่มีส่วนชื่อโฮสต์ของคำขอ HTTP / 1.1 apache ไม่ทราบว่าจะส่งคำขอและส่งกลับข้อผิดพลาด "400 คำขอไม่ดี" กลับไปที่ลูกค้า
Imo

ลองด้วยตัวคุณเอง ... สร้างหน้า html ของคุณเองบนเว็บเซิร์ฟเวอร์ของคุณและลองไปที่หน้าด้วยตนเองโดยใช้ "telnet hostname 80" ... ขั้นตอนอื่น ๆ อยู่ในคำตอบแรกของฉัน ฉันจะใส่เงินก้อนโตเป็นจำนวนมากเพื่อที่คุณจะไม่สามารถรับไฟล์ html ที่จะแสดงโดยใช้ HTTP / 1.1 โดยไม่มีชื่อโฮสต์
Imo

อ่าใช่ใช่เพื่อชี้ให้ฉันเห็น ฉันคิดเสมอว่า access_log เป็นรายการที่ผ่านการบันทึกข้อผิดพลาดและเข้าสู่เครื่องของคุณจริง ๆ ขอบคุณสำหรับการชี้ให้ฉันและฉันจะแก้ไขโพสต์ของฉัน ผมขอขอบคุณความช่วยเหลือของคุณ.
Saif Bechan

สวัสดีซาอิฟไม่มีปัญหายินดีช่วยเหลือ ขอแสดงความนับถือ Imo
Imo

1

วิธีการเกี่ยวกับการเพิ่มกฎเพื่อ modsecurity หรือไม่? บางสิ่งเช่นนี้

   SecRule REQUEST_URI "@rx (?i)\/(php-?My-?Admin[^\/]*|mysqlmanager
   |myadmin|pma2005|pma\/scripts|w00tw00t[^\/]+)\/"
   "severity:alert,id:'0000013',deny,log,status:400,
   msg:'Unacceptable folder.',severity:'2'"

1

ฉันเห็นว่าโซลูชันส่วนใหญ่ครอบคลุมอยู่ด้านบนแล้ว แต่ฉันต้องการที่จะชี้ให้เห็นว่าลูกค้าไม่ทั้งหมดที่ส่งคำขอ HTTP / 1.1 โดยไม่มีการโจมตีชื่อโฮสต์มีวัตถุประสงค์โดยตรงบนเซิร์ฟเวอร์ของคุณ มีความพยายามหลายอย่างในการใช้ลายนิ้วมือและ / หรือใช้ประโยชน์จากระบบเครือข่ายที่อยู่ข้างหน้าเซิร์ฟเวอร์ของคุณเช่นใช้:

client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /tmUnblock.cgi

เพื่อกำหนดเป้าหมายเราเตอร์ Linksys เป็นต้นดังนั้นบางครั้งมันจะช่วยให้คุณขยายโฟกัสและแบ่งความพยายามในการป้องกันของคุณระหว่างระบบทั้งหมดที่มีส่วนแบ่งเท่ากันเช่น: ใช้กฎของเราเตอร์ใช้กฎไฟร์วอลล์ (หวังว่าเครือข่ายของคุณมีอยู่) กฎและบริการที่เกี่ยวข้องเช่น mod_security, fail2ban และอื่น ๆ


1

แล้วเรื่องนี้ล่ะ

iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t.at.ISC.SANS.DFind' -j DROP
iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t.at.ISC.SANS.DFind' -j LOG --log-level 4 --log-prefix Hacktool.DFind:DROP:

ทำงานได้ดีสำหรับฉัน


ฉันแนะนำชุดกฎ OWASP_CRS / 2.2.5 หรือตัวขูดสำหรับ mod_security
Urbach-Webhosting

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.